是否在预处理后或在预处理过程中对令牌进行计数?

时间:2015-12-05 05:27:48

标签: c compiler-construction

在预处理期间,我们通常扫描所有macros,但我感到困惑的是,预处理器还会生成实际上由词法分析器采用的令牌,并进一步扫描输入文件,

我已经完成了这个link  并且提到预处理标记分​​为五大类:标识符,预处理数字,字符串文字,标点符号等,只有在预处理状态下生成的标记是否也是如此?

1 个答案:

答案 0 :(得分:0)

预处理的结果是令牌流。

大多数令牌是在宏扩展阶段之前生成的,但在宏扩展期间,可以使用stringify(#)和token-concatenate(##)运算符创建新令牌。

在预处理之后,需要重新分析许多令牌,并且有些预处理令牌可能无法重新分析为有效令牌。例如,2.3G是预处理号码令牌,但它不对应任何有效的数字令牌。这将导致错误消息。