首页 > 其他 > 详细

编译原理复习题

时间:2020-05-30 18:55:58      阅读:118      评论:0      收藏:0      [点我收藏+]

答案由本人整理或来自互联网,不保证正确性,仅供参考

第四章 语法制导翻译

3.赋值语句的文法及语义动作描述如下:

(1)A→:=E {gen (:=, E.place,_,entry(i));}

(2)E→E1+E2 {E.place:=newtemp;gen(+, E1.place, E2.place, E.place);}

(3)E→E1E2 {E.place:=newtemp; gen(, E1.place, E2.place, E.place);}

(4)E→-E1 {E.place:=newtemp;gen(@,E1.place,_,E.place);}

(5)E→E1 {E.place:=E1.place;}

(6)E→i {E.place:=entry(i);}

写出赋值语句X:=-B*(C+D)+A的自下而上的语法制导翻译过程。
答案:

输入 PLACE 四元式
X:=-B*(C+D)+A
:=-B*(C+D)+A i X
-B*(C+D)+A i:= X_
B*(C+D)+A i:=- X_ _
*(C+D)+A i:=-i X_ _B
*(C+D)+A i:=-E X_ _B (@,B,_,T1)
*(C+D)+A i:=E X_ T1
(C+D)+A i:=E* X_T1_
C+D)+A i:=E*( X_T1_ _
+D)+A i:=E*(i X_T1_ _C
+D)+A i:=E*(E X_T1_ _C
D)+A i:=E*(E+ X_T1_ _C _
)+A i:=E*(E+i X_T1_ _C _D
)+A i:=E*(E+E X_T1_ _C _D (+, C, D, T2)
)+A i:=E*(E X_T1_ _T2
+A i:=E*(E) X_T1_ _T2 _
+A i:=E*E X_T1_T2 (*, T1, T2, T3)
A i:=E+ X_T3_
i:=E+i X_T3_A
i:=E+E X_T3_A (+, T3, A, T4)
i:=E X_T4
X

5.文法G的产生式如下:
S→(L)|α
L→L,S|S
(1)试写出一个语法制导定义,它输出配对括号个数。

(2)写一个翻译方案,打印每个a的嵌套深度。如((a), a),打印2,1
答案:
(1)试写出一个语法制导定义,它输出配对括号个数。
产生式 ? ?语义规则
S->(L) ? ?S.h:=L.h+1
S->a ? ? S.h:=0
L->L1,S ? L.h:=L1.h+S.h
L->S ? ? L.h:=S.h
S‘->S ? ? print(S.h)
技术分享图片

(2)写一个翻译方案,打印每个a的嵌套深度。如((a), a),打印2,1
S‘->{S.d:=0;} S
S->({L.d:=S.d+1} L)
S->a {print(S.d)}
L->{L1.d:=L.d}L1,{S.d:=L.d}S
L->{S.d:=L.d} S?
技术分享图片


编译原理复习题

原文:https://www.cnblogs.com/Hatfield/p/12993788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!