depager 0.2.3 → 0.3.0.b20160729

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/README.en +4 -19
  3. data/README.ja +42 -79
  4. data/bin/depager +42 -45
  5. data/examples/action_pl0d/pl0d.action.dr +421 -0
  6. data/examples/action_pl0d/test.pl0ds +49 -0
  7. data/examples/c89/c89.dr +493 -496
  8. data/examples/c89/test.c89 +10 -10
  9. data/examples/extension/astdf.rb +10 -0
  10. data/examples/extension/atree.dr +55 -0
  11. data/examples/{sample_calc → extension}/calc.atree.dr +42 -43
  12. data/examples/extension/calc.simple_action.dr +33 -0
  13. data/examples/extension/paction.dr +16 -15
  14. data/examples/extension/pactiontest.dr +14 -14
  15. data/examples/extension/simple_action.rb +44 -0
  16. data/examples/pl0d/pl0ds.dr +337 -334
  17. data/examples/pl0d/test.pl0ds +33 -33
  18. data/examples/rie_calc/calc.rie.dr +57 -0
  19. data/examples/rie_calc/test.calc +4 -0
  20. data/examples/rie_dcuse/dcuse.rie.dr +71 -0
  21. data/examples/rie_dcuse/test.dcuse +1 -0
  22. data/examples/rie_pl0/orig_ex/exerrdg.pl0 +44 -0
  23. data/examples/rie_pl0/orig_ex/exerrm.pl0 +19 -0
  24. data/examples/rie_pl0/orig_ex/exerrmre.pl0 +20 -0
  25. data/examples/rie_pl0/orig_ex/exerrtok.pl0 +18 -0
  26. data/examples/rie_pl0/orig_ex/exmdg.pl0 +40 -0
  27. data/examples/rie_pl0/orig_ex/exmdgwwl.pl0 +43 -0
  28. data/examples/rie_pl0/orig_ex/exmrw.pl0 +22 -0
  29. data/examples/rie_pl0/orig_ex/exmwwl.pl0 +18 -0
  30. data/examples/rie_pl0/orig_ex/exnorw.pl0 +17 -0
  31. data/examples/rie_pl0/pl0.rie.dr +450 -0
  32. data/examples/rie_pl0/test.pl0 +10 -0
  33. data/examples/sample_calc/calc.action.dr +33 -33
  34. data/examples/sample_calc/calc.ast.action.dr +65 -66
  35. data/examples/sample_calc/calc.ast.dr +55 -55
  36. data/examples/sample_calc/calc.cst.dr +45 -45
  37. data/examples/sample_calc/calc.dr +43 -43
  38. data/examples/sample_calc/calc.lex.dr +29 -29
  39. data/examples/sample_calc/{calc_prec.nvaction.dr → calc_prec.action.dr} +31 -31
  40. data/examples/slex_test/divreg.slex.dr +29 -29
  41. data/examples/slex_test/ljoin.slex.dr +36 -36
  42. data/examples/slex_test/test.divreg +1 -1
  43. data/examples/slex_test/test.ljoin +3 -3
  44. data/lib/depager.rb +582 -670
  45. data/lib/depager/grammar.rb +256 -291
  46. data/lib/depager/lr.rb +574 -579
  47. data/lib/depager/parser.rb +282 -277
  48. data/lib/depager/ruby/plugins/_rie_debug.rb +35 -0
  49. data/lib/depager/ruby/plugins/action.rb +53 -43
  50. data/lib/depager/ruby/plugins/ast.dr +364 -269
  51. data/lib/depager/ruby/plugins/ast.rb +1367 -1308
  52. data/lib/depager/ruby/plugins/cst.dr +172 -180
  53. data/lib/depager/ruby/plugins/cst.rb +587 -626
  54. data/lib/depager/ruby/plugins/lex.dr +85 -89
  55. data/lib/depager/ruby/plugins/lex.rb +310 -336
  56. data/lib/depager/ruby/plugins/rie.dr +723 -0
  57. data/lib/depager/ruby/plugins/rie.rb +1653 -0
  58. data/lib/depager/ruby/plugins/slex.dr +202 -200
  59. data/lib/depager/ruby/plugins/slex.rb +780 -817
  60. data/lib/depager/ruby/plugins/srp.rb +56 -51
  61. data/lib/depager/ruby/templates/extension_lalr_master.erb +46 -51
  62. data/lib/depager/ruby/templates/extension_lalr_slave.erb +99 -107
  63. data/lib/depager/ruby/templates/single_lalr_parser.erb +115 -117
  64. data/lib/depager/utils.rb +148 -318
  65. data/lib/depager/version.rb +4 -3
  66. metadata +52 -60
  67. data/ChangeLog +0 -16
  68. data/data/depager/pre-setup.rb +0 -3
  69. data/examples/c89/c89.tab.rb +0 -7127
  70. data/examples/pl0d/pl0ds.tab.rb +0 -2698
  71. data/examples/sample_calc/calc.action.tab.rb +0 -457
  72. data/examples/sample_calc/calc.ast.action.tab.rb +0 -749
  73. data/examples/sample_calc/calc.ast.tab.rb +0 -665
  74. data/examples/sample_calc/calc.astdf.dr +0 -54
  75. data/examples/sample_calc/calc.astdf.tab.rb +0 -672
  76. data/examples/sample_calc/calc.atree.tab.rb +0 -451
  77. data/examples/sample_calc/calc.cst.tab.rb +0 -644
  78. data/examples/sample_calc/calc.lex.tab.rb +0 -374
  79. data/examples/sample_calc/calc.nvaction.dr +0 -33
  80. data/examples/sample_calc/calc.nvaction.tab.rb +0 -465
  81. data/examples/sample_calc/calc.tab.rb +0 -365
  82. data/examples/sample_calc/calc_prec.nvaction.tab.rb +0 -431
  83. data/examples/slex_test/divreg.slex.tab.rb +0 -303
  84. data/examples/slex_test/ljoin.slex.tab.rb +0 -370
  85. data/lib/depager/ruby/plugins/_ast_tmpl.rb +0 -73
  86. data/lib/depager/ruby/plugins/astdf.rb +0 -6
  87. data/lib/depager/ruby/plugins/atree.dr +0 -55
  88. data/lib/depager/ruby/plugins/atree.rb +0 -347
  89. data/lib/depager/ruby/plugins/nvaction.rb +0 -19
  90. data/lib/depager/ruby/templates/simple.erb +0 -23
  91. data/setup.rb +0 -1585
@@ -1,2698 +0,0 @@
1
-
2
- begin; require 'rubygems'; rescue Exception; end
3
- require 'depager/parser.rb'
4
-
5
-
6
- module Depager::DecoratorUtils; end
7
- module D4PL0d; end
8
-
9
- class PL0d < Depager::LALR::Basis
10
-
11
-
12
- ### Reduce Table
13
- reduce_table = [
14
- [ -1, 1 ], # ( 0) $start : program
15
- [ 0, 2 ], # ( 1) program : block '.'
16
- [ 1, 2 ], # ( 2) block : opt_decl_list statement
17
- [ 2, 0 ], # ( 3) opt_decl_list :
18
- [ 2, 2 ], # ( 4) opt_decl_list : opt_decl_list decl
19
- [ 4, 3 ], # ( 5) decl : CONST const_init_list ';'
20
- [ 4, 3 ], # ( 6) decl : VAR ident_list ';'
21
- [ 4, 6 ], # ( 7) decl : FUNCTION IDENT '(' ')' block ';'
22
- [ 4, 7 ], # ( 8) decl : FUNCTION IDENT '(' ident_list ')' block ';'
23
- [ 5, 1 ], # ( 9) const_init_list : const_init
24
- [ 5, 3 ], # ( 10) const_init_list : const_init_list ',' const_init
25
- [ 7, 3 ], # ( 11) const_init : IDENT EQ NUMBER
26
- [ 6, 1 ], # ( 12) ident_list : IDENT
27
- [ 6, 3 ], # ( 13) ident_list : ident_list ',' IDENT
28
- [ 3, 0 ], # ( 14) statement :
29
- [ 3, 3 ], # ( 15) statement : IDENT COLOEQ expression
30
- [ 3, 4 ], # ( 16) statement : BEGINN statement opt_state_list END
31
- [ 3, 4 ], # ( 17) statement : IF condition THEN statement
32
- [ 3, 4 ], # ( 18) statement : WHILE condition DO statement
33
- [ 3, 2 ], # ( 19) statement : RETURN expression
34
- [ 3, 2 ], # ( 20) statement : WRITE expression
35
- [ 3, 1 ], # ( 21) statement : WRITELN
36
- [ 9, 0 ], # ( 22) opt_state_list :
37
- [ 9, 3 ], # ( 23) opt_state_list : opt_state_list ';' statement
38
- [ 10, 2 ], # ( 24) condition : ODD expression
39
- [ 10, 3 ], # ( 25) condition : expression EQ expression
40
- [ 10, 3 ], # ( 26) condition : expression NOTEQ expression
41
- [ 10, 3 ], # ( 27) condition : expression LT expression
42
- [ 10, 3 ], # ( 28) condition : expression GT expression
43
- [ 10, 3 ], # ( 29) condition : expression LE expression
44
- [ 10, 3 ], # ( 30) condition : expression GE expression
45
- [ 8, 3 ], # ( 31) expression : expression '+' term
46
- [ 8, 3 ], # ( 32) expression : expression '-' term
47
- [ 8, 1 ], # ( 33) expression : term
48
- [ 8, 2 ], # ( 34) expression : '-' term
49
- [ 11, 3 ], # ( 35) term : term '*' factor
50
- [ 11, 3 ], # ( 36) term : term '/' factor
51
- [ 11, 1 ], # ( 37) term : factor
52
- [ 12, 1 ], # ( 38) factor : IDENT
53
- [ 12, 1 ], # ( 39) factor : NUMBER
54
- [ 12, 3 ], # ( 40) factor : IDENT '(' ')'
55
- [ 12, 4 ], # ( 41) factor : IDENT '(' exp_list ')'
56
- [ 12, 3 ], # ( 42) factor : '(' expression ')'
57
- [ 13, 1 ], # ( 43) exp_list : expression
58
- [ 13, 3 ], # ( 44) exp_list : exp_list ',' expression
59
- ]
60
- ### Extension Params
61
- nparams = {
62
- 'ASTBuilder' => 2,
63
- }
64
- ### Term to Int
65
- t2i = {
66
- nil => 0,
67
- false => 1,
68
- "." => 2,
69
- :CONST => 3,
70
- ";" => 4,
71
- :VAR => 5,
72
- :FUNCTION => 6,
73
- :IDENT => 7,
74
- "(" => 8,
75
- ")" => 9,
76
- "," => 10,
77
- :EQ => 11,
78
- :NUMBER => 12,
79
- :COLOEQ => 13,
80
- :BEGINN => 14,
81
- :END => 15,
82
- :IF => 16,
83
- :THEN => 17,
84
- :WHILE => 18,
85
- :DO => 19,
86
- :RETURN => 20,
87
- :WRITE => 21,
88
- :WRITELN => 22,
89
- :ODD => 23,
90
- :NOTEQ => 24,
91
- :LT => 25,
92
- :GT => 26,
93
- :LE => 27,
94
- :GE => 28,
95
- "+" => 29,
96
- "-" => 30,
97
- "*" => 31,
98
- "/" => 32,
99
- }
100
- ### Int to Term
101
- i2t = [
102
- nil,
103
- false,
104
- ".",
105
- :CONST,
106
- ";",
107
- :VAR,
108
- :FUNCTION,
109
- :IDENT,
110
- "(",
111
- ")",
112
- ",",
113
- :EQ,
114
- :NUMBER,
115
- :COLOEQ,
116
- :BEGINN,
117
- :END,
118
- :IF,
119
- :THEN,
120
- :WHILE,
121
- :DO,
122
- :RETURN,
123
- :WRITE,
124
- :WRITELN,
125
- :ODD,
126
- :NOTEQ,
127
- :LT,
128
- :GT,
129
- :LE,
130
- :GE,
131
- "+",
132
- "-",
133
- "*",
134
- "/",
135
- ]
136
- ### Action Table
137
- action_table = [
138
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
139
- [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
140
- [ nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
141
- [ nil, nil, nil, 8, nil, 12, 16, 7, nil, nil, nil, nil, nil, nil, 9, nil, 13, nil, 6, nil, 10, 11, 14, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
142
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
143
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
144
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
145
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
146
- [ nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
147
- [ nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, nil, 9, nil, 13, nil, 6, nil, 10, 11, 14, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
148
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
149
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
150
- [ nil, nil, nil, nil, nil, nil, nil, 33, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
151
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
152
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
153
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
154
- [ nil, nil, nil, nil, nil, nil, nil, 36, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
155
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
156
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
157
- [ nil, nil, nil, nil, nil, nil, nil, nil, 38, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
158
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
159
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
160
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
161
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 42, 43, ],
162
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
163
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 50, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 45, 47, 48, 49, 51, 44, 46, nil, nil, ],
164
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
165
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
166
- [ nil, nil, nil, nil, 54, nil, nil, nil, nil, nil, 55, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
167
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
168
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
169
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
170
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
171
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
172
- [ nil, nil, nil, nil, 57, nil, nil, nil, nil, nil, 58, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
173
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 59, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
174
- [ nil, nil, nil, nil, nil, nil, nil, nil, 60, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
175
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
176
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, 61, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
177
- [ nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, nil, 9, nil, 13, nil, 6, nil, 10, 11, 14, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
178
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 65, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
179
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 42, 43, ],
180
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
181
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
182
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
183
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
184
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
185
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
186
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
187
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
188
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
189
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
190
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
191
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 76, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
192
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
193
- [ nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
194
- [ nil, nil, nil, nil, 78, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 79, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
195
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
196
- [ nil, nil, nil, nil, nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
197
- [ nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, nil, 9, nil, 13, nil, 6, nil, 10, 11, 14, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
198
- [ nil, nil, nil, nil, nil, nil, nil, 33, nil, 83, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
199
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
200
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 84, 85, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
201
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
202
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
203
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
204
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
205
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
206
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 42, 43, ],
207
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
208
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 42, 43, ],
209
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
210
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
211
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
212
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
213
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
214
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
215
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
216
- [ nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, nil, 9, nil, 13, nil, 6, nil, 10, 11, 14, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
217
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
218
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
219
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
220
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 87, 58, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
221
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
222
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
223
- [ nil, nil, nil, nil, nil, nil, nil, 19, 21, nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, ],
224
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
225
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
226
- [ nil, nil, nil, nil, 91, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
227
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 44, 46, nil, nil, ],
228
- [ nil, nil, nil, nil, 92, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
229
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
230
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
231
- ]
232
- ### Default Reduce Table
233
- defred_table = [
234
- -3,
235
- nil,
236
- nil,
237
- -14,
238
- -1,
239
- -4,
240
- nil,
241
- nil,
242
- nil,
243
- -14,
244
- nil,
245
- nil,
246
- nil,
247
- nil,
248
- -21,
249
- -2,
250
- nil,
251
- -39,
252
- nil,
253
- -38,
254
- nil,
255
- nil,
256
- nil,
257
- -33,
258
- -37,
259
- nil,
260
- nil,
261
- nil,
262
- nil,
263
- -9,
264
- -22,
265
- -19,
266
- -20,
267
- -12,
268
- nil,
269
- nil,
270
- nil,
271
- -24,
272
- nil,
273
- -14,
274
- nil,
275
- -34,
276
- nil,
277
- nil,
278
- nil,
279
- nil,
280
- nil,
281
- nil,
282
- nil,
283
- nil,
284
- nil,
285
- nil,
286
- -15,
287
- nil,
288
- -5,
289
- nil,
290
- nil,
291
- -6,
292
- nil,
293
- -14,
294
- nil,
295
- -40,
296
- nil,
297
- -43,
298
- -18,
299
- -42,
300
- -35,
301
- -36,
302
- -31,
303
- -26,
304
- -32,
305
- -27,
306
- -28,
307
- -29,
308
- -25,
309
- -30,
310
- -11,
311
- -10,
312
- -14,
313
- -16,
314
- -13,
315
- -17,
316
- nil,
317
- -3,
318
- -41,
319
- nil,
320
- -23,
321
- -3,
322
- nil,
323
- -44,
324
- nil,
325
- -7,
326
- -8,
327
- ]
328
- defred_after_shift_table = [
329
- -3,
330
- nil,
331
- nil,
332
- nil,
333
- -1,
334
- -4,
335
- nil,
336
- nil,
337
- nil,
338
- nil,
339
- nil,
340
- nil,
341
- nil,
342
- nil,
343
- -21,
344
- -2,
345
- nil,
346
- -39,
347
- nil,
348
- nil,
349
- nil,
350
- nil,
351
- nil,
352
- nil,
353
- -37,
354
- nil,
355
- nil,
356
- nil,
357
- nil,
358
- -9,
359
- -22,
360
- nil,
361
- nil,
362
- -12,
363
- nil,
364
- nil,
365
- nil,
366
- nil,
367
- nil,
368
- nil,
369
- nil,
370
- nil,
371
- nil,
372
- nil,
373
- nil,
374
- nil,
375
- nil,
376
- nil,
377
- nil,
378
- nil,
379
- nil,
380
- nil,
381
- nil,
382
- nil,
383
- -5,
384
- nil,
385
- nil,
386
- -6,
387
- nil,
388
- nil,
389
- nil,
390
- -40,
391
- nil,
392
- nil,
393
- -18,
394
- -42,
395
- -35,
396
- -36,
397
- nil,
398
- nil,
399
- nil,
400
- nil,
401
- nil,
402
- nil,
403
- nil,
404
- nil,
405
- -11,
406
- -10,
407
- nil,
408
- -16,
409
- -13,
410
- -17,
411
- nil,
412
- -3,
413
- -41,
414
- nil,
415
- -23,
416
- -3,
417
- nil,
418
- nil,
419
- nil,
420
- -7,
421
- -8,
422
- ]
423
- ### Nonterm to Int
424
- nt2i = {
425
- :program => 0,
426
- :block => 1,
427
- :opt_decl_list => 2,
428
- :statement => 3,
429
- :decl => 4,
430
- :const_init_list => 5,
431
- :ident_list => 6,
432
- :const_init => 7,
433
- :expression => 8,
434
- :opt_state_list => 9,
435
- :condition => 10,
436
- :term => 11,
437
- :factor => 12,
438
- :exp_list => 13,
439
- }
440
- ### Int to Nonterm
441
- i2nt = [
442
- :program,
443
- :block,
444
- :opt_decl_list,
445
- :statement,
446
- :decl,
447
- :const_init_list,
448
- :ident_list,
449
- :const_init,
450
- :expression,
451
- :opt_state_list,
452
- :condition,
453
- :term,
454
- :factor,
455
- :exp_list,
456
- ]
457
- ### Goto Table
458
- goto_table = [
459
- [ 1, 2, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
460
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
461
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
462
- [ nil, nil, nil, 15, 5, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
463
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
464
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
465
- [ nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, 20, 23, 24, nil, ],
466
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
467
- [ nil, nil, nil, nil, nil, 28, nil, 29, nil, nil, nil, nil, nil, nil, ],
468
- [ nil, nil, nil, 30, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
469
- [ nil, nil, nil, nil, nil, nil, nil, nil, 31, nil, nil, 23, 24, nil, ],
470
- [ nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, 23, 24, nil, ],
471
- [ nil, nil, nil, nil, nil, nil, 34, nil, nil, nil, nil, nil, nil, nil, ],
472
- [ nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, 35, 23, 24, nil, ],
473
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
474
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
475
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
476
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
477
- [ nil, nil, nil, nil, nil, nil, nil, nil, 37, nil, nil, 23, 24, nil, ],
478
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
479
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
480
- [ nil, nil, nil, nil, nil, nil, nil, nil, 40, nil, nil, 23, 24, nil, ],
481
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, 24, nil, ],
482
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
483
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
484
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
485
- [ nil, nil, nil, nil, nil, nil, nil, nil, 52, nil, nil, 23, 24, nil, ],
486
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
487
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
488
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
489
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 56, nil, nil, nil, nil, ],
490
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
491
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
492
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
493
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
494
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
495
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
496
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
497
- [ nil, nil, nil, nil, nil, nil, nil, nil, 63, nil, nil, 23, 24, 62, ],
498
- [ nil, nil, nil, 64, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
499
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
500
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
501
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 66, nil, ],
502
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 67, nil, ],
503
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 68, 24, nil, ],
504
- [ nil, nil, nil, nil, nil, nil, nil, nil, 69, nil, nil, 23, 24, nil, ],
505
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 70, 24, nil, ],
506
- [ nil, nil, nil, nil, nil, nil, nil, nil, 71, nil, nil, 23, 24, nil, ],
507
- [ nil, nil, nil, nil, nil, nil, nil, nil, 72, nil, nil, 23, 24, nil, ],
508
- [ nil, nil, nil, nil, nil, nil, nil, nil, 73, nil, nil, 23, 24, nil, ],
509
- [ nil, nil, nil, nil, nil, nil, nil, nil, 74, nil, nil, 23, 24, nil, ],
510
- [ nil, nil, nil, nil, nil, nil, nil, nil, 75, nil, nil, 23, 24, nil, ],
511
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
512
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
513
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
514
- [ nil, nil, nil, nil, nil, nil, nil, 77, nil, nil, nil, nil, nil, nil, ],
515
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
516
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
517
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
518
- [ nil, nil, nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
519
- [ nil, nil, nil, nil, nil, nil, 82, nil, nil, nil, nil, nil, nil, nil, ],
520
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
521
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
522
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
523
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
524
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
525
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
526
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
527
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
528
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
529
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
530
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
531
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
532
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
533
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
534
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
535
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
536
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
537
- [ nil, nil, nil, 86, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
538
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
539
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
540
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
541
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
542
- [ nil, 88, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
543
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
544
- [ nil, nil, nil, nil, nil, nil, nil, nil, 89, nil, nil, 23, 24, nil, ],
545
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
546
- [ nil, 90, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
547
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
548
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
549
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
550
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
551
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
552
- ]
553
-
554
-
555
- alias orig_error error
556
- def error
557
- orig_error
558
- warn "current state: #{StateInfo[@stack.last]}"
559
- end
560
-
561
- ### States
562
- StateInfo = [
563
- <<'----------',
564
- I000 =
565
- ( 0) $start : _ program
566
-
567
-
568
- $default reduce using rule 3 (opt_decl_list) [after shift]
569
-
570
- ----------
571
-
572
- <<'----------',
573
- I001 =
574
- ( 0) $start : program _
575
-
576
-
577
-
578
- $end accept
579
-
580
- ----------
581
-
582
- <<'----------',
583
- I002 =
584
- ( 1) program : block _ '.'
585
-
586
- '.' shift, and goto to state 4
587
-
588
-
589
- ----------
590
-
591
- <<'----------',
592
- I003 =
593
- ( 2) block : opt_decl_list _ statement
594
- ( 4) opt_decl_list : opt_decl_list _ decl
595
-
596
- CONST shift, and goto to state 8
597
- VAR shift, and goto to state 12
598
- FUNCTION shift, and goto to state 16
599
- IDENT shift, and goto to state 7
600
- BEGINN shift, and goto to state 9
601
- IF shift, and goto to state 13
602
- WHILE shift, and goto to state 6
603
- RETURN shift, and goto to state 10
604
- WRITE shift, and goto to state 11
605
- WRITELN shift, and goto to state 14
606
-
607
- $default reduce using rule 14 (statement)
608
-
609
- ----------
610
-
611
- <<'----------',
612
- I004 =
613
- ( 1) program : block '.' _
614
-
615
-
616
- $default reduce using rule 1 (program) [after shift]
617
-
618
- ----------
619
-
620
- <<'----------',
621
- I005 =
622
- ( 4) opt_decl_list : opt_decl_list decl _
623
-
624
-
625
- $default reduce using rule 4 (opt_decl_list) [after shift]
626
-
627
- ----------
628
-
629
- <<'----------',
630
- I006 =
631
- ( 18) statement : WHILE _ condition DO statement
632
-
633
- IDENT shift, and goto to state 19
634
- '(' shift, and goto to state 21
635
- NUMBER shift, and goto to state 17
636
- ODD shift, and goto to state 18
637
- '-' shift, and goto to state 22
638
-
639
-
640
- ----------
641
-
642
- <<'----------',
643
- I007 =
644
- ( 15) statement : IDENT _ COLOEQ expression
645
-
646
- COLOEQ shift, and goto to state 26
647
-
648
-
649
- ----------
650
-
651
- <<'----------',
652
- I008 =
653
- ( 5) decl : CONST _ const_init_list ';'
654
-
655
- IDENT shift, and goto to state 27
656
-
657
-
658
- ----------
659
-
660
- <<'----------',
661
- I009 =
662
- ( 16) statement : BEGINN _ statement opt_state_list END
663
-
664
- IDENT shift, and goto to state 7
665
- BEGINN shift, and goto to state 9
666
- IF shift, and goto to state 13
667
- WHILE shift, and goto to state 6
668
- RETURN shift, and goto to state 10
669
- WRITE shift, and goto to state 11
670
- WRITELN shift, and goto to state 14
671
-
672
- $default reduce using rule 14 (statement)
673
-
674
- ----------
675
-
676
- <<'----------',
677
- I010 =
678
- ( 19) statement : RETURN _ expression
679
-
680
- IDENT shift, and goto to state 19
681
- '(' shift, and goto to state 21
682
- NUMBER shift, and goto to state 17
683
- '-' shift, and goto to state 22
684
-
685
-
686
- ----------
687
-
688
- <<'----------',
689
- I011 =
690
- ( 20) statement : WRITE _ expression
691
-
692
- IDENT shift, and goto to state 19
693
- '(' shift, and goto to state 21
694
- NUMBER shift, and goto to state 17
695
- '-' shift, and goto to state 22
696
-
697
-
698
- ----------
699
-
700
- <<'----------',
701
- I012 =
702
- ( 6) decl : VAR _ ident_list ';'
703
-
704
- IDENT shift, and goto to state 33
705
-
706
-
707
- ----------
708
-
709
- <<'----------',
710
- I013 =
711
- ( 17) statement : IF _ condition THEN statement
712
-
713
- IDENT shift, and goto to state 19
714
- '(' shift, and goto to state 21
715
- NUMBER shift, and goto to state 17
716
- ODD shift, and goto to state 18
717
- '-' shift, and goto to state 22
718
-
719
-
720
- ----------
721
-
722
- <<'----------',
723
- I014 =
724
- ( 21) statement : WRITELN _
725
-
726
-
727
- $default reduce using rule 21 (statement) [after shift]
728
-
729
- ----------
730
-
731
- <<'----------',
732
- I015 =
733
- ( 2) block : opt_decl_list statement _
734
-
735
-
736
- $default reduce using rule 2 (block) [after shift]
737
-
738
- ----------
739
-
740
- <<'----------',
741
- I016 =
742
- ( 7) decl : FUNCTION _ IDENT '(' ')' block ';'
743
- ( 8) decl : FUNCTION _ IDENT '(' ident_list ')' block ';'
744
-
745
- IDENT shift, and goto to state 36
746
-
747
-
748
- ----------
749
-
750
- <<'----------',
751
- I017 =
752
- ( 39) factor : NUMBER _
753
-
754
-
755
- $default reduce using rule 39 (factor) [after shift]
756
-
757
- ----------
758
-
759
- <<'----------',
760
- I018 =
761
- ( 24) condition : ODD _ expression
762
-
763
- IDENT shift, and goto to state 19
764
- '(' shift, and goto to state 21
765
- NUMBER shift, and goto to state 17
766
- '-' shift, and goto to state 22
767
-
768
-
769
- ----------
770
-
771
- <<'----------',
772
- I019 =
773
- ( 38) factor : IDENT _
774
- ( 40) factor : IDENT _ '(' ')'
775
- ( 41) factor : IDENT _ '(' exp_list ')'
776
-
777
- '(' shift, and goto to state 38
778
-
779
- $default reduce using rule 38 (factor)
780
-
781
- ----------
782
-
783
- <<'----------',
784
- I020 =
785
- ( 18) statement : WHILE condition _ DO statement
786
-
787
- DO shift, and goto to state 39
788
-
789
-
790
- ----------
791
-
792
- <<'----------',
793
- I021 =
794
- ( 42) factor : '(' _ expression ')'
795
-
796
- IDENT shift, and goto to state 19
797
- '(' shift, and goto to state 21
798
- NUMBER shift, and goto to state 17
799
- '-' shift, and goto to state 22
800
-
801
-
802
- ----------
803
-
804
- <<'----------',
805
- I022 =
806
- ( 34) expression : '-' _ term
807
-
808
- IDENT shift, and goto to state 19
809
- '(' shift, and goto to state 21
810
- NUMBER shift, and goto to state 17
811
-
812
-
813
- ----------
814
-
815
- <<'----------',
816
- I023 =
817
- ( 33) expression : term _
818
- ( 35) term : term _ '*' factor
819
- ( 36) term : term _ '/' factor
820
-
821
- '*' shift, and goto to state 42
822
- '/' shift, and goto to state 43
823
-
824
- $default reduce using rule 33 (expression)
825
-
826
- ----------
827
-
828
- <<'----------',
829
- I024 =
830
- ( 37) term : factor _
831
-
832
-
833
- $default reduce using rule 37 (term) [after shift]
834
-
835
- ----------
836
-
837
- <<'----------',
838
- I025 =
839
- ( 25) condition : expression _ EQ expression
840
- ( 26) condition : expression _ NOTEQ expression
841
- ( 27) condition : expression _ LT expression
842
- ( 28) condition : expression _ GT expression
843
- ( 29) condition : expression _ LE expression
844
- ( 30) condition : expression _ GE expression
845
- ( 31) expression : expression _ '+' term
846
- ( 32) expression : expression _ '-' term
847
-
848
- EQ shift, and goto to state 50
849
- NOTEQ shift, and goto to state 45
850
- LT shift, and goto to state 47
851
- GT shift, and goto to state 48
852
- LE shift, and goto to state 49
853
- GE shift, and goto to state 51
854
- '+' shift, and goto to state 44
855
- '-' shift, and goto to state 46
856
-
857
-
858
- ----------
859
-
860
- <<'----------',
861
- I026 =
862
- ( 15) statement : IDENT COLOEQ _ expression
863
-
864
- IDENT shift, and goto to state 19
865
- '(' shift, and goto to state 21
866
- NUMBER shift, and goto to state 17
867
- '-' shift, and goto to state 22
868
-
869
-
870
- ----------
871
-
872
- <<'----------',
873
- I027 =
874
- ( 11) const_init : IDENT _ EQ NUMBER
875
-
876
- EQ shift, and goto to state 53
877
-
878
-
879
- ----------
880
-
881
- <<'----------',
882
- I028 =
883
- ( 5) decl : CONST const_init_list _ ';'
884
- ( 10) const_init_list : const_init_list _ ',' const_init
885
-
886
- ';' shift, and goto to state 54
887
- ',' shift, and goto to state 55
888
-
889
-
890
- ----------
891
-
892
- <<'----------',
893
- I029 =
894
- ( 9) const_init_list : const_init _
895
-
896
-
897
- $default reduce using rule 9 (const_init_list) [after shift]
898
-
899
- ----------
900
-
901
- <<'----------',
902
- I030 =
903
- ( 16) statement : BEGINN statement _ opt_state_list END
904
-
905
-
906
- $default reduce using rule 22 (opt_state_list) [after shift]
907
-
908
- ----------
909
-
910
- <<'----------',
911
- I031 =
912
- ( 19) statement : RETURN expression _
913
- ( 31) expression : expression _ '+' term
914
- ( 32) expression : expression _ '-' term
915
-
916
- '+' shift, and goto to state 44
917
- '-' shift, and goto to state 46
918
-
919
- $default reduce using rule 19 (statement)
920
-
921
- ----------
922
-
923
- <<'----------',
924
- I032 =
925
- ( 20) statement : WRITE expression _
926
- ( 31) expression : expression _ '+' term
927
- ( 32) expression : expression _ '-' term
928
-
929
- '+' shift, and goto to state 44
930
- '-' shift, and goto to state 46
931
-
932
- $default reduce using rule 20 (statement)
933
-
934
- ----------
935
-
936
- <<'----------',
937
- I033 =
938
- ( 12) ident_list : IDENT _
939
-
940
-
941
- $default reduce using rule 12 (ident_list) [after shift]
942
-
943
- ----------
944
-
945
- <<'----------',
946
- I034 =
947
- ( 6) decl : VAR ident_list _ ';'
948
- ( 13) ident_list : ident_list _ ',' IDENT
949
-
950
- ';' shift, and goto to state 57
951
- ',' shift, and goto to state 58
952
-
953
-
954
- ----------
955
-
956
- <<'----------',
957
- I035 =
958
- ( 17) statement : IF condition _ THEN statement
959
-
960
- THEN shift, and goto to state 59
961
-
962
-
963
- ----------
964
-
965
- <<'----------',
966
- I036 =
967
- ( 7) decl : FUNCTION IDENT _ '(' ')' block ';'
968
- ( 8) decl : FUNCTION IDENT _ '(' ident_list ')' block ';'
969
-
970
- '(' shift, and goto to state 60
971
-
972
-
973
- ----------
974
-
975
- <<'----------',
976
- I037 =
977
- ( 24) condition : ODD expression _
978
- ( 31) expression : expression _ '+' term
979
- ( 32) expression : expression _ '-' term
980
-
981
- '+' shift, and goto to state 44
982
- '-' shift, and goto to state 46
983
-
984
- $default reduce using rule 24 (condition)
985
-
986
- ----------
987
-
988
- <<'----------',
989
- I038 =
990
- ( 40) factor : IDENT '(' _ ')'
991
- ( 41) factor : IDENT '(' _ exp_list ')'
992
-
993
- IDENT shift, and goto to state 19
994
- '(' shift, and goto to state 21
995
- ')' shift, and goto to state 61
996
- NUMBER shift, and goto to state 17
997
- '-' shift, and goto to state 22
998
-
999
-
1000
- ----------
1001
-
1002
- <<'----------',
1003
- I039 =
1004
- ( 18) statement : WHILE condition DO _ statement
1005
-
1006
- IDENT shift, and goto to state 7
1007
- BEGINN shift, and goto to state 9
1008
- IF shift, and goto to state 13
1009
- WHILE shift, and goto to state 6
1010
- RETURN shift, and goto to state 10
1011
- WRITE shift, and goto to state 11
1012
- WRITELN shift, and goto to state 14
1013
-
1014
- $default reduce using rule 14 (statement)
1015
-
1016
- ----------
1017
-
1018
- <<'----------',
1019
- I040 =
1020
- ( 42) factor : '(' expression _ ')'
1021
- ( 31) expression : expression _ '+' term
1022
- ( 32) expression : expression _ '-' term
1023
-
1024
- ')' shift, and goto to state 65
1025
- '+' shift, and goto to state 44
1026
- '-' shift, and goto to state 46
1027
-
1028
-
1029
- ----------
1030
-
1031
- <<'----------',
1032
- I041 =
1033
- ( 34) expression : '-' term _
1034
- ( 35) term : term _ '*' factor
1035
- ( 36) term : term _ '/' factor
1036
-
1037
- '*' shift, and goto to state 42
1038
- '/' shift, and goto to state 43
1039
-
1040
- $default reduce using rule 34 (expression)
1041
-
1042
- ----------
1043
-
1044
- <<'----------',
1045
- I042 =
1046
- ( 35) term : term '*' _ factor
1047
-
1048
- IDENT shift, and goto to state 19
1049
- '(' shift, and goto to state 21
1050
- NUMBER shift, and goto to state 17
1051
-
1052
-
1053
- ----------
1054
-
1055
- <<'----------',
1056
- I043 =
1057
- ( 36) term : term '/' _ factor
1058
-
1059
- IDENT shift, and goto to state 19
1060
- '(' shift, and goto to state 21
1061
- NUMBER shift, and goto to state 17
1062
-
1063
-
1064
- ----------
1065
-
1066
- <<'----------',
1067
- I044 =
1068
- ( 31) expression : expression '+' _ term
1069
-
1070
- IDENT shift, and goto to state 19
1071
- '(' shift, and goto to state 21
1072
- NUMBER shift, and goto to state 17
1073
-
1074
-
1075
- ----------
1076
-
1077
- <<'----------',
1078
- I045 =
1079
- ( 26) condition : expression NOTEQ _ expression
1080
-
1081
- IDENT shift, and goto to state 19
1082
- '(' shift, and goto to state 21
1083
- NUMBER shift, and goto to state 17
1084
- '-' shift, and goto to state 22
1085
-
1086
-
1087
- ----------
1088
-
1089
- <<'----------',
1090
- I046 =
1091
- ( 32) expression : expression '-' _ term
1092
-
1093
- IDENT shift, and goto to state 19
1094
- '(' shift, and goto to state 21
1095
- NUMBER shift, and goto to state 17
1096
-
1097
-
1098
- ----------
1099
-
1100
- <<'----------',
1101
- I047 =
1102
- ( 27) condition : expression LT _ expression
1103
-
1104
- IDENT shift, and goto to state 19
1105
- '(' shift, and goto to state 21
1106
- NUMBER shift, and goto to state 17
1107
- '-' shift, and goto to state 22
1108
-
1109
-
1110
- ----------
1111
-
1112
- <<'----------',
1113
- I048 =
1114
- ( 28) condition : expression GT _ expression
1115
-
1116
- IDENT shift, and goto to state 19
1117
- '(' shift, and goto to state 21
1118
- NUMBER shift, and goto to state 17
1119
- '-' shift, and goto to state 22
1120
-
1121
-
1122
- ----------
1123
-
1124
- <<'----------',
1125
- I049 =
1126
- ( 29) condition : expression LE _ expression
1127
-
1128
- IDENT shift, and goto to state 19
1129
- '(' shift, and goto to state 21
1130
- NUMBER shift, and goto to state 17
1131
- '-' shift, and goto to state 22
1132
-
1133
-
1134
- ----------
1135
-
1136
- <<'----------',
1137
- I050 =
1138
- ( 25) condition : expression EQ _ expression
1139
-
1140
- IDENT shift, and goto to state 19
1141
- '(' shift, and goto to state 21
1142
- NUMBER shift, and goto to state 17
1143
- '-' shift, and goto to state 22
1144
-
1145
-
1146
- ----------
1147
-
1148
- <<'----------',
1149
- I051 =
1150
- ( 30) condition : expression GE _ expression
1151
-
1152
- IDENT shift, and goto to state 19
1153
- '(' shift, and goto to state 21
1154
- NUMBER shift, and goto to state 17
1155
- '-' shift, and goto to state 22
1156
-
1157
-
1158
- ----------
1159
-
1160
- <<'----------',
1161
- I052 =
1162
- ( 15) statement : IDENT COLOEQ expression _
1163
- ( 31) expression : expression _ '+' term
1164
- ( 32) expression : expression _ '-' term
1165
-
1166
- '+' shift, and goto to state 44
1167
- '-' shift, and goto to state 46
1168
-
1169
- $default reduce using rule 15 (statement)
1170
-
1171
- ----------
1172
-
1173
- <<'----------',
1174
- I053 =
1175
- ( 11) const_init : IDENT EQ _ NUMBER
1176
-
1177
- NUMBER shift, and goto to state 76
1178
-
1179
-
1180
- ----------
1181
-
1182
- <<'----------',
1183
- I054 =
1184
- ( 5) decl : CONST const_init_list ';' _
1185
-
1186
-
1187
- $default reduce using rule 5 (decl) [after shift]
1188
-
1189
- ----------
1190
-
1191
- <<'----------',
1192
- I055 =
1193
- ( 10) const_init_list : const_init_list ',' _ const_init
1194
-
1195
- IDENT shift, and goto to state 27
1196
-
1197
-
1198
- ----------
1199
-
1200
- <<'----------',
1201
- I056 =
1202
- ( 16) statement : BEGINN statement opt_state_list _ END
1203
- ( 23) opt_state_list : opt_state_list _ ';' statement
1204
-
1205
- ';' shift, and goto to state 78
1206
- END shift, and goto to state 79
1207
-
1208
-
1209
- ----------
1210
-
1211
- <<'----------',
1212
- I057 =
1213
- ( 6) decl : VAR ident_list ';' _
1214
-
1215
-
1216
- $default reduce using rule 6 (decl) [after shift]
1217
-
1218
- ----------
1219
-
1220
- <<'----------',
1221
- I058 =
1222
- ( 13) ident_list : ident_list ',' _ IDENT
1223
-
1224
- IDENT shift, and goto to state 80
1225
-
1226
-
1227
- ----------
1228
-
1229
- <<'----------',
1230
- I059 =
1231
- ( 17) statement : IF condition THEN _ statement
1232
-
1233
- IDENT shift, and goto to state 7
1234
- BEGINN shift, and goto to state 9
1235
- IF shift, and goto to state 13
1236
- WHILE shift, and goto to state 6
1237
- RETURN shift, and goto to state 10
1238
- WRITE shift, and goto to state 11
1239
- WRITELN shift, and goto to state 14
1240
-
1241
- $default reduce using rule 14 (statement)
1242
-
1243
- ----------
1244
-
1245
- <<'----------',
1246
- I060 =
1247
- ( 7) decl : FUNCTION IDENT '(' _ ')' block ';'
1248
- ( 8) decl : FUNCTION IDENT '(' _ ident_list ')' block ';'
1249
-
1250
- IDENT shift, and goto to state 33
1251
- ')' shift, and goto to state 83
1252
-
1253
-
1254
- ----------
1255
-
1256
- <<'----------',
1257
- I061 =
1258
- ( 40) factor : IDENT '(' ')' _
1259
-
1260
-
1261
- $default reduce using rule 40 (factor) [after shift]
1262
-
1263
- ----------
1264
-
1265
- <<'----------',
1266
- I062 =
1267
- ( 41) factor : IDENT '(' exp_list _ ')'
1268
- ( 44) exp_list : exp_list _ ',' expression
1269
-
1270
- ')' shift, and goto to state 84
1271
- ',' shift, and goto to state 85
1272
-
1273
-
1274
- ----------
1275
-
1276
- <<'----------',
1277
- I063 =
1278
- ( 43) exp_list : expression _
1279
- ( 31) expression : expression _ '+' term
1280
- ( 32) expression : expression _ '-' term
1281
-
1282
- '+' shift, and goto to state 44
1283
- '-' shift, and goto to state 46
1284
-
1285
- $default reduce using rule 43 (exp_list)
1286
-
1287
- ----------
1288
-
1289
- <<'----------',
1290
- I064 =
1291
- ( 18) statement : WHILE condition DO statement _
1292
-
1293
-
1294
- $default reduce using rule 18 (statement) [after shift]
1295
-
1296
- ----------
1297
-
1298
- <<'----------',
1299
- I065 =
1300
- ( 42) factor : '(' expression ')' _
1301
-
1302
-
1303
- $default reduce using rule 42 (factor) [after shift]
1304
-
1305
- ----------
1306
-
1307
- <<'----------',
1308
- I066 =
1309
- ( 35) term : term '*' factor _
1310
-
1311
-
1312
- $default reduce using rule 35 (term) [after shift]
1313
-
1314
- ----------
1315
-
1316
- <<'----------',
1317
- I067 =
1318
- ( 36) term : term '/' factor _
1319
-
1320
-
1321
- $default reduce using rule 36 (term) [after shift]
1322
-
1323
- ----------
1324
-
1325
- <<'----------',
1326
- I068 =
1327
- ( 31) expression : expression '+' term _
1328
- ( 35) term : term _ '*' factor
1329
- ( 36) term : term _ '/' factor
1330
-
1331
- '*' shift, and goto to state 42
1332
- '/' shift, and goto to state 43
1333
-
1334
- $default reduce using rule 31 (expression)
1335
-
1336
- ----------
1337
-
1338
- <<'----------',
1339
- I069 =
1340
- ( 26) condition : expression NOTEQ expression _
1341
- ( 31) expression : expression _ '+' term
1342
- ( 32) expression : expression _ '-' term
1343
-
1344
- '+' shift, and goto to state 44
1345
- '-' shift, and goto to state 46
1346
-
1347
- $default reduce using rule 26 (condition)
1348
-
1349
- ----------
1350
-
1351
- <<'----------',
1352
- I070 =
1353
- ( 32) expression : expression '-' term _
1354
- ( 35) term : term _ '*' factor
1355
- ( 36) term : term _ '/' factor
1356
-
1357
- '*' shift, and goto to state 42
1358
- '/' shift, and goto to state 43
1359
-
1360
- $default reduce using rule 32 (expression)
1361
-
1362
- ----------
1363
-
1364
- <<'----------',
1365
- I071 =
1366
- ( 27) condition : expression LT expression _
1367
- ( 31) expression : expression _ '+' term
1368
- ( 32) expression : expression _ '-' term
1369
-
1370
- '+' shift, and goto to state 44
1371
- '-' shift, and goto to state 46
1372
-
1373
- $default reduce using rule 27 (condition)
1374
-
1375
- ----------
1376
-
1377
- <<'----------',
1378
- I072 =
1379
- ( 28) condition : expression GT expression _
1380
- ( 31) expression : expression _ '+' term
1381
- ( 32) expression : expression _ '-' term
1382
-
1383
- '+' shift, and goto to state 44
1384
- '-' shift, and goto to state 46
1385
-
1386
- $default reduce using rule 28 (condition)
1387
-
1388
- ----------
1389
-
1390
- <<'----------',
1391
- I073 =
1392
- ( 29) condition : expression LE expression _
1393
- ( 31) expression : expression _ '+' term
1394
- ( 32) expression : expression _ '-' term
1395
-
1396
- '+' shift, and goto to state 44
1397
- '-' shift, and goto to state 46
1398
-
1399
- $default reduce using rule 29 (condition)
1400
-
1401
- ----------
1402
-
1403
- <<'----------',
1404
- I074 =
1405
- ( 25) condition : expression EQ expression _
1406
- ( 31) expression : expression _ '+' term
1407
- ( 32) expression : expression _ '-' term
1408
-
1409
- '+' shift, and goto to state 44
1410
- '-' shift, and goto to state 46
1411
-
1412
- $default reduce using rule 25 (condition)
1413
-
1414
- ----------
1415
-
1416
- <<'----------',
1417
- I075 =
1418
- ( 30) condition : expression GE expression _
1419
- ( 31) expression : expression _ '+' term
1420
- ( 32) expression : expression _ '-' term
1421
-
1422
- '+' shift, and goto to state 44
1423
- '-' shift, and goto to state 46
1424
-
1425
- $default reduce using rule 30 (condition)
1426
-
1427
- ----------
1428
-
1429
- <<'----------',
1430
- I076 =
1431
- ( 11) const_init : IDENT EQ NUMBER _
1432
-
1433
-
1434
- $default reduce using rule 11 (const_init) [after shift]
1435
-
1436
- ----------
1437
-
1438
- <<'----------',
1439
- I077 =
1440
- ( 10) const_init_list : const_init_list ',' const_init _
1441
-
1442
-
1443
- $default reduce using rule 10 (const_init_list) [after shift]
1444
-
1445
- ----------
1446
-
1447
- <<'----------',
1448
- I078 =
1449
- ( 23) opt_state_list : opt_state_list ';' _ statement
1450
-
1451
- IDENT shift, and goto to state 7
1452
- BEGINN shift, and goto to state 9
1453
- IF shift, and goto to state 13
1454
- WHILE shift, and goto to state 6
1455
- RETURN shift, and goto to state 10
1456
- WRITE shift, and goto to state 11
1457
- WRITELN shift, and goto to state 14
1458
-
1459
- $default reduce using rule 14 (statement)
1460
-
1461
- ----------
1462
-
1463
- <<'----------',
1464
- I079 =
1465
- ( 16) statement : BEGINN statement opt_state_list END _
1466
-
1467
-
1468
- $default reduce using rule 16 (statement) [after shift]
1469
-
1470
- ----------
1471
-
1472
- <<'----------',
1473
- I080 =
1474
- ( 13) ident_list : ident_list ',' IDENT _
1475
-
1476
-
1477
- $default reduce using rule 13 (ident_list) [after shift]
1478
-
1479
- ----------
1480
-
1481
- <<'----------',
1482
- I081 =
1483
- ( 17) statement : IF condition THEN statement _
1484
-
1485
-
1486
- $default reduce using rule 17 (statement) [after shift]
1487
-
1488
- ----------
1489
-
1490
- <<'----------',
1491
- I082 =
1492
- ( 8) decl : FUNCTION IDENT '(' ident_list _ ')' block ';'
1493
- ( 13) ident_list : ident_list _ ',' IDENT
1494
-
1495
- ')' shift, and goto to state 87
1496
- ',' shift, and goto to state 58
1497
-
1498
-
1499
- ----------
1500
-
1501
- <<'----------',
1502
- I083 =
1503
- ( 7) decl : FUNCTION IDENT '(' ')' _ block ';'
1504
-
1505
-
1506
- $default reduce using rule 3 (opt_decl_list) [after shift]
1507
-
1508
- ----------
1509
-
1510
- <<'----------',
1511
- I084 =
1512
- ( 41) factor : IDENT '(' exp_list ')' _
1513
-
1514
-
1515
- $default reduce using rule 41 (factor) [after shift]
1516
-
1517
- ----------
1518
-
1519
- <<'----------',
1520
- I085 =
1521
- ( 44) exp_list : exp_list ',' _ expression
1522
-
1523
- IDENT shift, and goto to state 19
1524
- '(' shift, and goto to state 21
1525
- NUMBER shift, and goto to state 17
1526
- '-' shift, and goto to state 22
1527
-
1528
-
1529
- ----------
1530
-
1531
- <<'----------',
1532
- I086 =
1533
- ( 23) opt_state_list : opt_state_list ';' statement _
1534
-
1535
-
1536
- $default reduce using rule 23 (opt_state_list) [after shift]
1537
-
1538
- ----------
1539
-
1540
- <<'----------',
1541
- I087 =
1542
- ( 8) decl : FUNCTION IDENT '(' ident_list ')' _ block ';'
1543
-
1544
-
1545
- $default reduce using rule 3 (opt_decl_list) [after shift]
1546
-
1547
- ----------
1548
-
1549
- <<'----------',
1550
- I088 =
1551
- ( 7) decl : FUNCTION IDENT '(' ')' block _ ';'
1552
-
1553
- ';' shift, and goto to state 91
1554
-
1555
-
1556
- ----------
1557
-
1558
- <<'----------',
1559
- I089 =
1560
- ( 44) exp_list : exp_list ',' expression _
1561
- ( 31) expression : expression _ '+' term
1562
- ( 32) expression : expression _ '-' term
1563
-
1564
- '+' shift, and goto to state 44
1565
- '-' shift, and goto to state 46
1566
-
1567
- $default reduce using rule 44 (exp_list)
1568
-
1569
- ----------
1570
-
1571
- <<'----------',
1572
- I090 =
1573
- ( 8) decl : FUNCTION IDENT '(' ident_list ')' block _ ';'
1574
-
1575
- ';' shift, and goto to state 92
1576
-
1577
-
1578
- ----------
1579
-
1580
- <<'----------',
1581
- I091 =
1582
- ( 7) decl : FUNCTION IDENT '(' ')' block ';' _
1583
-
1584
-
1585
- $default reduce using rule 7 (decl) [after shift]
1586
-
1587
- ----------
1588
-
1589
- <<'----------',
1590
- I092 =
1591
- ( 8) decl : FUNCTION IDENT '(' ident_list ')' block ';' _
1592
-
1593
-
1594
- $default reduce using rule 8 (decl) [after shift]
1595
-
1596
- ----------
1597
- ]
1598
-
1599
-
1600
- Tables = [ reduce_table, nparams, action_table,
1601
- defred_table, defred_after_shift_table, goto_table,
1602
- t2i, i2t, nt2i, i2nt ]
1603
-
1604
- def self.createDecoratedParser
1605
- D4PL0d::ASTBuilder.new(PL0d.new())
1606
- end
1607
-
1608
- ### Inner Code
1609
-
1610
- def lex
1611
- begin
1612
- until @line.empty?
1613
- case @line
1614
-
1615
- when /\A\s+/
1616
- @oldline = @line; @line = $'
1617
-
1618
-
1619
-
1620
- when /\A:=/
1621
- @oldline = @line; @line = $'
1622
- yield token(:COLOEQ, $&)
1623
-
1624
-
1625
- when /\A<>/
1626
- @oldline = @line; @line = $'
1627
- yield token(:NOTEQ, $&)
1628
-
1629
-
1630
- when /\A<=/
1631
- @oldline = @line; @line = $'
1632
- yield token(:LE, $&)
1633
-
1634
-
1635
- when /\A>=/
1636
- @oldline = @line; @line = $'
1637
- yield token(:GE, $&)
1638
-
1639
-
1640
- when /\A=/
1641
- @oldline = @line; @line = $'
1642
- yield token(:EQ, $&)
1643
-
1644
-
1645
- when /\A</
1646
- @oldline = @line; @line = $'
1647
- yield token(:LT, $&)
1648
-
1649
-
1650
- when /\A>/
1651
- @oldline = @line; @line = $'
1652
- yield token(:GT, $&)
1653
-
1654
-
1655
- when /\Aconst/
1656
- @oldline = @line; @line = $'
1657
- yield token(:CONST, $&)
1658
-
1659
-
1660
- when /\Avar/
1661
- @oldline = @line; @line = $'
1662
- yield token(:VAR, $&)
1663
-
1664
-
1665
- when /\Afunction/
1666
- @oldline = @line; @line = $'
1667
- yield token(:FUNCTION, $&)
1668
-
1669
-
1670
- when /\Abegin/
1671
- @oldline = @line; @line = $'
1672
- yield token(:BEGINN, $&)
1673
-
1674
-
1675
- when /\Aend/
1676
- @oldline = @line; @line = $'
1677
- yield token(:END, $&)
1678
-
1679
-
1680
- when /\Aif/
1681
- @oldline = @line; @line = $'
1682
- yield token(:IF, $&)
1683
-
1684
-
1685
- when /\Athen/
1686
- @oldline = @line; @line = $'
1687
- yield token(:THEN, $&)
1688
-
1689
-
1690
- when /\Awhile/
1691
- @oldline = @line; @line = $'
1692
- yield token(:WHILE, $&)
1693
-
1694
-
1695
- when /\Ado/
1696
- @oldline = @line; @line = $'
1697
- yield token(:DO, $&)
1698
-
1699
-
1700
- when /\Areturn/
1701
- @oldline = @line; @line = $'
1702
- yield token(:RETURN, $&)
1703
-
1704
-
1705
- when /\Awriteln/
1706
- @oldline = @line; @line = $'
1707
- yield token(:WRITELN, $&)
1708
-
1709
-
1710
- when /\Awrite/
1711
- @oldline = @line; @line = $'
1712
- yield token(:WRITE, $&)
1713
-
1714
-
1715
- when /\Aodd/
1716
- @oldline = @line; @line = $'
1717
- yield token(:ODD, $&)
1718
-
1719
-
1720
- when /\A[a-zA-Z][a-zA-Z0-9_]*/
1721
- @oldline = @line; @line = $'
1722
- yield token(:IDENT, $&)
1723
-
1724
-
1725
- when /\A[0-9]+/
1726
- @oldline = @line; @line = $'
1727
- yield token(:NUMBER, $&.to_i)
1728
-
1729
-
1730
- when /\A./
1731
- @oldline = @line; @line = $'
1732
- yield token($&, $&)
1733
-
1734
-
1735
- else
1736
- raise RuntimeError, "must not happen #{@line}"
1737
- end
1738
- end
1739
- end while @line0 = @line = getline
1740
- yield nil, nil
1741
- end
1742
-
1743
- end
1744
-
1745
- ### Outer Code
1746
- class Node
1747
- attr_accessor :lineno
1748
- attr_accessor :value
1749
-
1750
- def initialize
1751
- @value = nil
1752
-
1753
- end
1754
-
1755
- def self.[] lineno, *args
1756
- self.new lineno, *args
1757
- end
1758
- def accept v
1759
- end
1760
- end
1761
- class NodeList < Node
1762
- attr_accessor :lineno
1763
- def initialize(lineno, lst=[])
1764
- @lineno = lineno
1765
- @lst = lst.to_a.select{|i| ! i.is_a?(NilNode)}
1766
- end
1767
-
1768
- def all_value
1769
- @lst.map{|i| i.value}
1770
- end
1771
-
1772
- def size
1773
- @lst.size
1774
- end
1775
- alias length size
1776
- def push(i)
1777
- @lst.push i unless i.is_a? NilNode
1778
- self
1779
- end
1780
- def concat(i)
1781
- @lst.concat i
1782
- self
1783
- end
1784
- def to_ary()
1785
- @lst
1786
- end
1787
- alias to_a to_ary
1788
- alias list to_ary
1789
- def accept(v)
1790
- @lst.each{|i| i.accept(v) }
1791
- end
1792
- end
1793
- class NilNode
1794
- attr_accessor :lineno
1795
- attr_accessor :value
1796
- def initialize(lineno, *args)
1797
- @lineno = lineno
1798
- end
1799
- def accept v
1800
- end
1801
- end
1802
- class Node_program < Node
1803
- attr_accessor :block
1804
- attr_accessor
1805
- def initialize lineno, block
1806
- super()
1807
- @lineno = lineno
1808
- @lineno = lineno
1809
- @block = block
1810
-
1811
- end
1812
- def accept v
1813
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1814
-
1815
- v.visit_Node_program(self)
1816
- self
1817
- end
1818
- end
1819
- class Node_block < Node
1820
- attr_accessor :decls, :stmt
1821
- attr_accessor
1822
- def initialize lineno, decls, stmt
1823
- super()
1824
- @lineno = lineno
1825
- @lineno = lineno
1826
- @decls = decls
1827
- @stmt = stmt
1828
-
1829
- end
1830
- def accept v
1831
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1832
-
1833
- v.visit_Node_block(self)
1834
- self
1835
- end
1836
- end
1837
- class Node_var_decl < Node
1838
- attr_accessor :idents
1839
- attr_accessor :idents
1840
- def initialize lineno, idents
1841
- super()
1842
- @lineno = lineno
1843
- @lineno = lineno
1844
- @idents = idents
1845
-
1846
- end
1847
- def accept v
1848
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1849
-
1850
- v.visit_Node_var_decl(self)
1851
- self
1852
- end
1853
- end
1854
- class Node_const_decl < Node
1855
- attr_accessor :const_inits
1856
- attr_accessor
1857
- def initialize lineno, const_inits
1858
- super()
1859
- @lineno = lineno
1860
- @lineno = lineno
1861
- @const_inits = const_inits
1862
-
1863
- end
1864
- def accept v
1865
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1866
-
1867
- v.visit_Node_const_decl(self)
1868
- self
1869
- end
1870
- end
1871
- class Node_const_init < Node
1872
- attr_accessor :ident, :number
1873
- attr_accessor :ident, :number
1874
- def initialize lineno, ident, number
1875
- super()
1876
- @lineno = lineno
1877
- @lineno = lineno
1878
- @ident = ident
1879
- @number = number
1880
-
1881
- end
1882
- def accept v
1883
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1884
-
1885
- v.visit_Node_const_init(self)
1886
- self
1887
- end
1888
- end
1889
- class Node_func_decl < Node
1890
- attr_accessor :ident, :params, :block
1891
- attr_accessor :ident, :params, :block
1892
- def initialize lineno, ident, params, block
1893
- super()
1894
- @lineno = lineno
1895
- @lineno = lineno
1896
- @ident = ident
1897
- @params = params
1898
- @block = block
1899
-
1900
- end
1901
- def accept v
1902
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1903
-
1904
- v.visit_Node_func_decl(self)
1905
- self
1906
- end
1907
- end
1908
- class Node_nop_stmt < Node
1909
- attr_accessor :nop
1910
- attr_accessor :nop
1911
- def initialize lineno, nop
1912
- super()
1913
- @lineno = lineno
1914
- @lineno = lineno
1915
- @nop = nop
1916
-
1917
- end
1918
- def accept v
1919
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1920
-
1921
- v.visit_Node_nop_stmt(self)
1922
- self
1923
- end
1924
- end
1925
- class Node_assign_stmt < Node
1926
- attr_accessor :ident, :expr
1927
- attr_accessor :ident
1928
- def initialize lineno, ident, expr
1929
- super()
1930
- @lineno = lineno
1931
- @lineno = lineno
1932
- @ident = ident
1933
- @expr = expr
1934
-
1935
- end
1936
- def accept v
1937
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1938
-
1939
- v.visit_Node_assign_stmt(self)
1940
- self
1941
- end
1942
- end
1943
- class Node_begin_stmt < Node
1944
- attr_accessor :stmt, :stmts
1945
- attr_accessor
1946
- def initialize lineno, stmt, stmts
1947
- super()
1948
- @lineno = lineno
1949
- @lineno = lineno
1950
- @stmt = stmt
1951
- @stmts = stmts
1952
-
1953
- end
1954
- def accept v
1955
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1956
-
1957
- v.visit_Node_begin_stmt(self)
1958
- self
1959
- end
1960
- end
1961
- class Node_if_stmt < Node
1962
- attr_accessor :cond, :stmt
1963
- attr_accessor
1964
- def initialize lineno, cond, stmt
1965
- super()
1966
- @lineno = lineno
1967
- @lineno = lineno
1968
- @cond = cond
1969
- @stmt = stmt
1970
-
1971
- end
1972
- def accept v
1973
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1974
-
1975
- v.visit_Node_if_stmt(self)
1976
- self
1977
- end
1978
- end
1979
- class Node_while_stmt < Node
1980
- attr_accessor :cond, :stmt
1981
- attr_accessor
1982
- def initialize lineno, cond, stmt
1983
- super()
1984
- @lineno = lineno
1985
- @lineno = lineno
1986
- @cond = cond
1987
- @stmt = stmt
1988
-
1989
- end
1990
- def accept v
1991
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1992
-
1993
- v.visit_Node_while_stmt(self)
1994
- self
1995
- end
1996
- end
1997
- class Node_return_stmt < Node
1998
- attr_accessor :expr
1999
- attr_accessor
2000
- def initialize lineno, expr
2001
- super()
2002
- @lineno = lineno
2003
- @lineno = lineno
2004
- @expr = expr
2005
-
2006
- end
2007
- def accept v
2008
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
2009
-
2010
- v.visit_Node_return_stmt(self)
2011
- self
2012
- end
2013
- end
2014
- class Node_apply < Node
2015
- attr_accessor :ident, :args
2016
- attr_accessor :ident, :args
2017
- def initialize lineno, ident, args
2018
- super()
2019
- @lineno = lineno
2020
- @lineno = lineno
2021
- @ident = ident
2022
- @args = args
2023
-
2024
- end
2025
- def accept v
2026
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
2027
-
2028
- v.visit_Node_apply(self)
2029
- self
2030
- end
2031
- end
2032
- class Node_refv < Node
2033
- attr_accessor :ident
2034
- attr_accessor :ident
2035
- def initialize lineno, ident
2036
- super()
2037
- @lineno = lineno
2038
- @lineno = lineno
2039
- @ident = ident
2040
-
2041
- end
2042
- def accept v
2043
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
2044
-
2045
- v.visit_Node_refv(self)
2046
- self
2047
- end
2048
- end
2049
- class Node_number < Node
2050
- attr_accessor :n
2051
- attr_accessor :n
2052
- def initialize lineno, n
2053
- super()
2054
- @lineno = lineno
2055
- @lineno = lineno
2056
- @n = n
2057
-
2058
- end
2059
- def accept v
2060
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
2061
-
2062
- v.visit_Node_number(self)
2063
- self
2064
- end
2065
- end
2066
-
2067
- class Visitor
2068
- def visit node
2069
- node.accept(self)
2070
- end
2071
-
2072
- module_eval <<-'.,.,122745803753111.,.,', 'pl0d/pl0ds.dr', 38
2073
-
2074
- STEntry = Struct.new(:kind, :narg, :value)
2075
- def initialize
2076
- @global = {
2077
- '+' => STEntry.new(:FUNC, 2, proc{|a| a[0] + a[1] }),
2078
- '-' => STEntry.new(:FUNC, 2, proc{|a| a[0] - a[1] }),
2079
- '*' => STEntry.new(:FUNC, 2, proc{|a| a[0] * a[1] }),
2080
- '/' => STEntry.new(:FUNC, 2, proc{|a| a[0] / a[1] }),
2081
- '=' => STEntry.new(:FUNC, 2, proc{|a| a[0] == a[1] ? 1 : 0}),
2082
- '<>' => STEntry.new(:FUNC, 2, proc{|a| a[0] != a[1] ? 1 : 0}),
2083
- '<' => STEntry.new(:FUNC, 2, proc{|a| a[0] < a[1] ? 1 : 0}),
2084
- '>' => STEntry.new(:FUNC, 2, proc{|a| a[0] > a[1] ? 1 : 0}),
2085
- '<=' => STEntry.new(:FUNC, 2, proc{|a| a[0] <= a[1] ? 1 : 0}),
2086
- '>=' => STEntry.new(:FUNC, 2, proc{|a| a[0] >= a[1] ? 1 : 0}),
2087
- 'odd'=> STEntry.new(:FUNC, 1, proc{|a| a[0] & 1 }),
2088
-
2089
- 'write' => STEntry.new(:FUNC, 1, proc{|a| print "#{a[0]} "; 1}),
2090
- 'writeln' => STEntry.new(:FUNC, 0, proc{|a| puts ''; 1}),
2091
- }
2092
- @env = [@global]
2093
- end
2094
- def lookup name
2095
- @env.reverse_each{|s| return s[name] if s[name]}
2096
- return nil
2097
- end
2098
- def dump_env n = 2
2099
- n = @env.size if n > @env.size
2100
- e = @env[n..-1].map{|i| Hash[* i.map{|k, v| [k, v.value]}.flatten ] }
2101
- warn e.pretty_inspect
2102
- end
2103
-
2104
- .,.,122745803753111.,.,
2105
-
2106
- module_eval <<-'.,.,122745803710602.,.,', 'pl0d/pl0ds.dr', 69
2107
- def visit_Node_program node
2108
-
2109
- visit(node.block)
2110
-
2111
- rescue
2112
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2113
- raise
2114
-
2115
- end
2116
- .,.,122745803710602.,.,
2117
-
2118
- module_eval <<-'.,.,122745803712198.,.,', 'pl0d/pl0ds.dr', 73
2119
- def visit_Node_block node
2120
-
2121
- @env.push({})
2122
- visit(node.decls)
2123
- visit(node.stmt)
2124
- @env.pop
2125
-
2126
- rescue
2127
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2128
- raise
2129
-
2130
- end
2131
- .,.,122745803712198.,.,
2132
-
2133
- module_eval <<-'.,.,122745803756671.,.,', 'pl0d/pl0ds.dr', 80
2134
- def visit_Node_var_decl node
2135
-
2136
- node.idents.to_a.each do |ident|
2137
- if @env.last[ident.value]
2138
- warn "'#{ident.value}' already exist."; exit
2139
- else
2140
- @env.last[ident.value] = STEntry.new(:VAR, 0, 0)
2141
- end
2142
- end
2143
-
2144
- rescue
2145
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2146
- raise
2147
-
2148
- end
2149
- .,.,122745803756671.,.,
2150
-
2151
- module_eval <<-'.,.,122745803763047.,.,', 'pl0d/pl0ds.dr', 90
2152
- def visit_Node_const_decl node
2153
-
2154
- visit(node.const_inits)
2155
-
2156
- rescue
2157
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2158
- raise
2159
-
2160
- end
2161
- .,.,122745803763047.,.,
2162
-
2163
- module_eval <<-'.,.,12274580374346.,.,', 'pl0d/pl0ds.dr', 94
2164
- def visit_Node_const_init node
2165
-
2166
- if @env.last[node.ident.value]
2167
- warn "'#{node.ident.value}' already exist."; exit
2168
- else
2169
- @env.last[node.ident.value] = STEntry.new(:CONST, 0, node.number.value)
2170
- end
2171
-
2172
- rescue
2173
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2174
- raise
2175
-
2176
- end
2177
- .,.,12274580374346.,.,
2178
-
2179
- module_eval <<-'.,.,122745803759988.,.,', 'pl0d/pl0ds.dr', 102
2180
- def visit_Node_func_decl node
2181
-
2182
- if @env[0][node.ident.value]
2183
- warn "'#{node.ident.value}' already exist."; exit
2184
- end
2185
- body = proc do |args|
2186
- value = 0
2187
- n = @env.size
2188
- @env.push({})
2189
- value = catch(:return) do
2190
- @env.last['return'] = STEntry.new(:VAR, 0, :return)
2191
- node.params.to_a.each_with_index do |a, x|
2192
- @env.last[a.value] = STEntry.new(:VAR, 0, args[x])
2193
- end
2194
- visit(node.block)
2195
- end
2196
- @env = @env[0, n]
2197
- value
2198
- end
2199
- @env.last[node.ident.value] = STEntry.new(:FUNC, node.params.size, body)
2200
-
2201
- rescue
2202
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2203
- raise
2204
-
2205
- end
2206
- .,.,122745803759988.,.,
2207
-
2208
- module_eval <<-'.,.,122745803743066.,.,', 'pl0d/pl0ds.dr', 123
2209
- def visit_Node_nop_stmt node
2210
-
2211
-
2212
- rescue
2213
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2214
- raise
2215
-
2216
- end
2217
- .,.,122745803743066.,.,
2218
-
2219
- module_eval <<-'.,.,12274580372012.,.,', 'pl0d/pl0ds.dr', 126
2220
- def visit_Node_assign_stmt node
2221
-
2222
- if ent = lookup(node.ident.value)
2223
- unless ent.kind == :VAR
2224
- warn "'#{node.ident.value}' not var."; exit
2225
- end
2226
- ent.value = visit(node.expr).value
2227
- else
2228
- warn @env.pretty_inspect
2229
- warn "'#{node.ident.value}' not found."; exit
2230
- end
2231
-
2232
- rescue
2233
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2234
- raise
2235
-
2236
- end
2237
- .,.,12274580372012.,.,
2238
-
2239
- module_eval <<-'.,.,122745803760775.,.,', 'pl0d/pl0ds.dr', 138
2240
- def visit_Node_begin_stmt node
2241
-
2242
- visit(node.stmt)
2243
- visit(node.stmts)
2244
-
2245
- rescue
2246
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2247
- raise
2248
-
2249
- end
2250
- .,.,122745803760775.,.,
2251
-
2252
- module_eval <<-'.,.,122745803752460.,.,', 'pl0d/pl0ds.dr', 143
2253
- def visit_Node_if_stmt node
2254
-
2255
- if visit(node.cond).value != 0
2256
- visit(node.stmt)
2257
- end
2258
-
2259
- rescue
2260
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2261
- raise
2262
-
2263
- end
2264
- .,.,122745803752460.,.,
2265
-
2266
- module_eval <<-'.,.,122745803711909.,.,', 'pl0d/pl0ds.dr', 149
2267
- def visit_Node_while_stmt node
2268
-
2269
- while visit(node.cond).value != 0
2270
- visit(node.stmt)
2271
- end
2272
-
2273
- rescue
2274
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2275
- raise
2276
-
2277
- end
2278
- .,.,122745803711909.,.,
2279
-
2280
- module_eval <<-'.,.,12274580374630.,.,', 'pl0d/pl0ds.dr', 155
2281
- def visit_Node_return_stmt node
2282
-
2283
- ent = nil
2284
- @env.reverse_each{|s| break if ent = s['return'] }
2285
- unless ent
2286
- warn "'return' not in func."; exit
2287
- end
2288
- throw :return, visit(node.expr).value
2289
-
2290
- rescue
2291
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2292
- raise
2293
-
2294
- end
2295
- .,.,12274580374630.,.,
2296
-
2297
- module_eval <<-'.,.,122745803718131.,.,', 'pl0d/pl0ds.dr', 164
2298
- def visit_Node_apply node
2299
-
2300
- ent = nil
2301
- @env.reverse_each{|s| break if ent = s[node.ident.value] }
2302
- unless ent
2303
- warn "'#{node.ident.value}' not found."; exit
2304
- end
2305
- unless ent.kind == :FUNC
2306
- warn "'#{node.ident.value}' not func."; exit
2307
- end
2308
-
2309
- args = node.args.to_a.map{|a| visit(a).value }
2310
- # warn "#{' '*(@env.size-2)}|#{node.ident.value} : #{args.inspect}"
2311
- unless ent.narg == args.size
2312
- warn "#{ent.narg} #{args.size} #{args.inspect}"
2313
- warn "'#{node.ident.value}' unmatch args."; exit
2314
- end
2315
- node.value = ent.value.call(args)
2316
- # warn "#{' '*(@env.size-2)}|-> #{node.value} @ #{node.ident.value}"
2317
-
2318
- rescue
2319
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2320
- raise
2321
-
2322
- end
2323
- .,.,122745803718131.,.,
2324
-
2325
- module_eval <<-'.,.,122745803748774.,.,', 'pl0d/pl0ds.dr', 184
2326
- def visit_Node_refv node
2327
-
2328
- unless ent = lookup(node.ident.value)
2329
- warn "'#{node.ident.value}' not found."; exit
2330
- end
2331
- if ent.kind == :VAR || ent.kind == :CONST
2332
- node.value = ent.value
2333
- else
2334
- warn "'#{node.ident.value}' not var."; exit
2335
- end
2336
-
2337
- rescue
2338
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2339
- raise
2340
-
2341
- end
2342
- .,.,122745803748774.,.,
2343
-
2344
- module_eval <<-'.,.,122745803759286.,.,', 'pl0d/pl0ds.dr', 195
2345
- def visit_Node_number node
2346
-
2347
- node.value = node.n.value
2348
-
2349
- rescue
2350
- warn "raise at src:#{node.lineno}/#{node.class.name}"
2351
- raise
2352
-
2353
- end
2354
- .,.,122745803759286.,.,
2355
-
2356
- end
2357
-
2358
- class D4PL0d::ASTBuilder < Depager::LALR::Action #:nodoc:all
2359
- include Depager::DecoratorUtils
2360
-
2361
- on_reduce = [
2362
- nil,
2363
- :_ast_0,
2364
- :_ast_1,
2365
- :_ast_2,
2366
- :_ast_3,
2367
- :_ast_4,
2368
- :_ast_5,
2369
- :_ast_6,
2370
- :_ast_7,
2371
- :_ast_8,
2372
- :_ast_9,
2373
- :_ast_10,
2374
- :_ast_11,
2375
- :_ast_12,
2376
- :_ast_13,
2377
- :_ast_14,
2378
- :_ast_15,
2379
- :_ast_16,
2380
- :_ast_17,
2381
- :_ast_18,
2382
- :_ast_19,
2383
- :_ast_20,
2384
- :_ast_21,
2385
- :_ast_22,
2386
- :_ast_23,
2387
- :_ast_24,
2388
- :_ast_25,
2389
- :_ast_26,
2390
- :_ast_27,
2391
- :_ast_28,
2392
- :_ast_29,
2393
- :_ast_30,
2394
- :_ast_31,
2395
- :_ast_32,
2396
- :_ast_33,
2397
- :_ast_34,
2398
- :_ast_35,
2399
- :_ast_36,
2400
- :_ast_37,
2401
- :_ast_38,
2402
- :_ast_39,
2403
- :_ast_40,
2404
- :_ast_41,
2405
- :_ast_42,
2406
- :_ast_43,
2407
-
2408
- ]
2409
- Tables = [on_reduce]
2410
- def initialize inside
2411
- super inside, 'ASTBuilder'
2412
- @on_reduce, = self.class::Tables
2413
- init_parser
2414
- end
2415
-
2416
-
2417
- module_eval <<-'.,.,122745803713657.,.,', 'pl0d/pl0ds.dr', 202
2418
- def _ast_0 val
2419
- Node_program.new(val[0].lineno, val[0])
2420
- end
2421
- .,.,122745803713657.,.,
2422
-
2423
- module_eval <<-'.,.,122745803762417.,.,', 'pl0d/pl0ds.dr', 207
2424
- def _ast_1 val
2425
- Node_block.new(val[0].lineno, val[0], val[1])
2426
- end
2427
- .,.,122745803762417.,.,
2428
-
2429
- module_eval <<-'.,.,122745803749311.,.,', 'pl0d/pl0ds.dr', 211
2430
- def _ast_2 val
2431
- NodeList.new(basis.file.lineno, [])
2432
- end
2433
- .,.,122745803749311.,.,
2434
-
2435
- module_eval <<-'.,.,122745803732974.,.,', 'pl0d/pl0ds.dr', 213
2436
- def _ast_3 val
2437
- val[0].push(val[1])
2438
- end
2439
- .,.,122745803732974.,.,
2440
-
2441
- module_eval <<-'.,.,122745803722420.,.,', 'pl0d/pl0ds.dr', 218
2442
- def _ast_4 val
2443
- Node_const_decl.new(val[0].lineno, val[1])
2444
- end
2445
- .,.,122745803722420.,.,
2446
-
2447
- module_eval <<-'.,.,12274580377011.,.,', 'pl0d/pl0ds.dr', 220
2448
- def _ast_5 val
2449
- Node_var_decl.new(val[0].lineno, val[1])
2450
- end
2451
- .,.,12274580377011.,.,
2452
-
2453
- module_eval <<-'.,.,12274580372583.,.,', 'pl0d/pl0ds.dr', 222
2454
- def _ast_6 val
2455
- Node_func_decl.new(val[0].lineno, val[1], NodeList.new(basis.file.lineno, []), val[4])
2456
- end
2457
- .,.,12274580372583.,.,
2458
-
2459
- module_eval <<-'.,.,122745803761637.,.,', 'pl0d/pl0ds.dr', 224
2460
- def _ast_7 val
2461
- Node_func_decl.new(val[0].lineno, val[1], val[3], val[5])
2462
- end
2463
- .,.,122745803761637.,.,
2464
-
2465
- module_eval <<-'.,.,12274580378445.,.,', 'pl0d/pl0ds.dr', 229
2466
- def _ast_8 val
2467
- NodeList.new(val[0].lineno, [val[0]])
2468
- end
2469
- .,.,12274580378445.,.,
2470
-
2471
- module_eval <<-'.,.,122745803733482.,.,', 'pl0d/pl0ds.dr', 231
2472
- def _ast_9 val
2473
- val[0].push(val[2])
2474
- end
2475
- .,.,122745803733482.,.,
2476
-
2477
- module_eval <<-'.,.,122745803723547.,.,', 'pl0d/pl0ds.dr', 236
2478
- def _ast_10 val
2479
- Node_const_init.new(val[0].lineno, val[0], val[2])
2480
- end
2481
- .,.,122745803723547.,.,
2482
-
2483
- module_eval <<-'.,.,12274580375797.,.,', 'pl0d/pl0ds.dr', 241
2484
- def _ast_11 val
2485
- NodeList.new(val[0].lineno, [val[0]])
2486
- end
2487
- .,.,12274580375797.,.,
2488
-
2489
- module_eval <<-'.,.,122745803727046.,.,', 'pl0d/pl0ds.dr', 243
2490
- def _ast_12 val
2491
- val[0].push(val[2])
2492
- end
2493
- .,.,122745803727046.,.,
2494
-
2495
- module_eval <<-'.,.,12274580376389.,.,', 'pl0d/pl0ds.dr', 247
2496
- def _ast_13 val
2497
- Node_nop_stmt.new(basis.file.lineno, NodeList.new(basis.file.lineno, []))
2498
- end
2499
- .,.,12274580376389.,.,
2500
-
2501
- module_eval <<-'.,.,122745803758162.,.,', 'pl0d/pl0ds.dr', 249
2502
- def _ast_14 val
2503
- Node_assign_stmt.new(val[0].lineno, val[0], val[2])
2504
- end
2505
- .,.,122745803758162.,.,
2506
-
2507
- module_eval <<-'.,.,122745803757908.,.,', 'pl0d/pl0ds.dr', 251
2508
- def _ast_15 val
2509
- Node_begin_stmt.new(val[0].lineno, val[1], val[2])
2510
- end
2511
- .,.,122745803757908.,.,
2512
-
2513
- module_eval <<-'.,.,122745803737264.,.,', 'pl0d/pl0ds.dr', 253
2514
- def _ast_16 val
2515
- Node_if_stmt.new(val[0].lineno, val[1], val[3])
2516
- end
2517
- .,.,122745803737264.,.,
2518
-
2519
- module_eval <<-'.,.,122745803762624.,.,', 'pl0d/pl0ds.dr', 255
2520
- def _ast_17 val
2521
- Node_while_stmt.new(val[0].lineno, val[1], val[3])
2522
- end
2523
- .,.,122745803762624.,.,
2524
-
2525
- module_eval <<-'.,.,122745803760629.,.,', 'pl0d/pl0ds.dr', 257
2526
- def _ast_18 val
2527
- Node_return_stmt.new(val[0].lineno, val[1])
2528
- end
2529
- .,.,122745803760629.,.,
2530
-
2531
- module_eval <<-'.,.,122745803718773.,.,', 'pl0d/pl0ds.dr', 259
2532
- def _ast_19 val
2533
- Node_apply.new(val[0].lineno, Depager::Token['write'], NodeList.new(val[0].lineno, [val[1]]))
2534
- end
2535
- .,.,122745803718773.,.,
2536
-
2537
- module_eval <<-'.,.,122745803738626.,.,', 'pl0d/pl0ds.dr', 261
2538
- def _ast_20 val
2539
- Node_apply.new(val[0].lineno, Depager::Token['writeln'], NodeList.new(basis.file.lineno, []))
2540
- end
2541
- .,.,122745803738626.,.,
2542
-
2543
- module_eval <<-'.,.,122745803715270.,.,', 'pl0d/pl0ds.dr', 265
2544
- def _ast_21 val
2545
- NodeList.new(basis.file.lineno, [])
2546
- end
2547
- .,.,122745803715270.,.,
2548
-
2549
- module_eval <<-'.,.,122745803715959.,.,', 'pl0d/pl0ds.dr', 267
2550
- def _ast_22 val
2551
- val[0].push(val[2])
2552
- end
2553
- .,.,122745803715959.,.,
2554
-
2555
- module_eval <<-'.,.,12274580378713.,.,', 'pl0d/pl0ds.dr', 272
2556
- def _ast_23 val
2557
- Node_apply.new(val[0].lineno, Depager::Token['odd'], NodeList.new(val[0].lineno, [val[1]]))
2558
- end
2559
- .,.,12274580378713.,.,
2560
-
2561
- module_eval <<-'.,.,12274580374814.,.,', 'pl0d/pl0ds.dr', 274
2562
- def _ast_24 val
2563
- Node_apply.new(val[0].lineno, Depager::Token['='], NodeList.new(val[0].lineno, [val[0], val[2]]))
2564
- end
2565
- .,.,12274580374814.,.,
2566
-
2567
- module_eval <<-'.,.,122745803734597.,.,', 'pl0d/pl0ds.dr', 276
2568
- def _ast_25 val
2569
- Node_apply.new(val[0].lineno, Depager::Token['<>'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2570
- end
2571
- .,.,122745803734597.,.,
2572
-
2573
- module_eval <<-'.,.,122745803754023.,.,', 'pl0d/pl0ds.dr', 278
2574
- def _ast_26 val
2575
- Node_apply.new(val[0].lineno, Depager::Token['<'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2576
- end
2577
- .,.,122745803754023.,.,
2578
-
2579
- module_eval <<-'.,.,122745803747744.,.,', 'pl0d/pl0ds.dr', 280
2580
- def _ast_27 val
2581
- Node_apply.new(val[0].lineno, Depager::Token['>'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2582
- end
2583
- .,.,122745803747744.,.,
2584
-
2585
- module_eval <<-'.,.,122745803723623.,.,', 'pl0d/pl0ds.dr', 282
2586
- def _ast_28 val
2587
- Node_apply.new(val[0].lineno, Depager::Token['<='], NodeList.new(val[0].lineno, [val[0], val[2]]))
2588
- end
2589
- .,.,122745803723623.,.,
2590
-
2591
- module_eval <<-'.,.,122745803731202.,.,', 'pl0d/pl0ds.dr', 284
2592
- def _ast_29 val
2593
- Node_apply.new(val[0].lineno, Depager::Token['>='], NodeList.new(val[0].lineno, [val[0], val[2]]))
2594
- end
2595
- .,.,122745803731202.,.,
2596
-
2597
- module_eval <<-'.,.,122745803753646.,.,', 'pl0d/pl0ds.dr', 289
2598
- def _ast_30 val
2599
- Node_apply.new(val[0].lineno, Depager::Token['+'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2600
- end
2601
- .,.,122745803753646.,.,
2602
-
2603
- module_eval <<-'.,.,122745803723858.,.,', 'pl0d/pl0ds.dr', 291
2604
- def _ast_31 val
2605
- Node_apply.new(val[0].lineno, Depager::Token['-'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2606
- end
2607
- .,.,122745803723858.,.,
2608
-
2609
- module_eval <<-'.,.,122745803731132.,.,', 'pl0d/pl0ds.dr', 293
2610
- def _ast_32 val
2611
- val[0]
2612
- end
2613
- .,.,122745803731132.,.,
2614
-
2615
- module_eval <<-'.,.,122745803722247.,.,', 'pl0d/pl0ds.dr', 295
2616
- def _ast_33 val
2617
- Node_apply.new(val[0].lineno, Depager::Token['UMINUS'], NodeList.new(val[0].lineno, [val[1]]))
2618
- end
2619
- .,.,122745803722247.,.,
2620
-
2621
- module_eval <<-'.,.,122745803761813.,.,', 'pl0d/pl0ds.dr', 300
2622
- def _ast_34 val
2623
- Node_apply.new(val[0].lineno, Depager::Token['*'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2624
- end
2625
- .,.,122745803761813.,.,
2626
-
2627
- module_eval <<-'.,.,122745803758885.,.,', 'pl0d/pl0ds.dr', 302
2628
- def _ast_35 val
2629
- Node_apply.new(val[0].lineno, Depager::Token['/'], NodeList.new(val[0].lineno, [val[0], val[2]]))
2630
- end
2631
- .,.,122745803758885.,.,
2632
-
2633
- module_eval <<-'.,.,122745803738159.,.,', 'pl0d/pl0ds.dr', 304
2634
- def _ast_36 val
2635
- val[0]
2636
- end
2637
- .,.,122745803738159.,.,
2638
-
2639
- module_eval <<-'.,.,122745803725103.,.,', 'pl0d/pl0ds.dr', 309
2640
- def _ast_37 val
2641
- Node_refv.new(val[0].lineno, val[0])
2642
- end
2643
- .,.,122745803725103.,.,
2644
-
2645
- module_eval <<-'.,.,12274580372405.,.,', 'pl0d/pl0ds.dr', 311
2646
- def _ast_38 val
2647
- Node_number.new(val[0].lineno, val[0])
2648
- end
2649
- .,.,12274580372405.,.,
2650
-
2651
- module_eval <<-'.,.,1227458037216.,.,', 'pl0d/pl0ds.dr', 313
2652
- def _ast_39 val
2653
- Node_apply.new(val[0].lineno, val[0], NodeList.new(basis.file.lineno, []))
2654
- end
2655
- .,.,1227458037216.,.,
2656
-
2657
- module_eval <<-'.,.,12274580371820.,.,', 'pl0d/pl0ds.dr', 315
2658
- def _ast_40 val
2659
- Node_apply.new(val[0].lineno, val[0], val[2])
2660
- end
2661
- .,.,12274580371820.,.,
2662
-
2663
- module_eval <<-'.,.,122745803748521.,.,', 'pl0d/pl0ds.dr', 317
2664
- def _ast_41 val
2665
- val[1]
2666
- end
2667
- .,.,122745803748521.,.,
2668
-
2669
- module_eval <<-'.,.,122745803744691.,.,', 'pl0d/pl0ds.dr', 322
2670
- def _ast_42 val
2671
- NodeList.new(val[0].lineno, [val[0]])
2672
- end
2673
- .,.,122745803744691.,.,
2674
-
2675
- module_eval <<-'.,.,122745803717899.,.,', 'pl0d/pl0ds.dr', 324
2676
- def _ast_43 val
2677
- val[0].push(val[2])
2678
- end
2679
- .,.,122745803717899.,.,
2680
-
2681
- end
2682
-
2683
-
2684
- def createDecoratedPL0d
2685
- D4PL0d::ASTBuilder.new(PL0d.new())
2686
- end
2687
-
2688
- ### main
2689
- if __FILE__ == $0
2690
- ### Main Code
2691
- require 'pp'
2692
- psr = createDecoratedPL0d
2693
- t, = psr.parse(STDIN)
2694
- # pp t
2695
- v = Visitor.new
2696
- t.accept(v)
2697
-
2698
- end