ANTLR v4入门

介绍

欢迎使用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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值