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 / readWrite.out.bak < prev    next >
Text File  |  2006-02-17  |  3KB  |  97 lines

  1. PROGRAM IS
  2.     TYPE
  3.         A IS ARRAY OF integer;
  4.         R IS RECORD f1: integer; f2: real; f3: A; END;
  5.     VAR
  6.         i: integer := 0;
  7.         j: integer := i;
  8.         k: integer := i;
  9.         x: real := 0.0;
  10.         y: real := x;
  11.         z: real := x;
  12.         a: A := NIL;
  13.         r: R := NIL;
  14.     BEGIN
  15.         WRITE ("Test printing expressions...");
  16.         WRITE ((i + j), ((k * 43) + i), (((x - y) - z) - intToReal (i)));
  17.         WRITE ("Test reading complex L-values...");
  18.         READ (i, x, a[(i + j)], r.f1, r.f2, r.f3[(k * j)]);
  19.     END;
  20. maxLexicalLevel = 0
  21. =====  String List Follows  =====
  22.    str2:  "Test reading complex L-values..."
  23.    str1:  "Test printing expressions..."
  24. =====  Float List Follows  =====
  25.    float1:  0.0
  26. =====  Intermediate Code Follows  =====
  27. ! MAIN...
  28.                 mainEntry
  29. ! VAR INITIALIZATION...
  30.                 i := 0
  31. ! VAR INITIALIZATION...
  32.                 j := i
  33. ! VAR INITIALIZATION...
  34.                 k := i
  35. ! VAR INITIALIZATION...
  36.                 x := 0.0
  37. ! VAR INITIALIZATION...
  38.                 y := x
  39. ! VAR INITIALIZATION...
  40.                 z := x
  41. ! VAR INITIALIZATION...
  42.                 a := 0
  43. ! VAR INITIALIZATION...
  44.                 r := 0
  45. ! WRITE STMT...
  46.                 writeString str1
  47.                 writeNewline
  48. ! WRITE STMT...
  49.                 t1 := i + j        (integer)
  50.                 writeInt t1
  51.                 t2 := k * 43        (integer)
  52.                 t3 := t2 + i        (integer)
  53.                 writeInt t3
  54.                 t4 := x - y        (float)
  55.                 t5 := t4 - z        (float)
  56.                 t6 := intToFloat (i)
  57.                 t7 := t5 - t6        (float)
  58.                 writeFloat t7
  59.                 writeNewline
  60. ! WRITE STMT...
  61.                 writeString str2
  62.                 writeNewline
  63. ! READ STMT...
  64.                 t8 := &i
  65.                 readInt t8
  66.                 t9 := &x
  67.                 readFloat t9
  68.                 if a = 0 then goto runtimeError2        (integer)
  69.                 t10 := i + j        (integer)
  70.                 if t10 < 0 then goto runtimeError4        (integer)
  71.                 t11 := *a
  72.                 if t10 >= t11 then goto runtimeError4        (integer)
  73.                 t11 := t10 * 4        (integer)
  74.                 t11 := t11 + 4        (integer)
  75.                 t11 := a + t11        (integer)
  76.                 readInt t11
  77.                 if r = 0 then goto runtimeError2        (integer)
  78.                 readInt r
  79.                 if r = 0 then goto runtimeError2        (integer)
  80.                 t12 := r + 4        (integer)
  81.                 readFloat t12
  82.                 if r = 0 then goto runtimeError2        (integer)
  83.                 t13 := r + 8        (integer)
  84.                 t14 := *t13
  85.                 if t14 = 0 then goto runtimeError2        (integer)
  86.                 t15 := k * j        (integer)
  87.                 if t15 < 0 then goto runtimeError4        (integer)
  88.                 t16 := *t14
  89.                 if t15 >= t16 then goto runtimeError4        (integer)
  90.                 t16 := t15 * 4        (integer)
  91.                 t16 := t16 + 4        (integer)
  92.                 t16 := t14 + t16        (integer)
  93.                 readInt t16
  94. ! MAIN EXIT...
  95.                 mainExit
  96. =======================================
  97.