Supriya Ghosh (Editor)

ANTLR

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Development status
  
in active development

Written in
  
Java

Original author(s)
  
Terence Parr and others

Initial release
  
February 1992; 25 years ago (1992-02)

Stable release
  
4.6 / 15 December 2016; 2 months ago (2016-12-15)

Repository
  
github.com/antlr/antlr4

In computer-based language recognition, ANTLR (pronounced Antler), or Another Tool For Language Recognition, is a parser generator that uses LL(*) for parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is Professor Terence Parr of the University of San Francisco.

Contents

Usage

ANTLR takes as input a grammar that specifies a language and generates as output source code for a recognizer for that language. While version 3 supported generating code in the programming languages Ada95, ActionScript, C, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby, and Standard ML, the current release at present only targets Java, C#, JavaScript, Python2, Python3, Swift, Go. A new, C++ target also exists. A language is specified using a context-free grammar which is expressed using Extended Backus–Naur Form (EBNF).

ANTLR can generate lexers, parsers, tree parsers, and combined lexer-parsers. Parsers can automatically generate parse trees or abstract syntax trees which can be further processed with tree parsers. ANTLR provides a single consistent notation for specifying lexers, parsers, and tree parsers. This is in contrast with other parser/lexer generators and adds greatly to the tool's ease of use.

By default, ANTLR reads a grammar and generates a recognizer for the language defined by the grammar (i.e. a program that reads an input stream and generates an error if the input stream does not conform to the syntax specified by the grammar). If there are no syntax errors, then the default action is to simply exit without printing any message. In order to do something useful with the language, actions can be attached to grammar elements in the grammar. These actions are written in the programming language in which the recognizer is being generated. When the recognizer is being generated, the actions are embedded in the source code of the recognizer at the appropriate points. Actions can be used to build and check symbol tables and to emit instructions in a target language, in the case of a compiler.

As well as lexers and parsers, ANTLR can be used to generate tree parsers. These are recognizers that process abstract syntax trees which can be automatically generated by parsers. These tree parsers are unique to ANTLR and greatly simplify the processing of abstract syntax trees.

Licensing

ANTLR 3 is free software, published under a three-clause BSD License. Prior versions were released as public domain software. The book The Definitive ANTLR 4 Reference, also written by Parr, is available free for charge in source form.

Various plugins have been developed for the Eclipse development environment to support the ANTLR grammar, including ANTLR Studio, a proprietary product, as well as the "ANTLR 2" and "ANTLR 3" plugins for Eclipse hosted on SourceForge.

ANTLR 4

ANTLR 4 deals with left recursion correctly (except for indirect left recursion, i.e. grammars rules x which refer to y which refer to x) and supports actions and attributes flexibly. That is, actions can be defined separately from the grammar, allowing for easier targeting of multiple languages.

Projects

Here is a non-comprehensive list of software built using ANTLR:

  • Groovy
  • Jython
  • Hibernate
  • OpenJDK Compiler Grammar project experimental version of the javac compiler based upon a grammar written in ANTLR
  • Apex, Salesforce.com's programming language
  • The expression evaluator in Numbers, Apple's spreadsheet
  • Twitter's search query language
  • Weblogic server
  • IntelliJ IDEA and Clion.
  • Apache Cassandra
  • Processing
  • JabRef
  • Example

    In the following example, a parser in ANTLR describes the sum of expressions can be seen in the form of "1 + 2 + 3":

    The following listing demonstrates the call of the parser in a program:

    References

    ANTLR Wikipedia


    Similar Topics