home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / users / Harry / compilers / p10 / tst / call2.pcat < prev    next >
Text File  |  2006-02-17  |  1KB  |  58 lines

  1. (* This program tests IR code generation for procedure invocation.
  2.    It has been modified slightly from the last project to include the
  3.    testing of functions that return boolean results. *)
  4.  
  5. program is
  6.  
  7.   var x, y, z: integer := 0;
  8.   var a, b, c: real := 0.0;
  9.   var bool: boolean := false;
  10.  
  11.   procedure foo1 (x, y, z: integer) : integer is begin return x+9999; end;
  12.   procedure foo2 (x, y, z: real) : real is begin return a+999.999; end;
  13.   procedure foo3 (x, y, z: integer) is begin return; end;
  14.   procedure foo4 (x, y, z: real) is begin return; end;
  15.   procedure foo5 () is begin return; end;
  16.   procedure foo6 (x: integer) : integer is begin return x+8888; end;
  17.   procedure foo7 (x, y: integer) : integer is begin return x+7777; end;
  18.  
  19.   procedure boolfun () : boolean is begin return false; end;
  20.  
  21. begin
  22.  
  23.   x := foo1 (2, 4, 6);
  24.   x := foo1 (x+2, (x+4) mod 3, 6*x);
  25.   x := foo1 (foo1 (2, 4, 6), foo1 (2+x, 4+y, 6+z) mod 3, 6*x);
  26.  
  27.   a := foo2 (2.2, 4.4, 6.6);
  28.   a := foo2 (2.2*a, 4.4*b, 6.6*c);
  29.  
  30.   foo3 (2, 4, 6);
  31.   foo3 (x+2, (x+4) mod 3, 6*x);
  32.  
  33.   foo4 (2.2, 4.4, 6.6);
  34.  
  35.   foo5 ();
  36.  
  37.   x := foo6 (y);
  38.   x := foo6 (foo6 (foo6 (foo6 (y))));
  39.  
  40.   x := foo7 (foo7 (foo7 (x+1, y+2), foo7 (x+3, y+4)),
  41.              foo7 (foo7 (x+5, y+6), foo7 (x+7, y+8)));
  42.  
  43.   bool := boolfun ();
  44.  
  45.   if boolfun () then
  46.     x := 111;
  47.   end;
  48.  
  49.   if not boolfun () then
  50.     x := 222;
  51.   end;
  52.  
  53.   while boolfun () do
  54.     x := 333;
  55.   end;
  56.  
  57. end;
  58.