ANTLR使用入门
-
简介
简介
ANTLR是一个有力的用于读,处理,执行,翻译结构化文本或者二进制文件的解析生成器。它被广泛的使用在编译语言,工具和框架中。通过一个语法,ANTLR可以生成一个能够编译和走通编译树的解析(parser)。
-
使用入门
- 安装Java环境。Antlr是使用Java开发的,所以这个是需要的。
到这个地方下载Antlr工具包antlr-4.1-complete.jar。我这里用的是版本4.
- 把包放在/usr/local/lib路径下,并设置alias环境变量.
这里顺便把CLASSPATH环境变量设置,为以后编译用。
export CLASSPATH=.:/usr/local/lib/antlr-4.1-complete.jar:$CLASSPATH
alias antlr4='java -jar /usr/local/lib/antlr-4.1-complete.jar'
alias grun='java org.antlr.v4.runtime.misc.TestRig'
- 编辑文件Hello.g4
// Define a grammar called Hello
grammar Hello;
r : 'hello'ID ; // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
- 运行程序antlr4 Hello.g4。生成parser和lexer.
- 编译antlr生成的代码
javac*.java
- 运行程序
$ grun Hello r -tree
hello parrt
^D
(r hello parrt)
(That ^D means EOF on unix; it's ^Z in Windows.) The -tree option prints the parse tree in LISP notation.
结果有下列几种输出(还有未列出):
-tokens prints out the token stream.
-tree prints out the parse tree in LISP form.
-gui displays the parse tree visually in a dialog box.
-psfile.ps generates a visual representation of the parse tree in PostScript and
stores it in file.ps. The parse tree figures in this chapter were generated
with -ps.
-
In Big Picture
-
一些概念
Interpreter:解释执行
Translator:翻译程序,由一种语言翻译为另一种语言
Parser / syntax analyzers:根据语法等识别程序
Syntax:句法
Grammar:语法
Separate stages 分割语句
根据单词读入语句,然后和字典中的单词做对比。
Lexical analysis / simply tokenizing :分词
Lexer:词法分析程序