使用golang+antlr4構建一個自己的語言解析器(一)

2023-03-24 18:00:58

Antlr4 簡介


ANTLR(全名:ANother Tool for Language Recognition)是基於LL(*)演演算法實現的語法解析器生成器(parser generator),用Java語言編寫,使用自上而下(top-down)的遞迴下降LL剖析器方法。由舊金山大學的Terence Parr博士等人於1989年開始發展。

antlr4 是一款強大的語法分析器生成工具,可用於讀取、處理、執行和翻譯結構化的文字或二進位制檔案。它被廣泛的應用於學術領域和工業生產實踐,是眾多語言、工具和框架的基石。Twitter 搜尋使用 antlr 進行語法分析,hadoop 生態系統中的 Hive、Pig、資料倉儲和分析系統所使用的語言都用到了 antlr,Lex Machina 將 antlr 用於分析法律文字,oracle 公司在 sql 開發者 IDE 和遷移工具中使用了 antlr,NetBeans 公司的 IDE 使用 antlr 來解析 c++,Hibernate 物件-關係對映框架 ORM 使用 antlr 來處理 HQL 語言。

Antlr4 使用


1. 下載最新版Antlr4

https://www.antlr.org/download/antlr-4-12.0-complete.jar (這裡下載得是12版本的Antlr4)

2. 下載JDK11

因為Antlr4版本4.12使用的JDK最低使用11版本的,所以這裡我們下載JDK11,下載連結:https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html

3. 將下載的antlr4 jar包移動到JDK目錄中

JDK一般安裝在C:\Program Files\Java,新建資料夾:antlr,將antlr-4.12.0-complete.jar放入該資料夾中,如下圖:


4. 設定antlr4命令:

新建antlr4.bat
輸入
@ECHO OFF
"C:\Program Files\Java\jdk-11.0.17\bin\java" -jar "%~dp0antlr-4.12.0-complete.jar"

儲存使用CMD執行下指令碼,檢視到如下圖則證明antlr可以正常工作

新建grun.bat,這個是Antlr4自帶的用來檢查自定義的語法樹是否正確的工具
輸入
@ECHO OFF
"C:\Program Files\Java\jdk-11.0.17\bin\java" -cp "%~dp0antlr-4.12.0-complete.jar" org.antlr.v4.gui.TestRig %*

儲存使用CMD執行下指令碼,檢視到如下圖則證明antlr工具可以正常工作

上述操作做完檔案目錄如下圖

5. 設定環境變數

  1. 設定系統變數CLASSPATH:.C:\Program Files\Java\jdk-11.0.17\bin(注意開頭有個點)
  2. 設定系統變數JAVA_HOME:C:\Program Files\Java\jdk-11.0.17
  3. 在PATH中新增:%JAVA_HOME%\bin

設定好之後開啟CMD,輸入Java-version和Javac-version,驗證Java環境是否正確


這裡有的小夥伴輸入java-version可以執行,輸入javac-version不能執行,可以看下環境變數設定的是否正確,環境變數正確,可以重啟電腦,有時候環境變數重啟之後才會生效

到此,使用antlr4的環境就設定好了。接下來,就是學習使用antlr4。距離成功已經開啟了大門!!!