词法分析器阶段可以在编译期间检查语法规则吗?

时间:2010-01-26 16:00:10

标签: compiler-construction compilation lexical-analysis lexical

抱歉这个愚蠢的问题,但我和我的好朋友争论词汇分析,我们决定问社区。

问题是: 是否声明“int some_variable =;”在词法分析阶段或C语法中的语法分析阶段,将被解释为无效。 感谢

3 个答案:

答案 0 :(得分:1)

在C中,首先进行词法分析。 然后预处理器将宏及其所有神奇变换应用于生成的标记流。只有在预处理器执行后才会进行语法分析。

因此,要知道问题的答案,只需在预处理器中运行代码即可。对于gcc,这是使用-E命令行标志的问题。如果预处理器很满意,那么根据定义,词法分析就可以了(对于你的例子就是这种情况)。

答案 1 :(得分:0)

词法分析检查您的所有令牌是否有效(它们是)。解析(或语法分析)检查令牌序列是否在语法中形成有效的生成(它没有)。因此,这将通过词法分析阶段,并使分析阶段失败。

答案 2 :(得分:0)

在句法分析阶段,又名parsing