编译原理实践ppt课件



《编译原理实践ppt课件》由会员分享,可在线阅读,更多相关《编译原理实践ppt课件(19页珍藏版)》请在装配图网上搜索。
1、,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,编译原理实践-语义分析与代码生成,编译原理实践-语义分析与代码生成,1,回顾,回顾,2,语义分析与代码生成,table数组和enter过程的扩充,命令代码生成过程gen,表达式、项、因子及关系式的翻译,语句的翻译,生成PL/0目标代码程序,语义分析与代码生成table数组和enter过程的扩充,3,1.table数组和enter过程的扩充,lod l,a将l,a形成的栈地址变量值置入栈顶,sto l,a 将栈顶值保存到l,a形成的栈地址变量,llevel级别之差,变量所处的程序段,静态级别,与,变量被说明
2、时的,静态级别,之差,aoffset,1.table数组和enter过程的扩充lod l,a将,4,table数组和enter过程的扩充,cal l,a调用子程序,llevel级别之差,call语句所处的程序段,静态级别,与,调用过程被说明时的,静态级别,之差,a被调用代码程序段的起始地址,必须将variable和procedure的level保存在合适的地方,table数组和enter过程的扩充cal l,a调用子程,5,table数组和enter过程的扩充,改变符号表,增加相应的字段(P144图11-1),object=(constant,variable,prozedure);,tabl
3、e:array 0.txmax of,record name:alfa;,case kind:,object of constant:(val:integer);,variable,prozedure:,(level,adr,size:integer);,end;,常量:val,变量:静态级别,位移地址,Procedure:程序地址,静态级别,预留存储单元,table数组和enter过程的扩充改变符号表,增加相应的字,6,table数组和enter过程的扩充,procedure enter(k:objekt);,begin(*enter object into table*),tx:=tx+1
4、;,with tabletx do,begin name:=id;kind:=k;,case k of,constant:begin if numamax then,begin error(31);num:=0 end;,val:=num,end;,variable:begin level:=lev;adr:=dx;dx:=dx+1;,end;,prozedure:level:=lev,end,end,end(*enter*);,table数组和enter过程的扩充procedure en,7,2.命令代码生成过程gen,命令代码生成过程gen(P145图11-3),每调用一次过程gen,在程
5、序存储器里产生一条代码指令,2.命令代码生成过程gen命令代码生成过程gen(P145图,8,3.表达式、项、因子及关系式的翻译,表达式的翻译,中缀表达式与后缀表达式,后缀表达式:操作符总是跟随在它操作数的后边,后缀表达式翻译规则,T(“+”term)=T(term),T(“-”term)=T(term)“-”,T(term1”+”term2)=T(term1)T(term2)“+”,T(term1”-”term2)=T(term1)T(term2)“-”,T(term1”*”term2)=T(term1)T(term2)“*”,T(term1”/”term2)=T(term1)T(term2
6、)“/”,T(“(”expression”)”)=T(expression),3.表达式、项、因子及关系式的翻译表达式的翻译,9,表达式、项、因子及关系式的翻译,expression过程的扩充(P147图11-4),term过程的扩充(P147图11-5),表达式、项、因子及关系式的翻译expression过程的扩充,10,表达式、项、因子及关系式的翻译,factor过程的扩充(P148图11-6),condition过程的扩充(P148图11-7),表达式、项、因子及关系式的翻译factor过程的扩充(P14,11,Example,(x+y)/(z-w),后缀表达式xy+zw-/,Lod x
7、,Lod y,Opr 0,2,Lod z,Lod w,Opr 0,3,Opr 0,5,Example后缀表达式xy+zw-/Lod x,12,Another example,T(x-6*(z+w)(x+y)/(12-w),Another example,13,4.语句的翻译,赋值语句的翻译处理,T(Ident”:=”expression),T(expression),Sto lev-level,adr,4.语句的翻译赋值语句的翻译处理T(expression),14,if语句的翻译处理,T(“if”condition“then”statement),T(condition),Jpc,L1,T(
8、statement),L1:,if语句的翻译处理T(condition),15,while语句的翻译处理,T(“while”condition“do”statement),L1:T(condition),Jpc,L2,T(statement),jmp L1,L2:,while语句的翻译处理L1:T(condition),16,call语句的翻译处理,T(“call”ident),cal,lev-level,adr,call语句的翻译处理cal,lev-level,ad,17,编译原理实践ppt课件,18,5.生成PL/0目标代码程序,执行program6,在SI-NS图上执行program6,直接从PL/0程序翻译写出目标代码程序,5.生成PL/0目标代码程序执行program6,19,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。