日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

antlr java_Antlr4 入门

發(fā)布時(shí)間:2023/12/29 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 antlr java_Antlr4 入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Antlr是什么

ANTLR (ANother Tool for Language Recognition ) 是一種語(yǔ)言工具,它提供了一個(gè)框架,可以根據(jù)語(yǔ)法文件(語(yǔ)法描述語(yǔ)言編寫(xiě)的文件)生成該語(yǔ)法所對(duì)應(yīng)的語(yǔ)言識(shí)別器、編譯器和解釋器。 例如,給定一個(gè)識(shí)別JSON的語(yǔ)法,ANTLR將會(huì)根據(jù)該語(yǔ)法生成一個(gè)程序,此程序可以通過(guò)ANTLR來(lái)識(shí)別輸入的json字符串。

環(huán)境搭建

這里使用Antlr4(version 4.7.2)

下載

配置

假設(shè)將上面下載的jar放到路徑/usr/local/lib下(當(dāng)然隨便你放到哪,只是舉例)

在系統(tǒng)中加入調(diào)用ANTLR命令(可以不配,不過(guò)配了會(huì)更方便使用):

編輯文件vi ~/.bash_profile

輸入并保存

export ANTLR4_HOME=/usr/local/lib/antlr-4.7.2-complete.jar

export CLASSPATH=$CLASSPATH:$ANTLR4_HOME

# 設(shè)置啟動(dòng)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

這個(gè)例子是將例如"hello abc"的字符串解析為抽象語(yǔ)法樹(shù)。

假設(shè)工作目錄是 /tmp/test,在目錄下新建語(yǔ)法文件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

接著運(yùn)行ANTLR,根據(jù)語(yǔ)法文件Hello.g4生成對(duì)應(yīng)的詞法分析和語(yǔ)法分析程序:

$ cd /tmp/test

$ antlr4 Hello.g4

這時(shí)候文件夾下會(huì)多出幾個(gè)文件(只選擇典型的2個(gè)文件說(shuō)明)

HelloLexer.java 詞法分析

HelloParser.java 語(yǔ)法分析

然后利用javac對(duì)Java文件進(jìn)行編譯:

$ javac Hello*.java

測(cè)試

首先是詞法分析測(cè)試。啟動(dòng)grun,測(cè)試之前的語(yǔ)法:

$ grun Hello r -tokens

hello parrt # 輸入要被識(shí)別的語(yǔ)句

EOF # 在UNIX系統(tǒng)上輸入 Ctrl+D 來(lái)輸入文件結(jié)束符

下面就會(huì)顯示詞法分析結(jié)果:

[@0,0:4='hello',,1:0]

[@1,6:10='parrt',,1:6]

[@2,12:11='',,2:0]

然后進(jìn)行語(yǔ)法分析測(cè)試。

$ grun Hello r -tree

hello parrt

EOF

顯示

(r hello parrt)

還可以將語(yǔ)法樹(shù)可視化:

$ grun Hello r -gui

hello parrt

EOF

接著會(huì)彈出一個(gè)對(duì)話框。

hello-parrt.png

Ref

《ANTLR4 權(quán)威指南》

總結(jié)

以上是生活随笔為你收集整理的antlr java_Antlr4 入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。