5

似乎 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 来解决这个问题,但这是一个 hack。

是否有任何可用的 antlr-3.5.2 或更高版本可以修复此错误?

干杯,阿德里安流行/

4

1 回答 1

4

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

@header
{
   #define _empty NULL
}

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

于 2013-11-11T17:35:14.557 回答