考虑由以下产生式规则定义的文法,带有两个运算符∗ 和 +
S --> T * P
T --> U | T * U
P --> Q + P | Q
Q --> Id
U --> Id
以下哪一项是正确的?
(A) + 是左结合的,而 * 是右结合的
(B) + 是右结合,而 * 是左结合
(C) + 和 ∗ 都是右结合的
(D) + 和 ∗ 都是左结合的
答案:(乙)
说明:从语法中我们可以通过查看语法找出联想。
Let us consider the 2nd production
T -> T * U
T is generating T*U recursively (left recursive) so * is
left associative.
Similarly
P -> Q + P
Right recursion so + is right associative.
So option B is correct.
注意:以上是绘制后可以观察到的快捷技巧
很少的解析树。
也可以通过绘制解析树来找出正确答案。
这个问题的测验