【2017年整理】编译与原理复习总结.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【2017年整理】编译与原理复习总结

第一章????引论 ;Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd.;二、编译过程概述 ????一个编译程序的整个过程是划分成阶段进行的,可划分为:源程序—词法分析—语法分析—语义分析—中间代码生成—代码优化—目标代码生成—目标程序。其中表格处理和出错处理贯穿整个过程。如图所示。;词法分析阶段:编译过程的第一阶段。任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。单词间的空格被滤掉。 语法分析:第二阶段。在词法分析的基础上将单词序列分解成语法短语,如“程序”,“语句”,“表达式”等。语法短语也叫语法单位,可表示成语法树。语法分析所依据的是语言的语法规则,通过语法分析确定整个输入串是否构成一个语法上正确的程序。 语义分析阶段:审查源程序有无语意错误,为代码生成阶段收集类型信息。比如它的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序就报错。例如,不能用实数作数组下标而用了就报错。 中间代码生成:在语法分析和语意分析阶段的工作以后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫中间语言或中间代码。 “中间代码”是一种结构简单,含义明确的记号系统,可设计为多种多样的形式,重要的色痕迹原则有两点:一是容易生成,二是容易将它翻译成目标代码。多数编译程序使用了一种近似“三地址四指令”的“四元式”中间代码,这种四元式的形式为:(运算符,运算对象1,运算对象2,结果)。 代码优化:对前阶段生成的中间代码进行变换或改造。目的:使生成的目标代码高效,即省时间、省空间。 目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的选择,各种数据类型变量的存储空间分配以及寄存器和后缓寄存器???调度等。 ;三、编译阶段的组合 ;第二章?高级语言;二、文法的类型 ;三、上下文无关文法及其语法树;四、句型的分析 ;第三章?词法分析;一、掌握词法分析程序的设计的主要思想 ;二、单词的描述工具 掌握正规式的定义以及正规式服从的代数规律。 熟练掌握正规文法和正规式的等价性以及转换规则。 三、单词的识别工具 掌握有穷自动机的定义和分类。掌握确定有穷自动机(DFA)的定义,并熟悉其状态图的表示和矩阵表示;掌握不确定有穷自动机(NFA)的定义,并熟悉NFA的状态图表示和矩阵表示。 掌握将NFA转化为DFA的算法——子集法。 确定有穷自动机的化简与有穷自动机的等价转换。 ;第四章?自顶向下语法分析方法 ;一、 理解确定的自顶向下分析思想;二、 掌握LL(1)文法的判别步骤 ;三、某些非LL(1)文法到LL(1)文法的等价交换;四、确定的自顶向下分析方法 ;第五章?自底向上语法分析方法 ;算符优先分析法;第六章?属性文法和语法制导翻译 ;二、掌握语法制导翻译的基本思想;第七章?语义分析和中间代码生成 ;(2)三元式和树形表示 ????另一类中间代码形式是三元式。把表达式及各种语句表示成一组三元式。每个三元式由三个部分组成,分???是:算符op,第一运算对象ARG1和第二运算对象ARG2。运算对象可能是源程序中的变量,也可能是某个三元式的结果,用三元式的编号表示。 ????例如a:=b*c+b*d的表示为: (1)(*, b,c)?????????(2)(*, b,d)(3)(+ (1), (2))????(4)(∶= (2), a) ????树形表示是三元式表示的翻版。例如上述的三元式也可表示成下面的树形表示: ;(3)四元式 ????四元式是一种比较普遍采用的中间代码形式。四元式的四个组成成分是:算符op,第一和第二运算对象ARG1和ARG2及运算结果RESULT。运算对象和运算结果有时指用户自己定义的变量,有时指编译程序引进的临时变量。 ????例如a:=b*c+b*d的四元式表示如下: ????????(1)(*, b, c, t1) ????????(2)(*, b, d, t2) ????????(3)(+, ?t1, t2, ?t3) ????????(4)(:=,? t3, -, a);四、掌握几种常用语句的语义翻译;

文档评论(0)

liangyuehong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档