我们能否使用GCC处理C项目的翻译阶段1..5

时间:2018-08-06 03:14:15

标签: c gcc bison flex-lexer

我正在尝试使用ANSI C LexYacc语法来解析我的C项目。 在该语法的说明中,它要求

  

假定翻译阶段1..5已经完成,包括预处理和_Pragma处理。字符串文字的Lex规则将执行串联(转换阶段6)。通用字符名称(\ uHHHH或\ UHHHHHHHHH)的音译必须由预处理器完成,或者由Lex(或Flex使用的YY_INPUT函数)用于读取字符的input()宏的替换来完成。

如何使用GCC处理翻译阶段1..5?

1 个答案:

答案 0 :(得分:3)

  

如何使用GCC处理翻译阶段1..5?

最接近的GCC提供的是-E选项,这使它在“预处理阶段之后”停止,并将结果发送到标准输出。

GCC的预处理阶段至少与C的抽象翻译模型中的翻译阶段4对齐,但是我无法证明gcc -E的输出是否完全匹配 1-4阶段的结果。如果是这样,那么结果只有在源字符集与执行字符集 不同时才与您要求的结果不同。这些集。