《编译技术》学习指南.pdfVIP

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、内容设置

编译技术作为一门重要的专业基础课程,讲述的是计算机领域中的一重要的主题:即

程序从一语言形式到另一种语言形式的等价转换。编译通过从高级语言程序到低级语言程

序的转换向我们介绍了相关的理论、方法和技术,并进一步阐明了高级语言的工作原理。因

此,学生通过本课程的学习能了解到一完整的编译过程。在这过程的基础上或者这过

程中,学习相关的理论和方法。

课程首先介绍一完整的最简单的编译过程翻(译过程),在此基础上再根据培养要求

选讲代码优化、词法分析器的自动生成技术和其它语法分析技术(都可以自动生成)。在学

完完整的编译过程之后,就可以开始着手课程设计,即手工编程实现一小型编译器,同时

继续学习自动生成技术。在完成课程设计的过程中,又能促进对理论知识的理解和巩固。

二、学习指导

学生需通过理论课程的学习,掌握编译过程中各阶段的基本原理和算法,在课程设计环

节,需严格按照各阶段任务的要求,按时完成各阶段任务,从而循序渐进地达到从理论

向实践过渡、逐步深入的过程。

课程设计首先让学生阅读经典的PL/O编译器源代码,既可以了解一小型编译器的结构

和规模,以及其中关键算法的实现复杂度,又可以了解理论知识和算法如何用程序设计语言

来体现。在此基础上,学生可以确定自己将要完成的题目的难度,并根据难度从教学平台获

得一随机分配的文法,后续的任务都在此文法的基础上完成。为此,第二阶段任务是对

获取的文法进行解读,了解文法各条规则的作用、约束条件,并设计一能覆盖所有规则的

程序。然后,需要在设计文档的基础上,依次完成词法分析、语法分析、语义分析和代码生

成的程序,并进行阶段任务的考核。当学生的程序能够产生目标代码之后,将用三测试

程序帮助学生进行完善和改进。通过这过程,学生实现一完整的编译器并完成作业文档,

即最终的成果。在课程的期末考核环节,教师将对全体学生的作业逐一进行现场考核,用另

外两测试程序进行测试,并回答问题。

其中高难度和中高难度的题目中涉及到针对目标体系结构的代码生成和代码优化,是

课程设计中的难点。学生需了解目标体系结构的特点以及汇编语言的指令,并设计合适的数

据结构,才能实现相应的算法,这个过程由于综合了多门课程的知识,度较大。

三、参考内容

1.PL/O编译器

我们将介绍一个编译系统,该编译系统出自著名的计算机科学家N.Wirth之手。考虑到

具体实现环境和教学要求,我们对该编译系统做了适当修改和补充。PL#编译系统是一个比

较简单的编译系统,可看作一个教学模型,它虽然不能真正提供使用,但已充分展示了编译

高级语言最基本的概念,它提出的基本方法对复杂语言的编译是完全适用的。因此,这部分

内容的学习,对实际掌握一个编译程序的构造和实现方法,无疑是非常有益的。

1.1PL/O语言

PL#是一种十分简单的“高级”程序设计语言,它只有整数一种类型,但却具有相当完

全的可嵌套的分程序结构。PL/O可进行常量定义、变量说明和过程调用,并具有通常程序设

计所必需的最基本的语句,如,赋值语句、条件语句、循环语句、过程调用语句和复合语句。

考虑到输入/输出的需要,我们增添了简单的读、写语句。PL/3过程没有参数,但可递归调

用.因此,过程所加工的数据只能通过全局变量进行传递。

下面给出PL/O语言的文法。

PL/3语言文法的扩充BNF表示为:

程〈序〉分〈程序〉.

分〈程序〉::=

文档评论(0)

zhuifengshaonian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档