ANTLR

說明

在文法檔上呼叫 ANTLR 轉譯器產生器。

若要使用 ANTLR 任務,請將 target 屬性設定為要處理的文法檔名稱。您也可以選擇設定 outputdirectory,將產生的檔案寫入特定目錄。否則,ANTLR 會將產生的檔案寫入包含文法檔的目錄。

此任務僅在文法檔(或 glib 屬性指定的超文法)比產生的檔案新時才會呼叫 ANTLR。

注意:此任務依賴於 Apache Ant 發行版中未包含的外部函式庫。請參閱 函式庫相依性 以取得更多資訊。

Antlr 2.7.2 注意:您需要 antlrall.jar,它可以透過下載時提供的 Makefile 的 antlr-all.jar 目標建立。

參數

屬性 說明 必要
target 要處理的文法檔。
outputdirectory 要將產生的檔案寫入的目錄。 否;預設為包含文法檔的目錄
glib 目標文法會覆寫的選用超文法檔。此功能僅需要用於進階詞彙。
debug 當設定為 yes 時,此旗標會將程式碼新增到產生的剖析器,在呼叫時會啟動 ParseView 除錯器。
注意:ParseView 是需要安裝的獨立元件,否則您的文法會有編譯錯誤。
否;預設為 no
html 如果設定為 yes,會產生文法的 HTML 版本,並附帶超連結動作。 否;預設為 no
diagnostic 如果設定為 yes,會根據目標文法產生一個包含除錯資訊的文字檔。 否;預設為 no
trace 如果設定為 yes,會強制所有規則呼叫 traceIn/traceOut。 否;預設為 no
traceParser 如果設定為 yes,會強制剖析器規則呼叫 traceIn/traceOut。 否;預設為 no
traceLexer 如果設定為 yes,會強制詞法分析器規則呼叫 traceIn/traceOut。 否;預設為 no
traceTreeWalker 如果設定為 yes,會強制樹狀結構漫遊器規則呼叫 traceIn/traceOut。 否;預設為 no
dir 呼叫 JVM 的目錄。

指定為巢狀元素的參數

此任務支援巢狀 <classpath> 元素,它代表 類似的路徑結構。如果您必須指定原始 ANTLR 目錄,則可以將它視為一種便利性。在大部分情況下,將適當的 ANTLR jar 放到正常的 Ant lib 儲存庫中就夠了。

jvmarg

可以透過巢狀 <jvmarg> 屬性將其他參數傳遞給新的 JVM,例如

<antlr target="...">
  <jvmarg value="-Dfoo=bar"/>
  ...
</antlr>

會在沒有 JIT 的 JVM 中執行 ANTLR。

<jvmarg> 允許使用 命令列引數 中描述的所有屬性。

範例

在語法檔案 etc/java.g 上呼叫 ANTLR,將產生的檔案寫入 build/src

<antlr
    target="etc/java.g"
    outputdirectory="build/src"/>