ANTLR (ANother Tool for Language Recognition)是用來做語法解析的工具,可產生的解析器語言支援Java、C#、Python、JavaScript、Go、C++、Swift、PHP,本篇介紹的是C#的部分。
ANTLR是用Java開發的,所以必須先安裝Java,我使用的是AdoptOpenJDK,OpenJDK 8 (LTS) - HotSpot的版本。
將下載的檔案解壓縮到C槽。
在環境變數path
加入C:\jdk8u242-b08\bin
。
完成以上步驟可在終端機輸入java -version
確認是否設置成功。
到ANTLR官網下載antlr-4.8-complete.jar
並儲存到C:\jdk8u242-b08\lib
。
在環境變數CLASSPATH
加入
.;C:\jdk8u242-b08\lib\antlr-4.8-complete.jar;%CLASSPATH%
。
在C:\jdk8u242-b08\bin
建立一個antlr4.bat
檔案,內容為
java org.antlr.v4.Tool %*
。
在C:\jdk8u242-b08\bin
建立一個grun.bat
檔案,內容為
java org.antlr.v4.gui.TestRig %*
。
完成以上步驟可在終端機輸入antlr4
確認是否設置成功。
安裝ANTLR4 grammar syntax support擴充套件。
在settings.json
加入以下設定。
在launch.json
的configurations
加入以下設定。
建立ANTLR的解析規則檔,副檔名為.g4
,並在第一行加入grammar 檔名;
。
例如:檔名為Hello.g4
,則此檔案第一行為grammar Hello;
。
ANTLR基本語法:規則名稱 : 規則內容1 | 規則內容2 ;
規則名稱第一個字母小寫為parser,大寫為lexer。
從NuGet安裝Antlr4.Runtime.Standard套件。
將ANTLR產生的四支.cs
檔複製到C#專案裡。
加入using命名空間指示詞。
加入以下程式碼可開始解析。
如果要在某些解析規則中做一些處理,需先加入以下class,然後才在這個class裡加入要處理的function。
要處理的function是從HelloVisitor.cs
找出和ANTLR規則名稱相對應的function後修改而成。
例如:Result VisitExpr([NotNull] HelloParser.ExprContext context);
function長相: