2012-03-22 43 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