Antlr4: [Feature Request]: C target

Created on 4 Jan 2019  Â·  6Comments  Â·  Source: antlr/antlr4


Antlr3 had one, and it'd be awesome if Antlr4 did, too.

Most helpful comment

Maybe it would be better to create C wrapper for C++ runtime implementation.
I am not saying the that C target is bad idea. But considering the time required for development of the C++ target, the complexity of the implementation....

It makes me think that we should really work on single C compatible runtime. It seems to me that the C++ runtime is not finished and I am not sure when it will be done.

All 6 comments

I'm currently working with c++ target and there are some feature requests that I'd like to see in C target:

  • parsing trees should be traversable without visitors. It means contexts should store alt number by default;
  • for each context we should generate an enum containing all alternative names so that we can later switch-case between alternatives;
  • tokens should have line and position of the last matched character;
  • C target should support memory arenas (seeing how many unnecessary allocations there are in C++ target makes me sad). It should also utilise constant views (in C++ target, many std::strings can be replaced with std::string_views. In C, it is natural to use non-owning char*s to reference strings, so this should not be an issue);
  • there should be customization points for altering error messages.

I'd also like to see CI with sanitizers and fuzzing (C++ target have some UBs and leaks that I can't properly trace).

FYI i've started looking into how ATN works and making some drafts for C runtime.

FYI i've started looking into how ATN works and making some drafts for C runtime.

Fantastic. Thank you!

Bump :)

Well I'm still on it, but things are moving quite slowly because my job takes all the time.

So far I've implemented basic support structures — list, hashmap, interval set, memory pool etc., I also have ATN classes and deserialization for them. I'm working on lexer simulator and DFA.

You can track progress in my fork. Some code review would be appreciated.

Maybe it would be better to create C wrapper for C++ runtime implementation.
I am not saying the that C target is bad idea. But considering the time required for development of the C++ target, the complexity of the implementation....

It makes me think that we should really work on single C compatible runtime. It seems to me that the C++ runtime is not finished and I am not sure when it will be done.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

afucher picture afucher  Â·  4Comments

tzmfreedom picture tzmfreedom  Â·  8Comments

willfaught picture willfaught  Â·  9Comments

james-q-arnold picture james-q-arnold  Â·  6Comments

kaba2 picture kaba2  Â·  6Comments