看来antlr-3.5.1-complete.jar和antlr-3.5.1-complete-no-st3.jar生成的代码目标是C运行时,它在DFA中有很多"_empty"标识符,没有在任何地方定义.
antlr-3.4使用dfa31_T_empty生成代码,该代码应该是正确的id.
我可以通过将_empty定义为NULL来解决这个问题,但这是一个黑客攻击.
有没有可用的antlr-3.5.2修复此错误?
干杯,阿德里安波普/
我也遇到过这个错误。最简单和最干净的解决方案确实似乎是将其添加到您的语法中:
@header
{
#define _empty NULL
}
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是将此定义添加到编译器宏列表中(/D _empty=null似乎在 GCC 和 MSVC 中都有效)。