语法:
E -> T D
D -> + T D | EPSILON
T -> F M
M -> * F M | EPSILON
F -> ( E ) | id
书中给出的关注(D)= {+,$,)}
+如何成为D的追随者?
如果它是正确的,那么*也应该是M的跟随者,这在FOLLOW(M)= {+,$,)}中并不明显。
答案 0 :(得分:0)
始终遵守规则:
- 将$放在FOLLOW(S)中,其中S是起始符号,输入右侧标记中为$。
- 如果有生产A - > aBs,其中除了e之外的FIRST被放置在FOLLOW(B)中。
- 如果有生产A - > aB或生产A-> aBs,其中FIRST(s)包含e,然后FOLLOW(A)中的所有内容都在FOLLOW(B)中。
醇>
上述规则中需要注意的一点是:
第3点:A - > aB:FOLLOW(A)在FOLLOW(B)中适用于RHS上的每个非终端。将此视为规则3.a。
现在,
FOLLOW(E) = { ), $ } // by rule 2
FOLLOW(D) = { ), $ } // by rule 3
FOLLOW(T) = FIRST(D) = { +, $, ) } // by rule 3 and 3.a
FOLLOW(M) = { +, $, ) } // by rule 3 and 3.a
FOLLOW(F) = FIRST(M) = {*, $, +, ) } // by rule 3 and 3.a