给定语法中的FOLLOW(D)是什么?

时间:2014-02-08 04:06:03

标签: grammar context-free-grammar

语法:

E -> T D
D -> + T D | EPSILON
T -> F M
M -> * F M | EPSILON
F -> ( E ) | id

书中给出的关注(D)= {+,$,)}

+如何成为D的追随者?

如果它是正确的,那么*也应该是M的跟随者,这在FOLLOW(M)= {+,$,)}中并不明显。

1 个答案:

答案 0 :(得分:0)

始终遵守规则:

  
      
  1. 将$放在FOLLOW(S)中,其中S是起始符号,输入右侧标记中为$。
  2.   
  3. 如果有生产A - > aBs,其中除了e之外的FIRST被放置在FOLLOW(B)中。
  4.   
  5. 如果有生产A - > aB或生产A-> aBs,其中FIRST(s)包含e,然后FOLLOW(A)中的所有内容都在FOLLOW(B)中。
  6.   

上述规则中需要注意的一点是:

  

第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