编译原理语法分析程序
求程序。
完成并提交一个完整的语法分析器
1. 输入要求:语法分析程序输入为词法分析结果,实验中可用语法分析调用词法分析,然后结果用于语法分析部分的输入。即,此次实验的实际输入是一个PL/0文件。
示例(仅供参考)
文件1名称test1.pl0,test1中是含有语法错误的,文件内容如下:
var x,y;
procedure p;
var a;
procedure q;
var b;
begin(*q*)
b:=10;
end(*q*);
procedure s;
var c,d;
procedure r;
var e,f;
begin(*r*)
call q;
end(*r*);
begin(*s*)
call r;
end(*s*);
begin(*p*)
call s;
end(*p*);
begin(*main*)
call p;
end(*main*).
文件2名称test2.pl0,test2中不含语法错误,文件内容如下:
const a=10;
var b,c;
procedure p;
begin
c:=b+a;
end;
begin
read(b);
while b#0 do
begin
call p;
write(2*c);
read(b);
end
end.
2. 输出要求:若文件有语法错误,则输出错误所在位置以及错误代码;若程序不完整,则提示程序不完整错误(program incomplete);若文件不含错误,则提示成功。
示例,test1.pl0文件语法分析结果如下:
program line 5 error 17
program line 5 error 5
program line 5 error 5
program line 5 error 9
4 errors
test2.pl0文件语法分析结果如下:
0 error,Success!