- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理和技术-精选.ppt
课 程 简 介 课程要求 质量上的目标:师生共同努力,达国内最好水平 讲课进展较快,平时不复习并加深理解,后面将听不懂 作业:少而精,周一课间交作业 课程设计:自己动手,大有收获 考试:开卷,灵活运用知识 学期总评 = 考试成绩占60%,作业占10%,课程设计30% 上课、设计、考试时间大体安排 * 课 程 简 介 课程设计要求 内容:独立地研发扩展PL/0语言的编译器和解释器 目标:巩固对理论和技术的理解,提高程序设计能力 技术准备:VC++的编程环境,C语言编程 考查与评分:对截止时间前提交的程序,通过测试和答辩进行公开评分 前四年课程设计的经验和教训 对该课程设计的综合性认识不足 对考查的“动真格”认识不足 * 对 课 程 的 评 论 本校少年班1994级一个同学,Stanford大学博士(1999年) Actually I think the quality of the compiler course in USTC is really very good and can be compared with any universities here. 本系某考研同学(2006年) 感觉您出的题目很有创意,也很有深度 ,没有局限于固定的算法和题型,只看课本和复习往年的题目而不深入思考的人是做不出来的,能够真正从本质上考察一个考生的水平 * 对 课 程 的 评 论 西南科技大学某考研学生(2004年) 看过你编的书后,感觉编译的原理可以一下子和我平常学的很多学科和语言都联系起来了,可以学到很多可以实际用到的东西,虽然是在讲同样的东西,但您的教学方式让我很适应,学起来也很有兴趣,大大减轻了我考研的疲劳感 * 第一章 引 论 名词解释 翻译器(translator)、编译器(compiler) 解释器(interpreter) 编译器从逻辑上可以分成若干个阶段 每个阶段把源程序从一种表示变换成另一种表示 本章通过描述编译器的各个阶段来介绍编译这个课题 * 1.1 编译器概述 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 独立于机器的代码优化器 代码生成器 依赖于机器的代码优化器 目标机器代码 符号表 * 符 号 表 position initial rate . . . . . . . . . 1 2 3 词法分析器 ?id, 1? ?=? ?id, 2? ?+? ?id, 3? ??? ?60? position = initial + rate ? 60 1.1 编译器概述 ? 记号流 ? 字符流 * 1.1 编译器概述 表达式的语法特征 任何一个标识符都是表达式 任何一个数都是表达式 如果e1和e2都是表达式,那么 ? e1 + e2 ? e1 * e2 ? (e1) 也都是表达式 表达式 表达式 表达式 标识符 表达式 表达式 (initial) 标识符 (rate) 数 (60) * + initial + rate * 60的分析树 * 符 号 表 position initial rate . . . . . . . . . 1 2 3 语法分析器 ?id, 1? ?=? ?id, 2? ?+? ?id, 3? ??? ?60? ?=? ?+? ??? ?60? ?id, 1? ?id, 2? ?id, 3? ? 语法树 1.1 编译器概述 ? 记号流 * 符 号 表 position initial rate . . . . . . . . . 1 2 3 1.1 编译器概述 语义分析器 ?=? ?+? ??? ?60? ?id, 1? ?id, 2? ?id, 3? ?=? ?+? ??? inttofloat ?id, 1? ?id, 2? ?id, 3? ?60? ? 语法树 ? 语法树 * 符 号 表 position initial rate . . . . . . . . . 1 2 3 中间代码生成器 t1 = inttofloat(60) t2 = id3 ? t1 t3 = id2 + t2 id1 = t3 ?=? ?+? ??? inttofloat ?id, 1? ?id, 2? ?id, 3? ?60? 1.1 编译器概述 ? 三地址中间代码 ? 语法树 * 符 号 表 position initial rate . . . . . . . . . 1 2 3 代码优化器 t1 = inttofloat(60) t2 = id3 ? t1 t3 = id2 + t2 id1 = t3 t1 = id3 * 60.0 id1 = id2 + t1 1.1 编译器概述 ? 三地址中间代码 ? 三地址中间代码
文档评论(0)