2012-03-22 24 views
1

我有模板語言的語法。Antlr生成破碎的C#代碼,聲明中缺少變量名稱

我爲Antlr 3.2和CSharp2目標創建了它,並讓它工作。

現在我嘗試更改爲antlr 3.4和CSharp3目標(也嘗試過CSharp2),並且在一個synpred函數中在解析器中出現奇怪的錯誤。

幾個變量聲明缺少變量名:

IToken = default(IToken) 

有些人也有個錯誤的類型

void = default(void); 

應該

AstParserRuleReturnScope<CommonTree, IToken> = default(AstParserRuleReturnScope<CommonTree, IToken>); 

有任何一個在此之前,什麼看到的可能會造成這種情況。

語法和以前一樣。

不幸的是,我無法共享語法,而且我沒有時間創建導致相同錯誤的測試語法。

我當然可以手動修復這些錯誤,並且代碼可以正常工作,但是在生成修復代碼之後必須通過代碼有點令人厭煩。

回答

1

我能夠通過使用ANTLR代碼生成工具(Antlr3.exe)的native .NET version而不是Java版本來解決此問題。具體來說,antlr-dotnet-tool-3.4.1.9004.7z爲我工作,而antlr-3.4-complete-no-antlrv2.jar沒有。

+0

謝謝,遲到的遺憾,在假期後錯過了。 – 2012-10-11 08:23:44

+0

沒問題。很高興它對你有效! – Zack 2012-10-14 21:51:23

+0

其實我們用另一種方式解決了問題,我手工編寫了我自己的詞法分析器/解析器/解釋器;) – 2012-10-16 06:14:10