编译原理试题(B)答案.doc
文本预览下载声明
编译原理试题(A)答案
一、简答题(每小题5分,共30分)
1. 答:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成。(5分)
2.(5分)
3.(5分)
答:S( aSb | Sb | b
4.(5分)
答:短语:(S,(a))、S,(a)、S、(a)、a
简单短语:S、a
句柄:S
5.(5分)
main 层数为0 a 1 off0 b 1 off0+1 a 1 off0+2 x 1 off0+4 b 1 off0+6 # b 1 off0+8 # 6.(5分)
t3: Null t2: Null t1: false n: 9 f的管理信息 t3: Null t2: Null t1: false n: 10 f的管理信息 t2: Null t1: 30 k: 30 main的管理信息 三、解:
(1) G’[A]中各产生式的predict集如下:…………………. (5分)
Predict(P({d; S}) ={ { }
Predict(S(d;S) ={ d }
Predict(S(sT) ={ s }
Predict(T(;sT) ={ ; }
Predict(T(ε) ={ } }
(2) G’[A]的LL(1)分析表如下: …………………. (5分)
{ d s ; } P P({d; S}① S S(d;S② S(sT③ T T(;sT④ T(ε⑤
(3) 句子{d;s;s}的分析过程如下:…………………. (10分)
符号栈 输入串 驱动程序动作 #P {d;s;s}# 替换① #}S;d{. {d;s;s}# 匹配 #}S;d d;s;s}# 匹配 #}S; ;s;s}# 匹配 #}S s;s}# 替换③ #}Ts s;s}# 匹配 #}T ;s}# 替换④ #}Ts; ;s}# 匹配 #}Ts s}# 匹配 #}T }# 替换⑤ #} }# 匹配 # # 成功
四、解:(1) LR(1)可归活前缀状态机:………………………………………………. (5分)
Z( AB (1)
A( aB (2)
A(b (3)
B( aB (4)
B(b (5)
将文法G[Z]按上述文法规则排序,则LR(1)分析表如下:(5分)
action表 goto表 a b # A B 0 S2 S3 1 1 S5 S6 4 2 S10 S9 8 3 R3 R3 4 Acc 5 S5 S6 7 6 R5 7 R4 8 R2 R2 9 R5 R5 10 S10 S9 11 11 R4 R4
(2) abaab是文法G[]的句子,分析步骤…………(5分)
状态栈 符号栈 输入串 分析动作 转向状态 0 # abb# 移入S2 0,2 #a bb# 移入S9 0,2,9 #ab b# 归约R5 8 0,2,8 #aB b# 归约R2 1 0,1 #A b# 移入S6 0,1,6 #Ab # 归约R5 4 0,1,4 #AB # Acc
(3) G[Z]是LALR(1)文法,理由如下:…………(5分)
在G[Z]的LR(1) 可归活前缀状态机中,状态5和10、6和9、7和11为同心状态,将这些同心状态各项的展望符集合并之后,没有产生归约-归约冲突,所以文法G[Z]是LALR(1)文法。
四、解:
中间代码:………………………. (8分)
(: = , 0 , _,a)
(+, a, 1, t1)
(*, t1, 5, t2)
(:=, t2,_, j)
(WHILE, _, _, _)
(, j, 100, t3)
(Do, t3, _, _)
(-,3, 1, t4)
(*, t4, 1, t5)
(AADD, A, t5, t6)
(+, a, t6, t7)
(:=, t7, _, a)
(, a, 10, t8)
(THEN, t8, _, _)
(:=, 0, _, k)
(ELSE, _, _, _ )
(*, x, y, t9)
(*, x, y, t10)
(/, t10, 5, t11)
(+, t9, t11, t12)
(:=, t12, _, k)
(ENDIF, _, _, _)
(+, j, 1, t13)
(:=, t13, _, j)
(ENDWHILE, _, _
显示全部