depager 0.1.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/ChangeLog +4 -0
  2. data/bin/depager +1 -0
  3. data/data/depager/misc/depager-mode.el +35 -24
  4. data/data/depager/pre-setup.rb +3 -0
  5. data/examples/Rakefile +36 -0
  6. data/examples/c89/c89.dr +496 -0
  7. data/examples/c89/c89.tab.rb +2197 -0
  8. data/examples/c89/test.c89 +10 -0
  9. data/{data/depager/sample → examples}/extension/paction.dr +0 -0
  10. data/{data/depager/sample → examples}/extension/pactiontest.dr +0 -0
  11. data/{data/depager/sample → examples}/pl0d/pl0ds.dr +0 -0
  12. data/examples/pl0d/pl0ds.tab.rb +1702 -0
  13. data/{data/depager/sample/pl0d/pl0test.pl0 → examples/pl0d/test.pl0ds} +0 -0
  14. data/{data/depager/sample → examples}/sample_calc/calc.action.dr +0 -0
  15. data/examples/sample_calc/calc.action.tab.rb +283 -0
  16. data/{data/depager/sample → examples}/sample_calc/calc.astdf.dr +0 -0
  17. data/examples/sample_calc/calc.astdf.tab.rb +476 -0
  18. data/{data/depager/sample → examples}/sample_calc/calc.astl.action.dr +0 -0
  19. data/examples/sample_calc/calc.astl.action.tab.rb +593 -0
  20. data/{data/depager/sample → examples}/sample_calc/calc.astl.dr +0 -0
  21. data/examples/sample_calc/calc.astl.tab.rb +501 -0
  22. data/{data/depager/sample → examples}/sample_calc/calc.atree.dr +0 -0
  23. data/examples/sample_calc/calc.atree.tab.rb +277 -0
  24. data/{data/depager/sample → examples}/sample_calc/calc.cst.dr +0 -0
  25. data/examples/sample_calc/calc.cst.tab.rb +478 -0
  26. data/{data/depager/sample → examples}/sample_calc/calc.dr +0 -0
  27. data/{data/depager/sample → examples}/sample_calc/calc.lex.dr +0 -0
  28. data/examples/sample_calc/calc.lex.tab.rb +192 -0
  29. data/{data/depager/sample → examples}/sample_calc/calc.nvaction.dr +0 -0
  30. data/examples/sample_calc/calc.nvaction.tab.rb +291 -0
  31. data/examples/sample_calc/calc.tab.rb +183 -0
  32. data/{data/depager/sample → examples}/sample_calc/calc_prec.nvaction.dr +0 -0
  33. data/examples/sample_calc/calc_prec.nvaction.tab.rb +257 -0
  34. data/examples/sample_calc/test.calc +1 -0
  35. data/{data/depager/sample/slex_test/slextest1.dr → examples/slex_test/divreg.slex.dr} +3 -11
  36. data/examples/slex_test/divreg.slex.tab.rb +227 -0
  37. data/{data/depager/sample/slex_test/slextest2.dr → examples/slex_test/ljoin.slex.dr} +10 -7
  38. data/examples/slex_test/ljoin.slex.tab.rb +277 -0
  39. data/examples/slex_test/test.divreg +1 -0
  40. data/examples/slex_test/test.ljoin +3 -0
  41. data/lib/depager.rb +194 -127
  42. data/lib/depager/Rakefile +8 -4
  43. data/lib/depager/ast_base.dr +3 -3
  44. data/lib/depager/ast_base.rb +197 -144
  45. data/lib/depager/atree.rb +55 -36
  46. data/lib/depager/cst.dr +6 -4
  47. data/lib/depager/cst.rb +69 -49
  48. data/lib/depager/grammar.rb +136 -0
  49. data/lib/depager/lex.dr +22 -8
  50. data/lib/depager/lex.rb +94 -53
  51. data/lib/depager/lr.rb +101 -167
  52. data/lib/depager/parse_action.rb +1 -1
  53. data/lib/depager/parser.rb +34 -7
  54. data/lib/depager/slex.dr +76 -36
  55. data/lib/depager/slex.rb +345 -151
  56. data/lib/depager/srp.rb +3 -2
  57. data/lib/depager/template/extension_lalr_slave.erb +1 -1
  58. data/lib/depager/template/single_lalr_parser.erb +1 -1
  59. data/lib/depager/utils.rb +2 -1
  60. data/lib/depager/version.rb +2 -2
  61. metadata +42 -28
  62. data/Manifest.txt +0 -52
  63. data/lib/depager/psrtmpl.rb +0 -33
@@ -0,0 +1,10 @@
1
+ /*
2
+ comment
3
+ */
4
+ int fact(int n)
5
+ {
6
+ if (n == 1)
7
+ return 1;
8
+ else
9
+ return n * fact(n - 1);
10
+ }
File without changes
@@ -0,0 +1,1702 @@
1
+
2
+ begin; require 'rubygems'; rescue Exception; end
3
+ require 'depager/parser.rb'
4
+
5
+
6
+ module D4PL0d
7
+ 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
+ 'ASTBuilderLazy' => 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
+ Tables = [ reduce_table, nparams, action_table,
555
+ defred_table, defred_after_shift_table, goto_table,
556
+ t2i, i2t, nt2i, i2nt ]
557
+
558
+ def self.createDecoratedParser
559
+ D4PL0d::ASTBuilderLazy.new(PL0d.new())
560
+ end
561
+
562
+ ### Inner Code
563
+
564
+ def lex
565
+ begin
566
+ until @line.empty?
567
+ case @line
568
+
569
+ when /\A\s+/
570
+ @oldline = @line; @line = $'
571
+
572
+
573
+
574
+ when /\A:=/
575
+ @oldline = @line; @line = $'
576
+ yield _Token(:COLOEQ, $&)
577
+
578
+
579
+ when /\A<>/
580
+ @oldline = @line; @line = $'
581
+ yield _Token(:NOTEQ, $&)
582
+
583
+
584
+ when /\A<=/
585
+ @oldline = @line; @line = $'
586
+ yield _Token(:LE, $&)
587
+
588
+
589
+ when /\A>=/
590
+ @oldline = @line; @line = $'
591
+ yield _Token(:GE, $&)
592
+
593
+
594
+ when /\A=/
595
+ @oldline = @line; @line = $'
596
+ yield _Token(:EQ, $&)
597
+
598
+
599
+ when /\A</
600
+ @oldline = @line; @line = $'
601
+ yield _Token(:LT, $&)
602
+
603
+
604
+ when /\A>/
605
+ @oldline = @line; @line = $'
606
+ yield _Token(:GT, $&)
607
+
608
+
609
+ when /\Aconst/
610
+ @oldline = @line; @line = $'
611
+ yield _Token(:CONST, $&)
612
+
613
+
614
+ when /\Avar/
615
+ @oldline = @line; @line = $'
616
+ yield _Token(:VAR, $&)
617
+
618
+
619
+ when /\Afunction/
620
+ @oldline = @line; @line = $'
621
+ yield _Token(:FUNCTION, $&)
622
+
623
+
624
+ when /\Abegin/
625
+ @oldline = @line; @line = $'
626
+ yield _Token(:BEGINN, $&)
627
+
628
+
629
+ when /\Aend/
630
+ @oldline = @line; @line = $'
631
+ yield _Token(:END, $&)
632
+
633
+
634
+ when /\Aif/
635
+ @oldline = @line; @line = $'
636
+ yield _Token(:IF, $&)
637
+
638
+
639
+ when /\Athen/
640
+ @oldline = @line; @line = $'
641
+ yield _Token(:THEN, $&)
642
+
643
+
644
+ when /\Awhile/
645
+ @oldline = @line; @line = $'
646
+ yield _Token(:WHILE, $&)
647
+
648
+
649
+ when /\Ado/
650
+ @oldline = @line; @line = $'
651
+ yield _Token(:DO, $&)
652
+
653
+
654
+ when /\Areturn/
655
+ @oldline = @line; @line = $'
656
+ yield _Token(:RETURN, $&)
657
+
658
+
659
+ when /\Awriteln/
660
+ @oldline = @line; @line = $'
661
+ yield _Token(:WRITELN, $&)
662
+
663
+
664
+ when /\Awrite/
665
+ @oldline = @line; @line = $'
666
+ yield _Token(:WRITE, $&)
667
+
668
+
669
+ when /\Aodd/
670
+ @oldline = @line; @line = $'
671
+ yield _Token(:ODD, $&)
672
+
673
+
674
+ when /\A[a-zA-Z][a-zA-Z0-9_]*/
675
+ @oldline = @line; @line = $'
676
+ yield _Token(:IDENT, $&)
677
+
678
+
679
+ when /\A[0-9]+/
680
+ @oldline = @line; @line = $'
681
+ yield _Token(:NUMBER, $&.to_i)
682
+
683
+
684
+ when /\A./
685
+ @oldline = @line; @line = $'
686
+ yield _Token($&, $&)
687
+
688
+
689
+ else
690
+ raise RuntimeError, "must not happen #{@line}"
691
+ end
692
+ end
693
+ end while @line0 = @line = getline
694
+ yield nil, nil
695
+ end
696
+
697
+ end
698
+
699
+ ### Outer Code
700
+
701
+ class Node
702
+ attr_accessor :lineno
703
+ attr_accessor :value
704
+
705
+ def initialize
706
+ @value = nil
707
+
708
+ end
709
+
710
+ def to_ary
711
+ [self]
712
+ end
713
+ def self.[] lineno, *args
714
+ self.new lineno, *args
715
+ end
716
+ def accept v
717
+ end
718
+ end
719
+ require 'forwardable'
720
+ class NodeList < Node
721
+ attr_accessor :lineno
722
+ extend Forwardable
723
+ _methods = Array.instance_methods -
724
+ Object.instance_methods -
725
+ ['push', 'concat', 'to_ary', 'map']
726
+ def_delegators(:@lst, *_methods)
727
+ def initialize(lineno, lst=[])
728
+ @lineno = lineno
729
+ @lst = lst.to_a
730
+ end
731
+
732
+ def value
733
+ @lst.map{|i| "i.value"}
734
+ end
735
+
736
+ def push(i) @lst.push i; self; end
737
+ def concat(i) @lst.concat i; self; end
738
+ def map(&b) @lst.map(&b); end
739
+ def to_ary() @lst; end
740
+ def accept(v)
741
+ @lst.each{|i| i.accept(v) }
742
+ end
743
+ end
744
+
745
+ class Node_program < Node
746
+ attr_accessor :block
747
+ attr_accessor
748
+ def initialize lineno, block
749
+ super()
750
+ @lineno = lineno
751
+ @lineno = lineno
752
+ @block = block
753
+
754
+ end
755
+
756
+ def _block_ v
757
+ @block.accept(v); @block
758
+ end
759
+
760
+ def accept v
761
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
762
+ v.visit_Node_program(self)
763
+ self
764
+ end
765
+ end
766
+
767
+ class Node_block < Node
768
+ attr_accessor :decls, :stmt
769
+ attr_accessor
770
+ def initialize lineno, decls, stmt
771
+ super()
772
+ @lineno = lineno
773
+ @lineno = lineno
774
+ @decls = decls
775
+ @stmt = stmt
776
+
777
+ end
778
+
779
+ def _decls_ v
780
+ @decls.accept(v); @decls
781
+ end
782
+
783
+ def _stmt_ v
784
+ @stmt.accept(v); @stmt
785
+ end
786
+
787
+ def accept v
788
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
789
+ v.visit_Node_block(self)
790
+ self
791
+ end
792
+ end
793
+
794
+ class Node_var_decl < Node
795
+ attr_accessor :idents
796
+ attr_accessor :idents
797
+ def initialize lineno, idents
798
+ super()
799
+ @lineno = lineno
800
+ @lineno = lineno
801
+ @idents = idents
802
+
803
+ end
804
+
805
+ def accept v
806
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
807
+ v.visit_Node_var_decl(self)
808
+ self
809
+ end
810
+ end
811
+
812
+ class Node_const_decl < Node
813
+ attr_accessor :const_inits
814
+ attr_accessor
815
+ def initialize lineno, const_inits
816
+ super()
817
+ @lineno = lineno
818
+ @lineno = lineno
819
+ @const_inits = const_inits
820
+
821
+ end
822
+
823
+ def _const_inits_ v
824
+ @const_inits.accept(v); @const_inits
825
+ end
826
+
827
+ def accept v
828
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
829
+ v.visit_Node_const_decl(self)
830
+ self
831
+ end
832
+ end
833
+
834
+ class Node_const_init < Node
835
+ attr_accessor :ident, :number
836
+ attr_accessor :ident, :number
837
+ def initialize lineno, ident, number
838
+ super()
839
+ @lineno = lineno
840
+ @lineno = lineno
841
+ @ident = ident
842
+ @number = number
843
+
844
+ end
845
+
846
+ def accept v
847
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
848
+ v.visit_Node_const_init(self)
849
+ self
850
+ end
851
+ end
852
+
853
+ class Node_func_decl < Node
854
+ attr_accessor :ident, :params, :block
855
+ attr_accessor :ident, :params, :block
856
+ def initialize lineno, ident, params, block
857
+ super()
858
+ @lineno = lineno
859
+ @lineno = lineno
860
+ @ident = ident
861
+ @params = params
862
+ @block = block
863
+
864
+ end
865
+
866
+ def accept v
867
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
868
+ v.visit_Node_func_decl(self)
869
+ self
870
+ end
871
+ end
872
+
873
+ class Node_nop_stmt < Node
874
+ attr_accessor :nop
875
+ attr_accessor :nop
876
+ def initialize lineno, nop
877
+ super()
878
+ @lineno = lineno
879
+ @lineno = lineno
880
+ @nop = nop
881
+
882
+ end
883
+
884
+ def accept v
885
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
886
+ v.visit_Node_nop_stmt(self)
887
+ self
888
+ end
889
+ end
890
+
891
+ class Node_assign_stmt < Node
892
+ attr_accessor :ident, :expr
893
+ attr_accessor :ident
894
+ def initialize lineno, ident, expr
895
+ super()
896
+ @lineno = lineno
897
+ @lineno = lineno
898
+ @ident = ident
899
+ @expr = expr
900
+
901
+ end
902
+
903
+ def _expr_ v
904
+ @expr.accept(v); @expr
905
+ end
906
+
907
+ def accept v
908
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
909
+ v.visit_Node_assign_stmt(self)
910
+ self
911
+ end
912
+ end
913
+
914
+ class Node_begin_stmt < Node
915
+ attr_accessor :stmt, :stmts
916
+ attr_accessor
917
+ def initialize lineno, stmt, stmts
918
+ super()
919
+ @lineno = lineno
920
+ @lineno = lineno
921
+ @stmt = stmt
922
+ @stmts = stmts
923
+
924
+ end
925
+
926
+ def _stmt_ v
927
+ @stmt.accept(v); @stmt
928
+ end
929
+
930
+ def _stmts_ v
931
+ @stmts.accept(v); @stmts
932
+ end
933
+
934
+ def accept v
935
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
936
+ v.visit_Node_begin_stmt(self)
937
+ self
938
+ end
939
+ end
940
+
941
+ class Node_if_stmt < Node
942
+ attr_accessor :cond, :stmt
943
+ attr_accessor
944
+ def initialize lineno, cond, stmt
945
+ super()
946
+ @lineno = lineno
947
+ @lineno = lineno
948
+ @cond = cond
949
+ @stmt = stmt
950
+
951
+ end
952
+
953
+ def _cond_ v
954
+ @cond.accept(v); @cond
955
+ end
956
+
957
+ def _stmt_ v
958
+ @stmt.accept(v); @stmt
959
+ end
960
+
961
+ def accept v
962
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
963
+ v.visit_Node_if_stmt(self)
964
+ self
965
+ end
966
+ end
967
+
968
+ class Node_while_stmt < Node
969
+ attr_accessor :cond, :stmt
970
+ attr_accessor
971
+ def initialize lineno, cond, stmt
972
+ super()
973
+ @lineno = lineno
974
+ @lineno = lineno
975
+ @cond = cond
976
+ @stmt = stmt
977
+
978
+ end
979
+
980
+ def _cond_ v
981
+ @cond.accept(v); @cond
982
+ end
983
+
984
+ def _stmt_ v
985
+ @stmt.accept(v); @stmt
986
+ end
987
+
988
+ def accept v
989
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
990
+ v.visit_Node_while_stmt(self)
991
+ self
992
+ end
993
+ end
994
+
995
+ class Node_return_stmt < Node
996
+ attr_accessor :expr
997
+ attr_accessor
998
+ def initialize lineno, expr
999
+ super()
1000
+ @lineno = lineno
1001
+ @lineno = lineno
1002
+ @expr = expr
1003
+
1004
+ end
1005
+
1006
+ def _expr_ v
1007
+ @expr.accept(v); @expr
1008
+ end
1009
+
1010
+ def accept v
1011
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1012
+ v.visit_Node_return_stmt(self)
1013
+ self
1014
+ end
1015
+ end
1016
+
1017
+ class Node_apply < Node
1018
+ attr_accessor :ident, :args
1019
+ attr_accessor :ident, :args
1020
+ def initialize lineno, ident, args
1021
+ super()
1022
+ @lineno = lineno
1023
+ @lineno = lineno
1024
+ @ident = ident
1025
+ @args = args
1026
+
1027
+ end
1028
+
1029
+ def accept v
1030
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1031
+ v.visit_Node_apply(self)
1032
+ self
1033
+ end
1034
+ end
1035
+
1036
+ class Node_refv < Node
1037
+ attr_accessor :ident
1038
+ attr_accessor :ident
1039
+ def initialize lineno, ident
1040
+ super()
1041
+ @lineno = lineno
1042
+ @lineno = lineno
1043
+ @ident = ident
1044
+
1045
+ end
1046
+
1047
+ def accept v
1048
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1049
+ v.visit_Node_refv(self)
1050
+ self
1051
+ end
1052
+ end
1053
+
1054
+ class Node_number < Node
1055
+ attr_accessor :n
1056
+ attr_accessor :n
1057
+ def initialize lineno, n
1058
+ super()
1059
+ @lineno = lineno
1060
+ @lineno = lineno
1061
+ @n = n
1062
+
1063
+ end
1064
+
1065
+ def accept v
1066
+ warn @lineno.to_s+':'+self.class.to_s if $DEBUG
1067
+ v.visit_Node_number(self)
1068
+ self
1069
+ end
1070
+ end
1071
+
1072
+ class Visitor
1073
+ def visit node
1074
+ node.accept(self)
1075
+ end
1076
+
1077
+ module_eval <<-'.,.,1187541087803.,.,', 'pl0d/pl0ds.dr', 38
1078
+
1079
+ STEntry = Struct.new(:kind, :narg, :value)
1080
+ def initialize
1081
+ @global = {
1082
+ '+' => STEntry.new(:FUNC, 2, proc{|a| a[0] + a[1] }),
1083
+ '-' => STEntry.new(:FUNC, 2, proc{|a| a[0] - a[1] }),
1084
+ '*' => STEntry.new(:FUNC, 2, proc{|a| a[0] * a[1] }),
1085
+ '/' => STEntry.new(:FUNC, 2, proc{|a| a[0] / a[1] }),
1086
+ '=' => STEntry.new(:FUNC, 2, proc{|a| a[0] == a[1] ? 1 : 0}),
1087
+ '<>' => STEntry.new(:FUNC, 2, proc{|a| a[0] != a[1] ? 1 : 0}),
1088
+ '<' => STEntry.new(:FUNC, 2, proc{|a| a[0] < a[1] ? 1 : 0}),
1089
+ '>' => STEntry.new(:FUNC, 2, proc{|a| a[0] > a[1] ? 1 : 0}),
1090
+ '<=' => STEntry.new(:FUNC, 2, proc{|a| a[0] <= a[1] ? 1 : 0}),
1091
+ '>=' => STEntry.new(:FUNC, 2, proc{|a| a[0] >= a[1] ? 1 : 0}),
1092
+ 'odd'=> STEntry.new(:FUNC, 1, proc{|a| a[0] & 1 }),
1093
+
1094
+ 'write' => STEntry.new(:FUNC, 1, proc{|a| print "#{a[0]} "; 1}),
1095
+ 'writeln' => STEntry.new(:FUNC, 0, proc{|a| puts ''; 1}),
1096
+ }
1097
+ @env = [@global]
1098
+ end
1099
+ def lookup name
1100
+ @env.reverse_each{|s| return s[name] if s[name]}
1101
+ return nil
1102
+ end
1103
+ def dump_env n = 2
1104
+ n = @env.size if n > @env.size
1105
+ e = @env[n..-1].map{|i| Hash[* i.map{|k, v| [k, v.value]}.flatten ] }
1106
+ warn e.pretty_inspect
1107
+ end
1108
+
1109
+ .,.,1187541087803.,.,
1110
+
1111
+ module_eval <<-'.,.,118754108738825.,.,', 'pl0d/pl0ds.dr', 69
1112
+ def visit_Node_program node
1113
+
1114
+ visit(node.block)
1115
+
1116
+ end
1117
+
1118
+ .,.,118754108738825.,.,
1119
+
1120
+ module_eval <<-'.,.,118754108725030.,.,', 'pl0d/pl0ds.dr', 73
1121
+ def visit_Node_block node
1122
+
1123
+ @env.push({})
1124
+ visit(node.decls)
1125
+ visit(node.stmt)
1126
+ @env.pop
1127
+
1128
+ end
1129
+
1130
+ .,.,118754108725030.,.,
1131
+
1132
+ module_eval <<-'.,.,118754108720128.,.,', 'pl0d/pl0ds.dr', 80
1133
+ def visit_Node_var_decl node
1134
+
1135
+ node.idents.each do |ident|
1136
+ if @env.last[ident.value]
1137
+ warn "'#{ident.value}' already exist."; exit
1138
+ else
1139
+ @env.last[ident.value] = STEntry.new(:VAR, 0, 0)
1140
+ end
1141
+ end
1142
+
1143
+ end
1144
+
1145
+ .,.,118754108720128.,.,
1146
+
1147
+ module_eval <<-'.,.,118754108746872.,.,', 'pl0d/pl0ds.dr', 90
1148
+ def visit_Node_const_decl node
1149
+
1150
+ visit(node.const_inits)
1151
+
1152
+ end
1153
+
1154
+ .,.,118754108746872.,.,
1155
+
1156
+ module_eval <<-'.,.,118754108745112.,.,', 'pl0d/pl0ds.dr', 94
1157
+ def visit_Node_const_init node
1158
+
1159
+ if @env.last[node.ident.value]
1160
+ warn "'#{node.ident.value}' already exist."; exit
1161
+ else
1162
+ @env.last[node.ident.value] = STEntry.new(:CONST, 0, node.number.value)
1163
+ end
1164
+
1165
+ end
1166
+
1167
+ .,.,118754108745112.,.,
1168
+
1169
+ module_eval <<-'.,.,118754108729522.,.,', 'pl0d/pl0ds.dr', 102
1170
+ def visit_Node_func_decl node
1171
+
1172
+ if @env[0][node.ident.value]
1173
+ warn "'#{node.ident.value}' already exist."; exit
1174
+ end
1175
+ body = proc do |args|
1176
+ value = 0
1177
+ n = @env.size
1178
+ @env.push({})
1179
+ value = callcc do |c|
1180
+ @env.last['return'] = STEntry.new(:VAR, 0, c)
1181
+ node.params.each_with_index do |a, x|
1182
+ @env.last[a.value] = STEntry.new(:VAR, 0, args[x])
1183
+ end
1184
+ visit(node.block)
1185
+ end
1186
+ @env = @env[0, n]
1187
+ value
1188
+ end
1189
+ @env.last[node.ident.value] = STEntry.new(:FUNC, node.params.size, body)
1190
+
1191
+ end
1192
+
1193
+ .,.,118754108729522.,.,
1194
+
1195
+ module_eval <<-'.,.,118754108753309.,.,', 'pl0d/pl0ds.dr', 123
1196
+ def visit_Node_nop_stmt node
1197
+
1198
+
1199
+ end
1200
+
1201
+ .,.,118754108753309.,.,
1202
+
1203
+ module_eval <<-'.,.,11875410875543.,.,', 'pl0d/pl0ds.dr', 126
1204
+ def visit_Node_assign_stmt node
1205
+
1206
+ if ent = lookup(node.ident.value)
1207
+ unless ent.kind == :VAR
1208
+ warn "'#{node.ident.value}' not var."; exit
1209
+ end
1210
+ ent.value = visit(node.expr).value
1211
+ else
1212
+ warn @env.pretty_inspect
1213
+ warn "'#{node.ident.value}' not found."; exit
1214
+ end
1215
+
1216
+ end
1217
+
1218
+ .,.,11875410875543.,.,
1219
+
1220
+ module_eval <<-'.,.,118754108710613.,.,', 'pl0d/pl0ds.dr', 138
1221
+ def visit_Node_begin_stmt node
1222
+
1223
+ visit(node.stmt)
1224
+ visit(node.stmts)
1225
+
1226
+ end
1227
+
1228
+ .,.,118754108710613.,.,
1229
+
1230
+ module_eval <<-'.,.,118754108716282.,.,', 'pl0d/pl0ds.dr', 143
1231
+ def visit_Node_if_stmt node
1232
+
1233
+ if visit(node.cond).value != 0
1234
+ visit(node.stmt)
1235
+ end
1236
+
1237
+ end
1238
+
1239
+ .,.,118754108716282.,.,
1240
+
1241
+ module_eval <<-'.,.,118754108724669.,.,', 'pl0d/pl0ds.dr', 149
1242
+ def visit_Node_while_stmt node
1243
+
1244
+ while visit(node.cond).value != 0
1245
+ visit(node.stmt)
1246
+ end
1247
+
1248
+ end
1249
+
1250
+ .,.,118754108724669.,.,
1251
+
1252
+ module_eval <<-'.,.,11875410872421.,.,', 'pl0d/pl0ds.dr', 155
1253
+ def visit_Node_return_stmt node
1254
+
1255
+ ent = nil
1256
+ @env.reverse_each{|s| break if ent = s['return'] }
1257
+ unless ent
1258
+ warn "'return' not in func."; exit
1259
+ end
1260
+ ent.value.call(visit(node.expr).value)
1261
+
1262
+ end
1263
+
1264
+ .,.,11875410872421.,.,
1265
+
1266
+ module_eval <<-'.,.,118754108733309.,.,', 'pl0d/pl0ds.dr', 164
1267
+ def visit_Node_apply node
1268
+
1269
+ ent = nil
1270
+ @env.reverse_each{|s| break if ent = s[node.ident.value] }
1271
+ unless ent
1272
+ warn "'#{node.ident.value}' not found."; exit
1273
+ end
1274
+ unless ent.kind == :FUNC
1275
+ warn "'#{node.ident.value}' not func."; exit
1276
+ end
1277
+
1278
+ args = node.args.map{|a| visit(a).value }
1279
+ # warn "#{' '*(@env.size-2)}|#{node.ident.value} : #{args.inspect}"
1280
+ unless ent.narg == args.size
1281
+ warn "#{ent.narg} #{args.size} #{args.inspect}"
1282
+ warn "'#{node.ident.value}' unmatch args."; exit
1283
+ end
1284
+ node.value = ent.value.call(args)
1285
+ # warn "#{' '*(@env.size-2)}|-> #{node.value} @ #{node.ident.value}"
1286
+
1287
+ end
1288
+
1289
+ .,.,118754108733309.,.,
1290
+
1291
+ module_eval <<-'.,.,118754108711179.,.,', 'pl0d/pl0ds.dr', 184
1292
+ def visit_Node_refv node
1293
+
1294
+ unless ent = lookup(node.ident.value)
1295
+ warn "'#{node.ident.value}' not found."; exit
1296
+ end
1297
+ if ent.kind == :VAR || ent.kind == :CONST
1298
+ node.value = ent.value
1299
+ else
1300
+ warn "'#{node.ident.value}' not var."; exit
1301
+ end
1302
+
1303
+ end
1304
+
1305
+ .,.,118754108711179.,.,
1306
+
1307
+ module_eval <<-'.,.,118754108737080.,.,', 'pl0d/pl0ds.dr', 195
1308
+ def visit_Node_number node
1309
+
1310
+ node.value = node.n.value
1311
+
1312
+ end
1313
+
1314
+ .,.,118754108737080.,.,
1315
+
1316
+ end
1317
+
1318
+ class D4PL0d::ASTBuilderLazy < Depager::LALR::Action #:nodoc:all
1319
+ include Depager::DecoratorUtils
1320
+
1321
+ on_reduce = [
1322
+ nil,
1323
+ :_ast_0,
1324
+ :_ast_1,
1325
+ :_ast_2,
1326
+ :_ast_3,
1327
+ :_ast_4,
1328
+ :_ast_5,
1329
+ :_ast_6,
1330
+ :_ast_7,
1331
+ :_ast_8,
1332
+ :_ast_9,
1333
+ :_ast_10,
1334
+ :_ast_11,
1335
+ :_ast_12,
1336
+ :_ast_13,
1337
+ :_ast_14,
1338
+ :_ast_15,
1339
+ :_ast_16,
1340
+ :_ast_17,
1341
+ :_ast_18,
1342
+ :_ast_19,
1343
+ :_ast_20,
1344
+ :_ast_21,
1345
+ :_ast_22,
1346
+ :_ast_23,
1347
+ :_ast_24,
1348
+ :_ast_25,
1349
+ :_ast_26,
1350
+ :_ast_27,
1351
+ :_ast_28,
1352
+ :_ast_29,
1353
+ :_ast_30,
1354
+ :_ast_31,
1355
+ :_ast_32,
1356
+ :_ast_33,
1357
+ :_ast_34,
1358
+ :_ast_35,
1359
+ :_ast_36,
1360
+ :_ast_37,
1361
+ :_ast_38,
1362
+ :_ast_39,
1363
+ :_ast_40,
1364
+ :_ast_41,
1365
+ :_ast_42,
1366
+ :_ast_43,
1367
+
1368
+ ]
1369
+ Tables = [on_reduce]
1370
+ def initialize inside
1371
+ super inside, 'ASTBuilderLazy'
1372
+ @on_reduce, = self.class::Tables
1373
+ init_parser
1374
+ end
1375
+
1376
+
1377
+ module_eval <<-'.,.,118754108727698.,.,', 'pl0d/pl0ds.dr', 202
1378
+ def _ast_0 val
1379
+ Node_program.new(val[0].lineno, val[0])
1380
+ end
1381
+
1382
+ .,.,118754108727698.,.,
1383
+
1384
+ module_eval <<-'.,.,118754108715107.,.,', 'pl0d/pl0ds.dr', 207
1385
+ def _ast_1 val
1386
+ Node_block.new(val[0].lineno, val[0], val[1])
1387
+ end
1388
+
1389
+ .,.,118754108715107.,.,
1390
+
1391
+ module_eval <<-'.,.,11875410875615.,.,', 'pl0d/pl0ds.dr', 211
1392
+ def _ast_2 val
1393
+ NodeList.new(basis.file.lineno, [])
1394
+ end
1395
+
1396
+ .,.,11875410875615.,.,
1397
+
1398
+ module_eval <<-'.,.,118754108757005.,.,', 'pl0d/pl0ds.dr', 213
1399
+ def _ast_3 val
1400
+ val[0].push(val[1])
1401
+ end
1402
+
1403
+ .,.,118754108757005.,.,
1404
+
1405
+ module_eval <<-'.,.,118754108729694.,.,', 'pl0d/pl0ds.dr', 218
1406
+ def _ast_4 val
1407
+ Node_const_decl.new(val[0].lineno, val[1])
1408
+ end
1409
+
1410
+ .,.,118754108729694.,.,
1411
+
1412
+ module_eval <<-'.,.,118754108716594.,.,', 'pl0d/pl0ds.dr', 220
1413
+ def _ast_5 val
1414
+ Node_var_decl.new(val[0].lineno, val[1])
1415
+ end
1416
+
1417
+ .,.,118754108716594.,.,
1418
+
1419
+ module_eval <<-'.,.,118754108748120.,.,', 'pl0d/pl0ds.dr', 222
1420
+ def _ast_6 val
1421
+ Node_func_decl.new(val[0].lineno, val[1], NodeList.new(basis.file.lineno, []), val[4])
1422
+ end
1423
+
1424
+ .,.,118754108748120.,.,
1425
+
1426
+ module_eval <<-'.,.,11875410872297.,.,', 'pl0d/pl0ds.dr', 224
1427
+ def _ast_7 val
1428
+ Node_func_decl.new(val[0].lineno, val[1], val[3], val[5])
1429
+ end
1430
+
1431
+ .,.,11875410872297.,.,
1432
+
1433
+ module_eval <<-'.,.,118754108745043.,.,', 'pl0d/pl0ds.dr', 229
1434
+ def _ast_8 val
1435
+ NodeList.new(val[0].lineno, [val[0]])
1436
+ end
1437
+
1438
+ .,.,118754108745043.,.,
1439
+
1440
+ module_eval <<-'.,.,118754108726175.,.,', 'pl0d/pl0ds.dr', 231
1441
+ def _ast_9 val
1442
+ val[0].push(val[2])
1443
+ end
1444
+
1445
+ .,.,118754108726175.,.,
1446
+
1447
+ module_eval <<-'.,.,118754108751885.,.,', 'pl0d/pl0ds.dr', 236
1448
+ def _ast_10 val
1449
+ Node_const_init.new(val[0].lineno, val[0], val[2])
1450
+ end
1451
+
1452
+ .,.,118754108751885.,.,
1453
+
1454
+ module_eval <<-'.,.,118754108731413.,.,', 'pl0d/pl0ds.dr', 241
1455
+ def _ast_11 val
1456
+ NodeList.new(val[0].lineno, [val[0]])
1457
+ end
1458
+
1459
+ .,.,118754108731413.,.,
1460
+
1461
+ module_eval <<-'.,.,118754108762803.,.,', 'pl0d/pl0ds.dr', 243
1462
+ def _ast_12 val
1463
+ val[0].push(val[2])
1464
+ end
1465
+
1466
+ .,.,118754108762803.,.,
1467
+
1468
+ module_eval <<-'.,.,118754108760561.,.,', 'pl0d/pl0ds.dr', 247
1469
+ def _ast_13 val
1470
+ Node_nop_stmt.new(basis.file.lineno, NodeList.new(basis.file.lineno, []))
1471
+ end
1472
+
1473
+ .,.,118754108760561.,.,
1474
+
1475
+ module_eval <<-'.,.,11875410873504.,.,', 'pl0d/pl0ds.dr', 249
1476
+ def _ast_14 val
1477
+ Node_assign_stmt.new(val[0].lineno, val[0], val[2])
1478
+ end
1479
+
1480
+ .,.,11875410873504.,.,
1481
+
1482
+ module_eval <<-'.,.,118754108713027.,.,', 'pl0d/pl0ds.dr', 251
1483
+ def _ast_15 val
1484
+ Node_begin_stmt.new(val[0].lineno, val[1], val[2])
1485
+ end
1486
+
1487
+ .,.,118754108713027.,.,
1488
+
1489
+ module_eval <<-'.,.,118754108719666.,.,', 'pl0d/pl0ds.dr', 253
1490
+ def _ast_16 val
1491
+ Node_if_stmt.new(val[0].lineno, val[1], val[3])
1492
+ end
1493
+
1494
+ .,.,118754108719666.,.,
1495
+
1496
+ module_eval <<-'.,.,118754108739704.,.,', 'pl0d/pl0ds.dr', 255
1497
+ def _ast_17 val
1498
+ Node_while_stmt.new(val[0].lineno, val[1], val[3])
1499
+ end
1500
+
1501
+ .,.,118754108739704.,.,
1502
+
1503
+ module_eval <<-'.,.,11875410875794.,.,', 'pl0d/pl0ds.dr', 257
1504
+ def _ast_18 val
1505
+ Node_return_stmt.new(val[0].lineno, val[1])
1506
+ end
1507
+
1508
+ .,.,11875410875794.,.,
1509
+
1510
+ module_eval <<-'.,.,118754108744227.,.,', 'pl0d/pl0ds.dr', 259
1511
+ def _ast_19 val
1512
+ Node_apply.new(val[0].lineno, Depager::Token['write'], NodeList.new(val[0].lineno, [val[1]]))
1513
+ end
1514
+
1515
+ .,.,118754108744227.,.,
1516
+
1517
+ module_eval <<-'.,.,118754108763948.,.,', 'pl0d/pl0ds.dr', 261
1518
+ def _ast_20 val
1519
+ Node_apply.new(val[0].lineno, Depager::Token['writeln'], NodeList.new(basis.file.lineno, []))
1520
+ end
1521
+
1522
+ .,.,118754108763948.,.,
1523
+
1524
+ module_eval <<-'.,.,118754108740172.,.,', 'pl0d/pl0ds.dr', 265
1525
+ def _ast_21 val
1526
+ NodeList.new(basis.file.lineno, [])
1527
+ end
1528
+
1529
+ .,.,118754108740172.,.,
1530
+
1531
+ module_eval <<-'.,.,118754108721677.,.,', 'pl0d/pl0ds.dr', 267
1532
+ def _ast_22 val
1533
+ val[0].push(val[2])
1534
+ end
1535
+
1536
+ .,.,118754108721677.,.,
1537
+
1538
+ module_eval <<-'.,.,118754108735202.,.,', 'pl0d/pl0ds.dr', 272
1539
+ def _ast_23 val
1540
+ Node_apply.new(val[0].lineno, Depager::Token['odd'], NodeList.new(val[0].lineno, [val[1]]))
1541
+ end
1542
+
1543
+ .,.,118754108735202.,.,
1544
+
1545
+ module_eval <<-'.,.,118754108736535.,.,', 'pl0d/pl0ds.dr', 274
1546
+ def _ast_24 val
1547
+ Node_apply.new(val[0].lineno, Depager::Token['='], NodeList.new(val[0].lineno, [val[0], val[2]]))
1548
+ end
1549
+
1550
+ .,.,118754108736535.,.,
1551
+
1552
+ module_eval <<-'.,.,1187541087179.,.,', 'pl0d/pl0ds.dr', 276
1553
+ def _ast_25 val
1554
+ Node_apply.new(val[0].lineno, Depager::Token['<>'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1555
+ end
1556
+
1557
+ .,.,1187541087179.,.,
1558
+
1559
+ module_eval <<-'.,.,118754108713463.,.,', 'pl0d/pl0ds.dr', 278
1560
+ def _ast_26 val
1561
+ Node_apply.new(val[0].lineno, Depager::Token['<'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1562
+ end
1563
+
1564
+ .,.,118754108713463.,.,
1565
+
1566
+ module_eval <<-'.,.,118754108751700.,.,', 'pl0d/pl0ds.dr', 280
1567
+ def _ast_27 val
1568
+ Node_apply.new(val[0].lineno, Depager::Token['>'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1569
+ end
1570
+
1571
+ .,.,118754108751700.,.,
1572
+
1573
+ module_eval <<-'.,.,118754108731039.,.,', 'pl0d/pl0ds.dr', 282
1574
+ def _ast_28 val
1575
+ Node_apply.new(val[0].lineno, Depager::Token['<='], NodeList.new(val[0].lineno, [val[0], val[2]]))
1576
+ end
1577
+
1578
+ .,.,118754108731039.,.,
1579
+
1580
+ module_eval <<-'.,.,118754108740869.,.,', 'pl0d/pl0ds.dr', 284
1581
+ def _ast_29 val
1582
+ Node_apply.new(val[0].lineno, Depager::Token['>='], NodeList.new(val[0].lineno, [val[0], val[2]]))
1583
+ end
1584
+
1585
+ .,.,118754108740869.,.,
1586
+
1587
+ module_eval <<-'.,.,118754108740678.,.,', 'pl0d/pl0ds.dr', 289
1588
+ def _ast_30 val
1589
+ Node_apply.new(val[0].lineno, Depager::Token['+'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1590
+ end
1591
+
1592
+ .,.,118754108740678.,.,
1593
+
1594
+ module_eval <<-'.,.,118754108737097.,.,', 'pl0d/pl0ds.dr', 291
1595
+ def _ast_31 val
1596
+ Node_apply.new(val[0].lineno, Depager::Token['-'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1597
+ end
1598
+
1599
+ .,.,118754108737097.,.,
1600
+
1601
+ module_eval <<-'.,.,118754108740133.,.,', 'pl0d/pl0ds.dr', 293
1602
+ def _ast_32 val
1603
+ val[0]
1604
+ end
1605
+
1606
+ .,.,118754108740133.,.,
1607
+
1608
+ module_eval <<-'.,.,118754108740085.,.,', 'pl0d/pl0ds.dr', 295
1609
+ def _ast_33 val
1610
+ Node_apply.new(val[0].lineno, Depager::Token['UMINUS'], NodeList.new(val[0].lineno, [val[1]]))
1611
+ end
1612
+
1613
+ .,.,118754108740085.,.,
1614
+
1615
+ module_eval <<-'.,.,118754108751372.,.,', 'pl0d/pl0ds.dr', 300
1616
+ def _ast_34 val
1617
+ Node_apply.new(val[0].lineno, Depager::Token['*'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1618
+ end
1619
+
1620
+ .,.,118754108751372.,.,
1621
+
1622
+ module_eval <<-'.,.,118754108734661.,.,', 'pl0d/pl0ds.dr', 302
1623
+ def _ast_35 val
1624
+ Node_apply.new(val[0].lineno, Depager::Token['/'], NodeList.new(val[0].lineno, [val[0], val[2]]))
1625
+ end
1626
+
1627
+ .,.,118754108734661.,.,
1628
+
1629
+ module_eval <<-'.,.,118754108749541.,.,', 'pl0d/pl0ds.dr', 304
1630
+ def _ast_36 val
1631
+ val[0]
1632
+ end
1633
+
1634
+ .,.,118754108749541.,.,
1635
+
1636
+ module_eval <<-'.,.,118754108723290.,.,', 'pl0d/pl0ds.dr', 309
1637
+ def _ast_37 val
1638
+ Node_refv.new(val[0].lineno, val[0])
1639
+ end
1640
+
1641
+ .,.,118754108723290.,.,
1642
+
1643
+ module_eval <<-'.,.,118754108715292.,.,', 'pl0d/pl0ds.dr', 311
1644
+ def _ast_38 val
1645
+ Node_number.new(val[0].lineno, val[0])
1646
+ end
1647
+
1648
+ .,.,118754108715292.,.,
1649
+
1650
+ module_eval <<-'.,.,118754108760976.,.,', 'pl0d/pl0ds.dr', 313
1651
+ def _ast_39 val
1652
+ Node_apply.new(val[0].lineno, val[0], NodeList.new(basis.file.lineno, []))
1653
+ end
1654
+
1655
+ .,.,118754108760976.,.,
1656
+
1657
+ module_eval <<-'.,.,118754108756282.,.,', 'pl0d/pl0ds.dr', 315
1658
+ def _ast_40 val
1659
+ Node_apply.new(val[0].lineno, val[0], val[2])
1660
+ end
1661
+
1662
+ .,.,118754108756282.,.,
1663
+
1664
+ module_eval <<-'.,.,11875410872866.,.,', 'pl0d/pl0ds.dr', 317
1665
+ def _ast_41 val
1666
+ val[1]
1667
+ end
1668
+
1669
+ .,.,11875410872866.,.,
1670
+
1671
+ module_eval <<-'.,.,118754108711379.,.,', 'pl0d/pl0ds.dr', 322
1672
+ def _ast_42 val
1673
+ NodeList.new(val[0].lineno, [val[0]])
1674
+ end
1675
+
1676
+ .,.,118754108711379.,.,
1677
+
1678
+ module_eval <<-'.,.,118754108743061.,.,', 'pl0d/pl0ds.dr', 324
1679
+ def _ast_43 val
1680
+ val[0].push(val[2])
1681
+ end
1682
+
1683
+ .,.,118754108743061.,.,
1684
+
1685
+ end
1686
+
1687
+
1688
+ def createDecoratedPL0d
1689
+ D4PL0d::ASTBuilderLazy.new(PL0d.new())
1690
+ end
1691
+
1692
+ ### main
1693
+ if __FILE__ == $0
1694
+ ### Main Code
1695
+ require 'pp'
1696
+ psr = createDecoratedPL0d
1697
+ t, = psr.yyparse(STDIN)
1698
+ # pp t
1699
+ v = Visitor.new
1700
+ t.accept(v)
1701
+
1702
+ end