depager 0.2.0 → 0.2.2

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