我有模板语言的语法。
我为Antlr 3.2和CSharp2目标创建了这个并让它工作。
现在我尝试更改为antlr 3.4和CSharp3目标(也尝试过CSharp2)并且在synpred函数中的Parser中出现了一个奇怪的错误。
多个变量声明缺少变量名称:
IToken = default(IToken)
有些人也有错误的类型
void = default(void);
应该是
AstParserRuleReturnScope<CommonTree, IToken> = default(AstParserRuleReturnScope<CommonTree, IToken>);
之前有任何人看过这个,以及可能导致这种情况的原因。
语法和以前一样。
不幸的是我无法分享语法,而且我没有时间创建导致相同错误的测试语法。
我当然可以手动修复错误并且代码可以正常工作,但是在修复它们之后必须通过代码会有点麻烦。
答案 0 :(得分:1)
我能够通过使用ANTLR代码生成工具(Antlr3.exe)的native .NET version而不是Java版本来解决此问题。具体来说,antlr-dotnet-tool-3.4.1.9004.7z对我有用,而antlr-3.4-complete-no-antlrv2.jar却没有。