Giter Club home page Giter Club logo

Comments (2)

renggli avatar renggli commented on August 10, 2024

The thing with exceptions might be possible, but a bit tricky to avoid performance problems in the common case.

In the meantime have a look at my last commit:

var xml = Transformations.debug(new JsonParser());
xml.parse('{"a": 1}');

The debug transformation changes the parser to emit the intermediate state with each parser activation/success/failure. This is probably even more useful than a traditional stack trace.

Instance of 'JsonParser'
  Instance of '_EndOfInputParser@0x37ace08b'
    Instance of '_ChoiceParser@0x37ace08b'
      Instance of '_TrimmingParser@0x37ace08b'
        Instance of '_WhitespaceParser@0x37ace08b'
        Failure[1:1]: whitespace expected
        Instance of '_ActionParser@0x37ace08b'
          Instance of '_SequenceParser@0x37ace08b'
            Instance of '_CharParser@0x37ace08b'
            Failure[1:1]: " expected
          Failure[1:1]: " expected
        Failure[1:1]: " expected
      Failure[1:1]: " expected
      Instance of '_ActionParser@0x37ace08b'
        Instance of '_TrimmingParser@0x37ace08b'
          Instance of '_WhitespaceParser@0x37ace08b'
          Failure[1:1]: whitespace expected
          Instance of '_FlattenParser@0x37ace08b'
            Instance of '_SequenceParser@0x37ace08b'
              Instance of '_OptionalParser@0x37ace08b'
                Instance of '_CharParser@0x37ace08b'
                Failure[1:1]: - expected
              Success[1:1]: null
              Instance of '_ChoiceParser@0x37ace08b'
                Instance of '_CharParser@0x37ace08b'
                Failure[1:1]: 0 expected
                Instance of '_RepeatingParser@0x37ace08b'
                  Instance of '_DigitParser@0x37ace08b'
                  Failure[1:1]: digit expected
                Failure[1:1]: digit expected
              Failure[1:1]: digit expected
            Failure[1:1]: digit expected
          Failure[1:1]: digit expected
        Failure[1:1]: digit expected
      Failure[1:1]: digit expected
      Instance of '_ActionParser@0x37ace08b'
        Instance of '_SequenceParser@0x37ace08b'
          Instance of '_TrimmingParser@0x37ace08b'
            Instance of '_WhitespaceParser@0x37ace08b'
            Failure[1:1]: whitespace expected
            Instance of '_CharParser@0x37ace08b'
            Success[1:2]: {
            Instance of '_WhitespaceParser@0x37ace08b'
            Failure[1:2]: whitespace expected
          Success[1:2]: {
          Instance of '_OptionalParser@0x37ace08b'
            Instance of '_ActionParser@0x37ace08b'
              Instance of '_SequenceParser@0x37ace08b'
                Instance of '_SequenceParser@0x37ace08b'
                  Instance of '_TrimmingParser@0x37ace08b'
                    Instance of '_WhitespaceParser@0x37ace08b'
                    Failure[1:2]: whitespace expected
                    Instance of '_ActionParser@0x37ace08b'
                      Instance of '_SequenceParser@0x37ace08b'
                        Instance of '_CharParser@0x37ace08b'
                        Success[1:3]: "
                        Instance of '_RepeatingParser@0x37ace08b'
                          Instance of '_ChoiceParser@0x37ace08b'
                            Instance of '_ActionParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_CharParser@0x37ace08b'
                                Failure[1:3]: \ expected
                              Failure[1:3]: \ expected
                            Failure[1:3]: \ expected
                            Instance of '_ActionParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_PredicateParser@0x37ace08b'
                                Failure[1:3]: \u expected
                              Failure[1:3]: \u expected
                            Failure[1:3]: \u expected
                            Instance of '_ActionParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_NotParser@0x37ace08b'
                                  Instance of '_PredicateParser@0x37ace08b'
                                  Failure[1:3]: any of "\ expected
                                Success[1:3]: null
                                Instance of '_PredicateParser@0x37ace08b'
                                Success[1:4]: a
                              Success[1:4]: [null, a]
                            Success[1:4]: a
                          Success[1:4]: a
                          Instance of '_ChoiceParser@0x37ace08b'
                            Instance of '_ActionParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_CharParser@0x37ace08b'
                                Failure[1:4]: \ expected
                              Failure[1:4]: \ expected
                            Failure[1:4]: \ expected
                            Instance of '_ActionParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_PredicateParser@0x37ace08b'
                                Failure[1:4]: \u expected
                              Failure[1:4]: \u expected
                            Failure[1:4]: \u expected
                            Instance of '_ActionParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_NotParser@0x37ace08b'
                                  Instance of '_PredicateParser@0x37ace08b'
                                  Success[1:5]: "
                                Failure[1:4]: null
                              Failure[1:4]: null
                            Failure[1:4]: null
                          Failure[1:4]: null
                        Success[1:4]: [a]
                        Instance of '_CharParser@0x37ace08b'
                        Success[1:5]: "
                      Success[1:5]: [", [a], "]
                    Success[1:5]: a
                    Instance of '_WhitespaceParser@0x37ace08b'
                    Failure[1:5]: whitespace expected
                  Success[1:5]: a
                  Instance of '_TrimmingParser@0x37ace08b'
                    Instance of '_WhitespaceParser@0x37ace08b'
                    Failure[1:5]: whitespace expected
                    Instance of '_CharParser@0x37ace08b'
                    Success[1:6]: :
                    Instance of '_WhitespaceParser@0x37ace08b'
                    Success[1:7]:  
                    Instance of '_WhitespaceParser@0x37ace08b'
                    Failure[1:7]: whitespace expected
                  Success[1:7]: :
                  Instance of '_ChoiceParser@0x37ace08b'
                    Instance of '_TrimmingParser@0x37ace08b'
                      Instance of '_WhitespaceParser@0x37ace08b'
                      Failure[1:7]: whitespace expected
                      Instance of '_ActionParser@0x37ace08b'
                        Instance of '_SequenceParser@0x37ace08b'
                          Instance of '_CharParser@0x37ace08b'
                          Failure[1:7]: " expected
                        Failure[1:7]: " expected
                      Failure[1:7]: " expected
                    Failure[1:7]: " expected
                    Instance of '_ActionParser@0x37ace08b'
                      Instance of '_TrimmingParser@0x37ace08b'
                        Instance of '_WhitespaceParser@0x37ace08b'
                        Failure[1:7]: whitespace expected
                        Instance of '_FlattenParser@0x37ace08b'
                          Instance of '_SequenceParser@0x37ace08b'
                            Instance of '_OptionalParser@0x37ace08b'
                              Instance of '_CharParser@0x37ace08b'
                              Failure[1:7]: - expected
                            Success[1:7]: null
                            Instance of '_ChoiceParser@0x37ace08b'
                              Instance of '_CharParser@0x37ace08b'
                              Failure[1:7]: 0 expected
                              Instance of '_RepeatingParser@0x37ace08b'
                                Instance of '_DigitParser@0x37ace08b'
                                Success[1:8]: 1
                                Instance of '_DigitParser@0x37ace08b'
                                Failure[1:8]: digit expected
                              Success[1:8]: [1]
                            Success[1:8]: [1]
                            Instance of '_OptionalParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_CharParser@0x37ace08b'
                                Failure[1:8]: . expected
                              Failure[1:8]: . expected
                            Success[1:8]: null
                            Instance of '_OptionalParser@0x37ace08b'
                              Instance of '_SequenceParser@0x37ace08b'
                                Instance of '_PredicateParser@0x37ace08b'
                                Failure[1:8]: any of eE expected
                              Failure[1:8]: any of eE expected
                            Success[1:8]: null
                          Success[1:8]: [null, [1], null, null]
                        Success[1:8]: 1
                        Instance of '_WhitespaceParser@0x37ace08b'
                        Failure[1:8]: whitespace expected
                      Success[1:8]: 1
                    Success[1:8]: 1
                  Success[1:8]: 1
                Success[1:8]: [a, :, 1]
                Instance of '_RepeatingParser@0x37ace08b'
                  Instance of '_SequenceParser@0x37ace08b'
                    Instance of '_TrimmingParser@0x37ace08b'
                      Instance of '_WhitespaceParser@0x37ace08b'
                      Failure[1:8]: whitespace expected
                      Instance of '_CharParser@0x37ace08b'
                      Failure[1:8]: , expected
                    Failure[1:8]: , expected
                  Failure[1:8]: , expected
                Success[1:8]: []
              Success[1:8]: [[a, :, 1], []]
            Success[1:8]: [[a, :, 1]]
          Success[1:8]: [[a, :, 1]]
          Instance of '_TrimmingParser@0x37ace08b'
            Instance of '_WhitespaceParser@0x37ace08b'
            Failure[1:8]: whitespace expected
            Instance of '_CharParser@0x37ace08b'
            Success[1:9]: }
            Instance of '_WhitespaceParser@0x37ace08b'
            Failure[1:9]: whitespace expected
          Success[1:9]: }
        Success[1:9]: [{, [[a, :, 1]], }]
      Success[1:9]: {a: 1}
    Success[1:9]: {a: 1}
  Success[1:9]: {a: 1}
Success[1:9]: {a: 1}

Let me know what you think?

from dart-petitparser.

kevmoo avatar kevmoo commented on August 10, 2024

Oooo...nice.

I'll have to try it out next time I'm debugging something.

This does seem better that just a stack trace, but I'll have see.

Thanks!

from dart-petitparser.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.