ANTLR is lexer generator. It translates:
ANTLR is implemented in Java and generates lexer and parser in the following languages:
It grew from the old C/C++ PCCTS project. Java is then a “recent” addition in the ANTLR's lifetime.
There are three use cases:
antlr4 # generate the parser
grun <grammar-name> <rule-to-test> <input-filename(s)> # CTRL+D/CTRL+Z to quit without file name
antlr4 <options> <grammar-file-g4>
# javascript target
antlr4 -Dlanguage=JavaScript myGrammar.g4
ANTLRInputStream input = new ANTLRInputStream(sqlStream);
MyLanguageLexer lexer = new MyLanguageLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
MyLanguageParser parser = new MyLanguageParser(tokens);
CollectingErrorListener errorListener = new CollectingErrorListener();
parser.removeErrorListeners();
parser.addErrorListener(errorListener);
ANTLR is made up of two components:
StringTemplate is a library that supports using templates with placeholders for outputting text (ex. Java source code)