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 / p9 / tst / nested.out.bak < prev    next >
Text File  |  2006-02-07  |  9KB  |  328 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. maxLexicalLevel = 3
  79. =====  Intermediate Code Follows  =====
  80. ! MAIN...
  81.                 mainEntry
  82. ! VAR INITIALIZATION...
  83.                 t1 := 0
  84.                 i := t1
  85. ! CALL STMT...
  86.                 t2 := 1
  87.                 t3 := 2
  88.                 t4 := 3
  89.                 param 1,t2
  90.                 param 2,t3
  91.                 param 3,t4
  92.                 call foo1
  93. ! MAIN EXIT...
  94.                 mainExit
  95. ! PROCEDURE...
  96.                 procEntry foo1,lexLevel=1,frameSize=0
  97.                 formal 1,a
  98.                 formal 2,b
  99.                 formal 3,c
  100. ! VAR INITIALIZATION...
  101.                 t5 := 100
  102.                 x := t5
  103. ! ASSIGNMENT STMT...
  104.                 t6 := &i
  105.                 t7 := 111
  106.                 *t6 := t7
  107. ! RETURN...
  108.                 returnVoid 
  109. ! PROCEDURE...
  110.                 procEntry foo2,lexLevel=2,frameSize=0
  111.                 formal 1,a
  112.                 formal 2,b
  113.                 formal 3,c
  114. ! VAR INITIALIZATION...
  115.                 t8 := 200
  116.                 x := t8
  117. ! ASSIGNMENT STMT...
  118.                 t9 := &i
  119.                 t10 := 222
  120.                 *t9 := t10
  121. ! CALL STMT...
  122.                 t11 := 1
  123.                 t12 := 2
  124.                 t13 := 3
  125.                 param 1,t11
  126.                 param 2,t12
  127.                 param 3,t13
  128.                 call foo1
  129. ! CALL STMT...
  130.                 t14 := 1
  131.                 t15 := 2
  132.                 t16 := 3
  133.                 param 1,t14
  134.                 param 2,t15
  135.                 param 3,t16
  136.                 call foo2
  137. ! CALL STMT...
  138.                 t17 := 1
  139.                 t18 := 2
  140.                 t19 := 3
  141.                 param 1,t17
  142.                 param 2,t18
  143.                 param 3,t19
  144.                 call foo3
  145. ! RETURN...
  146.                 returnVoid 
  147. ! PROCEDURE...
  148.                 procEntry foo5,lexLevel=2,frameSize=0
  149.                 formal 1,a
  150.                 formal 2,b
  151.                 formal 3,c
  152. ! VAR INITIALIZATION...
  153.                 t20 := 500
  154.                 x := t20
  155. ! ASSIGNMENT STMT...
  156.                 t21 := &i
  157.                 t22 := 555
  158.                 *t21 := t22
  159. ! CALL STMT...
  160.                 t23 := 1
  161.                 t24 := 2
  162.                 t25 := 3
  163.                 param 1,t23
  164.                 param 2,t24
  165.                 param 3,t25
  166.                 call foo1
  167. ! CALL STMT...
  168.                 t26 := 1
  169.                 t27 := 2
  170.                 t28 := 3
  171.                 param 1,t26
  172.                 param 2,t27
  173.                 param 3,t28
  174.                 call foo5
  175. ! CALL STMT...
  176.                 t29 := 1
  177.                 t30 := 2
  178.                 t31 := 3
  179.                 param 1,t29
  180.                 param 2,t30
  181.                 param 3,t31
  182.                 call foo3
  183. ! RETURN...
  184.                 returnVoid 
  185. ! PROCEDURE...
  186.                 procEntry foo6,lexLevel=3,frameSize=0
  187.                 formal 1,a
  188.                 formal 2,b
  189.                 formal 3,c
  190. ! VAR INITIALIZATION...
  191.                 t32 := 600
  192.                 x := t32
  193. ! ASSIGNMENT STMT...
  194.                 t33 := &i
  195.                 t34 := 666
  196.                 *t33 := t34
  197. ! CALL STMT...
  198.                 t35 := 1
  199.                 t36 := 2
  200.                 t37 := 3
  201.                 param 1,t35
  202.                 param 2,t36
  203.                 param 3,t37
  204.                 call foo1
  205. ! CALL STMT...
  206.                 t38 := 1
  207.                 t39 := 2
  208.                 t40 := 3
  209.                 param 1,t38
  210.                 param 2,t39
  211.                 param 3,t40
  212.                 call foo5
  213. ! CALL STMT...
  214.                 t41 := 1
  215.                 t42 := 2
  216.                 t43 := 3
  217.                 param 1,t41
  218.                 param 2,t42
  219.                 param 3,t43
  220.                 call foo6
  221. ! RETURN...
  222.                 returnVoid 
  223. ! PROCEDURE...
  224.                 procEntry foo7,lexLevel=3,frameSize=0
  225.                 formal 1,a
  226.                 formal 2,b
  227.                 formal 3,c
  228. ! VAR INITIALIZATION...
  229.                 t44 := 700
  230.                 x := t44
  231. ! ASSIGNMENT STMT...
  232.                 t45 := &i
  233.                 t46 := 777
  234.                 *t45 := t46
  235. ! CALL STMT...
  236.                 t47 := 1
  237.                 t48 := 2
  238.                 t49 := 3
  239.                 param 1,t47
  240.                 param 2,t48
  241.                 param 3,t49
  242.                 call foo1
  243. ! CALL STMT...
  244.                 t50 := 1
  245.                 t51 := 2
  246.                 t52 := 3
  247.                 param 1,t50
  248.                 param 2,t51
  249.                 param 3,t52
  250.                 call foo5
  251. ! CALL STMT...
  252.                 t53 := 1
  253.                 t54 := 2
  254.                 t55 := 3
  255.                 param 1,t53
  256.                 param 2,t54
  257.                 param 3,t55
  258.                 call foo7
  259. ! RETURN...
  260.                 returnVoid 
  261. ! PROCEDURE...
  262.                 procEntry foo3,lexLevel=1,frameSize=0
  263.                 formal 1,a
  264.                 formal 2,b
  265.                 formal 3,c
  266. ! VAR INITIALIZATION...
  267.                 t56 := 300
  268.                 x := t56
  269. ! ASSIGNMENT STMT...
  270.                 t57 := &i
  271.                 t58 := 333
  272.                 *t57 := t58
  273. ! RETURN...
  274.                 returnVoid 
  275. ! PROCEDURE...
  276.                 procEntry foo8,lexLevel=2,frameSize=0
  277.                 formal 1,a
  278.                 formal 2,b
  279.                 formal 3,c
  280. ! VAR INITIALIZATION...
  281.                 t59 := 800
  282.                 x := t59
  283. ! ASSIGNMENT STMT...
  284.                 t60 := &i
  285.                 t61 := 888
  286.                 *t60 := t61
  287. ! CALL STMT...
  288.                 t62 := 1
  289.                 t63 := 2
  290.                 t64 := 3
  291.                 param 1,t62
  292.                 param 2,t63
  293.                 param 3,t64
  294.                 call foo1
  295. ! CALL STMT...
  296.                 t65 := 1
  297.                 t66 := 2
  298.                 t67 := 3
  299.                 param 1,t65
  300.                 param 2,t66
  301.                 param 3,t67
  302.                 call foo8
  303. ! CALL STMT...
  304.                 t68 := 1
  305.                 t69 := 2
  306.                 t70 := 3
  307.                 param 1,t68
  308.                 param 2,t69
  309.                 param 3,t70
  310.                 call foo3
  311. ! RETURN...
  312.                 returnVoid 
  313. ! PROCEDURE...
  314.                 procEntry foo4,lexLevel=1,frameSize=0
  315.                 formal 1,a
  316.                 formal 2,b
  317.                 formal 3,c
  318. ! VAR INITIALIZATION...
  319.                 t71 := 400
  320.                 x := t71
  321. ! ASSIGNMENT STMT...
  322.                 t72 := &i
  323.                 t73 := 444
  324.                 *t72 := t73
  325. ! RETURN...
  326.                 returnVoid 
  327. =======================================
  328.