2014-02-12 27 views
0

我正在嘗試使用antlr4構建MT940分析器。語法很簡單,但適用於大多數情況。ANTLRworks中的TestRig:如何使用自己的類?

現在我想返回自己的類。這個作品:

file returns [String myString] 
    : 
    Header940? record+ EOF 
    ; 

我認爲這是becasue字符串是在默認的java包。

我想這一點:

file returns [List<MT940Record> records] 
    : 
    Header940? record+ EOF 
    ; 

的TestRig抱怨(邏輯):

/tmp/TestRigTask-1392235543340/MT940_5aParser.java:50: error: cannot find symbol 
     public List<MT940Record> records; 
        ^
    symbol: class MT940Record 
    location: class FileContext 

如何設置在ANLTRWorks的CLASSPATH/lib目錄中TestRig目錄?

回答

1

在ANTLRWorks中,你不能。您可以在問題追蹤器上爲此添加問題: https://github.com/sharwell/antlrworks2/issues

請注意,ANTLR 4的設計使您不再需要在語法中使用用戶定義的參數和/或返回值。您不應像上面描述的那樣返回List<MT940Record>,而應在解析完成後使用偵聽器或訪問者來計算必要的結果。

+0

謝謝280Z28;我認爲切換到Listener將是最好的方法,也是內存/性能明智的。明天,我仍然開始深入研究antrl4參考文獻。 – RobAu