[go: nahoru, domu]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request]: C target #2465

Open
davidfetter opened this issue Jan 4, 2019 · 8 comments
Open

[Feature Request]: C target #2465

davidfetter opened this issue Jan 4, 2019 · 8 comments

Comments

@davidfetter
Copy link

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

@AmatanHead
Copy link

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).

@AmatanHead
Copy link

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

@davidfetter
Copy link
Author

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

Fantastic. Thank you!

@davidfetter
Copy link
Author

Bump :)

@AmatanHead
Copy link

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.

@Nic30
Copy link
Contributor
Nic30 commented Mar 29, 2019

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.

@KvanTTT KvanTTT mentioned this issue Apr 6, 2021
@JackNWhite
Copy link

@AmatanHead, may I ask if your C target is still in progress? Your fork mentioned above is inaccessible.

@jimidle
Copy link
Collaborator
jimidle commented Sep 13, 2022

Personally, I think it is too much work and maintenance to create a C target for v4. Or I would have probably done it.

Not impossible, but there are is a lot of OOP stuff in v4 that means you either have a ton of simulation or a completely different system.

Even a link compatible C++ runtime would be work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants