Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Usage  





2 Licensing  





3 ANTLR 4  



3.1  Development  







4 Projects  





5 Example  





6 See also  





7 References  





8 Bibliography  





9 Further reading  





10 External links  














ANTLR






Čeština
Deutsch
Español
فارسی
Français

Italiano
Magyar
Nederlands

Polski
Русский
Türkçe
Українська
Tiếng Vit

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


ANTLR
Original author(s)Terence Parr and others
Initial releaseApril 10, 1992; 32 years ago (1992-04-10)
Stable release

4.13.1 / 4 September 2023; 10 months ago (2023-09-04)

Repository
Written inJava
PlatformCross-platform
LicenseBSD License
Websitewww.antlr.org

In computer-based language recognition, ANTLR (pronounced antler), or ANother Tool for Language Recognition, is a parser generator that uses a LL(*) algorithm 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.[citation needed]

PCCTS 1.00 was announced April 10, 1992.[1][2]

Usage[edit]

ANTLR takes as input a grammar that specifies a language and generates as output source code for a recognizer of 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,[3] Version 4 at present targets C#, C++, Dart,[4][5] Java, JavaScript, Go, PHP, Python (2 and 3), and Swift.

A language is specified using a context-free grammar expressed using Extended Backus–Naur Form (EBNF).[citation needed][6] ANTLR can generate lexers, parsers, tree parsers, and combined lexer-parsers. Parsers can automatically generate parse treesorabstract syntax trees, which can be further processed with tree parsers. ANTLR provides a single consistent notation for specifying lexers, parsers, and tree parsers.

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, 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.[citation needed][6]

Other than 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 help processing abstract syntax trees.[citation needed][6]

Licensing[edit]

ANTLR 3[citation needed] and ANTLR 4 are free software, published under a three-clause BSD License.[7] Prior versions were released as public domain software.[8] Documentation, derived from Parr's book The Definitive ANTLR 4 Reference, is included with the BSD-licensed ANTLR 4 source.[7][9]

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"[10] and "ANTLR 3"[11] plugins for Eclipse hosted on SourceForge.[citation needed]

ANTLR 4[edit]

ANTLR 4 deals with direct left recursion correctly, but not with left recursion in general, i.e., grammar rules x that refer to y that refer to x.[12]

Development[edit]

As reported on the tools[13] page of the ANTLR project, plug-ins that enable features like syntax highlighting, syntax error checking and code completion are freely available for the most common IDEs (Intellij IDEA, NetBeans, Eclipse, Visual Studio[14] and Visual Studio Code).

Projects[edit]

Software built using ANTLR includes:

Over 200 grammars implemented in ANTLR 4 are available on GitHub.[19] They range from grammars for a URL to grammars for entire languages like C, Java and Go.

Example[edit]

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

 // Common options, for example, the target language
 options
 {
  language = "CSharp";
 }
 // Followed by the parser 
 class SumParser extends Parser;
 options
 {
   k = 1; // Parser Lookahead: 1 Token
 }
 // Definition of an expression
 statement: INTEGER (PLUS^ INTEGER)*;
 // Here is the Lexer
 class SumLexer extends Lexer;
 options
 {
   k = 1; // Lexer Lookahead: 1 characters
 }
 PLUS: '+';
 DIGIT: ('0'..'9');
 INTEGER: (DIGIT)+;

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

 TextReader reader;
 // (...) Fill TextReader with character
 SumLexer lexer = new SumLexer(reader);
 SumParser parser = new SumParser(lexer);

 parser.statement();

See also[edit]

References[edit]

  1. ^ "Comp.compilers: Purdue Compiler-Construction Tool Set 1.00 available". compilers.iecc.com. 10 Apr 1992. Retrieved 2023-05-05.
  • ^ "Comp.compilers: More on PCCTS". compilers.iecc.com. 30 Apr 1992. Retrieved 2023-05-05.
  • ^ SML/NJ Language Processing Tools: User Guide
  • ^ "Runtime Libraries and Code Generation Targets". github. 6 January 2022.
  • ^ "The ANTLR4 C++ runtime reached home – Soft Gems".
  • ^ a b c Parr, Terence (2013-01-15). The Definitive ANTLR 4 Reference. Pragmatic Bookshelf. ISBN 978-1-68050-500-9.
  • ^ a b "antlr4/LICENSE.txt". GitHub. 2017-03-30.
  • ^ Parr, Terence (2004-02-05). "licensing stuff". antlr-interest (Mailing list). Archived from the original on 2011-07-18. Retrieved 2009-12-15.
  • ^ "ANTLR 4 Documentation". GitHub. 2017-03-30.
  • ^ "ANTLR plugin for Eclipse".
  • ^ "ANTLR IDE. An eclipse plugin for ANTLR grammars".
  • ^ What is the difference between ANTLR 3 &4
  • ^ "ANTLR Development Tools".
  • ^ "ANTLR Language Support - Visual Studio Marketplace".
  • ^ "GroovyRecognizer (Groovy 2.4.0)".
  • ^ "Jython: 31d97f0de5fe".
  • ^ Ebersole, Steve (2018-12-06). "Hibernate ORM 6.0.0.Alpha1 released". In Relation To, The Hibernate team blog on everything data. Retrieved 2020-07-11.
  • ^ "OpenJDK: Compiler Grammar".
  • ^ Grammars written for ANTLR v4; expectation that the grammars are free of actions.: antlr/grammars-v4, Antlr Project, 2019-09-25, retrieved 2019-09-25
  • Bibliography[edit]

  • Parr, Terence (December 2009), Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (1st ed.), Pragmatic Bookshelf, p. 374, ISBN 978-1-934356-45-6
  • Parr, Terence (January 15, 2013), The Definitive ANTLR 4 Reference (1st ed.), Pragmatic Bookshelf, p. 328, ISBN 978-1-93435-699-9
  • Further reading[edit]

    External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=ANTLR&oldid=1181806076"

    Categories: 
    1992 software
    Free compilers and interpreters
    Parser generators
    Software using the BSD license
    Public-domain software
    Hidden categories: 
    Articles needing additional references from March 2016
    All articles needing additional references
    All articles with unsourced statements
    Articles with unsourced statements from March 2016
    Articles with unsourced statements from September 2017
    Articles with unsourced statements from October 2017
    Official website different in Wikidata and Wikipedia
     



    This page was last edited on 25 October 2023, at 09:46 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki