内容目录
编译原理lab1
1 下面用PL/0语言书写的程序中含有语法错误,请修正并给出正确的程序。需使用提供的PL/0编译器(词语法分析版)进行编译,给出语法分析成功的控制台输出截图。
const m:=7,n=85;
var x,y,z,q,r;
procedure multiply;
var a,b;
begin a=x;b:=y;z:=0;
while b>0 do
begin if Odd b then z:=z+a;
a:=2*a;b:=b/c
end
end;
begin x:=m;y:=n;call mvltiply;
end.
修改后程序如下:
const m=7,n=85;
var x,y,z,q,r;
procedure multiply;
var a,b;
begin a:=x;b:=y;z:=0;
while b>0 do
begin if odd b then z:=z+a;
a:=2*a;b:=b/2;
end
end;
begin x:=m;y:=n;call multiply;
end.
控制台输出截图如下:

2 使用PL/0语言编写一个程序,计算并最终输出1累加到100的和,输出使用提供的PL/0编译器(词语法分析版)进行编译,给出语法分析成功的控制台输出截图。
编写程序如下:
const BEGIN=1,END=100;
procedure addup;
var a,b,sum;
begin
a:=BEGIN;
b:=END;
sum:=0;
while a < b do
begin
sum := sum+a;
a := a+1;
end;
write(sum);
end;
begin
call addup;
end.
控制台输出截图如下:

实验代码链接
https://gitee.com/WilliamSamShen/complier-concepts/tree/master/Lab/lab1