编译原理第1讲(第一章).ppt
《编译原理第1讲(第一章).ppt》由会员分享,可在线阅读,更多相关《编译原理第1讲(第一章).ppt(35页珍藏版)》请在装配图网上搜索。
第一章编译原理概述,预备概念什么是编译编译的基本过程几个有关的概念解释程序,预备概念,低级语言(LowLevelLanguage)机器语言、汇编语言特点:与特定的机器有关,功效高,但使用复杂、繁琐、费时、易出错高级语言(HighLevelLanguage)Fortran、Pascal、C语言等特点:不依赖具体机器,移植性好、对用户要求低、易使用、易维护等。,源程序用汇编语言或高级语言编写的程序称为源程序目标程序用目标语言所表示的程序目标语言:可以是介于源语言和机器语言之间的“中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。,预备概念,词法,语法,语义自然语言的的例子:aboyeatsanapple.N+V+N(主谓宾)词法:规定什么是正确的单词,boy不能写成byo等等。语法:规定什么样的语法成分组合是正确的。语法错误但词法正确的情况:aboyanappleeats.(作为一个完整句子,通常没有这样的语法结构N+N+V)语义:规定句子在意义上正确否。语义错误但语法正确的情况:anappleeatsaboy.(语法正确,含义是错误的)语用:言外之意。(我们是在非常恶劣的条件下进行比赛的)编译原理不涉及语用问题。(广义上,词法可以包括在语法范畴之内。),预备概念,什么是编译?,从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言,一般是高级语言)书写的源程序翻译成另一种语言(称作目标语言,一般是低级语言)书写的等价的目标程序.编译:编译程序的翻译过程。,源程序,编译程序,目标程序,SOURCEPROGRAM,TRANSLATER,OBJECTPROGRAM,即源程序是编译程序的输入,目标程序是编译程序的输出(注意:1目标程序不一定是可执行文件。2编译程序编译器编译软件。),源程序、编译程序、目标程序三者关系:,信息表格管理程序,词法分析器,语法分析器,语义分析程序,中间代码生成器,代码优化程序,目标代码生成器,错误检查和处理程序,源程序,目标程序,单词符号,语法单位,四元式,四元式,编译基本过程,词法分析:又称扫描,任务是输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词符号。语法分析:以词法分析输出的单词序列为输入,根据语言的语法规则,把单词符号串分解成各类语法单位,如短语、句子、序列段等。如“X+0.6*Y”,在工程计算语言中被识别属于”算术表达式“。(短语,句子,算术表达式都是语法成分)语义分析:判定各语法成分的含义和功能,确定它们的属性或执行时应运行的运算或操作。(保存运算的中间结果,判断变量是否已经定义,类型是否一致)中间代码生成:中间代码是一种结构简单、含义明确的记号系统,是介于源语言和目标语言之间的语言代码,一般独立于具体硬件。常用逆波兰式、三元式、四元式及树型结构等。代码优化:对中间代码进行等价变换,以期最终产生更高效(省时间、省空间)的目标代码,优化策略主要有公共子表达式提取,循环优化等等。(功能要等价)目标代码生成:接受中间代码(或经优化处理之后),变换为机器语言或汇编语言形式的目标程序。,编译的六个阶段(各部分的大致课时分配),一个简单的例子,已知:pascal语言片段position:=initial+rate*60要求:将其翻译成目标代码(机器代码),(1)词法分析,从左至右读字符流的源程序、识别单词(通常滤掉空格,换行等字符)。position:=initial+rate*60;单词类型单词值标识符1(id1)position算符(赋值):=标识符2(id2)initial算符(加)+标识符3(id3)rate算符(乘)*整数60分号;,有关术语,保留字-reservedword标识符-identifier(user-definedname)单词-就是指逻辑上紧密相连的一组字符,这些字符具有集体含义。如保留字(begin、end、if、for、while等)、标识符、常数、算符和界符(标点符号、左右括号等)。,(2)语法分析,功能:层次分析.依据源程序的语法规则把源程序的单词序列组成语法短语(比如:表示成语法树).position:=initial+rate*60;规则:=“:=”:=“+”:=“*”:=“(”“)”:=:=:=,赋值语句的语法树,赋值语句的语法树另一种表达形式,id1:=id2+id3*N,(3)语义分析,变量声明类型匹配类型转换例:Programp();Varrate:real;procedureinitial;position:=initial+rate*60/*error*/*error*/*warning*/;,(3)语义分析,Programp();Varrate:real;Varinitial:real;Varposition:real;position:=initial+rate*60(警告,60应该是实数)修改方法:添加一个节点,负责类型转换,(3)语义分析,(4)中间代码生成,源程序的内部(中间)表示:逆波兰式、三元式、四元式及树型结构四元式举例:(*,id3,t1,t2)含义:t2:=id3*t1,(4)中间代码生成,id1:=id2+id3*60(1)(inttoreal,60-t1)(2)(*,id3t1t2)(3)(+,id2t2t3)(4)(:=,t3-id1),(5)代码优化,id1:=id2+id3*60(1)(inttoreal60-t1)(2)(*id3t1t2)(3)(+id2t2t3)(4)(:=t3-id1)变换(1)(*id360.0t1)(2)(+id2t1id1),(5)代码优化(单独的例子),t1=b*ct1=b*ct2=t1+0t2=t1+t1t3=b*ca=t2t4=t2+t3a=t4t*是临时变量,a不能少。还可以优化a=t1+t1,(6)目标代码生成,(*,id360.0t1)(+,id2t1id1),movfid3,R2mulf#60.0,R2movfid2,R1addfR2,R1movfR1,id1,汇编代码到机器代码就是一一对应的翻译过程了,比较简单。R*:寄存器;Id*:变量,在内存#60:立即数,(7)符号表管理,ProgramCONSTc100;VARprocedurevarprocedurevarx:real;/层次为2.end.end.End.,记录源程序中使用的名字收集每个名字的各种属性信息类型、作用域、分配存储信息,(8)出错处理,检查错误、报告出错信息、排错、恢复编译工作词法:(标识符,关键字的拼写错误)语法:(复杂表达式的漏括号)语义:(类型不相容,变量未定义)逻辑:功能与预期不一致(比如:a+b写成a-b。这种错误编译器没办法发现,需要人工排除)错误处理方法:停下来(不负责任)提示纠正(尽可能准确发现错误,尽可能纠正错误且不改变程序的本意。),其它有关概念,前端、后端预处理器连接装配编译程序与解释程序,前端与后端,前端:完成分析工作(机器无关)词法分析:识别各个最小语法单位。语法分析:识别出各个语法结构。语义分析:确定类型,类型/运算合法性检查,识别含义和相应处理。后端:完成综合工作(机器相关)优化:改善目标代码质量。目标代码生成,(以C语言为例):宏处理:对较长结构的缩写。编译前要用原结构展开。文件包含:include语言扩充:在C语言程序中插入访问数据库的语句,这些语句不是C语言。由预处理将其翻译成C,然后再一起提交给编译器进行编译。(举例),预处理,main()EXECSQLBEGINDECLARESECTION;charfirst_name50;charlast_name=White;EXECSQLENDDECLARESECTION;EXECSQLCONNECTTOmy_server.pubsUSERmy_login.my_password;EXECSQLSELECTau_fnameINTO:first_namefromauthorswhereau_lname=:last_name;return(0);,编译程序:源程序是高级语言,目标语言是某种汇编语言或机器语言的翻译程序。解释程序:将某种高级语言程序作为输入接受并解释执行,不产生能被执行的结果目标代码。,编译程序与解释程序,解释方式:使用解释程序,对程序逐个语句进行分析,根据语句的含义进行执行。编译方式:首先由编译程序将程序翻译成为机器语言(或者虚拟机的语言,如java),然后执行。比较:编译的方式可以使得一次翻译过后,多次运行。适于花较大的精力进行优化工作。,程序设计语言的执行基本有两种方式:,解释执行和编译执行的区别,Int2StbLdbadd2Sta,生成代码,如:b:=2;a:=b+2;编译程序writea;解释程序直接将4的值输出(显示)。有些象单步调试,1)遍:指对源程序或其内部表示从头到尾扫视一遍,并进行有关的加工处理。2)一遍扫描:以语法分析程序为中心。编译一次完成,但是运行效果不是很好。3)多遍扫描:每遍扫描完成不同的任务。优点:功能独立;结构清晰;利于优化;节省空间。28遍。,编,本章小结,什么是编译?为什么要编译?编译过程的六个阶段:词法分析:识别单词语法分析:语法树语义分析:什么是中间代码?常用的中间代码种类代码优化:基本原则目标代码生成:符号表管理和错误处理(错误的种类)遍(一遍扫描,多遍扫描)前端、后端:解释方式/翻译方式:,几个希腊字母的读音,大写小写英文读音意义alpha角度;系数beta磁通系数;角度;系数gamma电导系数(小写)delta变动;密度;屈光度,eepsilon对数之基数zeta系数;方位角;阻抗;相对粘度;原子序数eta磁滞系数;效率(小写),theta温度;相位角iota微小,一点儿kappa介质常数lambda波长(小写);体积mu磁导系数;微(千分之一);放大因数(小写)nu磁阻系数xiomicronpi圆周直径=3.1416,rho电阻系数(小写),ssigma总和(大写),表面密度;跨导(小写)tau时间常数upsilon位移phi磁通;角chipsi角速;介质电通量(静电力线);角omega欧姆(大写);角速(小写);角,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 第一章
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文