2017-02-22 38 views
0

我使用ANTLR4建立AST樹,我下載G4文件來自:https://github.com/antlr/grammars-v4/tree/master/sqlite 添加選項G4文件的頭:ANTLR4不支持ASTLabelType嗎?

options{ 
    output=AST; 
    ASTLabelType=CommonTree; 
    language=Java; 
} 

但同時編譯G4文件時,它的輸出:

ANTLR Tool v4.6 (D:\antlr-4.6-complete.jar) 
SQLite.g4 -o C:\Users\macro\workspace\tdsql\target\generated-sources\antlr4 -listener -no-visitor -encoding UTF-8 
warning(83): SQLite.g4:34:4: unsupported option output 
warning(83): SQLite.g4:35:4: unsupported option ASTLabelType 

antlr4不支持使用ASTLabelType來構建AST樹嗎?以及如何使用antlr4構建AST樹?

回答

1

我是Antlr的新手,所以有更好的人可以回答這個問題。也就是說,AST輸出選項在Antlr3和Antlr4之間已棄用。 Antlr3會生成一個AST,但Antlr4不會。

您在Antlr4中的選擇是使用Listener模式(用於遍歷解析樹)或訪問者模式(訪問&評估節點)。可以在運行Lexer和Parser之後使用這兩者中的任何一個,或者兩者兼有。

有一些可以通過一些搜索找到的例子。這是Visitor pattern的一個。此頁compares Listeners and Visitors