antlr 3.5.1使用未声明的标识符生成C运行时代码:_empty.任何修复?

Adr*_*Pop 5 antlr3

看来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修复此错误?

干杯,阿德里安波普/

Mat*_*ský 4

我也遇到过这个错误。最简单和最干净的解决方案确实似乎是将其添加到您的语法中:

@header
{
   #define _empty NULL
}
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是将此定义添加到编译器宏列表中(/D _empty=null似乎在 GCC 和 MSVC 中都有效)。