回 帖 发 新 帖 刷新版面

主题:请高手帮帮忙!对PL/0语言及其编译器进行扩充和修改(有源代码)

《编译原理》要求你对PL/0语言及其编译器进行扩充和修改。

(1)    修改后的PL/0语言文本。包含词法分析(正规式),语法分析(BNF)。
(2)    程序流程图
(3)    有关修改后的PL/0编译/解释器的说明。详细说明你的编译器是如何编译新的PL/0语言程序的。指出你的程序中最精彩的部分,以及你为什么这样做,你是如何控制和恢复语义错误的。
(4)    给出你所改动后的编译器源程序清单,并标记出你所修改的部分。比较你的编译器和原来的编译器之间的差别。
(5)    说明你的编译器中可能存在的错误。

对现存的PL/0编译程序可做如下修改或扩充。
(1)    注释
注释由(*和*)包含,不允许嵌套。
(2)    布尔类型的数据
布尔类型的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

这种修改包括:
(i)    区别整型与布尔型变量、常量和表达式。
(ii)    增加按严格计算的布尔类型运算符and、or和not。这些算符以及己有的运算符的优先级与Pascal语言相同。
(iii)    能够使用布尔常量true和false。
(iv)    把PL/0语言中的“条件”概念一般化为Pascal语言那样。
(v)    布尔表达式可以比较大小:false < true
(3)    布尔表达式的短路计算(5分)
增加布尔类型(见(2),除(2)的(ii)外),但对and和or采取短路计算。
(4)    数组(10分)
增加由任何数据类型构造的一维数组。数组的下标限于纯量类型。
注意:数组可以由其它的数组来构造,因而必须考虑多维数组的情况。数组的上下界可为任意的纯量常数。
数组的定义如下:

data_type → integer | boolean | array [const..const] of data_type
const → ident | number

语言中允许有数组说明,对数组元素赋值,在表达式中引用数组元素。为了便于解释执行,可能要增加新的PL/0机器操作指令。
(5)    参数    语法同Pascal,采用值-结果方式传递(不用var声明)。
(6)    函数     语法同Pascal。
(7)    else子句和repeat语句
(8)    for语句,语法参照Pascal或C语言
(9)    exit语句(退出当前执行过程)和break语句(跳出包含它的最内层循环),(5分)
(10)    记录(结构),语法同Pascal语言。
(11)    更有力的语法错误恢复机制
(12)    分离解释和编译器
另外,为了实现以上功能,你可任意增加PL/0处理机的指令。但要注意指令的简单与合理。
实现PL/0语言的输入、输出语句。其语法、语义定义和Pascal语言相同。可以仅仅实现一次输入或输出一个值的语句——语句参数固定;也可以实现完全和Pascal语言一样,能够接受任意个数参数的输入或输出语句。

回复列表 (共20个回复)

11 楼

有没有用PL/0语言写的程序样本,我已经编译好了,缺个样本。

12 楼

有没有用PL/0语言写的程序样本,我已经编译好了,缺个样本。

13 楼

现在急用这个啊·老师叫我们添加else!都不会··

14 楼

我好像找到熟人了
楼主是哪的呀
偶是建工的
不会是巧合吧
我们老师出的是一样的题哦
如果有高手知道的话也帮我个忙
我的邮箱是
iiooii7@hotmail.com
多谢多谢!!!

15 楼


ii00ii7,你是建工的,不会是同班同学吧,是不是也到网上搜程序来了,找到了吗?找到发给我啊,我的邮箱是lwwhappy1985@163.com
咱们可能是同一个老师阿
应该是伊静吧

16 楼


ii00ii7,你是建工的,不会是同班同学吧,是不是也到网上搜程序来了,找到了吗?找到发给我啊,我的邮箱是lwwhappy1985@163.com
咱们可能是同一个老师阿
应该是伊静吧

17 楼

Hi.
果然是哦
我是山建工的
找到不少,不过都有错
你不嫌弃的话我就发给你了
好高兴能在网上碰到同学

18 楼


你们还有这个程序的代码吗?我有急用!可以发给我一下吗?谢谢!
邮箱:yan062685@163.com

19 楼

http://www.3cj.cn/soft/20/136/2007/32227665811.html

20 楼

http://www.3cj.cn/soft/20/136/2007/32227665811.html

我来回复

您尚未登录,请登录后再回复。点此登录或注册