compiler-construction - 语法错误的处理如何涉及解析器和词法分析器的使用?
问题描述
我对这个问题有点困惑。有人请澄清,“语法错误的处理如何涉及使用解析器和词法分析器?” 语法错误基本上是在编译器的解析器阶段处理的,那么词法分析器如何帮助解析器处理语法错误。
解决方案
我想你可能对词法分析器的功能有点困惑。词法分析器将程序转换为标记:
while (1)
变成
<TOK_WHILE> <TOK_LPAREN> <TOK_NUM, 1> <TOK_RPAREN>
当然,词法可以检测错误(如意外字符(字符不在识别的字符集中)),但除非设计与传统词法分析器不同(如@Marquis of Lorne 所述,否则它无法检测语法错误)。简而言之,词法分析器所做的(在大多数情况下)是将字符流(程序)转换为来自解析器的标记,以检查语法错误(并且在大多数情况下构建解析树等)。
推荐阅读
- angular - 角度中不存在错误属性
- sql - sql转换值错误
- angular - ng-packagr:构建错误 EPERM:不允许操作
- windows - 自动登录脚本
- javascript - 如何在选择第一个无线电输入时选择所有复选框并在选择第二个无线电输入时取消选中所有复选框?(Javascript)
- marklogic - 如何禁用/启用所有 webdav 服务器?
- javascript - jQuery 事件 preventdefault 并继续
- spring - JoinPoint 以匹配 EntityManager 方法
- internet-explorer - 当设置为拒绝所有加载项时,E11 阻止执行 htc 文件,除非设置了加载项列表策略中的特别允许
- recursion - 为什么这不是尾递归