资源描述:
《北大编译原理讲义Cha》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译概述什麽是编译编译器的逻辑结构(工作阶段)编译器各阶段的工作编译器的组织编译器的设计学习本课程应注意的问题教材和参考书3编译程序目标程序源程序把高级语言程序翻译成等价的低级语言程序。编译系统:编译程序和运行程序编译程序的功能4词法分析语法分析语义分析中间代码生成优化目标代码生成目标代码源程序符号表管理错误诊查处理3编译程序的逻辑结构5源程序PROGRAMm;VARa,b,c:real;BEGINread(b,c);a:=b+c*60;write(a)END.6经词法分析源程序被加工成单词流<保留字,PROGRAM><标识符,m><分隔符,;><保留字,VAR><标识符,a><标识符,b><
2、标识符,c><分隔符,:><标识符,real><分隔符,;><保留字,BEGIN>…...<标识符,a><算符,:=><标识符,b><算符,+><标识符,c><算符,*><常数,60>……<保留字,END><分隔符,.>7赋值语句变量:=表达式表达式+项项因子b项*因子因子c60a赋值语句经语法分析生成分析树8:=a+b*cinttoreal60赋值语句经语义分析生成语法树9生成中间代码temp1:=inttoreal(60);temp2:=c*temp1;temp3:=b+temp2;a:=temp3;10优化Temp1:=c*60.0a:=b+temp1生成目标代码movfc,r2;mul
3、f#60.0,r2;movfb,r1;addfr2,r1;movfr1,a;11符号表12错误的诊查处理编译程序在各个阶段应诊断和报告源程序中的错误,包括词法错误,语法错误,语义错误。编译程序应报告出错地点,并给出简明准确的提示信息。13编译程序(器)的组织前端和后端源程序中间代码目标代码仅依赖源程序仅依赖目标计算机遍(PASS):对输入文件(源程序或其等价的中间形式)从头到尾扫视,完成预定的处理。遍输入文件输出文件前端后端14词法分析语法分析语义分析和中间代码生成源程序中间代码符号表管理错误的诊查处理把前端组织成一遍扫描15设计编译程序应首先研究的问题首先研究源程序的语法和语义及运行模行,源
4、是设计编译程序的出发点。研究目标计算机,设计目标代码的指令系统,它是由目标计算机扩充而成,扩充后的计算机称作抽象计算机。目前的通用计算机往往和源语言执行模型不一致。。编译程序源程序目标程序抽象目标16教和学的几个问题重要性:处理字符串的一般方法;构造大程序的方法;实用;研究课题:新的语言及实现技术;并行编译技术。学习方法:(1)源程序是源泉;(2)把每个阶段放到整个编译程序背景中学习;(3)认真做作业。每周有一次答疑。参于网上教材的修改与创新。17教材和参考书教材:(1)编译程序设计原理北京大学出版社,杜淑敏等编著。(2)网络版(软件工程中心资助)。18(1)编译原理,清华大学出版社,吕映芝等
5、编著,1998。(2)程序设计语言编译原理,国防工业出版社,陈火旺等编著,1984。(3)AlfredV.Aho,RaviSethiJeffreyD.Ullman,Compilers:Principles,Techniques,andTools,Addison-Wesly,1986。(4)ModernCompilerImplementationinC,©AndrewW.AppelandMaiaGinsburg,199819参考书19