首页 > 解决方案 > 语法错误的处理如何涉及解析器和词法分析器的使用?

问题描述

我对这个问题有点困惑。有人请澄清,“语法错误的处理如何涉及使用解析器和词法分析器?” 语法错误基本上是在编译器的解析器阶段处理的,那么词法分析器如何帮助解析器处理语法错误。

标签: compiler-constructionsyntax-errorlexical-analysis

解决方案


我想你可能对词法分析器的功能有点困惑。词法分析器将程序转换为标记:

while (1)

变成

<TOK_WHILE> <TOK_LPAREN> <TOK_NUM, 1> <TOK_RPAREN>

当然,词法可以检测错误(如意外字符(字符不在识别的字符集中)),但除非设计与传统词法分析器不同(如@Marquis of Lorne 所述,否则它无法检测语法错误)。简而言之,词法分析器所做的(在大多数情况下)是将字符流(程序)转换为来自解析器的标记,以检查语法错误(并且在大多数情况下构建解析树等)。


推荐阅读