欢迎来到天天文库
浏览记录
ID:42329398
大小:431.56 KB
页数:33页
时间:2019-09-12
《编译原理第1章引论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理主讲:曹阳15991836299cyang0618@sina.com编译原理课程评分方法(GradingPolicies)出勤and作业10%+实验20%+期末考试70%=总评100%50学时=40(理论)+10(实验)10周必修考试课3学分第1章引言1.1什么叫编译程序1.2编译过程概述1.3编译程序的结构1.4编译程序的生成第1章引言教学目的掌握编译程序的概念,了解编译的思想;了解编译程序的分类;理解编译程序的构成及各组成部分的作用;了解编译程序的生成.教学重点与难点本章重点:编译的概念;编译
2、程序的构成。本章难点:编译程序的构成及组成部分作用。第1章引言1.1什么叫编译程序问题:在计算机上执行一个高级语言程序一般要分几步?执行方式有几种?1.1什么叫编译程序编译程序是现代计算机系统的基本组成部分.从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序.高级语言书写的程序编译程序低级语言程序编译程序的分类(用途和侧重)诊断编译程序;优化编译程序;交叉编译程序;可变目标编译程序专门用于程序的开发和调试1.1什么叫编译程序编译程序
3、的分类(用途和侧重)诊断编译程序;优化编译程序;交叉编译程序;可变目标编译程序着重提高目标代码的效率1.1什么叫编译程序编译程序的分类(用途和侧重)诊断编译程序;优化编译程序;交叉编译程序;可变目标编译程序一个编译程序产生不同于其宿主机的机器代码宿主机:运行编译程序的计算机1.1什么叫编译程序编译程序的分类(用途和侧重)诊断编译程序;优化编译程序;交叉编译程序;可变目标编译程序如果不需要重写编译程序中与机器无关的部分就能改变目标机;目标机:运行编译程序所得的目标代码的计算机1.1什么叫编译程序1.2编译过程
4、概述(编译器的组成)词法分析语法分析语义分析源程序中间代码生成独立于机器的代码优化器代码生成器依赖于机器的代码优化目标机器代码符号表任务:输入源程序,对构成源程序的字符串进行扫描和分析,识别出一个个的单词(符号)如关键字,标识符,常数,算符,界符。例:for(i=1;i<=5;i++)词法分析结果如下:关键字for界符(…1.2编译过程概述(编译器的组成)又如一个C源程序片断:inta;a=a+2;词法分析后返回:单词类型单词值保留字int标识符(变量名)a界符;标识符(变量名)a算符(赋值)=标识符(变量
5、名)a算符(加)+整数2界符;1.2编译过程概述(编译器的组成)词法分析语法分析语义分析源程序中间代码生成独立于机器的代码优化器代码生成器依赖于机器的代码优化目标机器代码符号表任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位(如短语、句子等),并构造一棵能够正确反映该结构的语法树。作用:通过语法分析确定整个输入是否构成语法上正确的“程序”。注意:词法分析是种线性分析,而语法分析是一种层次分析。1.2编译过程概述(编译器的组成)例:position:=initial+rate*60;
6、规则<赋值语句>::=<标识符>“:=”<表达式><表达式>::=<表达式>“+”<表达式><表达式>::=<表达式>“*”<表达式><表达式>::=“(”<表达式>“)”<表达式>::=<标识符><表达式>::=<整数><表达式>::=<实数>1.2编译过程概述(编译器的组成)赋值语句标识符表达式表达式+表达式表达式标识符整数标识符:=表达式*position:=initial+rate*60;1.2编译过程概述(编译器的组成)id1:=id2+id3*N:=+N60*id1Positionid2init
7、ialid3rate1.2编译过程概述(编译器的组成)词法分析语法分析语义分析源程序中间代码生成独立于机器的代码优化代码生成器依赖于机器的代码优化目标机器代码符号表任务:对语法分析所识别出的各类语法范畴,遵循语言的语义规则分析其含义是否正确。1.2编译过程概述(编译器的组成)词法分析语法分析语义分析源程序中间代码生成独立于机器的代码优化代码生成依赖于机器的代码优化目标机器代码符号表任务:语义分析的基础上按语言的语义规则进行初步的翻译(产生中间代码)中间代码:是一种含义明确、便于处理的记号系统,它通常独立具体
8、的硬件;表示形式:四元式、三元式、间接三元式等1.2编译过程概述(编译器的组成)例1:将id1:=id2+id3*60表示成四元式(1)(inttoreal,60-t1)(2)(*,id3t1t2)(3)(+,id2t2t3)(4)(:=,t3-id1)例2:把Z=(X+0.418)*Y/W翻译成四元式(教材)1.2编译过程概述(编译器的组成)词法分析语法分析语义分析源程序中间代码生成独立于机器的代码优化目标代码
此文档下载收益归作者所有