我正在尝试使用ANSI C Lex和Yacc语法来解析我的C项目。 在该语法的说明中,它要求
假定翻译阶段1..5已经完成,包括预处理和_Pragma处理。字符串文字的Lex规则将执行串联(转换阶段6)。通用字符名称(\ uHHHH或\ UHHHHHHHHH)的音译必须由预处理器完成,或者由Lex(或Flex使用的YY_INPUT函数)用于读取字符的input()宏的替换来完成。
如何使用GCC处理翻译阶段1..5?
答案 0 :(得分:3)
如何使用GCC处理翻译阶段1..5?
最接近的GCC提供的是-E
选项,这使它在“预处理阶段之后”停止,并将结果发送到标准输出。
GCC的预处理阶段至少与C的抽象翻译模型中的翻译阶段4对齐,但是我无法证明gcc -E
的输出是否完全匹配 1-4阶段的结果。如果是这样,那么结果只有在源字符集与执行字符集 不同时才与您要求的结果不同。这些集。