global_variable7.golden 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. ********** source program **********
  2. fn f () -> Int {
  3. return 0;
  4. }
  5. var Int : y = f()
  6. fn main () -> Int {
  7. return y;
  8. }
  9. ********** type checking **********
  10. --- step exp Int --->
  11. --- step exp Int --->
  12. --- step exp Int --->
  13. --- step exp Int --->
  14. --- step exp Int --->
  15. --- step exp Int --->
  16. ********** type checking complete **********
  17. fn f () -> Int {
  18. return 0;
  19. }
  20. var Int : y = f()
  21. fn main () -> Int {
  22. return y;
  23. }
  24. ********** starting execution **********
  25. ********** initializing globals **********
  26. --- step exp () --->
  27. --- step exp f() --->
  28. --- step exp f --->
  29. --- handle value fun<f> with f()<1>(fun<f>,) --->
  30. --- step exp () --->
  31. --- handle value () with f()<2>(fun<f>,(),) --->
  32. pattern_match((), ())
  33. --- step stmt return 0; --->
  34. --- step exp 0 --->
  35. --- handle value 0 with return 0;<1>(0,) --->
  36. --- step exp () --->
  37. ********** calling main function **********
  38. {
  39. stack: top{main()<-1>}
  40. heap: fun<f>, 0, fun<main>,
  41. env: main: fun<main>, y: 0, f: fun<f>,
  42. }
  43. --- step exp main() --->
  44. {
  45. stack: top{main<-1> :: main()<0>}
  46. heap: fun<f>, 0, fun<main>,
  47. env: main: fun<main>, y: 0, f: fun<f>,
  48. }
  49. --- step exp main --->
  50. {
  51. stack: top{fun<main><-1> :: main()<0>}
  52. heap: fun<f>, 0, fun<main>,
  53. env: main: fun<main>, y: 0, f: fun<f>,
  54. }
  55. --- handle value fun<main> with main()<1>(fun<main>,) --->
  56. {
  57. stack: top{()<-1> :: main()<1>(fun<main>,)}
  58. heap: fun<f>, 0, fun<main>,
  59. env: main: fun<main>, y: 0, f: fun<f>,
  60. }
  61. --- step exp () --->
  62. {
  63. stack: top{()<-1> :: main()<1>(fun<main>,)}
  64. heap: fun<f>, 0, fun<main>,
  65. env: main: fun<main>, y: 0, f: fun<f>,
  66. }
  67. --- handle value () with main()<2>(fun<main>,(),) --->
  68. pattern_match((), ())
  69. {
  70. stack: main{return y;<-1>} :: top{}
  71. heap: fun<f>, 0, fun<main>,
  72. env: main: fun<main>, y: 0, f: fun<f>,
  73. }
  74. --- step stmt return y; --->
  75. {
  76. stack: main{y<-1> :: return y;<0>} :: top{}
  77. heap: fun<f>, 0, fun<main>,
  78. env: main: fun<main>, y: 0, f: fun<f>,
  79. }
  80. --- step exp y --->
  81. {
  82. stack: main{0<-1> :: return y;<0>} :: top{}
  83. heap: fun<f>, 0, fun<main>,
  84. env: main: fun<main>, y: 0, f: fun<f>,
  85. }
  86. --- handle value 0 with return y;<1>(0,) --->
  87. {
  88. stack: top{0<-1>}
  89. heap: fun<f>, 0, fun<main>,
  90. env: main: fun<main>, y: 0, f: fun<f>,
  91. }
  92. result: 0