【发布时间】:2021-07-20 04:07:31
【问题描述】:
假设我们有以下模棱两可的语法:
expr -> expr OP 表达式
expr -> (expr)
expr -> NUM
OP -> +
OP -> -
OP -> *
OP -> /
声明的具体内容
%left + -
%left * /
在 yacc 中做吗?它们会帮助解析器解决歧义问题而无需更改语法吗?
【问题讨论】:
-
在这种情况下,不会,因为在归约到
OP时已经丢失了第一个运算符的优先级 -
那么,如果我们为每个操作员使用不同的产品,它会起作用吗?