我在看龙书。引用书中的文字(3.1.4 词汇错误,Pno 114)
词法分析器很难在没有其他组件的帮助下判断源代码错误。例如,如果
fi
在上下文中的 C 程序中第一次遇到该字符串:fi ( a == f(x) ) ...
词法分析器无法判断
fi
是关键字拼写错误if
还是未声明的函数标识符。由于fi
是标记 id 的有效词位,词法分析器必须将标记返回id
给解析器,并让编译器的其他阶段——在这种情况下可能是解析器——处理由于字母转置引起的错误。
读完后我有点困惑。我的理解是词法分析器开始从左到右处理文本,并在模式匹配时返回标记。那么对于一种语言,if
关键字在哪里匹配,怎么fi
匹配呢?
有什么想法吗?