编译原理_chapter1剖析.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 1.4 编译程序的组织 根据系统资源的状况、运行目标的要求……等,可以将一个编译程序设计成多遍(Pass)扫描的形式,在每一遍扫描中,完成不同的任务。 如:首遍构造语法树,二遍处理中间表示,增加信息等。 遍可以和阶段相对应,也可以和阶段无关 单遍代码不太有效 * * 1.4 编译程序的组织 编译程序的设计目标 规模小、速度快、诊断能力强、可靠性高、可移植性好、可扩充性好 目标程序也要规模小、执行速度快 编译系统规模较大,因此可移植性很重要 为了提高可移植性,将编译程序划分为前端和后端 * * 1.4 编译程序的组织 前端 与源语言有关、与目标机无关的部分 词法分析、语法分析、语义分析与中间代码生成、与机器无关的代码优化 后端 与目标机有关的部分 与机器有关的代码优化、目标代码生成 * * 1.5 编译程序的生成 如何实现编译器? 直接用可运行的代码编制——太费力! 自举-使用语言提供的功能来编译该语言自身。 “第一个编译器是怎样被编译的?” * * 1. T形图 表示语言翻译的 T 形图 源语言 实现语言 目标语言 功能 * * 问题一:如何直接在一个机器上实现C语言编译器? 解决: 用汇编语言实现一个C子集的编译程序(P0—人) 用汇编程序处理该程序,得到(P2:可直接运行) 用C子集编制C语言的编译程序(P3—人) 用P2编译P3,得到P4 2. 自展 * * 4. 用P2编译P3,得到P4 C语言 机器语言 机器语言 P4 C子集 机器语言 机器语言 P2 获得一个工具 C子集 汇编语言 机器语言 P0 1. 用汇编语言实现一个 C子集的编译程序(P0—人) 汇编语言 机器语言 机器语言 C子集 机器语言 机器语言 P1 P2 2. 用汇编程序(P1)处理该程序,得到(P2:可直接运行) C语言 C子集 机器语言 P3 3. 用C子集编制 C语言的编译程序(P3—人) * * 3.移植 问题二:A机上有一个C语言编译器,是否可利用此编译器实现B机上的C语言编译器? 条件:A机有C 语言的编译程序 目的:实现B机的C语言的编译 C语言 C语 言 B机器 C语言 B机器 B机器 要完成的任务 * * C语言 C语言 B机器 C语言 A机器 B机器 C语言 B机器 B机器 C语言 C语 言 B机器 C语言 A机器 A机器 C语言 A机器 B机器 要完成的任务 要完成的任务 需要一个工具 需要一个工具 1)问题的分析 * * 1. (人)用C语言编制B机的C编译程序P0(C→B) (A机的C编译P1)编译P0,得到在A机上可运行的P2(C→B) C语言 C语 言 B机器 C语言 A机器 A机器 C语言 A机器 B机器 P0 P1 P2 获得一个工具 2)问题的解决办法 * * 3.(A机的P2)编译P0,得到在B机上可运行的P3(C→B) P2 C语言 C语言 B机器 C语言 A机器 B机器 C语言 B机器 B机器 P0 P3 C语言 C语 言 B机器 C语言 A机器 A机器 C语言 A机器 B机器 P0 P1 P2 获得的工具 * * 4.本机编译器的利用 问题三: A机上有一个C语言编译器,现要实现一个新语言NEW的编译器?能利用交叉编译技术么? 用C编写NEW的编译,并用C编译器编译它 NEW语言 C语 言 A机器 C语言 A机器 A机器 NEW语言 A机器 A机器 P0 P1 P2 * * 5. 编译程序的自动生成 1) 词法分析器的自动生成程序 LEX 词法规则说明 词法分析程序 (C程序) 输入: 词法(正规表达式) 识别动作(C程序段) 输出: yylex( ) 函数 * * 2)语法分析器的自动生成程序 YACC 语法规则说明 语法分析程序 (C程序) 输入: 语法规则(产生式) 语义动作(C程序段) 输出: yyparse( ) 函数 * * 例1-1 DOS 命令 date 的输出格式 例:9-3-1993、09-03-1993、9-03-93 语法 date → month - day - year 词法 month → DIGIT DIGIT | DIGIT day → DIGIT DIGIT | DIGIT year → DIGIT DIGIT | DIGII DIGIT DIGIT DIGIT * * 例1-1(续) 语义 year(年)、month(月)、day(日) 语义约束条件 0 month.value 13 0 day.value 32,31,30 0 year.value 10000 * * 1.6 本章小结 编译原理是一门非常好的课 程序设计语言及其发展 程序设计语言的翻译 编译程序的总体结构 编译程序的各个阶段 编译程序的组织与生成

文档评论(0)

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

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

1亿VIP精品文档

相关文档