antlr java_Antlr4 入门
Antlr是什么
ANTLR (ANother Tool for Language Recognition ) 是一種語言工具,它提供了一個框架,可以根據(jù)語法文件(語法描述語言編寫的文件)生成該語法所對應的語言識別器、編譯器和解釋器。 例如,給定一個識別JSON的語法,ANTLR將會根據(jù)該語法生成一個程序,此程序可以通過ANTLR來識別輸入的json字符串。
環(huán)境搭建
這里使用Antlr4(version 4.7.2)
下載
配置
假設將上面下載的jar放到路徑/usr/local/lib下(當然隨便你放到哪,只是舉例)
在系統(tǒng)中加入調用ANTLR命令(可以不配,不過配了會更方便使用):
編輯文件vi ~/.bash_profile
輸入并保存
export ANTLR4_HOME=/usr/local/lib/antlr-4.7.2-complete.jar
export CLASSPATH=$CLASSPATH:$ANTLR4_HOME
# 設置啟動antlr4的別名
alias antlr4='java -jar /usr/local/lib/antlr-4.7.2-complete.jar'
alias grun='java org.antlr.v4.gui.TestRig'
執(zhí)行命令source ~/.antlr_profile
Example
這個例子是將例如"hello abc"的字符串解析為抽象語法樹。
假設工作目錄是 /tmp/test,在目錄下新建語法文件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,根據(jù)語法文件Hello.g4生成對應的詞法分析和語法分析程序:
$ cd /tmp/test
$ antlr4 Hello.g4
這時候文件夾下會多出幾個文件(只選擇典型的2個文件說明)
HelloLexer.java 詞法分析
HelloParser.java 語法分析
然后利用javac對Java文件進行編譯:
$ javac Hello*.java
測試
首先是詞法分析測試。啟動grun,測試之前的語法:
$ grun Hello r -tokens
hello parrt # 輸入要被識別的語句
EOF # 在UNIX系統(tǒng)上輸入 Ctrl+D 來輸入文件結束符
下面就會顯示詞法分析結果:
[@0,0:4='hello',,1:0]
[@1,6:10='parrt',,1:6]
[@2,12:11='',,2:0]
然后進行語法分析測試。
$ grun Hello r -tree
hello parrt
EOF
顯示
(r hello parrt)
還可以將語法樹可視化:
$ grun Hello r -gui
hello parrt
EOF
接著會彈出一個對話框。
hello-parrt.png
Ref
《ANTLR4 權威指南》
總結
以上是生活随笔為你收集整理的antlr java_Antlr4 入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【云计算与大数据技术】大数据系统总体架构
- 下一篇: webpack 5 模块联邦实现微前端疑