责任教师 孙继荣.ppt

责任教师 孙继荣.ppt

ID:52159128

大小:640.00 KB

页数:46页

时间:2020-04-01

责任教师 孙继荣.ppt_第1页
责任教师 孙继荣.ppt_第2页
责任教师 孙继荣.ppt_第3页
责任教师 孙继荣.ppt_第4页
责任教师 孙继荣.ppt_第5页
资源描述:

《责任教师 孙继荣.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、编译原理与实践责任教师孙继荣高级语言及其语法描述引论词法分析语法分析语法分析—自下而上属性文法和语法制导翻译123456语义分析与中间代码产生符号表运行时存储空间组织优化目标代码生成7891011§1.1什么叫编译程序使用过现代计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算的。现代计算机系统一般都含有不止一个高级语言编译程序,对有些高级语言甚至配置了几个性能不同的编译程序,供用户按不同需要进行选择。高级语言编译程序是计算机系统软件最重要的组成部分之一,也是用户最直接关心的工具之一。那么,什么叫编译程序?在计算机上执行一个高级语言程序一般要分两步

2、:高级语言 程序机器语言 程序计算 结果翻译运行源程序Fortran,Pascal,C…高级翻译程序 (解释、编译)目标程序汇编、机器 低级编译程序汇编语言机器语言汇编程序1.编译程序(compiler)2.分类(按用途和侧重性)诊断编译程序(DiagnosticCompiler)开发、调试优化编译程序(OptimizingCompiler)提高代码效率交叉编译程序(CrossingCompiler)产生不同于宿主机的机器代码可变目标编译程序(RetargetableCompiler)不需重写与机器无关的部分即可改变目标机当时,人们普遍认为设计和实现编译程

3、序是一件十分困难、令人生畏的事情,经过四十年的努力,编译理论和技术得到迅速发展,现在已形成了一套比较成熟的、系统化的理论与方法,并且开发出了一些好的编译程序的实现语言、环境和工具。在此基础上设计并实现一个编译程序不再是高不可攀的事情。3.世界上第一个编译程序Fortran,20世纪50年代中期研制成功。4.本课程主要介绍设计和构造编译程序的基本原理和方法,是一门专业性、逻辑性非常强的课程,要理论与实践相结合。在理解的基础上进行掌握,并自觉将这些知识应用于软件开发的实践之中。上好每一次习题讲解课并做好笔记,认真完成每一次的作业,多做习题。§1.2编译程序概述自然

4、语言翻译过程:编译程序工作过程:识别单词分析句法初步翻译译文润饰正式翻译词法分析语法分析语义分析与中间代码产生代码优化目标代码生成1.词法分析任务:输入源程序,对字符串扫描分解、识别出单词(或单词符号、或简称符号),如基本字(begin、end、for、while等)、标识符、常数、算符和界符(标点符号、左右括号等)。例:forI:=1to100do基本 字标识 符赋值 号整常 数基本 字单词符号是语言的基本组成部分,是人们理解和编写程序的基本要素。识别和理解这些要素无疑也是翻译的基础。如同将英文翻译成中文一样,如果对英语单词不理解,则谈不上进行正确的翻译。依

5、循原则:语言的词法规则(或构词规则)描述工具:正规式和有限自动机2.语法分析任务:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单元(语法范畴),如:短语、子句、句子(语句)、程序段、程序等。通过语法分析,确定整个输入串是否构成语法上正确的“程序”。依循原则:语言的语法规则描述方法:上下文无关文法词法分析线性分析语法分析层次结构分析例:z:=x+0.618y语法分析要识别:(1)x+0.618y为算术表达式;(2)并且整个字符串属于赋值语句范畴。3.语义分析与中间代码产生任务:对语法分析所识别的各类语法范畴,分析其含义,并进行初步翻

6、译(产生中间代码)。静态语义检查:变量是否定义,类型是否正确等。若语义正确,则进行中间代码的翻译。通常包括两方面工作:依循原则:语言的语义规则描述方法:属性文法中间代码:一种含义明确,便于处理的记号系统,通常独立于具体的硬件,或者与现代计算机的指令形式接近或者容易变换成现代计算机的机器指令。从这个阶段起,翻译工作开始例:“四元式”三地址中间代码算符左操作数右操作数结果对语句Z:=(X+0.418)Y/W序号左操作数右操作数结果算符123+ /X T1T20.418Y WT1T2Z还有三元式、间接三元式、逆波兰记号和树形表示等。4.优化任务:对中间代码加

7、工变换,以期产生更为高效(时间、空间)的目标代码,公共子表达式的提取、循环优化、删除无用代码等。依循原则:程序的等价变换规则。例:forK:=1to100do begin M:=I+10K; N:=J+10K; end需300次加和200次乘中间代码为:序号OPARG1ARG2结果注解(1):=1KK:=1(2)j<100K(9)若100

8、)转至第(2)个四元式(9)仅300次

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。