编译实验讲义_第1页
编译实验讲义_第2页
编译实验讲义_第3页
编译实验讲义_第4页
编译实验讲义_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

个人资料整理 仅限学习使用《编译原理》课程设计讲义黑龙江大学软件学院个人资料整理 仅限学习使用《编译原理》课程设计讲义“编译原理”课程是计算机专业中一门重要的专业理论课,是一门理论性和实践性都很强的课程。为配合《编译原理》课程的教案,培养学生的实际工作能力,加深对课堂教案内容的理解,通过设计一个小型编译器,更深刻地领会其基本概念、基本工作原理和实现方法,从而具有初步开发系统软件和应用软件的实际能力,特开设此课程设计。二、课程设计的题目用高级程序设计语言实现《小型编译器的设计与实现》。三、课程设计的主要内容通过小型编译器的设计与实现,使学生系统地掌握编译程序的总体结构以及词法分析程序、语法分析程序、语义分析程序、代码生成程序;掌握结构化设计方法;了解大型软件的设计技术。四、课程设计的具体内容和要求1掌握PL/0掌握形式语言与自动机的概念,能构造识别相应符号串的自动机。3掌握编译程序的词法分析程序的构造,能改编PL/O编译程序的总控程序和词法分析程序。4掌握编译程序中语法分析程序的构造,能改编PL/O编译程序总控程序和语法分析程序。掌握LL(1>、LR、算符优先等语法分析技术,构造相应的语法分析程6掌握语法制导生成四元式的算法,并构造将表达式翻译成四元式程序8掌握编译程序的代码生成程序,并改编 PL/0 的总控控制和代码生成程序。个人资料整理 仅限学习使用本课程在词法分析阶段、语法分析阶段、语义分析及代码生成阶段均安排了上机实践的内容,按以下的基本实践内容的要求改编总控程序和相学生在对PL/O语言某一扫描的分析程序或主程序进行修改或护充时,必须保存完整的源程序正本,只需在相应源文件副本上进行修改。然后再重新对修改的程序进行编译,得到新的源文件和新的可执行文件,并用来编译用户编制的含有增加或修改成分的新源程序。实验一 用PL/O个人资料整理 仅限学习使用(一>实验目的:1 TURBOPASCALPASCALPL/O(二>实验内容与步骤PL/0PL/O*************************PL/O语言编写求3~100将一正数倒置。对任意给定的整数,列出其二进制、八进制、十六进制表示形式。6EBNF描述PL/O语言的程序结构及构成规则。注:PL/0语言程序编译器汇编语言程序<自行定义的源语言)<你所编译的结果——目标程序)实验二(一>实验目的:个人资料整理 仅限学习使用1234(二>12高级语言编写程序:该程序能接受所有的常数(整数和定点小数>3PL/0的所有保留字。4用高级语言编写程序:该程序能接受PL/0的所有界符、运算符。(三>有关说明:1 C2实验三(一>个人资料整理 仅限学习使用PL/OPL/OPL/O(二>1可将所有标识符归为一类;将常数归为另一类:保留字、界符、运算符符则可采取一词一类。2可事先建立一保留字表,以备识别保留字时进行查询。变量名表及常数表则在词法分3所输出的每一单词,均按形如 (CLASS,VALUE>的二元式编码。对于变量标识符和常数,CLASS字段为相应的类别码, VALUE字段是该标识符、常数在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串,其最大长度为四个字符;常数表登记项中则存放该常数 (整数>的二进制形式 >。对于保留字、界符和运算符,由于采用一词一类的编码方式,所以仅需在二元式的 CLASS字段上放置相应的单词的类别码, VALUE字段则为“空”。(或:为便于查看由词法分析程序输出的单词串也可以在 CLASS字段上放置单词符号串本身>4(三>有关说明:1PL/O2PL/O的编译程序中的词法分析程序,使之能识别含repeat语句的程序。实验四 表达式(一>个人资料整理 仅限学习使用1 PL/O2 分别掌握 LL(1>、算符优先、 LR(二>实验内容及步骤算符优先矩阵 (或LL(1>矩阵或 SLR(1>矩阵>,并编制语法分析程序。例如:给定文法 GE →TE1E 1→+TE1/εT →FT1T 1→*FT1/εF →i/(E>(1>先构造其 SELECT集合,判定其是否为 LL(1>文法;(2>是则构造其 LL<1)分析表;(3>给出句子 i+i*i# 及<i+i)*i#的语法分析过程。实验五 语法分析程序的构造个人资料整理 仅限学习使用(一>掌握LL(1>、算符优先、LR等语法分析方法的构造。按要求改编总控程序及语法分析程序。(二>实验内容及步骤选择一种你感兴趣的语法分析方法(算符优先、LL(1>、SLR<1>)作为编制语法分析程序的依据.2

PL/O

语言,对

PL/O

语言的功能进行下列扩充,改编后并上机调试通过。(1>增加

for(2>增加

do-while

语句(3>〈条件语句〉∶∶=

IF〈条件〉

THEN〈语句〉

ELSE〈语句〉〖

ZK>(4>VAR〈数组名〉(〈下界〉∶<上界>>〈下界〉和〈上界〉可用常量标识符3PL/O45和条件每人1~5中选择某几项或者全部。个人资料整理 仅限学习使用实验六 中间语言翻译器的构造(一>实验目的123(二>实验步骤与内容1PUSH(α,Q>表示Q进α栈;POP(σ,B>表示从σ栈出栈;NEXT表示读下一符号。输入流 名字Q ( ω2 > #[s-1]若ω1<ω2,POP(σ,B>ω1PUSH(α,Q>PUSH(σ,则PUSH(σ,POP(σ,B>PUSH(α,△>ω2>PUSH(α,B>B>NEXTNEXTNEXT若ω1≥ω2,则POP(σ,B),PUSH(α,B>△PUSH(α,Q>PUSH(σ,PUSH(σ,ω2>POP(σ,B>STOPNEXT△>NEXTNEXTNEXT2个人资料整理 仅限学习使用3可以是+,-,*实验七(一>PL/O(二>实验步骤及内容:1 PL/O按照实验四中步骤 3的四个方面增加 PL(注:四项扩充可任选一项或某几项功能 >PL/O调试通过增改后的PL/O编译程序个人资料整理 仅限学习使用实验八 综合设计一)实验目的:系统地掌握编译程序的总体结构。掌握词法分析、语法分析、语义分析、目标生成的实质含义。掌握结构化设计方法。了解大型软件的设计技术。二)实验内容与步骤:采用软件工程的结构化设计方法,将第三个实验到第六个实验利用结构化设计方法综合为一个完整的小型编译器,以达到系统掌握开发软件系统的方法和技术的目的。设计该系统的总体菜单。通过总体菜单选择某一功能进入子菜单。通过某一功能子菜单,进入相应各个子系统,完成具体的功能。通过辅助工具,进一步丰富和完善上述程序窗口、菜单的界面设计。100分。完个人资料整理 仅限学习使用、本课程设计共安排了八个设计题目,每个同学在实验后要按照软件工程的思想写出设计文档,并在文档的最后给出对设计的收获、体会、希望和建议,以利于不断改进教案。不合格者需要重修。2 、成绩评定 :每个实验题目需在规定时间内完成,成绩达到及格以上方可进行下一个实验题目。每个实验题目有各自的分值,总计成全部设计题目3序 实验工程

内容提要

时间

有关说明号

安排

数PL/O源程实序结构及

用高级语言编写程序建立和访问正文文件,并用PL/O语言编写程序,扩充

第四周

5分

要求:任选,完成任选题目的学生可加分验 构成规则一

规则。实构造识别用语言实现,分别编写识第五周10验符号串的别各类单词的程序。分要求:必做。二自动机词法分析以PL/O编译程序为样第六周要求:必做。实程序的构本,改编其总控程序和词|15验造法分析程序,使其能对扩第七周分三充后的PL/O语言进行词法分析个人资料整理 仅限学习使用表达式的用高级语言编写程序,使要求:必做。实语法分析其能对算术表达式进行第八周15验程序的构LL<1)、算符优先、LR的|分四造语法分析第九周实语法分析选择一种语法分析方法对第十周要求:必做。验程序的构实验三所生成的单词序列|15五造进行语法分析。第十四周分中间语言用C语言编写程序,使其要求:必做。实翻译器的能将任意表达式翻译成逆第十五周验构造波兰式,并用语法制导的|15六方法生成表达式的四元式第十六周分序列目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论