跳至正文

编译原理lab1

内容目录

编译原理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.

控制台输出截图如下:

ad92006488cd2d275253ba0c166f27b9

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.

控制台输出截图如下:

355ca6fa20c05227b172388c5e0b486e.png

实验代码链接

https://gitee.com/WilliamSamShen/complier-concepts/tree/master/Lab/lab1