日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

antlr java_Antlr4 入门

發布時間:2023/12/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 antlr java_Antlr4 入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Antlr是什么

ANTLR (ANother Tool for Language Recognition ) 是一種語言工具,它提供了一個框架,可以根據語法文件(語法描述語言編寫的文件)生成該語法所對應的語言識別器、編譯器和解釋器。 例如,給定一個識別JSON的語法,ANTLR將會根據該語法生成一個程序,此程序可以通過ANTLR來識別輸入的json字符串。

環境搭建

這里使用Antlr4(version 4.7.2)

下載

配置

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

在系統中加入調用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'

執行命令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,根據語法文件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系統上輸入 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 入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。