版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理
第一章引论本课程介绍程序设计语言编译程序构造的基本原理和基本实现技术.源语言程序目标语言程序翻译程序翻译一.什么是编译程序翻译程序把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序高级语言程序机器语言程序结果编译程序翻译运行一.什么是编译程序编译程序(compiler)
把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序诊断编译程序 优化编译程序交叉编译程序 可变目标编译程序一.什么是编译程序解释程序把源语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身源程序结果解释程序解释执行二.编译过程把英文翻译为中文
识别出句子中的一个个单词;分析句子的语法结构;根据句子的含义进行初步翻译;对译文进行修饰;写出最后的译文。词法分析语法分析中间代码产生优化目标代码产生二.编译过程编译程序的工作一般分为五个阶段:词法分析语法分析中间代码产生优化目标代码产生1.词法分析任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。依循的原则:构词规则描述工具:有限自动机FORI:=1TO100DO
保留字标识符等符整常数保留字整常数保留字2.语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。依循的原则:语法规则描述工具:上下文无关文法Z:=X+0.618*Y
算术表达式,赋值语句3.中间代码产生任务:对各类不同语法范畴按语言的语义进行初步翻译。依循的原则:语义规则中间代码:三元式,四元式,树形结构等Z:=X+0.618*Y翻译成四元式为
(1)*0.618YT1 (2)+XT1T2 (3):=T2_Z4.优化任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。依循的原则:程序的等价变换规则FORK:=1TO100DOBEGINX:=I+1;M:=I+10*K;N:=J+10*K;END中间代码(一)序号 OPR OPN1 OPN2RESULT注释 (1) := 1 KK:=1 (2) j< 100 K (10)if(100<K)goto(10)(3) + I 1 X X:=I+1 (4) * 10 K T1 T1:=10*K(5) + I T1 M M:=I+T1 (6) * 10 K T2 T2:=10*K(7) + J T2 N N:=J+T2 (8) + K 1 K K:=K+1 (9) j (2) goto(2)(10) 400次加法200次乘法转换后的等价代码(二)序号 OPR OPN1 OPN2 RESULT 注释 (1) + I 1 X X:=I+1 (2) := I M M:=I (3) := J N N:=J (4) := 1 K K:=1 (5) j< 100 K (10) if(100<K)goto(10)(6) + M 10 M M:=M+10 (7) + N 10 N N:=N+10 (8) + K 1 K K:=K+1 (9) j (5) goto(5) (10) 301次加法5.目标代码产生任务:把中间代码变换成特定机器上的目标代码。依赖于硬件系统结构和机器指令的含义目标代码三种形式:绝对指令代码:可直接运行可重新定位指令代码:需要连接装配汇编指令代码:需要进行汇编三.编译程序结构编译程序总框中间代码单词符号语法单位中间代码目标代码词法分析器语法分析器语义分析与中间代码生成器优化段源程序表格管理出错处理目标代码生成器2.表格和表格管理常见的表格:符号名表,常数表,标号表,入口名表,过程引用表。格式:名字信息例:PASCAL程序段:PROCEDUREINCWAP(M,N:INTEGER);LABELSTART;VARK:INTEGER;BEGINSTART:K:=M+1; M:=N+4; N:=K;END.PROCEDUREINCWAP(M,N:INTEGER);LABELSTART;VARK:INTEGER;BEGINSTART:K:=M+1; M:=N+4; N:=K;END.PROCEDUREINCWAP(M,N:INTEGER);LABELSTART;VARK:INTEGER;BEGINSTART:K:=M+1; M:=N+4; N:=K;END.PROCEDUREINCWAP(M,N:INTEGER);LABELSTART;VARK:INTEGER;BEGINSTART:K:=M+1; M:=N+4; N:=K;END.PROCEDUREINCWAP(M,N:INTEGER);LABELSTART;VARK:INTEGER;BEGINSTART:K:=M+1; M:=N+4; N:=K;END.PROCEDUREINCWAP(M,N:INTEGER);LABELSTART;VARK:INTEGER;BEGINSTART:K:=M+1; M:=N+4; N:=K;END.3.出错处理出错处理程序:发现源程序中的错误,把有关错误信息报告给用户语法错误语义错误4.遍(pass)所谓“遍”,就是对源程序或源程序的中间表示从头到尾扫描一次,从外存输入,处理后结果输出到外存。阶段与遍是不同的概念。一遍可以由若干段组成,一个阶段也可以分若干遍来完成。5.编译前端与后端编译前端:与源语言有关,如词法分析,语法分析,语义分析与中间代码产生,与机器无关的优化编译后端:与目标机有关,与目标机有关的优化,目标代码产生源语言中间语言目标语言前端后端四.编译程序与程序设计环境
程序设计环境编辑程序编译程序连接程序调试工具集成化的程序设计环境五.编译程序生成以汇编语言和机器语言为工具优点:可以针对具体的机器,充分发挥计算机的系统功能。生成的程序效率高。缺点:程序难读、难写、易出错、难维护、生产的效率低。五.编译程序生成高级语言书写优点:程序易读、易理解、容易维护、生产的效率高。缺点:难以充分发挥计算机的系统功能,生成的程序效率低。五.编译程序生成高级语言书写利用已有的某种语言的编译程序实现另一语言的编译程序。L1语言A代码P1:A代码L2语言A代码P2:L1语言L2语言A代码P2:A代码同一台机器不同的语言五.编译程序生成
移植方法把一种机器上的编译程序移植到另一种机器上。L语言A代码P1:A代码L语言B代码P2:L语言L语言B代码P2:A代码L语言B代码P2:L语言L语言B代码P2:B代码同一种语言不同的机器L1+L2+...+Ln…L1+L2五.编译程序生成自展技术L1五.编译程序生成编译程序自动产生编译程序-编译程序,编译程序书写系统LEX词法分析程序产生器YACC语法分析程序产生器编译程序自动产生器L语言的语法描述语义描述目标语言或机器描述L语言的编译程序六.关于学习编译原理
构造编译程序的前提:掌握源语言掌握目标语言掌握编译方法六.关于学习编译原理意义:学习编译程序构造原理,技术更好地理解高级语言编译的原理和方法有助于构造一些实用的工具六.关于学习编译原理
课程特点:理解性技术性第一章小结内容1什么是编译程序2编译过程和编译程序的结构3为什么要学习编译程序本章没有难以理解的内容,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度大型露天场地长期租赁合同示范文本4篇
- 2025年仓库租赁清单协议
- 2025版智能楼顶无人机起降区租赁合同范本4篇
- 2025年企业人才技术外包服务协议
- 2025年代理协议签署注意事项总结
- 2025年新型智能设备销售合同管理规范2篇
- 2025年分期付款电子数码产品维修合同
- 2025年企业专线服务协议
- 2025年农村宅基地租赁出租租赁协议
- 防震安全知识培训课件
- NGS二代测序培训
- 《材料合成与制备技术》课程教学大纲(材料化学专业)
- 小红书食用农产品承诺书示例
- 钉钉OA办公系统操作流程培训
- 新生儿科年度护理质控总结
- GB/T 15934-2024电器附件电线组件和互连电线组件
- 《工贸企业有限空间作业安全规定》知识培训
- 高层次人才座谈会发言稿
- 垃圾清运公司管理制度(人员、车辆、质量监督、会计管理制度)
- 《建筑工程设计文件编制深度规定》(2022年版)
- 营销人员薪酬考核方案
评论
0/150
提交评论