編譯原理復習題


答案由本人整理或來自互聯網,不保證正確性,僅供參考

第四章 語法制導翻譯

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​



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM