编译原理第六次作业
4.4.1
1)提取左公因子:
S-> 0 A (左右都有0)
A-> S 1| 1
消除左递归:
S-> 0 A
A-> 0 A 1| 1
3)没有左公因子!!
消除左递归:
S-> ε A -> A
A->(S) S A | ε
4)提取左公因子:
S-> S A| (S) | a
A-> + S| S |✳
消除左递归:
需要先提取
T -> (S)|a
即 S-> S A| T
S-> T A'
A'->A A'| ε
A ->+ S| T A'|✳
T -> (S)|a
7)没有左公因子!!
消除左递归:
bexpr -> bterm bexpr'
bexpr'-> bexpr or bterm bexpr'| ε
bterm -> bfactor bterm'
bterm'-> and bfactor bterm'| ε
bfactor -> not bfactor | ( bexpr ) | true | false
4.4.3
first(S) = [a]
follow(S) = [a, +, ✳]
4.4.4
1)first(S) = [0]
follow(S)= [1]
2)first(S) = [+,✳,a]
follow(S)=[+,✳,a]
3) first(S) =[(,ε]
follow(S)=[)]
4) first(S) =[(,a]
follow(S)=[+,(,),a]
5) first(S) =[(,a]
follow(S)=[',']
first(L) =[(,a]
follow(L)=[),',']
6) first(S)=[a,b,]
follow(S)=[a,b,ε]
7) first(bexpr) = first(bterm) = first(bfactor) = [not, (, true, false]
first(bexpr') = [or, ε]
first(bterm') = [and, ε]
follow(bexpr) = follow(bexpr') = [)]
follow(bterm) = follow(bterm') = [or]
follow(bfactor) = [and]

浙公网安备 33010602011771号