编译原理

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

2019-06-26  本文已影响2人  不爱格子衫的码畜

预测分析表【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不满足



结果如下:

预测分析表【LL(1)分析表】的构造
上一篇下一篇

猜你喜欢

热点阅读