为什么 ANTLR 测试台没有输出而直接跳到最后?
Why ANTLR test rig gives no output and just skip to the end?
我有一个包含大约 1200 行代码的 C 源文件。
我使用 ANTLR 测试平台来解析它 ANTLR C grammar。
起初,它给了我一些无法识别的标记的小错误。在 C 源代码中修复它很容易。但是在我修复了所有这些之后,ANTLR 测试平台就完成了,没有任何结果。而且没有错误。仅此与 -tokens
开关:
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
[@0,40604:40603='<EOF>',<EOF>,1238:0]
然后我试了-gui
,它只给了我一张空白图片:
所以,可能出了什么问题?是ANTLR测试台的问题吗?
原来根本原因在宏定义下面:
#define SET_BOOT_OPTION_SUPPORT_KEY_COUNT(a, c) { \
(a) = ((a) & ~EFI_BOOT_OPTION_SUPPORT_COUNT) | (((c) << LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT)) & EFI_BOOT_OPTION_SUPPORT_COUNT); \
}
我把它去掉后,测试台就可以输出结果了
我之前遇到过类似的问题,ANTLR 无法识别#include
。在那种情况下,ANTLR 会为此报告错误。但是在这种情况下,没有报错。
我想我必须在 完成预处理后应用 C 语法 。
我有一个包含大约 1200 行代码的 C 源文件。
我使用 ANTLR 测试平台来解析它 ANTLR C grammar。
起初,它给了我一些无法识别的标记的小错误。在 C 源代码中修复它很容易。但是在我修复了所有这些之后,ANTLR 测试平台就完成了,没有任何结果。而且没有错误。仅此与 -tokens
开关:
Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
[@0,40604:40603='<EOF>',<EOF>,1238:0]
然后我试了-gui
,它只给了我一张空白图片:
所以,可能出了什么问题?是ANTLR测试台的问题吗?
原来根本原因在宏定义下面:
#define SET_BOOT_OPTION_SUPPORT_KEY_COUNT(a, c) { \
(a) = ((a) & ~EFI_BOOT_OPTION_SUPPORT_COUNT) | (((c) << LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT)) & EFI_BOOT_OPTION_SUPPORT_COUNT); \
}
我把它去掉后,测试台就可以输出结果了
我之前遇到过类似的问题,ANTLR 无法识别#include
。在那种情况下,ANTLR 会为此报告错误。但是在这种情况下,没有报错。
我想我必须在 完成预处理后应用 C 语法 。