- 12
- 0
- 约1.54万字
- 约 82页
- 2017-07-09 发布于江西
- 举报
语法制导翻译和中间代码生成24891
3、改写产生式 S ?if E then S(1) else S(2) 改写为: C ?if E then T ?C S(1) else S ?T S(2) S ?if E then S(1) 改写为: C ?if E then S ?C S(1) 4、语义子程序 C ?if E then {BACKPATCH(E?TC,NXQ); C?CHAIN=E?FC;} T ?C S(1) else {q=NXQ; GEN(j,-,-0); BACKPATCH(C?CHAIN,NXQ); T ?CHAIN=MERG(S(1)?CHAIN,q)} S ?T S(2) {S?CHAIN=MERG(T?CHAIN,S(2)?CHAIN)} S ?C S(1) {S?CHAIN=MERG(C?CHAIN,S(1)?CHAIN)} 注: 1)这里的基本思想是拉链回填; 2)当if E rhen归约为C时,布尔式E已不在栈内,故其语义值E.FC也不复存在,但E.FC尚未回填,可将它暂存于非终结符C的CHAI
原创力文档

文档评论(0)