2007 年 1 月 6 日
一、设计要求
对
PL/0
语言在上机实验的功能前提下再进行下列扩充
:
(1)增加单词:保留字 ELSE,FOR,TO, DOWNTO
运算符 +=,-=,++,--
修改单词:不等号# 改为 <>
增加条件语句的 ELSE 子句
(2)扩充赋值运算:+= 和 -=
(3)扩充语句 REPEAT <语句序列> UNTIL <条件>
二、实现工具(平台)
C++Builder6.0
三、扩充 SYMBOL
在已经添加了 ELSESYM、REPEATSYM 和 UNTILSYM 这三个 SYM 的基础上,为了
实现如上要求的扩充 ,必须再正确 地添加 INC、DEC、DOWHILESYM、PLUSBK 和
MINUSBK 等五个 SYMBOL,具体必须包括以下三个方面的修改或添加:
在 枚 举 变 量 SYMBOL 的 定义 内 添 加 INC 、 DEC、 DOWHILESYM 、PLUSBK 和
MINUSBK ; 给 SYMOUT 在 相 应 的 位 置 添 加
“ INC” 、 “ DEC” 、 “ DOWHILESYM” 、 “ PLUSBK” 和 “ MINUSBK” 等 五 个 数 组 元 素 。 则
SYMBOL 由原来的 36 个值扩展为目前的 41 个值,SYMOUT 也由原来的 36 个元素扩展为
目前的 41 个元素,所以,除了 Error 函数中可能出现的作为参数的“36”不被替换为“41”外,
其余的“36”均用“41”来替换;
我 们 所 新 加 入 的 五 个 SYMBOL 中 , 只 有 机 内 表 示 DOWHILESYM 所 对 应 的
“DOWHILE”是保留字,所以全局量 NORW 必须在原来上机实验值 17 的基础上加 1,即将
NORW 的修改为 18;
对程序初始化过程进行修改。在 Run 按钮的响应函数中,修改 KWORD 数组和
WSYM 数 组 的 初 始 值 : 将 “ DOWHILESYM” 按 字 典 顺 序 插 入 KWORD 数 组 中 , 将
DOWHILESYM 按字典顺序插入 WSYM 数组中。
这样,我们就正确地加入了五个将用来作为扩充语言功能的 SYM。
评论3