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

时间:2013-10-13 12:51:54

标签: 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修复此错误?

干杯, 阿德里安波普/

1 个答案:

答案 0 :(得分:4)

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

@header
{
   #define _empty NULL
}

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