- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理修改后的PL0报告
一、上机实践要求
“编译原理与技术”的上机实验要求你对PL/0语言及其编译器进行扩充和修改。每个扩充或修改方式可得到不同的分数,满分为100分。
完成上机作业后,必须提交下列文档:
修改后的PL/0语言文本。包含词法分析(正规式),语法分析(BNF)。
有关修改后的PL/0编译/解释器的说明。详细说明你的编译器是如何编译新的PL/0语言程序的。指出你的程序中最精彩的部分,以及你为什么这样做,你是如何控制和恢复语义错误的。
给出你所改动后的编译器源程序清单,并标记出你所修改的部分。比较你的编译器和原来的编译器之间的差别。
说明你的编译器中可能存在的错误。
总结经验与教训,如果重做一遍,你会有哪些新的改进?
对现存的PL/0编译程序可做如下修改或扩充,其中(1)、(2)、(11)和(12)必须完成,剩余的均可任意选择,但总分必须超过70分。
注释(5分)
注释由(*和*)包含,不允许嵌套。
布尔类型的数据(10分)
布尔类型的BNF为:
var_option → ε| var var_decl_list
var_decl_list → var_decl | var_decl_list var_decl
var_decl → ident_list : data_type
data_type → integer | boolean
这种修改包括:
区别整型与布尔型变量、常量和表达式。
增加按严格计算的布尔类型运算符and、ornot。这些算符以及己有的运算符的优先级与Pascal语言相同。
能够使用布尔常量true和false。
把PL/0语言中的“条件”概念一般化为Pascal语言那样。
布尔表达式可以比较大小:false true
布尔表达式的短路计算(5分)
增加布尔类型(见(2),除(2)的(ii)外),但对and和or采取短路计算。
数组(10分)
增加由任何数据类型构造的一维数组。数组的下标限于纯量类型。
注意:数组可以由其它的数组来构造,因而必须考虑多维数组的情况。数组的上下界可为任意的纯量常数。
数组的定义如下:
data_type → integer | boolean | array [const..const] of data_type
const → ident | number
语言中允许有数组说明,对数组元素赋值,在表达式中引用数组元素。为了便于解释执行,可能要增加新的PL/0机器操作指令。
参数(10分) 语法同Pascal,采用值-结果方式传递(不用var声明)。
函数(10分)语法同Pascal。
else子句和repeat语句(5分)
for语句,语法参照Pascal或C语言(5分)
exit语句(退出当前执行过程)和break语句(跳出包含它的最内层循环),(5分)
记录(结构),语法同Pascal语言(10分)。
更有力的语法错误恢复机制(20分)
分离解释和编译器(5分)
注意:上面的这些要求有时会互相影响:例如实现布尔类型数据,则数组和参数就应该能处理其相互组合的情况,如布尔型数组(包括多维数组)、布尔型作为下标的数组、布尔型作为参数传递。甚至能够实现数组作为参数传递等。
另外,为了实现以上功能,你可任意增加PL/0处理机的指令。但要注意指令的简单与合理。
选做题:此题不计入总分,仅做为学生在有余力的情况下的进一步练习。
实现PL/0语言的输入、输出语句。其语法、语义定义和Pascal语言相同。可以仅仅实现一次输入或输出一个值的语句——语句参数固定;也可以实现完全和Pascal语言一样,能够接受任意个数参数的输入或输出语句。
二、实验原理:
就像一个翻译要把汉语翻译成英语,必须对汉语和英语的单词、语法结构都很精通,才有可能翻译得准确无误。另外,编译程序既然是为了完成这种功能的一个程序,就存在用什么语言来编写这个程序的问题。这些问题在本节将逐步介绍。 现对PL/0语言编译程序的功能用“T”型图表示,并用图形概括描述PL/0编译程序的结构框架。
用语法图描述语法规则的优点是直观、易读。在图.1的语法图中用椭圆和圆圈中的英文字表示终结符,用长方形内的中文字表示非终结符。所谓终结符,是构成语言文法的单词,是语法成分的最小单位,而每个非终结符也是一个语法成分。 但非终结符可由其它文法符号定义,终结符不能由其它文法符号定义。例如,程序是由非终结符分程序和终结符.组成的串定义的。由于对某些非终结符可以递归定义,如图.1(b)、2.1 (c)、2.1 (e)中:分程序、表达式和语句。第一个非终结符 程序为文法的开始符号。
1.1(a)
1.1(c)
条件
1.1(e)
分程序
1.1(b)
语句
1.1(d)
表达式
1.1(f)
项
1.1(g)
因子
1.1(h)
如:{*}表示*重
您可能关注的文档
最近下载
- 第8课 隋唐政治演变与民族交融-【中职专用】《中国历史》魅力课堂教学课件(高教版2023•基础模块).pptx VIP
- 人力资源管理开题(课题背景研究目的与意义【最新】.docx VIP
- 《生产调度与控制实务》课件.ppt VIP
- 2025水电工程信息分类与编码第4部分:水工建筑物.docx
- PMP项目管理培训课件项目.pptx VIP
- xx公司集团中铁工程部内部管理制度.doc VIP
- 2025年汽车驾驶员技师资格证书考试及考试题库含答案.docx
- 盐酸普鲁卡因工艺说明书8.pdf VIP
- 外研版小学三年级的英语第一单元试题.doc VIP
- 经济学原理(第8版)微观经济学曼昆课后习题答案解析.pdf
文档评论(0)