代码及结果:task2
任务一博客:编译原理 | 实验任务一:在计算机上实现PL0语言的编译程序
任务描述:
1.在PL0语言中增加Read和Write语句;
2.修改PL0编译程序, 使得PL0源程序可以使用Read和Write语句, 从文件(或键盘)输入数据,并可以向文件(或屏幕)写数据.
1.在保留字表中增加read和write条目(按ASCII码的顺序)
//type
symbol = (..., readsym, writesym);
//主程序
//按ASCII码顺序
word[1] := 'begin ';
word[2] := 'call ';
word[3] := 'const ';
word[4] := 'do ';
word[5] := 'end ';
word[6] := 'if ';
word[7] := 'odd ';
word[8] := 'procedure ';
word[9] := 'read ';
word[10] := 'then ';
word[11] := 'var ';
word[12] := 'while ';
word[13] := 'write ';
2.在主程序中增加read和write保留字对应的记号
//{常量定义}
const
norw = 13; {
保留字的个数}
//主程序
wsym[1] := beginsym;
wsym[2] := callsym;
wsym[3] := constsym;
wsym[4] := dosym;
wsym[5] := endsym;
wsym[6] := ifsym;
wsym[7] := oddsym;
wsym[8] := procsym;
wsym[9] := readsym;
wsym[10] := thensym;
wsym[11] := varsym;
wsym[12] := whilesym;
wsym[13] := writesym;
3.使pl0中的语句可以以read或者write开始
statbegsys := [beginsym, callsym, ifsym, whilesym, writesym, readsym];{
表达式开始集合}
4.增加中间代码RED和WRT
//type
fct = (lit, opr, lod, sto, cal, int, jmp, jpc, red, wrt); {
functions}
//主程序
//类 PCODE 指令助记符表
mnemonic[lit] := 'LIT ';
mnemonic[opr] := 'OPR ';
mnemonic[lod] := 'LOD ';
mnemonic[sto] := 'STO ';
mnemonic[cal