2008-11-21 69 views
0

我正在使用ANTLRWorks創建ANTLR語法。我有一個有效的語法,也生成解析器和詞法分析器源文件。我也試着調試生成的代碼,輸出和調試器輸出一樣。編譯ANTLRWorks生成的類文件

但是,當我嘗試調用調試器沒有產生__Test__類是在控制檯上來。我已經正確設置了類路徑,因爲我可以用相同的類路徑成功編譯__Test__.java。

會出現什麼問題?是否有任何清晰的教程,用antlr和antlrworks編寫和編譯示例解析器?

回答

1

你有什麼期望在控制檯上上來?

看一看this project。 ANTLRWorks生成的解析器是here。正如您從POM中的依賴關係可以看到的那樣,您需要確保antlr位於類路徑中。然後你使用解析器,如this class所示。

final DriftLexer lexer = new DriftLexer(new ANTLRInputStream(inputStream)); 
final CommonTokenStream tokens = new CommonTokenStream(lexer);   
final DriftParser parser = new DriftParser(tokens); 
parser.file(); 

這應該足以讓你的東西工作。

1

ANTLRWorks生成創建套接字連接回ANTLRWorks測試類,所以它們不能從控制檯可用。您可以編輯生成的測試類以不使用調試端口(套接字連接)選項。

行編輯爲:

FormalSpecParser g = new FormalSpecParser(tokens, 49100, null); 

你可以把它改成:

FormalSpecParser g = new FormalSpecParser(tokens, null); 

它使用一個調試監聽對象,而不是一個端口,而「空」表示你不給它一個調試監聽器,所以調試輸出被忽略。您可以編寫自己的調試監聽器,將消息輸出到控制檯。

查看ANTLR文檔以獲取更多信息:http://www.antlr.org/api/Java/namespaces.html

相關問題