编译原理 第5章 习题与答案2 下载本文

内容发布更新时间 : 2024/6/5 2:14:53星期一 下面是文章的全部内容请认真阅读。

5 6 7 8 9 10 #(T1 #(E1 #(E1+ #(E1+i #(E1+F #(E1+T 优于 等于 低于 优于 优于 优于 优于 优于 等于 优于 优于 优于 优于 优于 优于 + + i ) ) ) ) ) ) # # # # # # i)# i)# )# # # # # # # T1 i F T E1+T1 E1 (E) F T T1 E1 分析 E1→T1 F→i T→F T1→T E1→E1+T1 E→E1 F→(E) T→F T1→T E1→T1 E→E1 11 #(E1+T1 12 #(E1 13 #(E 14 #(E) 15 #F 16 17 #T #T1 18 #E1 19 #E

成功 5-4 解:对符号串(i+i)进行算符优先分析的过程如答案表5-4所示。 因为分析成功,所以符号串(i+i)是文法G[E]的合法句子。 句子(i+i)及其分析过程中所得句型的语法树如答案图5-4所示。

答案表5-4 符号串(i+i)的算符优先分析过程

当前栈顶 步骤 分析栈 终结符号 0 1 2 3 # #○<( #○<(○<i #○<(F # ( i ( 关系 < ○< ○> ○< ○入符号 输入串 ( i + + i+i)# +i)# i)# i)# 素短语 i 优先 当前输 余留 最左 4 5 6 7 8 #○<(○<F+ #○<(○<F+○<i #○<(○<F+F #○<(E #○<(○=E) #F + i + ( ) < ○> ○> ○= ○> ○ i ) ) ) # )# # # # i F+F (E) 分析 9

# # 成功 ETF(ETFiE+TFi)(ETFETFE+TF)(ETFE)答案图5-4 句子(i+i) 及其分析过程中所得句型的语法树

5-5 解:

(1) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 2.S→aSc 1.S→aSb 3.S→ab

识别文法G[S]全部可归前缀的DFA如答案图5-5-(1)所示。

I0: S’→·SS→·aSbS→·aScS→·abaI2: S→a·SbS→a·ScS→a·bS→·aSbS→·aScS→·abaSI1: S’→S ·I5: S→aSb·bSI3: S→aS·bS→aS·cbcI6: S→aSc·I4: S→ab·答案图5-5-(1) 识别G[S]全部可归前缀的DFA 因为文法G[S]的每个LR(0)项目集中都不含冲突项目,所以文法G[S]是LR(0)文法,故可构造出不含冲突动作的LR(0)分析表如答案表5-5-(1)所示。

答案表5-5-(1) 文法G[S]的LR(0)分析表

ACTION 状态 a 0 1 2 3 4 5 6

(2) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添

s2 s2 GOTO c s6 r3 r1 r2 # acc r3 r1 r2 S 1 3 b s4 s5 r3 r1 r2 r3 r1 r2 加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 2.S→aSSS 1.S→aSSb 3.S→c

识别文法G[S]全部可归前缀的DFA如答案图5-5-(2)所示。

I0: S’→·SS→·aSSbS→·aSSSS→·caI2: S→a·SSbS→a·SSSS→·aSSbS→·aSSSS→·cacSI1: S’→S ·I3: S→c·cI6: S→aSSb·cSbcSaI4: S→aS·SbS→aS·SSS→·aSSbS→·aSSSS→·cI5: S→aSS·bS→aSS·SS→·aSSbaS→·aSSSS→·cSI7: S→aSSS·答案图5-5-(2) 识别G[S]全部可归前缀的DFA

因为文法G[S]的每个LR(0)项目集中都不含冲突项目,所以文法G[S]是LR(0)文法,故可构造出不含冲突动作的LR(0)分析表如答案表5-5-(2)所示。

答案表5-5-(2) 文法G[S]的LR(0)分析表

ACTION 状态 a 0 1 2 3 s2 s2 GOTO c s3 s3 r3 # acc r3 S 1 4 b r3 r3 4 5 6 7

s2 s2 r1 r2 r1 r2 s3 s3 r1 r2 r1 r2 5 7 (3) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 2.A→Ab 1.S→A 3.A→a

识别文法G[S]全部可归前缀的DFA如答案图5-5-(3)所示。

SI0: S’→·SS→·AA→·AbA→·aAI3: A→a·aI1: S’→S ·I2: S→A ·A→A ·bbI4: A→Ab·答案图5-5-(3) 识别G[S]全部可归前缀的DFA 因为在LR(0)项目集I2中含有移进-归约冲突项目,所以文法G[S]不是LR(0)文法,故构造出的LR(0)分析表中含有冲突动作。文法G[S]的LR(0)分析表如答案表5-5-(3)所示。

答案表5-5-(3) 文法G[S]的LR(0)分析表

ACTION 状态 a 0 1 s3 b # acc S 1 A 2 GOTO