版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1编译编译(biny)原理张晶原理张晶 语法制导翻译和语法制导翻译和中间代码生成图文中间代码生成图文第一页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(3 3)第1页/共125页第二页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(4 4)第2页/共125页第三页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(5 5)第3页/共125页第四页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中
2、间代码生成(和中间代码生成(6 6)第4页/共125页第五页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(7 7)第5页/共125页第六页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(8 8)第6页/共125页第七页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(9 9)第7页/共125页第八页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(1010)第8页/共12
3、5页第九页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(1111)第9页/共125页第十页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(1212)第10页/共125页第十一页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(1313)第11页/共125页第十二页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(1414)第12页/共125页第十三页,共125页。语 义 规
4、则 L EE E1+TE TT T1 * FT FF (E)F digitPrint(E.val) E.val:=E1.val+T.val E.val:=T.val T.val:=T1.val F.val T.val:=F.valF.val:=E.valF.val:=digit.lexval产 生 式第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(1515)第13页/共125页第十四页,共125页。LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digi
5、t.lexval=5digit.lexval=3+*3*5+4的带注释的带注释(zhsh)的分析树的分析树第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(1616)第14页/共125页第十五页,共125页。生 产 式语 义 规 则D TL T int T real L L1,idL idL.in:=T.typeT.type=integerT.type:=real L1.in:=L.in addtype(id.entry,L.in) addtype(id.entry,L.in)第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生
6、成(1717)第15页/共125页第十六页,共125页。DL.in= realL.in= realL.in= realT.type=realrealid2id1id3.Real id1,id2,id3,第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(1818)第16页/共125页第十七页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(1919)第17页/共125页第十八页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(2020)第18页/共125页第十九
7、页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(2121)第19页/共125页第二十页,共125页。 产生产生(chnshng)式式 翻译规则翻译规则 (1)s0s(2)s1s (3)s (1)s=s0(2)s=s1 (3)s= 第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(2222)第20页/共125页第二十一页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(2323)第21页/共125页第二十二页,共125页。 EE+T E T T TF T F F (E) F
8、 a E=ET+ E=T T=TF T=F F=E F=a 产生(chnshng)式 翻译(fny)规则第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(2424)第22页/共125页第二十三页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(2525)第23页/共125页第二十四页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(2626)第24页/共125页第二十五页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和
9、中间代码生成(2727)第25页/共125页第二十六页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(2828)第26页/共125页第二十七页,共125页。语义规则的计算顺序第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(2929)第27页/共125页第二十八页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(3030)第28页/共125页第二十九页,共125页。生 产 式语 义 规 则D TL T int T real L L1,idL
10、idL.in:=T.typeT.type=integerT.type:=real L1.in:=L.in addtype(id.entry,L.in) addtype(id.entry,L.in)第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(3131)第29页/共125页第三十页,共125页。5678910T4DLLLRealtypeininin3 entry2 entryentryid3id2id1.1第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(3232)第30页/共125页第三十一页,共125页。第七章第
11、七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(3333)第31页/共125页第三十二页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(3434)第32页/共125页第三十三页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(3535)第33页/共125页第三十四页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(3636)第34页/共125页第三十五页,共125页。第七章第七章 语法语法(
12、yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(3737)第35页/共125页第三十六页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(3838)第36页/共125页第三十七页,共125页。的位置有关的位置有关(yugun)(yugun),与,与f f有关有关(yugun)(yugun)与串的长与串的长度度l l有关有关(yugun): S f (yugun): S f v lv l第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(3939)第37页/共125页第三十八页,共125页。第七
13、章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(4040)第38页/共125页第三十九页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(4141)第39页/共125页第四十页,共125页。属性文法的翻译器是很容易建立的s-属性适用于自底向上的计算 L-属性适用于自顶向下的分析,也可用于自底向上。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(4242)第40页/共125页第四十一页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生
14、成(和中间代码生成(4343)第41页/共125页第四十二页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(4444)第42页/共125页第四十三页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(4545)第43页/共125页第四十四页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(4646)第44页/共125页第四十五页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(4747
15、)第45页/共125页第四十六页,共125页。w =n + n# 4ninto#-2Tinto#-5+-2Tinto#-4nint5+-2Tinto#-6Tint5+-2Tinto#-1Eint0#- GE:的 LR(0)分分析析表表 action GOTO 状状态态+ o n b # E T 0 S4 S3 1 2 1 acc 2 s5 s7 3 r4 r4 r4 r4 r4 4 r3 r3 r3 r3 r3 5 s4 s3 6 6 r1 r1 r1 r1 r1 7 s4 s3 8 8 r2 r2 r2 r2 r2 GE: (1) E T+TT+T(2) E (2) E T or TT or
16、 T(3) T (3) T n n(4) T (4) T b b第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(4848)第46页/共125页第四十七页,共125页。w =n +b4ninto#-2Tinto#-5+-2Tinto#-3bbool5+-2Tinto#-6Tbool5+-2Tinto#-1Eerroro#-第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(4949)第47页/共125页第四十八页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成
17、(5050)第48页/共125页第四十九页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(5151)第49页/共125页第五十页,共125页。 2 print(2) 第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(5252)第50页/共125页第五十一页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(5353)第51页/共125页第五十二页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(
18、5454)第52页/共125页第五十三页,共125页。ER.i=9T.val=5T.val=9R.i=4 R.i=6T.val=2num.val=9num.val=5num.val=2_+第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(5555)第53页/共125页第五十四页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(5656)第54页/共125页第五十五页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(5757)第55页/共125页
19、第五十六页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(5858)第56页/共125页第五十七页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(5959)第57页/共125页第五十八页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(6060)第58页/共125页第五十九页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(6161)第59页/共125页第六十页,共125页。第七章第七章
20、语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(6262)第60页/共125页第六十一页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(6363)第61页/共125页第六十二页,共125页。要要y.iy.i值的地方使用值的地方使用X.sX.s自下而上分析中计算属性值时复自下而上分析中计算属性值时复写 规 则 起 非 常 重 要 的 作 用写 规 则 起 非 常 重 要 的 作 用(zuyng)(zuyng)。看下面例子。看下面例子。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和
21、中间代码生成(6464)第62页/共125页第六十三页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(6565)第63页/共125页第六十四页,共125页。5678910T4DLLLRealtypeininin3 entry2 entryentryid3id2id1.1第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(6666)第64页/共125页第六十五页,共125页。 ,id3# TL,id2 ,id3# TL L Li,d id3# TL, # TL,id3 # TL L Li,d #
22、 D D TL第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(6767)第65页/共125页第六十六页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(6868)第66页/共125页第六十七页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(6969)第67页/共125页第六十八页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(7070)第68页/共125页第六十九页,共125页。第七章第七章 语法制导
23、翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(7171)第69页/共125页第七十页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(7272)第70页/共125页第七十一页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(7373)第71页/共125页第七十二页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(7474)第72页/共125页第七十三页,共125页。第七章第七章 语法制导翻译语法制导翻译(
24、fny)(fny)和中间代码生成(和中间代码生成(7575)第73页/共125页第七十四页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(7676)第74页/共125页第七十五页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(7777)第75页/共125页第七十六页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(7878)第76页/共125页第七十七页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和
25、中间代码生成(翻译和中间代码生成(7979)第77页/共125页第七十八页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(8080)第78页/共125页第七十九页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(8181)第79页/共125页第八十页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(8282)第80页/共125页第八十一页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中
26、间代码生成(8383)第81页/共125页第八十二页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(8484)第82页/共125页第八十三页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(8585)第83页/共125页第八十四页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(8686)第84页/共125页第八十五页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(8787)第
27、85页/共125页第八十六页,共125页。第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(8888)第86页/共125页第八十七页,共125页。. . . 何谓何谓(hwi)(hwi)中间代码中间代码 ( Intermediate code ) ( Intermediate representation ) ( Intermediate language ) 源程序的一种源程序的一种(y zhn)(y zhn)内部表示,不依赖目标机的结构,易于机械生成内部表示,不依赖目标机的结构,易于机械生成 目目 标代码标代码(di m)(di m)的中间表示。的中间表
28、示。为什麽要此阶段为什麽要此阶段逻辑结构清楚;利于不同目标机上实现同一种语言;逻辑结构清楚;利于不同目标机上实现同一种语言;( 参考第参考第12章的章的275,276页页)利于进行与机器无关的优化利于进行与机器无关的优化 ;这些内部形式也能用于解释。;这些内部形式也能用于解释。中间代码的几种形式中间代码的几种形式逆波兰逆波兰 四元式四元式 三元式三元式 间接三元式间接三元式 树树 中间代码中间代码第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(8989)第87页/共125页第八十八页,共125页。 逆逆波波兰兰 : A B C D - * + E C D N / + 四四
29、元元式式 : (1) ( - C D T1 ) (2) ( * B T1 T2) (3) ( + A T2 T3) (4) ( - C D T4) (5) ( T4 N T5) (6) ( / E T5 T6) (7) ( + T3 T6 T7)例例 : A + B * ( C - D ) + E / ( C - D ) N第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(9090)第88页/共125页第八十九页,共125页。 三元式三元式: (1) ( - C D ) (2) ( * B (1) ) (3) ( + A (2) ) (4) ( - C D
30、) (5) ( (4) N ) (6) ( / E (5) ) (7) ( + (3) (6) )例例 : A + B * ( C - D ) + E / ( C - D ) N第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(9191)第89页/共125页第九十页,共125页。间间接接三三元元式式 : 间间接接三三元元式式序序列列 间间接接码码表表 (1) ( - C D ) (1) (2) ( * B (1) ) (2) (3) ( + A (2) ) (3) (4) ( (1) N ) (1) (5) ( / E (4) ) (4) (6) (
31、 + (3) (5) ) (5) (6)例例 : A + B * ( C - D ) + E / ( C - D ) N第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(9292)第90页/共125页第九十一页,共125页。简单简单(jindn)(jindn)赋值语句的赋值语句的(四元四元(s yun)(s yun)式)翻译式)翻译四元四元(s yun)(s yun)式形式式形式 : result:= arg1 op arg2语义属性:语义属性:, E.place 函数:函数:lookup() ; 过程:过程:emit(t
32、 := arg1 op arg2); newtemp; 产生式和语义描述:产生式和语义描述:(1) S id := E P:=lookup () ; if P nil then emit( P“:=”E.place) else error (op ,arg1,arg2,result) 或或第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(9393)第91页/共125页第九十二页,共125页。(2) E EE E1 1+E+E2 2 E.place:= newtemp; E.place:= newtemp; emit(E.place emit(E.place“:
33、=:=” E E1 1.place.place“+ +”E E2 2.place) .place) (3) E E - E- E1 1 E.place:=newtemp; E.place:=newtemp; emit(E.place emit(E.place“:=:=”“uminusuminus” E E1 1.place).place)(4) E E( E( E1 1) ) E.place:= E E.place:= E1 1.place.place(5) E Eid id E.place:=newtemp; E.place:=newtemp; P:=lookup(); P:=
34、lookup(); if P if P nil then E.place:=Pnil then E.place:=P else error else error第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(9494)第92页/共125页第九十三页,共125页。第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(9595)第93页/共125页第九十四页,共125页。-你自己设计(shj)用自上而下翻译-请你自己设计(shj)第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中
35、间代码生成(9696)第94页/共125页第九十五页,共125页。 如如 i f B t h e n S 1 e l s e S 2B 的的 代代 码码条条 件件 假转假转S1的的 代代 码码转转 移移S2的的 代代 码码BS1S2NY控制语句的翻译控制语句的翻译(fny)-(fny)-结构的结构的翻译翻译(fny)(fny)第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(9797)第95页/共125页第九十六页,共125页。E.false 控制语句中布尔表达式的翻译控制语句中布尔表达式的翻译控制语句控制语句 Sif E then S1 else
36、S2 E 的代码的代码 E.true E.true: S1的代码的代码 goto outE.false: S2的代码的代码out:第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(9898)第96页/共125页第九十七页,共125页。 . 把条件把条件(tiojin)(tiojin)转移的布尔表达式转移的布尔表达式E翻译成仅含翻译成仅含 条件条件(tiojin)(tiojin)真真 转转 和和 无条件无条件 转转 的四元的四元(s yun)(s yun)式式 E:a rop b if a rop b goto E.true goto E.false如
37、如 :ab or cd and ef 可可 翻译成如下四元式:翻译成如下四元式:(1) if ab goto E.true(2) goto (3)(3) if cd goto (5)(4) goto E.false(5) if ef goto E.true(6) goto E.false (翻译翻译不是最优不是最优)第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(9999)第97页/共125页第九十八页,共125页。语句语句(yj)(yj)if ab or cd and ef then S1 else S2的四元的四元(s yun)(s yun)式式(1) if ab g
38、oto (7) /转移转移(zhuny)至至(E.true ) (2) goto (3) (3) if cd goto (5)(4) goto (p+1)/转移至转移至(E.false)(5) if ef goto (7)(6) goto (p+1)(7)( S1的四元式的四元式 (p-1) )(p) goto (q)(p+1) (S2的四元式的四元式(q-1) )(q)/转移至转移至(E.true ) /转移至转移至(E.false)/(E.false)入口入口/ (E.true ) 入口入口 第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(100100)第98页/共1
39、25页第九十九页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(101101)第99页/共125页第一百页,共125页。语义描述使用语义描述使用(shyng)(shyng)的变量和过程:的变量和过程: E.true : “真真”链,链, E.false : “假假”链链 。 E.codebegin : E的第一个四元的第一个四元(s yun)(s yun)式式 Nextstat : 下一四元下一四元(s yun)(s yun)式地址式地址 过程:过程: emit( ) 输出一条四元式,而输出一条四元式,而nextstat+1 merg
40、e(p1, p2) 把把 p1的链首填在的链首填在p2 的链尾的链尾例:例: merge(p1, p2)(p10) goto ( 0) p1链链 (p100) goto (p10)(p1) goto (p100)(p20) goto( 0) (p100) p2 链链 (p200) goto (p20)(p2) goto (p200) backpatch(p,t) 把把链首链首p 所链接的每个四元式所链接的每个四元式的第四区段都填为的第四区段都填为t第七章第七章 语法制导翻译和中间代码生成(语法制导翻译和中间代码生成(102102)第100页/共125页第一百零一页,共125页。语语句句if a
41、b or cd and ef then S1 else S2的的四四元元式式(1) if ab goto (7) (E.true ) (1)和和(5)(2) goto (3) 拉拉链链(真真)(3) if cd goto (5)(4) goto (p+1)(E.false)(4) 和和(6)(5) if ef goto (7)拉拉链链(假假)(6) goto (p+1)(7)( S1的的四四元元式式 (p-1) )(p) goto (q)(p+1) (S2的的四四元元式式(q-1) )(q)第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码生成(10310
42、3)第101页/共125页第一百零二页,共125页。自下而上分析中的一种翻译方案:自下而上分析中的一种翻译方案:(1) EE1 or E2 backpatch(E1.false, E2.Codebegin); E.Codebegin:= E1.codebegin; E.true:=merge(E1.true, E2.true) E.false:= E2.false(2) EE1 and E2 backpatch(E1.true, E2.codebegin); E.Codebegin:= E1.codebegin; E.true:= E2.true; E.false:= merge(E1.fal
43、se, E2false);(3) Enot E1 E.true:= E1.false; E.Codebegin:= E1.codebegin; E.false:= E1.true第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(104104)第102页/共125页第一百零三页,共125页。(4) E(E1) E.true:= E1.true; E.Codebegin:= E1.codebegin; E.false:= E1.false(5) Eid1 rop id2 E.true:=nextstat;E.Codebegin:=nextstat;E.false
44、:=nextstat+1;emit(if id1.place rop id2.place goto);emit(goto-)(6) Eid E.true:=nextstat;E.codebegin:=nextstat;E.false:=nextstat+1;emit(if id.place goto);emit(goto-)第七章第七章 语法语法(yf)(yf)制导翻译和中间代码生成(制导翻译和中间代码生成(105105)第103页/共125页第一百零四页,共125页。GOTOGOTO语句语句(yj)(yj)翻译翻译拉链返填拉链返填 (10) goto L (10)goto 0 链尾链尾 (10)(20) goto L (20)goto 10 (30) goto L (30) goto 20 链头链头(30)(40)L: (40)L: .第七章第七章 语法制导翻译语法制导翻译(fny)(fny)和中间代码生成(和中间代码生成(106106)第104页/共125页第一百零五页,共125页。第七章第七章 语法制导语法制导(zhdo)(zhdo)翻译和中间代码生成(翻译和中间代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理咨询员报考条件
- 二零二四年度股权投资合同标的投资额度3篇
- 二零二四年文化艺术交流与推广合同
- 二零二四年度出版合同
- 2024存量住宅装修设计合同
- 二零二四年度环保产业技术合作合同
- 二零二四年度数据中心装修工程安全标准合同
- 二零二四年智能电网用特种电缆订购合同
- 二零二四年度新能源汽车采购代理合同
- 存量航空器材租赁合同04年专用
- 企业合规与风险管理的法律责任与风险承担
- 工会资产管理知识讲座
- 消化科护士的疼痛评估与管理技能
- 工会爱心母婴室管理制度
- 库房需要实行定置管理培训课件
- 人教版六年级数学上册典型例题系列之第三单元分数除法应用题部分基础篇(解析版)
- 出口运输装卸管理制度
- 服务社会 部编版道德与法治八年级上册
- 建筑施工进度管理:合理安排工期确保按时交付
- 文物遗产价值评估体系建立
- 学校关于铸牢中华民族共同体意识宣传教育工作的总结
评论
0/150
提交评论