Pl0语言的扩充之if-then-else语句
初学编译原理,然后对C语言版的pl0语言进行扩充。
在处理完条件语句后,有一个有条件跳转jpc,当条件为假时,跳过then语句跳转到语句2,当条件为真时,顺序执行。在语句1后面有一个无条件jmp跳转,顺序执行完后跳过else语句。
程序的修改如下:
头文件修改:
关键字个数
#define norw 14 /* 关键字个数加1 */
符号加1
/* 符号 */
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,
};
#define symnum 33
注意elsesym后面的逗号要加上。
程序修改:
关键字加1,按顺序插入
/* 设置保留字名字,按照字母顺序,便于折半查找 */
strcpy(&(word[0][0]), "begin");
strcpy(&(word[1][