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 / p8 / tst / nested.out.bak < prev    next >
Text File  |  2006-01-29  |  7KB  |  267 lines

  1. PROGRAM IS
  2.     VAR
  3.         i: integer := 0;
  4.     PROCEDURE foo1 (a: integer; b: integer; c: integer) IS
  5.         VAR
  6.             x: integer := 100;
  7.         PROCEDURE foo2 (a: integer; b: integer; c: integer) IS
  8.             VAR
  9.                 x: integer := 200;
  10.             BEGIN
  11.                 i := 222;
  12.                 foo1 (1, 2, 3);
  13.                 foo2 (1, 2, 3);
  14.                 foo3 (1, 2, 3);
  15.                 RETURN;
  16.             END;
  17.         PROCEDURE foo5 (a: integer; b: integer; c: integer) IS
  18.             VAR
  19.                 x: integer := 500;
  20.             PROCEDURE foo6 (a: integer; b: integer; c: integer) IS
  21.                 VAR
  22.                     x: integer := 600;
  23.                 BEGIN
  24.                     i := 666;
  25.                     foo1 (1, 2, 3);
  26.                     foo5 (1, 2, 3);
  27.                     foo6 (1, 2, 3);
  28.                     RETURN;
  29.                 END;
  30.             PROCEDURE foo7 (a: integer; b: integer; c: integer) IS
  31.                 VAR
  32.                     x: integer := 700;
  33.                 BEGIN
  34.                     i := 777;
  35.                     foo1 (1, 2, 3);
  36.                     foo5 (1, 2, 3);
  37.                     foo7 (1, 2, 3);
  38.                     RETURN;
  39.                 END;
  40.             BEGIN
  41.                 i := 555;
  42.                 foo1 (1, 2, 3);
  43.                 foo5 (1, 2, 3);
  44.                 foo3 (1, 2, 3);
  45.                 RETURN;
  46.             END;
  47.         BEGIN
  48.             i := 111;
  49.             RETURN;
  50.         END;
  51.     PROCEDURE foo3 (a: integer; b: integer; c: integer) IS
  52.         VAR
  53.             x: integer := 300;
  54.         PROCEDURE foo8 (a: integer; b: integer; c: integer) IS
  55.             VAR
  56.                 x: integer := 800;
  57.             BEGIN
  58.                 i := 888;
  59.                 foo1 (1, 2, 3);
  60.                 foo8 (1, 2, 3);
  61.                 foo3 (1, 2, 3);
  62.                 RETURN;
  63.             END;
  64.         BEGIN
  65.             i := 333;
  66.             RETURN;
  67.         END;
  68.     PROCEDURE foo4 (a: integer; b: integer; c: integer) IS
  69.         VAR
  70.             x: integer := 400;
  71.         BEGIN
  72.             i := 444;
  73.             RETURN;
  74.         END;
  75.     BEGIN
  76.         foo1 (1, 2, 3);
  77.     END;
  78. =====  Intermediate Code Follows  =====
  79. ! VAR INITIALIZATION...
  80.                 t1 := 0
  81.                 i := t1
  82. ! CALL STMT...
  83.                 t2 := 1
  84.                 t3 := 2
  85.                 t4 := 3
  86.                 param 1,t2
  87.                 param 2,t3
  88.                 param 3,t4
  89.                 call foo1
  90. ! VAR INITIALIZATION...
  91.                 t5 := 100
  92.                 x := t5
  93. ! ASSIGNMENT STMT...
  94.                 t6 := &i
  95.                 t7 := 111
  96.                 *t6 := t7
  97. ! VAR INITIALIZATION...
  98.                 t8 := 200
  99.                 x := t8
  100. ! ASSIGNMENT STMT...
  101.                 t9 := &i
  102.                 t10 := 222
  103.                 *t9 := t10
  104. ! CALL STMT...
  105.                 t11 := 1
  106.                 t12 := 2
  107.                 t13 := 3
  108.                 param 1,t11
  109.                 param 2,t12
  110.                 param 3,t13
  111.                 call foo1
  112. ! CALL STMT...
  113.                 t14 := 1
  114.                 t15 := 2
  115.                 t16 := 3
  116.                 param 1,t14
  117.                 param 2,t15
  118.                 param 3,t16
  119.                 call foo2
  120. ! CALL STMT...
  121.                 t17 := 1
  122.                 t18 := 2
  123.                 t19 := 3
  124.                 param 1,t17
  125.                 param 2,t18
  126.                 param 3,t19
  127.                 call foo3
  128. ! VAR INITIALIZATION...
  129.                 t20 := 500
  130.                 x := t20
  131. ! ASSIGNMENT STMT...
  132.                 t21 := &i
  133.                 t22 := 555
  134.                 *t21 := t22
  135. ! CALL STMT...
  136.                 t23 := 1
  137.                 t24 := 2
  138.                 t25 := 3
  139.                 param 1,t23
  140.                 param 2,t24
  141.                 param 3,t25
  142.                 call foo1
  143. ! CALL STMT...
  144.                 t26 := 1
  145.                 t27 := 2
  146.                 t28 := 3
  147.                 param 1,t26
  148.                 param 2,t27
  149.                 param 3,t28
  150.                 call foo5
  151. ! CALL STMT...
  152.                 t29 := 1
  153.                 t30 := 2
  154.                 t31 := 3
  155.                 param 1,t29
  156.                 param 2,t30
  157.                 param 3,t31
  158.                 call foo3
  159. ! VAR INITIALIZATION...
  160.                 t32 := 600
  161.                 x := t32
  162. ! ASSIGNMENT STMT...
  163.                 t33 := &i
  164.                 t34 := 666
  165.                 *t33 := t34
  166. ! CALL STMT...
  167.                 t35 := 1
  168.                 t36 := 2
  169.                 t37 := 3
  170.                 param 1,t35
  171.                 param 2,t36
  172.                 param 3,t37
  173.                 call foo1
  174. ! CALL STMT...
  175.                 t38 := 1
  176.                 t39 := 2
  177.                 t40 := 3
  178.                 param 1,t38
  179.                 param 2,t39
  180.                 param 3,t40
  181.                 call foo5
  182. ! CALL STMT...
  183.                 t41 := 1
  184.                 t42 := 2
  185.                 t43 := 3
  186.                 param 1,t41
  187.                 param 2,t42
  188.                 param 3,t43
  189.                 call foo6
  190. ! VAR INITIALIZATION...
  191.                 t44 := 700
  192.                 x := t44
  193. ! ASSIGNMENT STMT...
  194.                 t45 := &i
  195.                 t46 := 777
  196.                 *t45 := t46
  197. ! CALL STMT...
  198.                 t47 := 1
  199.                 t48 := 2
  200.                 t49 := 3
  201.                 param 1,t47
  202.                 param 2,t48
  203.                 param 3,t49
  204.                 call foo1
  205. ! CALL STMT...
  206.                 t50 := 1
  207.                 t51 := 2
  208.                 t52 := 3
  209.                 param 1,t50
  210.                 param 2,t51
  211.                 param 3,t52
  212.                 call foo5
  213. ! CALL STMT...
  214.                 t53 := 1
  215.                 t54 := 2
  216.                 t55 := 3
  217.                 param 1,t53
  218.                 param 2,t54
  219.                 param 3,t55
  220.                 call foo7
  221. ! VAR INITIALIZATION...
  222.                 t56 := 300
  223.                 x := t56
  224. ! ASSIGNMENT STMT...
  225.                 t57 := &i
  226.                 t58 := 333
  227.                 *t57 := t58
  228. ! VAR INITIALIZATION...
  229.                 t59 := 800
  230.                 x := t59
  231. ! ASSIGNMENT STMT...
  232.                 t60 := &i
  233.                 t61 := 888
  234.                 *t60 := t61
  235. ! CALL STMT...
  236.                 t62 := 1
  237.                 t63 := 2
  238.                 t64 := 3
  239.                 param 1,t62
  240.                 param 2,t63
  241.                 param 3,t64
  242.                 call foo1
  243. ! CALL STMT...
  244.                 t65 := 1
  245.                 t66 := 2
  246.                 t67 := 3
  247.                 param 1,t65
  248.                 param 2,t66
  249.                 param 3,t67
  250.                 call foo8
  251. ! CALL STMT...
  252.                 t68 := 1
  253.                 t69 := 2
  254.                 t70 := 3
  255.                 param 1,t68
  256.                 param 2,t69
  257.                 param 3,t70
  258.                 call foo3
  259. ! VAR INITIALIZATION...
  260.                 t71 := 400
  261.                 x := t71
  262. ! ASSIGNMENT STMT...
  263.                 t72 := &i
  264.                 t73 := 444
  265.                 *t72 := t73
  266. =======================================
  267.