1. 下载安装
##1. 切目录
cd /usr/local/lib
##2. 下载jar包
wget https://www.antlr.org/download/antlr-4.0-complete.jar --no-check-certificate
##3.配置环境变量
export CLASSPATH=.:/usr/local/lib/antlr-4.0-complete.jar
##4.设置别名
alias antlr4='java -jar /usr/local/lib/antlr-4.0-complete.jar'
相对于
alias antlr4='java org.antlr.v4.Tool'
##5.测试 antlr4 命令
[root@gaocun lib]# antlr4
ANTLR Parser Generator Version 4.0
-o ___ specify output directory where all output is generated
-lib ___ specify location of grammars, tokens files
-atn generate rule augmented transition network diagrams
-encoding ___ specify grammar file encoding; e.g., euc-jp
-message-format ___ specify output style for messages in antlr, gnu, vs2005
2. 运行antlr并测试识别程序
##1.创建 Hello.g4
grammar Hello; // 定义一个名为Hello的语法
r : 'hello' ID; // 匹配一个关键字hello和一个紧随其后的标识符
ID : [a-z]+; // 指定 标识符的组成规则(一个或多个小写字母)
WS : [\t\r\n]+ -> skip; // 忽略一个或多个 \t\r\n
##2.使用 org.antlr.v4.Tool 和 Hello.g4 = 来生成 词法解析器和语法解析器
antlr4 Hello.g4
相对于
java org.antlr.v4.Tool Hello.g4
[root@gaocun lib]# ls
antlr-4.0-complete.jar
HelloBaseListener.java
Hello.g4
HelloLexer.java
HelloLexer.tokens
HelloListener.java
HelloParser.java
Hello.tokens
##3.编译 生成java源文件
javac *.java
注意: 编译的时候需要 antlr-4.0-complete.jar里面的类,
确保你配置了 CLASSPATH环境变量
否则 你需要指定 -cp=/usr/local/lib/antlr-4.0-complete.jar
[root@gaocun lib]# ls | grep class
HelloBaseListener.class
HelloLexer.class
HelloListener.class
HelloParser.class
HelloParser$RContext.class
##4.使用 自带的 TestRig来调试 (注意 antlr-4.6及以后版本 使用 org.antlr.v4.gui.TestRig)
4.1 查看分词
[root@gaocun lib]# java org.antlr.v4.runtime.misc.TestRig Hello r -tokens
hello gaocun
EOF => 文件结束符(unix ctrl+D win ctrl+Z)
// 生成的结果
[@0,0:4='hello',<1>,1:0]
[@1,6:11='gaocun',<2>,1:6]
[@2,13:12='<EOF>',<-1>,2:0]
FAQ: 错误1: 找不到或无法加载主类 org.antlr.v4.runtime.misc.TestRig
没有配置 CLASSPATH环境变量
或者 你需要指定 java -cp=/usr/local/lib/antlr-4.0-complete.jar
错误2: Can't load Hello as lexer or parser
java 无法找到 生成词法分析器和语法分析器(就是编译后的.class文件)
可以 java -cp=/usr/local/lib/hello
4.2 查看语法树
[root@gaocun lib]# java org.antlr.v4.runtime.misc.TestRig Hello r -tree
hello gaocun
line 1:5 token recognition error at: ' '
(r hello gaocun)
4.3 查看语法树(可视化)
java org.antlr.v4.runtime.misc.TestRig Hello r -gui
