第4章语法分析-自上而下分析(5)

2020-02-21 15:50

编译原理 第四章 语法分析—自上而下分析

FOLLOW(B)= FOLLOW(B`)={c} ④证明该文法是否是LL(1)文法?

因为文法G`(A)中只含有一个多候选式的定义式A`?ABc??和B`?bB`??。

只需证明:

FIRST(A`)?FOLLOW(A`)={a, ?}?{#,d}=? FIRST(B`)?FOLLOW(B`)={b, ?}?{#,d}=? 该文法是LL(1)文法。

⑤构造相应的LL(1)分析表

因为 FIRST(A)={a},所以M[A,a]= A?aA`;

因为 FIRST(S`)={b,?},所以M[S`,b]= S`?bAS`, 又因为??FIRST(S`),则对{d,#}?FOLLOW(S`), 所以M[A`,d]= A`??,M[A`,#]= A`??; 因为FIRST(B)={d},所以M[B,d]= B?dB`;

因为FIRST(B`)={b},所以M[B`,b]= B`?Bb`, 又因为??FIRST(B`),则对{c}?FOLLOW(B`), 所以M[B`,c]= B`??。 LL(1)分析表 a b c d # A A?aA` A` A`?ABc B A`?? A`?? B?dB` 制作人:李明新 共28页第21页 13-3-24

编译原理 第四章 语法分析—自上而下分析

B` B`?Bb` B`??

⑥输入串aadc#的分析过程。

步骤 0 1 2 3 4 5 6 7 8 9 10 符号栈 #A #A`a #A` #cBA #cBA`a #cBA` #cB #cB`d #cB` #c # 输入串 aadc# aadc# adc# adc# dc# dc# dc# dc# c# c# # 所用产生式 A?aA` 匹配 A`?ABc A?aA` 匹配 A`?? 匹配 B`?? 匹配 结束 作业 :

⑴根据P76表4.1写出表达式 (i+i)*i 的预测分析过程。 ⑵P81 1, 2(1)(2)(3)

制作人:李明新 共28页第22页 13-3-24

编译原理 第四章 语法分析—自上而下分析

作业解析

一、P76的文法写出表达式 (i+i)*i 的预测分析过程。 解答:

步骤 符号栈 输入串 所用的产生式

0 #E (i+i)*i# 1 #E`T (i+i)*i# E?TE` 2 #E`T`F (i+i)*i# T?FT` 3 #E`T`)E( (i+i)*i# F?(E) 4 #E`T`)E i+i)*i#

5 #E`T`)E`T i+i)*i# E?TE` 6 #E`T`)E`T`F i+i)*i# T?FT` 7 #E`T`)E`T`i i+i)*i# F?i 8 #E`T`)E`T` +i)*i# 9 #E`T`)E` +i)*i# T`?? 10 #E`T`)E`T+ +i)*i# E`?+TE` 11 #E`T`)E`T i)*i#

12 #E`T`)E`T`F i)*i# T?FT` 13 #E`T`)E`T`i i)*i# F?i 14 #E`T`)E`T` )*i#

15 #E`T`)E` )*i# T`?? 16 #E`T`) )*i# E`?? 18 #E`T` *i#

19 #E`T`F* *i# T`?*FT` 20 #E`T`F i# 21 #E`T`i i# F?i 22 #E`T` #

23 #E` # T`?? 24 # # E`??

二、考虑下面文法G

S? a?^?(T) T?T,S?S

⑴消除文法的左递归。

制作人:李明新 共28页第23页 13-3-24

编译原理 第四章 语法分析—自上而下分析

⑵经改写后的文法是否是LL(1)的?给出它的预测分析表。 解答:

⑴经考察该文法S? a?^?(T)的各侯选式的首字符都是终结符号,所以只有T?T,S?S是直接左递归。根据改写算法,改写后的文法是:

S? a?^?(T) T?ST`

T`?,ST`??

⑵证明改写后的文法是否是LL(1)的.

①证明S? a?^?(T)各侯选式的FIRST是否两两相交。 FIRST(a)?FIRST(^)=?

FIRST(a)?FIRST(()=? FIRST(^)?FIRST(()=?

②证明T`?,ST`??的FIRST(T`)和FOLLOW(T`)是否相交。

求FIRST(T`)={,,?}

FOLLOW(T`)={ ? }

FIRST(T`)? FOLLOW(T`)={,,?}?{ ? }=?

该文法是LL(1)的。

⑶构造预测分析表

a , ^ ( ) # S S? a S?^ S?(T) 制作人:李明新 共28页第24页 13-3-24

编译原理 第四章 语法分析—自上而下分析

T T?ST` T?ST` T?ST`

T` T`?,ST` T`??

二、下面的文法G

E? TE` E`?+E?? T?FT`

T`?T?? F?PF` F`?*F`??

P?(E)?^?a?b

⑴计算这个文法的每个非终结符的FIRST和FOLLOW。⑵证明这个文法是LL(1)的 ⑶构造它的预测分析表。 解答:

⑴求非终结符的FIRST和FOLLOW。 求非终结符的FIRST:

因为E`?+E??,所以FIRST(E`)={+, ?}。 因为F`?*F`??,所以FIRST(F`)={*, ?}。 因为P?(E)?^?a?b,

所以FIRST(P)={(, ^, a, b ?。 因为F?PF`,所以FIRST(F)= FIRST(P)。 因为T?FT`,所以FIRST(T)={FIRST(F)。

制作人:李明新 共28页第25页 13-3-24


第4章语法分析-自上而下分析(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工作总结公安百日会战经验总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: