depager 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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