【发布时间】:2019-12-11 03:22:14
【问题描述】:
我正在为一种比我记得在学校所做的更复杂的语言编写编译器。它仍然很简单,但是我遇到了关注点分离的问题。我猜编译器构造类牵着我们的手太多了……
我了解解析错误通常是句法错误。例如,像111a111 这样的字符串可能会被解析为NUMBER IDENTIFIER NUMBER,因为根据语法,该字符串中的每个构造都是有效的词法分析。所以词法分析器不会在这里出错,解析器在验证VALUE 产生式(例如)并发现标识符时会出错。
如果是这种情况,那么正则表达式可以匹配的任何内容都被认为是有效的词位,解析器会处理其他所有内容。
鉴于此,什么会构成词法分析器错误?我可以猜到任何不是有效词位的东西(例如,一个日文字母可能不会根据语法进行词法分析),但还有别的吗?从心理上讲,我正在尝试建立一个模型来区分词法分析器和解析器之间的关注点。
【问题讨论】: