考虑以下表达式语法。表达式计算的语义规则在每个语法产生式旁边说明。
E → number E.val = number. val
| E '+' E E(1).val = E(2).val + E(3).val
| E '×' E E(1).val = E(2).val × E(3).val
假设此问题的 (a) 部分中的冲突已解决,并且生成了 LALR(1) 解析器,用于按照给定的语法解析算术表达式。考虑表达式 3 × 2 + 1。生成的解析器实现了哪些优先级和关联性?
(A)等优先级和左结合性;表达式计算为 7
(B)同等优先级和右结合性;表达式计算为 9
(C) ‘×’的优先级高于’+’的优先级,并且两个运算符都是左结合的;表达式计算为 7
(D) ‘+’的优先级高于’×’的优先级,并且两个运算符都是左结合的;表达式计算为 9答案:(乙)
解释:答案是 B,因为产生式属于同一个非终结符,并且由于 YACC 通过移过归约来解决,因此结合性将是右结合的。这个问题的测验