It is my great pleasure to introduce the next generation of ANTLR: antlr-ng. See also https://www.antlr-ng.org.

This tool is a port of ANTLR to TypeScript, which makes Java unnecessary for parser generation. Instead, Node.js (more precisely npm) is now required, which makes it much easier to use (no more aliases and no more CLASSPATH or PATH manipulation). Instead, simply install it using `npm i -g antlr-ng` and then use it like any other terminal command.

For more information and details, go to the homepage https://www.antlr-ng.org. Of course, antlr-ng is also available under the BSD 3-clause license.

The port opens up completely new possibilities for the further development of ANTLR, in particular the integration into modern software development processes (monorepos, web development, etc.), old habits have been cut off (e.g. references to ANTLR v3 have been removed) and it is now much easier to implement new features. There are already a number of ideas in the Github repository https://github.com/mike-lischke/antlr-ng/issues and new ones are welcome.

One of the most important planned changes is the separation of tool and runtimes. In the future, these will exist as independent units (as is already the case with some runtimes in ANTLR4, such as antlr4ts, antlr4ng, antlr4cs).

The antlr-ng tool is now ready for production use and creates (with only minor differences) the same parser/lexer/listener/visitor files as the old ANTLR4 tool.

Special thanks go to Ken Domino (https://github.com/kaby76), who constantly checked antlr-ng for errors during the early development phase and tested it with all grammars in the grammar-v4 repository.

About me: I am a professional software developer at Oracle (30 years of experience) and have been using ANTLR for around 20 years. I am a member of the ANTLR core and runtime teams and have developed three runtimes myself: C++ as co-author, TypeScript and a WebAssembly variant that unfortunately does not work well.

I hope you like this new tool in the ANTLR landscape and if you are curious to see what features are planned check out: https://github.com/mike-lischke/antlr-ng/issues.

If you like to help with antlr-ng’s development just open pull requests or issues with questions or changes.

Comments are closed, but trackbacks and pingbacks are open.