-
-
Notifications
You must be signed in to change notification settings - Fork 11
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
Consider switching to JavaCC21 #48
Comments
An additional note: the ANTLR4 runtime is around 300kB, whereas Chasm-Lang is around 100kB. So this would also reduce the required doenload size for users by a lot. |
Hi, I noticed that you had started using JavaCC21 and I am always interested in real-world usage. I dug up this file and I actually thought to say that you are using the clunky old legacy JavaCC syntax. I switched the grammar over to the cleaner streamlined syntax. I guess I'll just paste it in below.
|
But then I looked at the file, and though a bit cleaner and easier to read, it really does under-utilize the JavaCC21 feature set. I spent some time (more than I planned to!) refactoring the grammar. This version is quite a bit longer, but it generates everything in the package
|
@revusky While this seems like an excellent contribution, it would likely be much better suited as a pull request so that maintainers can more easily review and comment on it. |
Oh hi!
Since you are here though, I'd like to mention my biggest Problem with JavaCC21: There is no versioning. From what I see, the only place to download it is from the website with a link that is unstable (i.e. doesn't always point to the same version). This is bad for repeatable builds. A maven publication would be highly appreciated. |
Just saw that you made a PR as suggested. Let's move the discussion there then. I'll also close this issue since the switch already happened. |
The
chasm-lang
module currently uses ANTLR to generate its lexer and parser.While this is fine in principle, it introduces both an additoinal compile time dependency and a runtime dependency.
Since I expect the
chasm-lang
module to be used in gradle plugins, having many dependencies is undesirable.Besides ANTLR, there is currently also a dependency on ASM and Chasm as well, which would be removed as described in #49.
This means that by dropping ANTLR, we could remove all runtime dependencies from the module.
The suggested alternative is JavaCC21.
It works very similar to ANTLR in principle, so the conversion shouldn't be particularly hard.
The advantage is that it generates all reuired classes that are required for runtime.
Note that shadowing ANTLR would be possible, however I am still unsure about licensing behaviour when shadowing libraries.
JavaCC21 on the contrary requires no particular licensing, since the files geneated by it belong to us.
The text was updated successfully, but these errors were encountered: