介绍
欢迎使用ANTLR的Honey badger 4.0发布版本。他的命名是为了纪念Crazy Nasty-Ass Honey Badger 中无惧的英雄,因为不管你给他什么,ANTLR v4都会接收,他就是不会崩溃。参见Why do we need ANTLR v4? 和the preface of the ANTLR v4 book。
安装
ANTLR其实是两个东东:一个把你的grammer翻译成java语言(或者其他目标语言)编写的parser/lexer的工具和生成的parser/lexer所需的运行环境。即使你是在用ANTLRWorks来运行ANTLR工具,生成的代码依然需要运行环境库。
你需要做的第一件事可能是下载和安装ANTLR v4的合作者Sam Harwell编写的ANTLRWorks。即使你只是用他来编辑代码,也是很好的。然后,跟着介绍下面是获取你系统适用的运行环境来生成parsers/lexers。跟着,我谈谈about antlr-4.0-complete.jar,他包含了工具、运行环境和其他所有支持的库。
如果你打算集成ANTLR到你已经存在的使用mvn、ant构建系统,或者想要把ANTLR集成到你的集成环境,比如eclipse或者intellij,参见Integrating ANTLR into Development Systems。
Unix
0.安装 java(1.6或者更高版本)
1.下载
$ cd /usr/local/lib
$ curl -O http://www.antlr4.org/download/antlr-4.0-complete.jar
或者直接用浏览器从网站下:
http://antlr4.org/download.html
把他放到合适的地方,比如 /user/local/lib
2.把antlr-4.0-complete.jar添加到你的CLASSPATH:
$ export CLASSPATH=".:/usr/local/lib/antlr-4.0-complete.jar:$CLASSPATH"
把这个放到你的.bash_profile或者你的其他启动脚本里面也是好主意,只要在启动的时候能够执行这条命令就行。
3.给你的ANTLR Tool和TestRig创建别名(短一点的)
$ alias antlr4='java -jar /usr/local/lib/antlr-4.0-complete.jar'
$ alias grun='java org.antlr.v4.runtime.misc.TestRig'
WINDOWS
(谢谢Graham Wideman)
0.安装java(1.6或者以上版本)
1.下载http://antlr.org/download/antlr-4.0-complete.jar
保存到你的第三方java库,比如:C:\Javalib
2.添加antlr-4.0-complete.jar 到 CLASSPATH,也就是:
永久添加:
临时添加,在运行cmd中,执行命令:
SET CLASSPATH=C:\Javalib\antlr-4.0-complete.jar;%CLASSPATH%
(这个地方我们也需要那个“点”吗?)
3.用批处理文件或者doskey为ANTLR工具和TestRig创建便宜的命令:
批处理文件,在系统的PATH某个目录下,或者在后写的代码目录下,能够让cmd执行到就行:
antlr4.bat:
java org.antlr.v4.Tool %*
run.bat:
java org.antlr.v4.runtime.misc.TestRig %*
或者使用doskey命令:
doskey antlr4=java org.antlr.v4.Tool $*
doskey grun =java org.antlr.v4.runtime.misc.TestRig $*
在命令行中直接执行org.antlr.v4.Tool
$ java org.antlr.v4.Tool
ANTLR Parser Generator Version 4.0
-o ___ specify output directory where all output is generated
-lib ___ specify location of .tokens files
...
或者在java中执行jar包
$ java -jar /usr/local/lib/antlr-4.0-complete.jar
ANTLR Parser Generator Version 4.0
-o ___ specify output directory where all output is generated
-lib ___ specify location of .tokens files
...
第一个例子
在一个临时的目录中,编写文本文件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
然后用ANTLR工具运行它:
$ cd /tmp
$ antlr4 Hello.g4
$ javac Hello*.java
现在测试:
$ grun Hello r -tree
hello parrt
^D
(r hello parrt)
(其中 ^D 表示UNIX的 EOF ; Windows中的EOF是^Z ) -tree 选项表示打印语法树的符号。
可视化的语法书效果会更好:
$ grun Hello r -gui
hello parrt
^D
然后就会弹出一个对话框:
书中示例源代码:
http://pragprog.com/titles/tpantlr2/source_code
github库:
https://github.com/antlr/grammars-v4