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 / walk.pcat < prev    next >
Text File  |  2006-02-17  |  1KB  |  45 lines

  1. (* This program makes sure that the entire AST is walked and that expressions are
  2.    discovered wherever they might appear.  *)
  3.  
  4. program is
  5.  
  6.   type MyRecType is record
  7.                       field1: integer;
  8.                       field2: integer;
  9.                     end;
  10.        MyArrayType is array of integer;
  11.  
  12.   var i: integer := 123;
  13.       j: integer := 456;
  14.       arr: MyArrayType := MyArrayType {{ i*j+10001 of i*j+10002, i*j+10003, i*j+10004 of i*j+10005 }};
  15.       rec: MyRecType := MyRecType { field1 := i*j+9999; field2 := i*j+10000 };
  16.  
  17.   procedure foo (a: integer) : integer is
  18.     var k: integer := i*j+1111;
  19.     begin
  20.       if i=j then
  21.         while i=j do
  22.           write (i*j+2222, i*j+3333, i*j+4444);
  23.           write ();
  24.         end;
  25.       else
  26.         for i := i*j+5555 to i*j+6666 by i*j+7777 do
  27.           j := i*j+8888;
  28.           arr[i*j+10006] := arr[i*j+10007] + i*j+10008;
  29.           loop
  30.             read (arr[i*j+10009], arr[i*j+10010]);
  31.             arr := MyArrayType {{ i*j+10011 of i*j+10012, i*j+10013, i*j+10014 of i*j+10015 }};
  32.             rec := MyRecType { field1 := i*j+10016; field2 := i*j+10017 };
  33.             if arr=nil then
  34.               exit;
  35.             end;
  36.           end;
  37.         end;
  38.       end;
  39.       return i*j+10018;
  40.     end;
  41.  
  42.   begin
  43.     i:= (i-3)*(i*j+10019);
  44.   end;
  45.