- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机内容:分析部分),其余部分不用做代码供参考,也可自己的语言另外编写地点:C205
上机时间:八号)第四大节序言 1
第一部分 PL/0语言及其编译器 2
1. PL/0语言介绍 2
1.1 PL/0语言的语法图 3
2. PL/0语言编译器 6
2.1 词法分析 7
2.2 语法分析 7
2.3 语义分析 9
2.4 代码生成 9
2.5 代码执行 11
2.6 错误诊断处理 13
2.7 符号表管理 15
2.8 其他 16
第二部分 上机实践要求 17
第三部分 PL/0语言编译器源程序 19
1.一个例子 19
1.1 PL/0语言源程序 19
1.2 生成的代码(片段) 21
2. PL/0语言编译器源程序 21
编译原理实践教程
序言
《编译原理和技术》的课程实践至少有两种可能的安排。其一,为配合编译课程教学,而安排多次小型实践,分别支持编译程序的各个阶段。其二,针对某一规模适中的语言来设计和实现一个相对完整、独立编译器。
《编译原理实践教程》作为《编译原理和技术》课程的延伸,其目的是让大家动手设计和实现某一规模适中的语言的编译器,该编译器不仅涉及编译程序的各个阶段,而且也强调了编译的总体设计、各个阶段的接口安排等等。
通过上机实践,来设计这个相对完整的编译器,一方面可以使学生增加对编译程序的整体认识和了解——巩固《编译原理和技术》课程所学知识,另一方面,通过上机练习,学生也可以学到很多程序调试技巧和设计大型程序一般的原则,如模块接口的协调,数据结构的合理选择等等。
为了使学生能尽早动手实践,我们建议把实践分成三部分,首先阅读本教程第一部分,在这部分就PL/0语言的语法及其编译程序的各个阶段作了简单介绍,以便对PL/0编译程序有个初步的印象。其次要认真阅读理解第三部分所给出的PL/0编译器源程序,使上一阶段的初步印象得以加深、具体化。最后按照第二部分的实验要求扩充PL/0语言的功能并加以实现。
第一部分 PL/0语言及其编译器
1. PL/0语言介绍
PL/0程序设计语言是一个较简单的语言,它以赋值语句为基础,构造概念有顺序、条件和重复(循环)三种。PL/0有子程序概念,包括过程定义(可以嵌套)与调用且有局部变量说明。PL/0中唯一的数据类型是整型,可以用来说明该类型的常量和变量。当然PL/0也具有通常的算术运算和关系运算。具体的PL/0语法图如下。
1.1 PL/0语言的语法图
程序
程序体
语句序列
语句
条件
表达式
项
因子
2. PL/0语言编译器
本书所提供的PL/0语言编译器的基本工作流程如图1-1所示:
2.1 词法分析
PL/0的语言的词法分析器将要完成以下工作:
跳过分隔符(如空格,回车,制表符);
识别诸如begin,end,ifwhile等保留字;
识别非保留字的一般标识符,此标识符值(字符序列)赋给全局量id,而全局量sym赋值为SYM_IDENTIFIER。
识别数字序列,当前值赋给全局量NUM,sym则置为SYM_NUMBER;
识别:=,=,=之类的特殊符号,全局量sym则分别被赋值为SYM_BECOMES,SYM_LEQ,SYM_GEQ等。
相关过程(函数)有getsym(),getch(),其中getch()为获取单个字符的过程,除此之外,它还完成:
识别且跳过行结束符;
将输入源文件复写到输出文件;
产生一份程序列表,输出相应行号或指令计数器的值。
2.2 语法分析
我们采用递归下降的方法来设计PL/0编译器。以下我们给出该语言的FIRST和FOLLOW集合。
非终结符(S) FIRST(S) FOLLOW(S) 程序体 const var procedure ident call if begin while . ; 语句 ident call begin if while . ; end 条件 odd + - ( ident number then do 表达式 + - ( ident number . ; ) R end then do 项 ident number ( . ; ) R + - end then do 因子 ident number ( . ; ) R + - * / end then do 注:表中R代表六个关系运算符。
不难证明,PL/0语言属于LL(1)文法。(证明从略。)
以下是我们给出如何结合语法图编写(递
您可能关注的文档
- 结构工程硕士选题研究.doc
- 6.1细胞的增殖学生版介绍.doc
- 结构设计-上部V3.0-2012.7研究.doc
- 介词、副词研究.doc
- 6AUnit3单词、词组、句型、语法和单元检测卷介绍.doc
- 金工实习书研究.doc
- 金井镇大型电子显示屏项目书研究.doc
- 班级展示汇报探索.ppt
- 北京市顺义区2016年中考二模物理探析.doc
- 6标段总体施工便道建设方案(6.13-1)介绍.doc
- 2025年分红险:低利率环境下产品体系重构.pdf
- 大学生职业规划大赛《应用物理学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《新媒体技术专业》生涯发展展示PPT.pptx
- 七年级上册英语同步备课(人教2024)Unit 3 课时2 Section A(2a-2f)(同步课件).pdf
- 七年级上册英语同步备课(人教2024)Unit 2 课时4 Section B(1a-1d)(同步课件).pdf
- 七年级上册英语同步备课(人教2024)Unit 3课时6 project(课件).pdf
- 2025年港口行业报告:从财务指标出发看港口分红提升潜力.pdf
- 2023年北京市海淀区初一(七年级)下学期期末考试数学试卷(含答案).pdf
- 2026年高考化学一轮复习第7周氯及其化合物、硫及其化合物.docx
- 2023年北京市西城区北京四中初一(七年级)下学期期中考试数学试卷(含答案).pdf
最近下载
- DB43_T 2927-2024 中医护理门诊建设与管理规范.docx VIP
- 某某居民社区各岗位廉政风险点及防控措施一览表.pdf VIP
- IPC-TM-650测试方法手册CN2020最新(104个方法)扫描版.pdf VIP
- 二次结构施工方案(完整).doc VIP
- 斯巴拓SBT951(952)(953)仪表显示器说明书.doc VIP
- 油藏地球物理及其应用_part1.ppt VIP
- 000缠论实战完整版.pdf
- 《立在地球边上放号》课件.pptx VIP
- 第十章 概率(单元测试卷)(含解析)——2023-2024学年高一下学期数学必修第二册(人教A版(2019)).pdf VIP
- 2023福建莆田国有资本运营集团有限公司招聘企业员工25人笔试备考试题及答案解析.docx VIP
文档评论(0)