Table of Contents

Antlr (ANother Tool for Language Recognition)

About

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.

The url string was not validated as an URL (http://www.antlr.org:license.html). Error: The url (http://www.antlr.org:license.html) is not validANTLR is licensed under BSD.

Getting started

Use cases

There are three use cases:

LifeCyle / Workflow

  1. Write the grammar using one or more files with extension .g4
  2. Test your grammar with grun (note that you can also type the input at the console)
antlr4 # generate the parser
grun <grammar-name> <rule-to-test> <input-filename(s)> # CTRL+D/CTRL+Z to quit without file name
  1. Optionally write StringTemplate templates for producing output.
  2. Generate the lexer and parser classes from the grammar along with:
antlr4 <options> <grammar-file-g4>
# javascript target
antlr4 -Dlanguage=JavaScript myGrammar.g4
  1. Write an application that uses the the generated classes.
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);

Component

ANTLR is made up of two components:

Eclipse

Sample

Glossary

StringTemplate

StringTemplate is a library that supports using templates with placeholders for outputting text (ex. Java source code)

Documentation