pl0语言的扩充之repeat-until语句
repeat语句系列的扩充可以仿照while-do语句,但要注意repeat语句系列没有无条件跳转,while-do语句有。程序按顺序执行,在条件语句后存在一个条件跳转指令,跳转地址未定,当条件判断为假时回到repeat后面的循环开始位置,所以循环体语句开始位置要保存记录,当条件为真时,语句结束。
具体代码更改如下
头文件:
#define norw 16 /* 关键字个数 */
符号:
/* 符号 */
enum symbol {
nul, ident, number, plus, minus,
times, slash, oddsym, eql, neq,
lss, leq, gtr, geq, lparen,
rparen, comma, semicolon, period, becomes,
beginsym, endsym, ifsym, thensym, whilesym,
writesym, readsym, dosym, callsym, constsym,
varsym, procsym, elsesym, repeatsym, untilsym,
};
#define symnum 35
pl0.c:
保留字更改
/* 设置保留字名字,按照字母顺序,便于折半查找 */
strcpy(&(word[0][0]), "begin");
strcpy(&(word[1][0])