Giter Club home page Giter Club logo

Comments (3)

mike-lischke avatar mike-lischke commented on June 19, 2024

Yes, looks like the tests are not isolated, as they should be. But I think that's not tricky to solve. I would much appreciate if you could file a PR for that while you are at it.

And of course once you are done with your port I'll happily take it as another contribution!

from antlr4-c3.

jlindermeir avatar jlindermeir commented on June 19, 2024

Hey Mike, sorry for the delay. I'll see what I can do.
To make the PR, could you answer the following questions?

  • Is the test case in question correct as it is now, even when run in isolation? I.e. should the ID and EQUAL tokens be in the candidates, even if they are in the ignoredTokens set?
  • How should we isolate the test cases? I can think of two options: We could either make the followSetsPerATN a per-instance field, or add a method to reset it and call that at the beginning of each test case. I'd prefer the former option, as that would also allow us to get rid of the fuzzy per-parser caching, which currently only uses the parser name and therefore does not take configuration changes into account.

We'll try to add the python port soon!

from antlr4-c3.

mike-lischke avatar mike-lischke commented on June 19, 2024

Good questions. Ignored tokens should not appear in the candidate lists, otherwise you wouldn't need to add them to the ignore list. It's not clear how this could have been accepted in the past.

Having a per instance cache for the follow sets seems counterproductive. The ATN is static and lives during the entire application lifetime. Parsing different input doesn't invalidate it or change it. Only the DFA cache changes while parsing is going on, but that has no influence on the ATN walk the c3 engine is performing when looking for candidates.

from antlr4-c3.

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.