代数表达式中的不可见乘法
答
隐式乘法是一种语法结构。 Lexing纯粹是关于识别个人符号的。由于词法分析器不知道“表达式”,两个相邻表达式应该相乘的事实不是词汇概念。解析器的确如此。
如果词法分析器负责,则必须添加大量有关相邻令牌的规则。例如,插入两个IDENTIFIER
S,或IDENTIFIER
和NUMBER
或NUMBER
和IDENTIFIER
之间,或)
和IDENTIFIER
,或IDENTIFIER
和(
...之间的×
令牌除了嗯哦,IDENTIFIER (
可能是一个函数调用,所以也许我需要在符号表中查找IDENTIFIER
以查看它是否是函数名称...
真是一团糟!
另一方面,解析器可以通过单个语法规则来实现。
E → E '×' E
| E E