- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]1第一章 编译原理引论
编 译 原 理(第3版) 课 程 目 的 了解编译程序的基本过程、实现原理和相关技术。 重点掌握程序编译过程原理性知识 说明 基于形式语言理论中的有关概念来讨论编译实现问题。即 编译原理=形式语言理论+编译技术 本书主要内容涉及: 高级程序设计语言 形式语言理论的基本概念 构造编译程序的基本概念、原理和技术 主 要 内容 基本知识——语法/语言/自动机 词法分析技术 语法分析技术(自下而上分析/自上而下分析) 属性文法和语法制导翻译 语义分析技术与中间代码生成 优化技术 学 习 要 求 学时:48学时讲授 作业:独立完成,习题课分析 实验:根据实验讲义按要求完成,提交程序和实验报告 考试:闭卷 成绩:考勤+作业+考试 第1章 引 论 编译程序的分类 诊断型编译程序 优化型编译程序 可重定目标型编译程序 交叉型编译程序 增量型编译程序 高级语言程序的执行 程序设计语言的执行基本有两种方式: (1).解释方式:以源程序作为输入,不产生目标程序,使用解释程序,对程序逐个语句进行分析,一边解释一边执行。根据语句的含义进行执行。 (2).编译方式:由高级语言转换为低级语言,然后对编译出来的目标程序进行运行计算。编译一次性翻译成目标代码,然后无数次执行,效率高。 (1).编译方式 编译程序的结构 编译程序的组成:编译如同初学翻译英文一样。 I wish you success. (1)词法分析——先扫描,识别出一个个单词:“I”, “ wish”, “ you”, “success” 。 (2)语法分析——把单词符号串分解成各类语法单位,分析句子语法结构: “I”-代词,可做主语;“wish”-动词,可做谓语;“you”-代词,可做间接宾语;“success”-名词,可做直接宾语。是一个合乎英语语法的句子。 (3)中间代码生成(语义分析) ——初步翻译:“我希望你成功” (4)对译文进行修饰——优化 (5)最后译文——目标代码生成:“祝你成功”。 编译过程实例 position := initial + rate * 60 编译程序的工作过程过程 编译程序框架 编译程序的功能和组织结构 编译程序在计算机系统中的作用 编译系统是一种软件,一种系统软件。 软件:计算机系统中的程序及其文档。 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。和具体的应用领域无关,如编译系统和操作系统等。 语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序,如编译系统。 … … … rate … initial … position 符 号 表 代码生成器 代码优化器 语义分析器 中间代码 目标代码 中间代码 中间代码生成器 + id1 := * id2 Inttoreal 60 id3 生成的中间代码为: temp1:= inttoreal ( 60 ) temp2:= id3 * temp1 temp3:= id2 + temp2 id1 : = temp3 生成的代码为: MOVF id1 , R2 MULF #60.0 , R2 MOVF id2 , R1 ADDF R1 , R2 MOVF R1 , id1 优化: 生成的中间代码为: temp1:= inttoreal ( 60 ) temp2:= id3 * temp1 temp3:= id2 + temp2 id1 : = temp3 temp1:= id3 * 60.0 id1 : = temp1 目标代码生成 优 化 语义分析与中间代码生成 语法分析 词法分析 源程序 单词符号 语法单位 中间代码 目标代码 中间代码 输入源程序,扫描、分解源程序中的字符串, 根据词法规则识别出单词符号串。 在词法分析基础上,把单词符号串分解为各类语法单 位。通过语法分析, 判别它是否为语法上正确的程序。 分析语法分析产生的各类语法单位,进行初步翻 译,生成中间代码。 依据等价变化原则,对中间代码进行加工变换, 以期在后面产生更高效的目标代码。 把中间代码变换为特定机器行的低级语言代码。 这5个阶段只是从逻辑功能上的一种划分,实际情况要具体问题具体分析。 (1) 词法分析: 主要任务:从左到右扫描源程序,识别单词及其有关属性 , 并转换成属性字 (2) 语法分析: 主要任务:分析源程序的结构, 判别它是否为相应程序设计 语言中的一个合法程序 (3)语义分析和中间代码生成: 根据语法结构分析其含义,并用某中间语言表示出来,亦就生成中间代码,或者直接生成目标代码。 使用中间语言的好处: 使编译算法更加清晰,便于优化,还使编译程序的更多
文档评论(0)