收藏 分销(赏)

语法制导翻译技术和中间代码生成推选.ppt

上传人:w****g 文档编号:13177226 上传时间:2026-01-30 格式:PPT 页数:84 大小:700.04KB 下载积分:8 金币
下载 相关 举报
语法制导翻译技术和中间代码生成推选.ppt_第1页
第1页 / 共84页
语法制导翻译技术和中间代码生成推选.ppt_第2页
第2页 / 共84页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,*,Compiler,编 译 原 理,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,语法制导翻译技术和中间代码生成,第,5,章,语法制导翻译技术和中间代码生成,要求明确语义分析的,任务,明确,属性文法,和,语法制导翻译,的含义,明确,自底向上和自顶向下,语法制导翻译的区别和特点,明确,生成中间代码的目的,中间代码的几种形式,教学目标,属性文法,语法制导翻译法的基本思想,常见的中间代码,各种不同语法结构的语法制导翻译技术,教学内容,词法分析,语法分析,:解决单词和语言成分的识别及词法和语法结构的检查。语法结构可形式化地用一组产生式来描述。给定一组产生式,我们能够很容易地将其分析器构造出来。,本章要介绍的是,语义分析和中间代码生成技术,。,程序语言中间代码目标代码,翻译,翻译,根据语义规则对识别出的各种语法成分析其含义,进行初步翻译,生成相应的中间代码或直接生成目标代码。,第一,审查每个语法结构的静态语义,即检查语法结构合法的程序是否真正有意义。也称静态语义检查。,(类型检查、控制流的检查、一致性检查、相关名字的检查),第二,如果静态语义正确,语义处理则要执行真正的翻译,要么生成中间代码,要么生成实际的目标代码。(,说明性语句:填符号表;可执行性语句:生成中间代码),语义分析的任务,中间代码:一种介于源语言和目标语言之间的中间语言形式,例:x=y+yz+yz,可执行性语句:生成中间代码),(1)语法制导定义(自底向上):,while E do S1的四元式序列,语义规则是根据产生式所蕴涵的语义操作建立起来的,并与语义分析的目标有关,100(j,a,0,102),这是一种动作与分析交错的实现方案。,翻译结果,控制流检查,确保控制语句有合法的转向点。,(1)*,C,D,+3*4的注释分析树,类型检查,。,控制流检查,,确保控制语句有合法的转向点。例如,,C,语言中的,break,语句使控制跳离包括该语句的最小的,switch,,,while,或,for,语句。如果不存在包括它的这样的语句,则应报错。,静态语义检查,静态语义检查,一致性检查,。很多情况下要求对象只能被定义一次。例如,语言中规定一个标识符在同一作用域中只能被说明一次,同一,case,语句的标号不能相同,枚举类型的元素不能重复出现等。,相关名字检查,。有的语言中有时规定,同一名字必须出现两次或多次。例如,,Ada,语言中,循环或程序块可以有一个名字,它出现在这些结构的开头和结尾,如同语句括号一般,编译程序必须检查它们的配对情况。,附加了一组,属性,和,运算(语义)规则,的,文法,5.2,属性文法,文法符号,X,的属性,t,常用来表示,语义规则是根据产生式所,蕴涵的语义,操作建立起来的,并与,语义分析的目标,有关,不同的,产生式,对应不同的语义规则,不同的,分析目标,也对应不同的语义规则,1.,属性的表示,2.,语义规则,的表示,语义信息,语义之间的关系,静态语义检查、符号表操作、代码生成及打印各种错误信息,属性文法,属性文法的形式定义:,AG:AG=(G,V,E),G:上下文无关文法;,V:属性的有穷集合;每一个属性与某一个文法符号相关联;用文法符号,属性表示,E:表示属性的断言或谓词的有穷集合(语义规则);每一个断言与文法的某个产生式相关联),属性:综合属性(自下而上传递信息)、继承属性(自上而下传递信息),非终结符,E,、,T,及,F,都有一个综合属性,val,符号,i,有一个综合属性。,某些非终结符加下标是为了区分一个产生式中同一非终结符多次出现,语 义 规 则,E E,1,+T,E T,T T,1,*F,T F,F (E),F i,E.val=E,1,T.val=T,1,.val,产生式,例,语法制导翻译的过程,语法制导翻译:,将,语义规则,与,语法规则,相结合,在,语法分析,的过程中通过执行,语义动作,,计算语义属性值,从而完成预定的翻译工作。,自底向上语法制导翻译,自顶向下语法制导翻译,语法制导翻译的实现,语法制导翻译分为两种,处理方法,:,(,1,)语法制导定义(自底向上):,对每个产生式编制一个语义子程序,在进行语法分析的过程中,,当一个产生式获得匹配时,,就调用相应的语义子程序实现语义检查与翻译。这种实现方案隐藏了其中语义规则的计算次序等实现细节,不必规定翻译顺序。,(,2,)翻译方案(自顶向下):,在产生式右部的适当位置,插入相应的语义动作,按照分析的进程,执行遇到的语义动作。这是一种,动作与分析交错,的实现方案。,输入符号串,分析树,执行,语义规则,翻译结果,翻译步骤,()从分析树得到描述结点属性间依赖关系的,依赖图,,由依赖图得到语义规则的,计算次序,(,1,)分析输入符号串,建立,分析语法树,()进行语义规则的计算,得到翻译结果,语法制导定义,对每个产生式编制一个,语义子程序,在进行语法分析的过程中,,当一个产生式获得匹配时,,就调用相应的语义子程序实现语义检查与翻译,综合属性,继承属性,自底向上,传递信息,自顶向下(自左向右),传递信息,print(E.val),打印由,E,产生的算术表达式的值,可认为这条规则定义了,L,的一个,虚属性,。,L E,E E,1,+T,E T,T T,1,*F,T F,F (E),F i,print(E.val),E.val=E,1,T.val=T,1,.val,例,5.,综合属性,语 义 规 则,产生式,一个结点的综合属性值是其,子结点,的某些属性来决定的,+3*4,的注释分析树,通常使用,自底向上,的分析方法,在,每个结点,处使用语义规则来计算综合属性值,当一个,产生式获得匹配,时,就调用相应的语义子程序,从,叶结点到根结点,进行计算,只含有,综合属性,的语法制导定义称为,S,属性定义,S,属性定义与自底向上翻译,LR,分析器可以改造为一个翻译器,在对输入串进行语法分析的同时对属性进行计算,LR,分析器增加,属性值(语义)栈,首先,为文法的每条规则设计相应的语义子程序;,增加一个语义信息栈;,在语法分析的同时做语义处理:即在用某一个产生式进行规约的同时,调用相应的语义子程序完成所用规则的语义动作,并将每次动作后的值保存在语义栈中,翻译步骤,计算表达式,2+3*5,状态,ACTION,GOTO,i,+,*,(,),$,E,T,F,0,S,5,S,4,1,2,3,1,S,6,acc,2,r,2,S,7,r,2,r,2,3,r,4,r,4,r,4,r,4,4,S,5,S,4,8,2,3,5,r,6,r,6,r,6,r,6,6,S,5,S,4,9,3,7,S,5,S,4,10,8,S,6,S,11,9,r,1,S,7,r,1,r,1,10,r,3,r,3,r,3,r,3,11,r,5,r,5,r,5,r,5,GE,:,1 EE+T,2,ET,3 TT*F,4 TF,5 F(E),6 Fi,i+i*i,表达式,2+3*5,的归约过程,步骤,状态栈,语义栈,符号栈,输入串,动作,0,0,_,$,2+3*5$,S,5,1,05,_ _,$2,+3*5$,r,6,2,03,_ 2,$F,+3*5$,r,4,3,02,_ 2,$T,+3*5$,r,2,4,01,_ 2,$E,+3*5$,S,6,5,016,_ 2 _,$E+,3*5$,S,5,6,0165,_ 2 _ _,$E+3,*,5$,r,6,步骤,状态栈,语义栈,符号栈,输入串,动作,7,0163,_ 2 _ 3,$E+F,*,5$,r,4,8,0169,_ 2 _ 3,$E+T,*,5$,S,7,9,01697,_ 2 _ 3 _,$E+T*,5$,S,5,10,016975,_ 2 _ 3 _ _,$E+T*5,$,r,6,11,01697(10),_ 2 _ 3 _ 5,$E+T*F,$,r,3,12,0169,_ 2 _ 15,$E+T,$,r,1,13,01,_ 17,$E,$,acc,注意,句柄归约在先,语义动作调用在后,归约时,栈内句柄各符号的语义信息与句柄及同时出栈,整个句柄所表示的语义信息则赋给相应产生式左部非终结符号的语义变量,并让该非终结符号及语义信息同时入栈,生成中间代码的,目的,(1),便于优化,(2),便于移植,(3),逻辑结构清晰,常见的中间代码,形式,:,后缀式,三地址代码,(四元式、三元式和间接三元式),图形,(抽象语法树、有向无环图),中间代码:一种介于,源语言和目标语言之间,的中间语言形式,5.,中间代码,中缀表示,后缀表示,a+b ab+,a+b*c abc*+,(a+b)*c ab+c*,a:=b*c+b*d abc*bd*+:=,特点,1,、运算对象出现的顺序和原有顺序(从左到右)相同,2,、运算符按实际计算顺序(从左到右)出现,3,、运算符紧跟在运算对象的后面出现,且没有括号,优点:简明、便于计值,后缀式,分别给出下列表达式的后缀表示,1.-a+b*(-c+d),2.X:=-(a+b)/(c-d)-(a+b*c),3.a=c b=d,4.ab+c ada+be,a-bc-d+*+,Xab+-cd-/abc*+-:=,ac=bd=,abc+ad ab+e,逆波兰表示法(后缀式),特点:运算符直接写在其运算对象之后。,不再有括号,运算对象出现的次序未变,求值过程简单,宜于用栈实现,后缀式的计算,用一个栈实现。,一般的计算过程是:自左至右扫描后缀式,每碰到运算量就把它推进栈。每碰到,k,目运算符就把它作用于栈顶的,k,个项,并用运算结果代替这,k,个项。,三地址代码,种类,(,1,),x=y op z,形式的赋值语句,其中,op,是二元运算符。,(,2,),x=op y,形式的赋值语句,其中,op,是一元运算符。,(,3,),x=y,形式的赋值语句。,(,4,)无条件转移语句,goto L,,表示下一个要执行的语句是标号为,L,的语句。,(,5,)条件转移语句,if x rop y goto L,中,,rop,为关系运算符,如果,x,和,y,满足关系,rop,,就转而执行标号为,L,的语句,否则顺序执行下一个语句。,(,6,)过程调用语句,param x,和,call p,n,。源程序中的过程调用语句,p(x,1,,,x,2,,,,,x,n,),可以产生如下的三地址代码:,param x,1,param x,2,param x,n,call p,n,其中,n,为实参个数。过程返回语句形如,return y,,其中,y,为过程返回的一个值。,(,7,)变址赋值:,x=yi,,把从,y,开始的第,i,个存储单元的值赋给,x,。,xi=y,,把,y,的值赋给,x,开始的第,i,个存储单元。,其中,,x,,,y,和,i,都代表数据对象。,(,8,)地址和指针赋值:,x=&y,,把,y,的地址赋给,x,。,x=,y,,把,y,指示的地址单元中的内容赋给,x,。,x=y,,把,x,指向的存储单元的值置为,y,。,2,具体实现,四元式,操作符 操作数,1,操作数,2,结果,结果:通常是由编译引进的临时变量,例,:X=,(A+B)*(C+D)-E,+,A,B,T1,+,C,D,T2,*,T1,T2,T3,-,T3,E,T4,=,T4,一,X,T1,T2,T3,T4,为临时变量,由四元式优化比较方便,T1=A+B,T2=C+D,T3=T1+T2,T4=T3-E,X=T4,操作符 左操作符数 右操作数,表达式的三元式:,w*x+(y+z),(1)*,w,x,(2)+,y,z,(3)+,(1),(2),第三个三元,式中的操作数,(1),(2),表示第,(1),和第,(2),条三元式的计,算结果。,三,元式,例:,A=B+C*D/E,F=C*D,三元式,(1)*,C,D,(2)/,(1),E,(3)+,B,(2),(4)=,A,(3),(5)*,C,D,(6)=,F,(1),不便于代码优化:删除某些三元式后可能需作一系列的修改,三元式,(1)*,C,D,(2)/,(1),E,(3)+,B,(2),(4)=,A,(3),(5)=,F,(1),间接三元式,执行顺序,(1),(2),(3),(4),(1),(5),三元式的执行次序用另一张表表示,优化时三元式可以不变,仅仅改变其执行顺序表,图形表示法,无循环有向图,(Directed Acyclic Graph,,简称,DAG),对表达式中的每个子表达式,,DAG,中都有一个结点,一个,内部结点,代表一个,操作符,,它的孩子代表操作数,在一个,DAG,中代表公共子表达式的结点具有多个父结点,例:,x=,y+y,z+y,z,抽象语法树,图形表示,有向无环图,表达式,a+(-b)*c,的三元式,(1)(,b,_);,单目运算,运算对象,2,为空,(2)(*,(1),c),(3)(+,a,(2),三元式,X=a+b*c,Y=d-b*c,三元式表,(1)(*,b,c),(2)(+,a,(1),(3)(=,x,(2),(4)(_,d,(1),(5)(=,y,(4),四元式,(,三地址代码,),X=a*b+c*d,的四元式序列 三地址代码,(1)(*,a,b,T,1,)(1)T,1,=a*b,(2)(*,c,d,T,2,)(2)T,2,=c*d,(3)(+,T,1,T,2,T,3,)(3)T,3,=T,1,+T,2,(4)(=,T,3,_,X)(4)X=T,3,a:=b*(-c)+b*(-c),的图表示法,assign,a,+,*,b,uminus,c,DAG,assign,a,+,*,b,uminus,c,抽象语法树,*,b,uminus,c,抽象语法树,对应的代码:,T,1,:=-c,T,2,:=b*T,1,T,3,:=-c,T,4,:=b*T,3,T,5,:=T,2,+T,4,a:=T,5,assign,a,+,*,b,uminus,c,抽象语法树,*,b,uminus,c,DAG,对应的代码:,T,1,:=-c,T,2,:=b*T,1,T,5,:=T,2,+T,2,a:=T,5,assign,a,+,*,b,uminus,c,DAG,抽象语法树,对应的代码:,T,1,:=-c,T,2,:=b*T,1,T,3,:=-c,T,4,:=b*T,3,T,5,:=T,2,+T,4,a:=T,5,属性翻译文法的应用,综合属性与自下而上定值,每个非终结符的属性值都是根据位于其下面那些符号的属性值来确定的,即按一种自下而上的方式来确定的。,继承属性和自上而下定值,非终结符的属性值或者根据其上层非终结符的属性来确定或者根据产生式右部其它符号的属性来确定。这种属性值是根据自上而下方式确定的。,自底向上的语法制导翻译,自底向上的语法制导翻译方法是在自底向上的语法分析过程中逐步实现语义规则的翻译方法。在实现时注意以下几点:,(,1,)自底向上的翻译的特点,栈的操作,对产生式的要求等,(,2,)各种程序语句的目标结构,(,3,)从源结构到目标结构的变换方法(包括对产生式的改造等),算术表达式和赋值语句的翻译,翻译步骤:,(,1,)分析文法的特点;,(,2,)设计一系列的语义变量、定义语义过程、语义函数;,(,3,)设计每一条规则的语义子程序;,(,4,)增加一个语义信息栈,构造,LR,分析表,;,(5),语法分析同时语义处理,.,例:有文法,GA,:,1.Ai:=E,2.E E+TT,3.T T*FF,4.F,P,5.P i(E),简单算术表达式的计值顺序与四元式出现的顺序相同,因此目标代码的顺序,(,结构,),为,:,(1),先生成,E,的代码,(,一系列顺序执行的四元式,),(2),把,E,的值赋给变量,i(,表达式的结果赋给赋值语句的左变量,),引入语义变量,语义过程和语义函数,(1),语义变量,E.place:,表示存放,E,值的变量名在符号表中的入口地址或临时变量的整数码,.,(2),语义函数,newtemp():,申请一个临时单元,存放中间结果,;,(3),语义过程,emit(T=arg,1,op arg,2,):,产生一条四元式,并添入四元式表中,;,(4),语义过程,lookup(i.name):,审查是否出现在符号表中,在,:,返回地址,不在,:,返回,NULL;,(5),语义函数,entry(i):,回送标识符,i,在符号表中的入口地址,.,表达式的语义动作设计,1.Ai:=Eemit(entry(i)=E.place,2.E E,1,+TE.place=newtemp(),emit(E.place)=E,1,.place+T.place,3.E T E.place=newtemp(),emit(E.place=T.place),4.T T,1,*FT.place=newtemp(),emit(T.place)=T,1,.place*F.place,5.T F T.place=newtemp(),emit(T.place=F.place),6.F _P F.place=newtemp(),emit(F.place)=P.place,7.P(E)P.place=newtemp(),emit(P.place=E.place),8.P iP.place=newtemp(),emit(P.place=Entry(i),例如,:,表达式,X:=a+b*(c-d),的翻译,K+1:T,1,:=c-d,K+2:T,2,=b*T,1,K+3:T,3,:=a+T,2,K+4:X:=T,3,(-,c,d,T,1,),(*,b,T,1,T,2,),(+,a,T,2,T,3,),(:=,T,3,_,X),布尔表达式的翻译,布尔表达式,是由布尔运算符,(and,or,not),作用于布尔变量,(,或常数,),或关系表达式而形成的。,布尔表达式的作用:,用作控制语句中的条件:,if-then,、,while,、,repeat,等,逻辑赋值句中的逻辑运算,布尔表达式到四元式的翻译,文法:,E,E,E,E,E,E,(E),id,E rop E,其中,,(and),、,(or),、,(not),为布尔(逻辑)运算符;,rop,为关系运算符(,,,,,=,,);,id,为布尔(逻辑)变量或布尔(逻辑)常数;,E rop E,为关系表达式。,布尔表达式的求值方法:,通过逐步计算出各部分的值来计算整个表达式。,利用布尔运算符的性质计算其值,布尔表达式作为控制语句中的条件式,作用是用于选择下一个执行点,while E do S,1,E,的作用是选择,S,1,执行,还是跳过,S,1,语句,执行,S,1,后面的语句,E,有两个出口,:,真,:S,1,语句,假,:S,1,后面的语句,While,语句的目标结构,假,E,的代码 真,whille,S,1,的代码,do,JMP W.head,W.head,布尔初等量,(,布尔变量和关系表达式,),的目标结构,由两个转移四元式构成,一个表示真出口L,i,另一个表示假出口L,j,设E是一布尔变量,它的目标结构为:,(1)if E goto L,i,(jump,t,E,_,L,i,),(jnz,A,_,L,i,),(2)if E,1,rop E,2,goto L,i,(jump,E,1,E,2,L,i,),(jrop,E,1,E,2,L,i,)例:(j,a,b,p),(3)goto L,j,(jump L,j,),(j,_,_,L,j,),举例,:if,ab,then,A:=x+y,的四元式序列,if ab goto L,i,(,真出口,),goto L,j,(,假出口,),L,i,:S,的第一个四元式,S,的最后一个四元式,L,j,:S,后面的语句,(1)if ab goto (3),(2)goto (5),(3)T,1,:=x+y,(4)A:=T,1,(5),多因子组成的布尔表达式的翻译,例,:if ab c then S,1,else S,2,分析结果如下,:,当,ab,为真,执行,S,1,不需要计算,c,的值,当,ab,为假,计算,c,的值,c,为真,:,执行,S,1,为假,:,执行,S,2,当,ab,与,c,分别为真时,程序转向一致,真出口相同,(S,1,),当,ab,与,c,分别为假时,程序转向一致,假出口相同,(S,2,),if ab c then S,1,elseS,2,的四元式序列,(1)if ab goto S,1,的第一条语句,(5),(2)goto(3),(3)if c goto S,1,的第一条语句,(5),(4)goto S,2,的第一条语句,(p+1,(5),关于,S,1,的四元式序列,(p)Goto q,(p+1),关于,S,2,的四元式序列,(q),后继四元式,目标结构,E,的代码,T,F,S,1,的代码,JUMP S,S,2,的代码,S,(后继语句),if E then S,1,else S,2,的四元式序列,(1)if E goto(3),(2)goto(S,2,的第一个四元式,),(p+1),(3),关于,S,1,的四元式序列,(p)goto r(,执行完,S,1,后转出,),(p+1),关于,S,2,的四元式序列,(r),后继四元式,while E do S,1,的四元式序列,(1)if E goto(3),(2)goto(S,1,后面的语句,),(p+1),(3),关于,S,1,的四元式序列,(p)goto(1),(p+1),后继四元式,真出口链、假出口链、回填(,Backparch),在多个因子组成的布尔表达式中,可能有多个因子的真出口或假出口的转移去向相同,但又不能立刻知道具体转向位置。,把转移方向相同的四元式链在一起,一旦发现具体转移目标,就回填。,真出口用,E,true,来表示。,假出口用,E,false,来表示。,回填,Backparch,(,g,t),将,t,填入由,g,所指向的四元式的结果部分,if ab c then S,1,elseS,2,的真假出口回填描述,(1)if a,C,D,(7),(6)(j,_,_,(4),(13),(7)(j0b0,do,if xy then b:=b-1 else a:=a-1,假设四元式序列从,100,开始编号,100,(,j,a,0,102),101 (j,_,_,0),(112),102 (j,b,0,104),103 (j,_,_,101),(112),104 (j,x,y,106),105 (j,_,_,0),(109),106(-,b,1,T,1,),107(:=,T,1,_,b),108(j,_,_,100),109(j,a,1,T,2,),110(:=,T,2,_.a),111(j,_,_,100),112,文法,GS:SSaAA,AAbBB,BcSde,(1),证明,AacAbcBaAdbed,是文法的一个句型,.,(2),请写出该句型的所有短语、素短语及句柄。,(,3,)为文法,GS,的产生式构造相应的翻译子程序,使句型,AacAbcBaAdbed,经该翻译方案翻译后,输出为。,文法及相应的翻译方案如下,:,SbTc print”1”,Sa print”2”,TR print”3”,RR/S print”4”,RS print”5”,对于输入符号串,bR/bTc/bSc/ac,该符号串的输出是什么,?,输出为,1453142431,归约的次序为,:,(1)SbTc,(1),(2)RR/S,(4),(3)RS,(5),(4)TR,(3),(5)SbTc,(1),(6)RR/S,(4),(7)Sa,(2),(8)RR/S,(4),(9)TR,(3),(10)SbTc,(1),采用then 与else的最近匹配原则(三地址指令),a+b*c abc*+,例:有文法GA:,(1)C if E then,数组:相同类型数据的N维复合结构.,While 语句的翻译,(1)C if E then,-,T3,E,T4,文法:EEEEEE(E)idE rop E,假出口用Efalse来表示。,(10)SbTc (1),真出口链、假出口链、回填(Backparch),107(:=,T1,_,b),(7)if AB goto(9),a:=b*(-c)+b*(-c)的图表示法,place=Entry(i),2、运算符按实际计算顺序(从左到右)出现,数组赋值语句的翻译,数组的定义和存储,数组,:,相同类型数据的,N,维复合结构,.,数组中每一个元素在计算机中占有相同的存储空间,数组分为静态数组和动态数组,数组的一般定义,:,Al,1,:u,1,l,2,:u,2,l,k,:u,k,l,n,:u,n,其中,:A,是数组名,l,k,是数组下标的下限,u,k,是上限,k,是数组的维数,数组在内存中是用一片连续的存储单元来表示,.,数组元素的地址表示,一维数组:al,1,:u,1,(l,1,iu,1,),每个元素的宽度为w,地址为:,b,1,+(i-l,1,)*w,是数组a的第一个元素的相对地址,称为起始地址,可以表示为:,i*w+(b,1,-l,1,*w),令,C=b,1,-l,1,*w,(可以计算出来),故:,ai=i*w+c,数组元素的地址表示,二维数组,Al,1,:u,1,l,2,:u,2,:,事先约定存储顺序,按行存储、按列存储,数组元素,ai,1,i,2,地址可表示为:,D=bap+vap,bap:,固定部分,在编译时可以计算出来,a,是数组元素首地址,,d,2,是第二维的维长,,c=l,1,d,2,+l,2,Bap=a-c,vap:,可变部分,Vap=i,1,d,2,+i,2,数组元素的四元式,:bapvap,临时单元,T=bap,T,1,=vap,(,1,)数组元素的引用,X:=TT,1,四元式为:(,=,,,TT,1,,,-,,,X,),(,2,)数组元素的赋值,TT1:=X,四元式为:(,=,,,X,,,-,,,TT,1,),数组元素翻译举例设一数组为,A:array1.10,1.20 of reald,1,=10,d,2,=20 c=l,1,d,2,+l,2,=21,赋值句,AI,J+2:=10.0+AI+1,J+1,的四元式序列为:,K+0:(+,J,2,T,1,),K+1:(*,I,20,T,2,)/*,计算,vap=i,1,d,2,+i,2,K+2:(+,T,2,T,1,T,1,),K+3:(-,a,21,T,3,)/*,计算,bap=a-c c=21,K+4:(+,I,1,T,4,)/*,计算,AI+1,J+1,的地址,K+5:(+,J,1,T,5,),K+6:(*,T,4,20,T,6,),K+7:(+,T,6,T,5,T,5,)/*T,5,为,vap,K+8:(,a,21,T,7,)/*T,7,为,bap,K+9:(=,T,7,T,5,-,T,8,)/T,8,为,AI+1,J+1,的值,K+10:(+,10.0,T,8,T,9,),K+11:(=,T,9,-,T,3,T,2,),感谢观看,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服