编译原理湖南university教学课件1.ppt

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

教材及参考书 赵建华等译.编译原理(第2版).机械工业出版社,2009 龙之书 陈火旺.程序设计语言编译原理(第3版) 国防工业出版社.2000 学习内容及动机 课程内容 编译程序构造的基本原理和实现技术. 学习动机:提高学习能力、实践能力和计算思维能力 编译程序是程序语言应用的基础 在早期的ACM 图灵奖中程序设计语言、编译理论与方法约占1/3 程序语言上千种,而其编译器的构造原理却相通 其模型、理论和算法广泛应用,如: 代码优化技术用于寻找软件缺陷和漏洞 有穷自动机和正则表达式用于深度包检测 文法用于自然语言翻译 学好编译原理 有助于更好地理解高级语言 有助于构造一些实用的工具 怎样构造编译程序 构造编译程序的前提: 掌握源语言 掌握目标语言 掌握编译方法 考核方式及要求 作业 20%+实验 30%+笔试 50%+表现-3~3 要求 DIY、按时交 抄袭计0分,过期不候 作业:word 2003文档,宋体5号 第一章要点 语言处理器(是什么,做什么) 编译器的结构(有什么) 编译程序的其他问题 遍 前端与后端 编译程序的构造方法(怎么做) 程序语言的发展历程 程序设计语言基础 1.1语言处理器 Q:我们怎么让计算机工作的? A: 编程。 Q:计算机能直接执行什么程序? A:机器语言程序 Q:我们所书写的程序一般是面向人类的高级语言程序,它们是怎样执行的? 1.1语言处理器 程序的执行方式 解释型,如:BASIC 编译型,如:C,C++ 混合型,如:JAVA 其中后两种都要使用编译程序(编译器)。 1.1语言处理器 1.1语言处理器 混合编译器 编译执行比解释执行快 解释执行错误诊断效果更好 JAVA处理器中结合了编译和解释过程,是混合编译器 JAVA语言 .NET框架与VS.NET .net编程工作原理 语言处理系统 1.2 编译器结构 把英文翻译为中文的过程如下: 识别出句子中的一个个单词; 分析句子的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。 1.2.7 符号表管理 符号表是编译中常用的一种数据结构,贯穿编译的各个阶段。 它记录源程序中使用的名字及其属性,常见名字及其属性如下: 变量 存储位置 类型 作用域…… 过程 过程入口 参数数量和类型、每个参数的传递机制、返回值类型…… 每个名字对应于一个记录,其一般形式如下: 1.2.8 将多个阶段组合成遍(pass) 趟(PASS) 每趟读入一个输入文件,产生一个输出文件。 “步骤”是逻辑组织方式 “趟”和具体的实现相关,如: 前端的词法分析、语法分析、语义分析以及中间代码生成可以组合在一起成为一趟 代码优化可作为一个可选的趟 后端可作为一趟 编译区分前端与后端的好处 ——方便移植 有些编译器集合围绕一组精心设计的中间表示形式而创建,使得可将特定语言的前端和特定目标的后端相结合 一个前端和不同的目标机后端结合,可建立针对不同目标机器上的编译程序 如:JAVA语言的操作平台无关性 JAVA定义一种虚拟机代码Bytecode 只要操作平台上实现了执行Bytecode的JAVA解释器,就可以执行各种Java程序 不同前端和某个目标机的后端结合起来,可生成在同一目标机器上的不同语言的编译程序 如:.net平台 1.2.9 编译器构造工具 Q:怎样构造编译器? A: 用汇编语言和机器语言书写 高级语言书写 移植和自展 利用现代软件开发环境和编译器构造工具 编译器构造工具 语法分析程序生成器 根据程序语言的语法描述自动生成语法分析器,如: YACC 词法分析程序生成器 根据语言语法结构的正则表达式自动生成语法分析器,如:LEX 语法制导翻译引擎 可生成一组用于遍历分析树并生成中间代码的例程 编译器构造工具 代码生成器的生成器 根据一组关于如何把中间语言的每个运算翻译成为目标机语言的规则,生成一个代码生成器。 数据流分析引擎 可帮助收集数据流信息,即程序中的值如何从程序的一个部分传递到另一部分。 数据流分析是代码优化的一个重要部分 编译器构造工具集 提供了可用于构造编译器的不同阶段的例程的完整集合。 语言范型及其举例 强制式语言 程序说明怎么做,如: C,C++,Java,C#等 声明式语言 程序说明做什么,如:Prolog , ML , Haskell等 面向对象语言 支持面向对象编程,如: C++,Java,C#,Ruby 脚本语言 具有高层次运算符的解释型语言 常用于把多个计算过程(脚本)“粘合”在一起 如:Javascript,VBscript,PHP,Python,Ruby等 特点:短 程序设计语言、计算机体系结构与编译器的关系 程序设计语言的新发展向编译器设计者提出新要求 设计相应的算法和表示方法来翻译和

文档评论(0)

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

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

1亿VIP精品文档

相关文档