本实验报告详细记录了基于PL/0语言的编译器语法分析过程,包括词法分析、语法解析及错误处理等环节的设计与实现,旨在加深对编译原理的理解。
PL/0源程序
// PL0.txt
const a=10;
var b,c;
procedure p;
beginc:=b+a
end;
begin
read(b);
while b#0 do
begin
call p;
write(2*c);
read(b)
end
end.
// output file
constsym, ident, a, eql, number, 10
semicolon,
varsym, ident, b
comma,
ident, c
semicolon,
proceduresym, ident, p
semicolon,
beginsym,
ident, c
becomes,
ident,b plus
ident,a
endsym,
semicolon
beginsym,
readsym,lparen,ident,b rparen
:semicolon
whilesym,
ident,b neq number, 0
dosym,
beginsym,callsym,ident,p;
semicolon,writesym,lparen,number,2 times ident,c rparen
:semicolon
readsym,lparen,ident,b rparen
;endsym
endsym