如何找到哪个运算符在语法中具有最高优先级

时间:2014-02-28 05:19:30

标签: expression grammar operator-precedence

我后天才开始考试。请帮助我解决这个问题并向我解释答案,这样我就可以在考试中完成这个级别的所有问题。

语法

E-> E/X | X
X-> T-X | X*T | T
T-> T+F | F
F-> (E) | id

id stands for identifier.

Q1:以上语法用于以假设语言生成所有有效的算术表达式

a. / associates from the left
b. * associative from the left
c. + associative from the left
d. all of these

问题2:以上语法用于以假设语言生成所有有效的算术表达式

a.  + has the highest precedence
b.  * has the highest precedence
c.  - has the highest precedence
d.  / has the highest precedence

1 个答案:

答案 0 :(得分:3)

让我们把水平放在每个陈述

E-> E/X | X....................1(root)
X-> T-X | X*T | T..............2
T-> T+F | F....................3
F-> (E) | id...................4

<强>优先级

处于最高级别的

op具有最大优先级 所以 id,(,)具有最高优先级,然后是+ - ,* then /

所以+根据选项具有最高优先级

<强>结合性

注意A-&gt; Ax是递归的,A-xA是右递归语法 现在

E-> E/X  is left recursive so / is left associated
X-> T-X is right recursive so - is right associated
X->  X*T is left recursive so / is left associated
T-> T+F | F is left recursive so / is left associated

所以Q1的答案是d:)