将Antlr 3.1.1版迁移到Antlr 3.3后我遇到问题(获取NoSuchMethodError:CommonTreeNodeStream.getNodeIndex)

时间:2011-06-13 10:42:11

标签: antlr

目前我正在使用ANTLR V3.1.1,现在我已迁移到ANTLR V3.3。之后我收到以下错误:

  

发生意外的异常:           java.lang.NoSuchMethodError:org.antlr.runtime.tree.CommonTreeNodeStream.getNodeIndex(Ljava / lang / Object;)I       在    * .expression.antlr.FocusCommonTreeNodeStream.getNodeIndex(FocusCommonTreeNodeStream.java:16)

请帮我解决这个问题.. 在此先感谢.. !!

1 个答案:

答案 0 :(得分:0)

好的,通过查看原始帖子下的评论,我会在这里发布答案,以便完整起见,以防人们在搜索网页后找到此问答。


你得到这个异常的原因是因为你只是替换了ANTLR jar并且没有从你的语法中重新生成词法分析器和解析器。由ANTLR v3.1.1生成的已编译的词法分析器和解析器文件需要ANTLR v3.1.1运行时类。它们不一定(必然)与其他ANTLR运行时版本一起使用。

因此,如果要升级到ANTLR v3.3,则需要使用ANTLR v3.3中的org.antlr.Tool从语法文件中重新生成(新)词法分析器和解析器。