抱歉这个愚蠢的问题,但我和我的朋友就词汇分析发生了争执,我们决定询问社区。
问题是:语句“int some_variable = ;”是否 在词法分析阶段或 C 语法的语法分析阶段将被解释为无效。谢谢
抱歉这个愚蠢的问题,但我和我的朋友就词汇分析发生了争执,我们决定询问社区。
问题是:语句“int some_variable = ;”是否 在词法分析阶段或 C 语法的语法分析阶段将被解释为无效。谢谢
词法分析检查您的所有标记是否有效(它们是有效的)。解析(或语法分析)检查标记序列是否在您的语法中形成有效的产生式(它不是)。因此,这将通过词法分析阶段并在解析阶段失败。
在 C 中,首先进行词法分析。然后预处理器在生成的标记流上应用宏及其所有神奇的转换。只有在预处理器采取行动之后,才会进行语法分析。
因此,要知道问题的答案,只需在预处理器中运行代码。gcc
这是使用命令行标志的问题-E
。如果预处理器满意,那么根据定义,词法分析就很好(您的示例就是这种情况)。
在句法分析阶段,也就是解析