ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition...
-
Upload
ross-preston -
Category
Documents
-
view
220 -
download
0
Transcript of ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition...
![Page 1: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/1.jpg)
ANTLRAndrew Pangborn & Zach Busser
![Page 2: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/2.jpg)
ANTLR in a Nutshell• ANother Tool for Language Recognition
• generates lexers
• generates parsers (and parse trees)
• Java-based, but has runtime implementations in other languages like python, javascript, c, c#, obj-c
• An LL(*) parser
• EBNF grammar notation
![Page 3: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/3.jpg)
ANTLR Features
• Hierarchical lexical rules
• Abstract Syntax Tree generation
• Inline code execution
• Tree grammars
![Page 4: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/4.jpg)
ANTLR Pros
•Target languages besides Java – C, python, Javascript, etc.
•LL(*) - not limited to 1 lookahead token
•Simpler to debug than LALR grammars (no cryptic shift-reduce / reduce-reduce errors)
•ANTLRWorks
![Page 5: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/5.jpg)
ANTLR Shortcomings
• An LL parser – cannot support left-recursive grammars like YACC or PJ2
• Recursive descent approach not great for efficiency
• No mechanism for specifying operator precedence
![Page 6: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/6.jpg)
Getting started with ANTLR
• http://www.antlr.org/wiki/display/ANTLR3/FAQ+-+Getting+Started
![Page 7: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/7.jpg)
Demo Time!
• A simple 4-function expression parser
• 4-function expression evaluator
• AST generation example
![Page 8: ANTLR Andrew Pangborn & Zach Busser. ANTLR in a Nutshell ANother Tool for Language Recognition generates lexers generates parsers (and parse trees) Java-based,](https://reader036.fdocuments.in/reader036/viewer/2022062407/56649dc05503460f94ab4c38/html5/thumbnails/8.jpg)
References
• http://www.corriganjc.net/weblog/archives/2007/06/the_antlr_trini.html
• http://www.antlr.org/wiki/display/ANTLR3/ANTLR+v3+documentation