预测分析表【LL(1)分析表】的构造

预测分析表【LL(1)分析表】的构造


算法:

对于G中的每一个产生式, A -> α ,执行以下2步:

1.for  ∀ a ∈ FIRST(α), 将 A -> α 填入 M [A, a ];

1. if(ε ∈ FIRST(α))

         ∀ a ∈ FOLLOW (A) , 将 A -> ε 填入 M [A, a ];

PS: 这里的 a 包括 # 


例子:

文法:

E -> TE'

E' -> +TE' | ε

T -> FT'

T' -> *FT' | ε

F -> (E) | id


解析:

1.E -> TE' 

FIRST(TE')={(,id}     所以 E -> TE'   填入  M[E, id] 和 M[ E, ( ] 

步骤2不满足

2.E' -> +TE'

FIRST(+TE')={+}     所以 E' -> +TE'  填入  M[E', +]
步骤2不满足

3.E' -> ε

FOLLOW(E')={ ), # }   所以 E' -> ε 填入 M[E', )]   和 M[E', #]

步骤1不满足

4.T -> FT'

FIRST(FT')={(,id}    所以T -> FT' 填入 M[T, (]    和 M[T, id]
步骤2不满足

5.T' -> *FT'

FIRST(*FT')={*}     所以 T' -> *FT' 填入 M[T' , * ]

步骤2不满足

6. T' -> ε

FOLLOW(T')={ +, ), # }   所以 T' -> ε  填入M[T', +]、M[T', )]M[T', #]

步骤1不满足

7.F -> (E)

FIRST((E))={(}   所以F -> (E) 填入  M[F, (]

步骤2不满足

8.F ->  id

FIRST(id)={id}   所以 F ->  id 填入 M[F,   id]

步骤2不满足


结果如下:

语法变量

输入符号

id

+

*

(

)

#

E

E -> TE'     E -> TE'    

E’

  E' -> +TE'     E' -> ε
E' -> ε

T

T -> FT'       T -> FT'  

T’

  T' -> ε T' -> *FT'   T' -> ε T' -> ε

F

F ->  id     F -> (E)    

你可能感兴趣的:(预测分析表【LL(1)分析表】的构造)