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
@@ -11,30 +11,47 @@ module Depager
11
11
  #
12
12
  class FileManager
13
13
  def initialize f=nil
14
- @file = f
14
+ @files = []
15
+ @files << f if f
15
16
  end
16
- def file= f
17
- @file = f
17
+ def __file= f
18
+ # @file = f
18
19
  end
19
20
  def eof?
20
- @file.eof?
21
+ ceof = current.eof?
22
+ if !ceof
23
+ ceof
24
+ elsif @files.size == 1
25
+ ceof
26
+ else
27
+ @files.pop
28
+ self.eof?
29
+ end
21
30
  end
22
31
  # get file name
23
32
  def fname
24
- File.basename @file.path
33
+ File.basename current.path
25
34
  end
26
35
  # get file path
27
36
  def path
28
- @file.path
37
+ current.path
29
38
  end
30
39
  # get current line no
31
40
  def lineno
32
- @file.lineno
41
+ current.lineno
42
+ end
43
+ # add file to files
44
+ def add_file f
45
+ @files << f
46
+ end
47
+ #current file
48
+ def current
49
+ @files.last
33
50
  end
34
51
 
35
52
  # get next line
36
53
  def getline
37
- @file.gets
54
+ current.gets unless eof?
38
55
  end
39
56
  alias gets getline
40
57
  end
@@ -61,9 +78,9 @@ module Depager
61
78
  case line = files.getline
62
79
  when /^\s*(#.*)?$/
63
80
  #skip space and comment.
64
- when /^%class\s+(\S+)\s+based_on\s+(\S+)\s+\(\s*'(.+)'\s*\)\s*$/
81
+ when /^%class\s+(\S+)\s+based_on\s+(\S+)(\s+\(\s*'(.+)'\s*\))?\s*$/
65
82
  @target_name = $1
66
- require $3
83
+ require $4 if $4
67
84
  ns = $2.split(/::/)
68
85
  ge = ns.pop
69
86
  m = ns.inject(Object){|c,name| c.const_get(name) }
@@ -186,7 +203,13 @@ module Depager
186
203
  public
187
204
  def gettoken
188
205
  while !@line.empty? || !eof?
189
- getline if @line.empty?
206
+ if @line.empty?
207
+ getline
208
+ if @line =~ /^%include\s+'(.+?)'\s*$/
209
+ files.add_file File.open($1)
210
+ @line = ''
211
+ end
212
+ end
190
213
  @oldline = @line
191
214
  tag = s = name = val = nil
192
215
  until @line.empty? do
@@ -206,7 +229,7 @@ module Depager
206
229
  s = $1.intern
207
230
  name = $3 ? $3 : $1
208
231
  val = @terms[s] ||= - (@terms.size + 1)
209
- when /^'(.)'/
232
+ when /^'(.+?)'/
210
233
  tag = :T
211
234
  name = s = $1
212
235
  val = @terms[s] ||= - (@terms.size + 1)
@@ -287,7 +310,7 @@ module Depager
287
310
  def add_rule lhs, rhs, prec=nil
288
311
  @lhs_syms[lhs] = true
289
312
  rule = @parsing_method::Rule[lhs, rhs, prec]
290
- @g.push rule
313
+ @rules.push rule
291
314
  return rule
292
315
  end
293
316
 
@@ -312,7 +335,7 @@ module Depager
312
335
  end
313
336
  end
314
337
 
315
- attr_accessor :g, :terms, :nonterms, :precs
338
+ attr_accessor :rules, :terms, :nonterms, :precs
316
339
  attr_accessor :line, :line0, :oldline, :token
317
340
  attr_accessor :optouter, :optinner, :optmain, :mixin
318
341
  attr_accessor :nparams, :lhs, :rhs, :nrhs, :rhsni, :nparam, :nrules
@@ -357,7 +380,7 @@ module Depager
357
380
  def make_grammar precs
358
381
  ts = @nonterms.size - 1
359
382
  @terms.each{|k,v| @terms[k] = ts - v}
360
- @g[0].act = Array.new(@nparam-1)
383
+ # @grammar[0].act = Array.new(@nparam-1)
361
384
 
362
385
  @precs = {}
363
386
  precs.each_with_index do |p, x|
@@ -369,9 +392,9 @@ module Depager
369
392
  end
370
393
  end
371
394
  end
372
- @g.each do |rl|
373
- rl.r.each_with_index{|i, x| rl.r[x] = ts - i if i < 0}
374
- rl.prec &&= @precs[@terms[rl.prec]]
395
+ @rules.each do |rule|
396
+ rule.rhs.each_with_index{|i, x| rule.rhs[x] = ts - i if i < 0}
397
+ rule.prec &&= @precs[@terms[rule.prec]]
375
398
  end
376
399
  end
377
400
  alias mkg make_grammar
@@ -396,7 +419,7 @@ module Depager
396
419
  end
397
420
 
398
421
  def init_grammar
399
- @g = [@parsing_method::Rule[0 , [1]]]
422
+ @rules = [@parsing_method::Rule[0 , [1]]]
400
423
  @terms = { nil => -1, false => -2 }
401
424
  @nonterms = {'$start' => 0}
402
425
  @i2s = {}
@@ -406,12 +429,21 @@ module Depager
406
429
 
407
430
  public
408
431
  # extend paser
409
- # ext:: extension name
410
- def extend_paser ext
432
+ # extentions:: array of [name, paht]
433
+ # options:: hash of options
434
+ def extend_paser extentions, options
411
435
  init_hook
412
- ext.each do |f,m|
436
+ extentions.each do |f,m|
413
437
  require f if f
414
- Object.const_get("#{m}Extension").new.send(:__regext__, self)
438
+ e = Object.const_get("#{m}Extension").new
439
+ options[m] and options[m].each do |k,v|
440
+ begin
441
+ e.send("#{k}=", v)
442
+ rescue NoMethodError
443
+ warning "no such a option '#{m}.#{k}'."
444
+ end
445
+ end
446
+ e.send(:__regext__, self)
415
447
  end
416
448
  end
417
449
 
@@ -438,7 +470,7 @@ module Depager
438
470
  check_grammar
439
471
  make_grammar precs
440
472
  @table = @parsing_method::Table.new(
441
- @parsing_method::Grammar.new(@g, @terms, @nonterms, @precs))
473
+ @parsing_method::Grammar.new(@rules, @terms, @nonterms, @precs))
442
474
  @table.check_table @d_parser
443
475
  @table
444
476
  end
@@ -464,7 +496,7 @@ module Depager
464
496
  end
465
497
  attr_reader :d_parser, :parsing_method
466
498
  attr_accessor :optouter, :optinner, :optmain
467
- attr_accessor :basis_name, :deco, :req
499
+ attr_accessor :basis_name, :deco, :req, :options
468
500
  def initialize d_parser
469
501
  @d_parser = d_parser
470
502
  @parsing_method = nil
@@ -473,6 +505,7 @@ module Depager
473
505
  @deco = []
474
506
  @req = []
475
507
  @ext = []
508
+ @options = {}
476
509
 
477
510
  @optinner = []
478
511
  @optouter = []
@@ -480,6 +513,8 @@ module Depager
480
513
  @precs = []
481
514
  @mixin = []
482
515
 
516
+ @dr_option = {}
517
+
483
518
  @tmpldir = Generator::Tmpldir+'/'
484
519
  end
485
520
 
@@ -487,9 +522,11 @@ module Depager
487
522
  precs = []
488
523
  until files.eof?
489
524
  case line = files.getline
525
+ when /^\s*$/, /^\s*#.*$/
526
+ # skip
490
527
  when /^\s*(left|right|nonassoc)\s+(.*)$/
491
528
  dir = $1.upcase.intern
492
- syms = $2.split.map{|i| (i =~ /'(.)'/) ? $1 : i.intern}
529
+ syms = $2.split.map{|i| (i =~ /'(.+?)'/) ? $1 : i.intern}
493
530
  precs.push [dir, syms]
494
531
  when /^%\}\s*$/
495
532
  break
@@ -521,10 +558,13 @@ module Depager
521
558
  @deco.push $1
522
559
  when /^%extend\s+(.*?)\s*\(\s*'(.*)'\s*\)\s*$/
523
560
  @ext.push [$2.strip, $1] unless @ext.find{|i| i[1] == $1}
524
- when /^%extend\s+(.*?)\s*$/
525
- # not implemented yet
526
- warning "'%extend E' is not implemented yet. " <<
527
- "use '%extend Ext (filename)' instead.", lineno
561
+ when /^%option\s+(\w+).(\w+)\s+(.*)\s*$/
562
+ if $1 == 'Generator'
563
+ @dr_option[$2] = $3
564
+ else
565
+ @options[$1] ||= []
566
+ @options[$1] << [$2, $3]
567
+ end
528
568
  when /^%require\s+'(.+?)'\s*$/
529
569
  @req.push "'#{$1}'"
530
570
  when /^%mixin\s+(\S+)\s*(\((.+)\)\s*)?$/
@@ -532,14 +572,6 @@ module Depager
532
572
  @req.push $3 if $3
533
573
  when /^%inner\s*\{\s*$/
534
574
  @optinner.push parse_block
535
- when /^%outer\s*\{\s*$/
536
- # obsolete
537
- warning "'%optouter' is obsolete."
538
- @optouter.push parse_block
539
- when /^%main\s*\{\s*$/
540
- # obsolete
541
- warning "'%optmain' is obsolete."
542
- @optmain.push parse_block
543
575
  when /^%prec\s*\{\s*$/
544
576
  @precs = parse_prec
545
577
  else
@@ -550,13 +582,14 @@ module Depager
550
582
 
551
583
 
552
584
  module Simple
553
- class G
554
- def initialize *args
555
- end
556
- end
585
+ Grammar = Depager::ParsingMethod::Grammar
586
+ Rule = Depager::ParsingMethod::Rule
557
587
  class Table
558
588
  def initialize *args
559
589
  end
590
+ def check_table *args
591
+ true
592
+ end
560
593
  end
561
594
  class SingleGenerator < Generator
562
595
  Tmplfile = 'simple.erb'
@@ -573,7 +606,7 @@ module Depager
573
606
  case line
574
607
  when /^%%\s*$/
575
608
  g_parser = GrammarParser.new(@d_parser)
576
- g_parser.extend_paser @ext
609
+ g_parser.extend_paser @ext, @options
577
610
  g_parser.parse(@d_parser.target_name, @mixin, @precs)
578
611
  @optmain.push parse_block
579
612
  return out_code(g_parser)
@@ -654,7 +687,7 @@ module Depager
654
687
  precs = parse_prec
655
688
  when /^%%\s*$/
656
689
  g_parser = GrammarParser.new(@d_parser)
657
- g_parser.extend_paser @ext
690
+ g_parser.extend_paser @ext, @options
658
691
  g_parser.parse(target_name, mixin, precs)
659
692
  g_parser.optinner.push inner
660
693
  return out_slave_code(g_parser, mixin, mtsk, banner)
@@ -1,4 +1,4 @@
1
- %defext ASTBuilderBaseExtension
1
+ %defext ASTBuilderExtension
2
2
  %extend Lexer ('depager/lex.rb')
3
3
  %extend NVAction ('depager/nvaction.rb')
4
4
  %decorate @NVAction
@@ -10,12 +10,32 @@
10
10
  @visitor = Hash.new{|hash, key| hash[key] = []}
11
11
  @optouter = []
12
12
  @on_reduce = []
13
+ @output_file_name = nil
13
14
  end
14
15
  def postRuleList
15
16
  g_parser.optouter <<
16
17
  gen_action_decorator_code(target_name, paramkey,
17
18
  @on_reduce, @optouter)
18
19
  end
20
+
21
+ Template = CodeUtils::make_tmpl("#{Depager::Tmpldir}/ast.erbs")
22
+ def modify_action_code code, nodes=[]
23
+ code = code.gsub(/\$\.([a-z_])/, 'node.\1')
24
+ code << %{
25
+ rescue
26
+ warn "raise at src:\#{node.lineno}/\#{node.class.name}"
27
+ raise
28
+ }
29
+ end
30
+ def gen_accept_code sym
31
+ return ''
32
+ end
33
+
34
+ attr_reader :output_file_name
35
+ def output_file_name= ofname
36
+ ofname = ofname.match(/'(.+)'/) ? $1 : ofname
37
+ @output_file_name = ofname
38
+ end
19
39
  %}
20
40
  %hook prerulelist /%AST\{\s*\Z/ skip
21
41
  %banner '%AST{ ... }'
@@ -36,21 +56,30 @@
36
56
  start:
37
57
  opt_defnode opt_defvis defnode_list
38
58
  {
39
- g_parser.optouter.push _opt_defnode, val[2]
40
- g_parser.optouter.push %{
59
+ code = _opt_defnode
60
+ code << val[2] << %{
41
61
  class Visitor
42
62
  def visit node
43
63
  node.accept(self)
44
64
  end
45
- #{master.visitor[nil]}
65
+ #{master.visitor[nil].join}
46
66
  end
47
67
  };#code
48
68
  master.visitor.each do |k, v|
49
- g_parser.optouter.push %{
69
+ next unless k
70
+ code << %{
50
71
  class Visitor_#{k}
51
- #{v}
72
+ #{v.join}
52
73
  end
53
- } if k ;#code
74
+ };#code
75
+ end
76
+ if master.output_file_name
77
+ File.open(master.output_file_name, 'w') do |f|
78
+ f.write code
79
+ end
80
+ g_parser.optouter << %!require '#{master.output_file_name}'\n!
81
+ else
82
+ g_parser.optouter << code
54
83
  end
55
84
  }
56
85
  ;
@@ -70,7 +99,7 @@
70
99
  { [] }
71
100
  | VISITOR opt_action
72
101
  {
73
- _opt_action[nil] = Token['', 0] unless _opt_action[nil]
102
+ _opt_action[nil] ||= Token['', 0]
74
103
  _opt_action.each do |pass, act|
75
104
  master.visitor[pass].unshift(
76
105
  master.gen_meval_code(act.lineno, 0, act.value.to_s))
@@ -106,7 +135,7 @@
106
135
  }
107
136
  ;
108
137
  defnode_header:
109
- ID '(' ')' { [_ID.value, nil]}
138
+ ID '(' ')' { [_ID.value, []]}
110
139
  | ID '(' fact_list ')' { [_ID.value, _fact_list] }
111
140
  ;
112
141
  opt_attr:
@@ -131,11 +160,11 @@
131
160
  | ACTION { {nil => _ACTION} }
132
161
  | pass_action_list
133
162
  {
134
- Hash.new(_pass_action_list).marge({nil => Token['', 0]})
163
+ Hash[ *_pass_action_list.flatten ].merge({nil => Token['', 0]})
135
164
  }
136
165
  ;
137
166
  pass_action_list:
138
- pass_action { _pass_action }
167
+ pass_action { [ _pass_action ] }
139
168
  | pass_action_list pass_action { _pass_action_list << _pass_action }
140
169
  ;
141
170
 
@@ -144,22 +173,30 @@
144
173
  ;
145
174
  #end-rule
146
175
  %%
147
- %hook postrhs
176
+ %hook postrhs /=>/ skip
148
177
  %banner '=>...'
149
178
  %prec{
150
179
  left LL '@'
151
180
  %}
181
+ %inner{
182
+ def do_default
183
+ n = master.nrules
184
+ master.optouter <<
185
+ master.gen_defm_code("_ast_#{n} val", "NilNode.new(basis.file.lineno)", lineno)
186
+ master.on_reduce[n] = ":_ast_#{n}"
187
+ end
188
+ %}
152
189
  %%
153
190
 
154
191
  %LEX{
155
192
  /[ \t]+/ { }
156
193
  /\r?\n/ { yield nil, nil }
157
194
  /<</ { yield _Token(:LL, $&) }
158
- /=>/ { yield _Token(:EG, $&) }
159
195
  /%([a-zA-Z0-9_]+)((::[a-zA-Z0-9_]+)*)/
160
196
  { yield _Token(:CONST, $1+$2) }
161
197
  /%\((.+)\)%/ { yield _Token(:EMBED, $1) }
162
198
  'nil' { yield _Token(:NIL, $&) }
199
+ 'NilNode' { yield _Token(:NILNODE, $&) }
163
200
  /[0-9]+/ { yield _Token(:NUMBER, $&.to_i) }
164
201
  /:[a-zA-Z0-9_]+/ { yield _Token(:SYMBOL, $&) }
165
202
  /[a-zA-Z][a-zA-Z0-9_]*/ { yield _Token(:ID, $&) }
@@ -168,11 +205,11 @@
168
205
  %}
169
206
  #begin-rule
170
207
  start:
171
- EG fnl
208
+ fnl
172
209
  {
173
210
  n = master.nrules
174
211
  master.optouter <<
175
- master.gen_defm_code("_ast_#{n} val", _fnl, _EG.lineno)
212
+ master.gen_defm_code("_ast_#{n} val", _fnl, basis.file.lineno)
176
213
  master.on_reduce[n] = ":_ast_#{n}"
177
214
  }
178
215
  ;
@@ -199,8 +236,8 @@
199
236
  fact:
200
237
  ID opt_embed
201
238
  {
202
- unless i = g_parser.name_to_rhs_index(val[0].value)
203
- warn "#{g_parser.lineno}: ?#{val[0].value}"
239
+ unless i = g_parser.name_to_rhs_index(_ID.value)
240
+ warn "#{g_parser.lineno}: ?#{_ID.value}"
204
241
  raise
205
242
  end
206
243
  "val[#{i}]#{val[1]}"
@@ -208,8 +245,9 @@
208
245
  | CONST { "Depager::Token[#{_CONST.value}]" }
209
246
  | SYMBOL { "Depager::Token[#{_SYMBOL.value}]" }
210
247
  | STR { "Depager::Token['#{_STR.value}']" }
211
- | NIL { "nil" }
248
+ | NILNODE { "NilNode.new(basis.file.lineno)" }
212
249
  | NUMBER { "Depager::Token[#{_NUMBER.value}]" }
250
+ | NIL { "nil" }
213
251
  ;
214
252
  opt_embed:
215
253
  { '' }
@@ -1,16 +1,16 @@
1
1
 
2
2
  ###
3
- ### ASTBuilderBaseExtension - Depager Extension (master)
3
+ ### ASTBuilderExtension - Depager Extension (master)
4
4
  ###
5
5
  require 'pp.rb'
6
6
  require 'depager/parser.rb'
7
7
  require 'depager/parse_action'
8
8
 
9
9
 
10
- module D4ASTBuilderBaseExtension #:nodoc:all
10
+ module D4ASTBuilderExtension #:nodoc:all
11
11
  end
12
12
 
13
- class ASTBuilderBaseExtension #:nodoc:all
13
+ class ASTBuilderExtension #:nodoc:all
14
14
  include Depager::ExtensionUtils
15
15
 
16
16
  attr_accessor :h2p
@@ -25,11 +25,11 @@ class ASTBuilderBaseExtension #:nodoc:all
25
25
  def __regext__ p
26
26
  super p, :default, nil
27
27
 
28
- @hook[0] = ASTBuilderBaseExtension_prerulelist.new(p, @nparam, self)
28
+ @hook[0] = ASTBuilderExtension_prerulelist.new(p, @nparam, self)
29
29
  @h2p['prerulelist'] = @hook[0]
30
30
  p.prerulelist.push [@hook[0], :do_parse]
31
31
 
32
- @hook[1] = ASTBuilderBaseExtension_postrhs.new(p, @nparam, self)
32
+ @hook[1] = ASTBuilderExtension_postrhs.new(p, @nparam, self)
33
33
  @h2p['postrhs'] = @hook[1]
34
34
  p.postrhs.push [@hook[1], :do_parse]
35
35
 
@@ -43,6 +43,7 @@ class ASTBuilderBaseExtension #:nodoc:all
43
43
  @visitor = Hash.new{|hash, key| hash[key] = []}
44
44
  @optouter = []
45
45
  @on_reduce = []
46
+ @output_file_name = nil
46
47
  end
47
48
  def postRuleList
48
49
  g_parser.optouter <<
@@ -50,17 +51,36 @@ class ASTBuilderBaseExtension #:nodoc:all
50
51
  @on_reduce, @optouter)
51
52
  end
52
53
 
54
+ Template = CodeUtils::make_tmpl("#{Depager::Tmpldir}/ast.erbs")
55
+ def modify_action_code code, nodes=[]
56
+ code = code.gsub(/\$\.([a-z_])/, 'node.\1')
57
+ code << %{
58
+ rescue
59
+ warn "raise at src:\#{node.lineno}/\#{node.class.name}"
60
+ raise
61
+ }
62
+ end
63
+ def gen_accept_code sym
64
+ return ''
65
+ end
66
+
67
+ attr_reader :output_file_name
68
+ def output_file_name= ofname
69
+ ofname = ofname.match(/'(.+)'/) ? $1 : ofname
70
+ @output_file_name = ofname
71
+ end
72
+
53
73
  end
54
74
 
55
75
  ### Outer Code
56
76
 
57
77
  ###
58
- ### ASTBuilderBaseExtension_prerulelist - Part of Depager Extension (slave)
78
+ ### ASTBuilderExtension_prerulelist - Part of Depager Extension (slave)
59
79
  ###
60
- module D4ASTBuilderBaseExtension_prerulelist #:nodoc:all
80
+ module D4ASTBuilderExtension_prerulelist #:nodoc:all
61
81
  end
62
82
 
63
- class ASTBuilderBaseExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
83
+ class ASTBuilderExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
64
84
  include Depager::ExtensionUtils
65
85
 
66
86
  include ActionParser
@@ -134,90 +154,90 @@ class ASTBuilderBaseExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
134
154
  ]
135
155
  ### Action Table
136
156
  action_table = [
137
- [ nil, nil, 1, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
138
- [ nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, ],
157
+ [ nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
139
158
  [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
140
- [ nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
141
- [ nil, nil, nil, 8, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
142
- [ nil, nil, nil, nil, nil, 10, nil, nil, nil, 9, nil, nil, nil, nil, ],
143
- [ nil, nil, nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
144
- [ nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, nil, ],
159
+ [ nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
160
+ [ nil, nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, ],
161
+ [ nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, ],
162
+ [ nil, nil, nil, 13, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
163
+ [ nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
164
+ [ nil, nil, nil, nil, nil, 20, nil, nil, nil, 18, nil, nil, nil, nil, ],
165
+ [ nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, ],
145
166
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
167
+ [ nil, nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, ],
168
+ [ nil, nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, nil, nil, ],
146
169
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
147
170
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
148
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 21, 22, nil, nil, nil, ],
171
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
149
172
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
173
+ [ nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, ],
150
174
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
151
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
152
175
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
153
- [ nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, nil, nil, ],
176
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 26, 27, nil, nil, nil, ],
154
177
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
155
- [ nil, nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, ],
156
- [ nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, ],
157
- [ nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, nil, ],
158
178
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
159
- [ nil, nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, nil, nil, nil, ],
179
+ [ nil, nil, nil, 13, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
180
+ [ nil, nil, nil, nil, nil, 32, nil, 29, nil, nil, nil, 33, nil, nil, ],
160
181
  [ 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, 29, ],
162
- [ nil, nil, nil, nil, nil, 31, nil, 34, nil, nil, nil, 32, nil, nil, ],
163
- [ nil, nil, nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
182
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 34, ],
164
183
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
184
+ [ nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, nil, nil, ],
165
185
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
166
- [ nil, nil, nil, 36, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
167
186
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
187
+ [ nil, nil, nil, nil, nil, nil, nil, 36, nil, nil, 37, nil, nil, nil, ],
168
188
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
169
- [ nil, nil, nil, nil, nil, 37, nil, nil, nil, nil, nil, nil, nil, nil, ],
170
- [ nil, nil, nil, nil, nil, nil, nil, 39, nil, nil, 38, nil, nil, nil, ],
171
189
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
190
+ [ nil, nil, nil, nil, nil, 38, nil, nil, nil, nil, nil, nil, nil, nil, ],
191
+ [ nil, nil, nil, 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
172
192
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
173
193
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
194
+ [ nil, nil, nil, nil, nil, 32, nil, nil, nil, nil, nil, 33, nil, nil, ],
174
195
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
175
- [ nil, nil, nil, nil, nil, 31, nil, nil, nil, nil, nil, 32, nil, nil, ],
176
196
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
177
197
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
178
198
  ]
179
199
  ### Default Reduce Table
180
200
  defred_table = [
181
201
  -2,
182
- -11,
183
202
  nil,
184
203
  -4,
185
- nil,
204
+ -11,
186
205
  nil,
187
206
  -20,
188
207
  nil,
189
- -3,
190
- -12,
191
- -18,
192
208
  nil,
193
- -21,
209
+ -1,
210
+ -6,
211
+ -11,
212
+ nil,
194
213
  -5,
214
+ -21,
195
215
  -22,
196
216
  -23,
197
217
  nil,
198
- -6,
218
+ -3,
219
+ -12,
199
220
  nil,
200
- -11,
201
- -1,
202
- -13,
221
+ -18,
222
+ -7,
223
+ -20,
203
224
  nil,
204
225
  -24,
205
226
  nil,
227
+ -13,
206
228
  nil,
207
- -20,
208
- -7,
209
- -19,
229
+ -8,
230
+ -9,
210
231
  nil,
211
232
  -14,
212
233
  -16,
213
234
  nil,
214
235
  nil,
215
- -9,
216
- -8,
217
- -25,
218
- -17,
219
- nil,
236
+ -19,
220
237
  -10,
238
+ nil,
239
+ -17,
240
+ -25,
221
241
  -15,
222
242
  ]
223
243
  defred_after_shift_table = [
@@ -229,38 +249,38 @@ class ASTBuilderBaseExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
229
249
  nil,
230
250
  nil,
231
251
  nil,
232
- -3,
233
- -12,
234
- -18,
235
252
  nil,
236
- -21,
253
+ -6,
254
+ nil,
255
+ nil,
237
256
  -5,
257
+ -21,
238
258
  nil,
239
259
  -23,
240
260
  nil,
241
- -6,
242
- nil,
261
+ -3,
262
+ -12,
243
263
  nil,
264
+ -18,
265
+ -7,
244
266
  nil,
245
- -13,
246
267
  nil,
247
268
  -24,
248
269
  nil,
270
+ -13,
249
271
  nil,
250
- nil,
251
- -7,
252
- -19,
272
+ -8,
273
+ -9,
253
274
  nil,
254
275
  -14,
255
276
  -16,
256
277
  nil,
257
278
  nil,
258
- -9,
259
- -8,
260
- -25,
261
- -17,
262
- nil,
279
+ -19,
263
280
  -10,
281
+ nil,
282
+ -17,
283
+ -25,
264
284
  -15,
265
285
  ]
266
286
  ### Nonterm to Int
@@ -297,33 +317,32 @@ class ASTBuilderBaseExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
297
317
  ]
298
318
  ### Goto Table
299
319
  goto_table = [
300
- [ 2, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
301
- [ nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, ],
302
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
303
- [ nil, nil, 7, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
320
+ [ 1, 2, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
304
321
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
305
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 11, nil, nil, nil, ],
306
- [ nil, nil, nil, nil, nil, 13, nil, nil, nil, nil, nil, 14, 15, ],
307
- [ nil, nil, nil, 20, nil, nil, 17, 19, nil, nil, nil, nil, nil, ],
322
+ [ nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
323
+ [ nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, nil, ],
324
+ [ nil, nil, nil, 8, nil, nil, 9, 10, nil, nil, nil, nil, nil, ],
325
+ [ nil, nil, nil, nil, nil, 12, nil, nil, nil, nil, nil, 14, 15, ],
308
326
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
327
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 19, nil, nil, nil, ],
328
+ [ nil, nil, nil, nil, nil, nil, 21, 10, nil, nil, nil, nil, nil, ],
309
329
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
330
+ [ nil, nil, nil, nil, 22, nil, nil, nil, nil, nil, nil, nil, nil, ],
310
331
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
311
332
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
312
333
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
334
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 24, ],
313
335
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
314
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 23, ],
315
336
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
316
337
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
317
338
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
318
339
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
319
- [ nil, nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, ],
320
- [ nil, nil, nil, nil, nil, nil, 27, 19, nil, nil, nil, nil, nil, ],
321
340
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
322
341
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
342
+ [ nil, nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, 14, 15, ],
343
+ [ nil, nil, nil, nil, nil, nil, nil, nil, 30, nil, 31, nil, nil, ],
323
344
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
324
345
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
325
- [ nil, nil, nil, nil, nil, nil, nil, nil, 33, nil, 30, nil, nil, ],
326
- [ nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, 14, 15, ],
327
346
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
328
347
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
329
348
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
@@ -338,6 +357,7 @@ class ASTBuilderBaseExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
338
357
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 40, nil, nil, ],
339
358
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
340
359
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
360
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
341
361
  ]
342
362
 
343
363
  Tables = [ reduce_table, nparams, action_table,
@@ -350,7 +370,7 @@ class ASTBuilderBaseExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
350
370
  @g_parser = @p = p
351
371
  @master = @m = master
352
372
  @nparam = nparam
353
- @dect = D4ASTBuilderBaseExtension_prerulelist::NVAction.new(self)
373
+ @dect = D4ASTBuilderExtension_prerulelist::NVAction.new(self)
354
374
  init_parser
355
375
  end
356
376
 
@@ -423,10 +443,9 @@ end
423
443
 
424
444
  ### Outer Code
425
445
 
426
- class D4ASTBuilderBaseExtension_prerulelist::NVAction < Depager::LALR::Action #:nodoc:all
446
+ class D4ASTBuilderExtension_prerulelist::NVAction < Depager::LALR::Action #:nodoc:all
427
447
  include Depager::DecoratorUtils
428
- include ActionParser
429
-
448
+ [" include ActionParser\n"]
430
449
  on_reduce = [
431
450
  nil,
432
451
  :_act_0,
@@ -464,42 +483,49 @@ class D4ASTBuilderBaseExtension_prerulelist::NVAction < Depager::LALR::Action #:
464
483
  end
465
484
 
466
485
 
467
- module_eval <<-'.,.,118754107738065.,.,', 'ast_base.dr', 36
468
- def _act_0 val
469
- _opt_defnode, _opt_defvis, _defnode_list = *val
486
+ module_eval <<-'.,.,120998292244191.,.,', 'ast.dr', 56
487
+ def _act_0 val
488
+ _opt_defnode, _opt_defvis, _defnode_list, = *val
470
489
 
471
- g_parser.optouter.push _opt_defnode, val[2]
472
- g_parser.optouter.push %{
490
+ code = _opt_defnode
491
+ code << val[2] << %{
473
492
  class Visitor
474
493
  def visit node
475
494
  node.accept(self)
476
495
  end
477
- #{master.visitor[nil]}
496
+ #{master.visitor[nil].join}
478
497
  end
479
498
  };#code
480
499
  master.visitor.each do |k, v|
481
- g_parser.optouter.push %{
500
+ next unless k
501
+ code << %{
482
502
  class Visitor_#{k}
483
- #{v}
503
+ #{v.join}
484
504
  end
485
- } if k ;#code
505
+ };#code
506
+ end
507
+ if master.output_file_name
508
+ File.open(master.output_file_name, 'w') do |f|
509
+ f.write code
510
+ end
511
+ g_parser.optouter << %!require '#{master.output_file_name}'\n!
512
+ else
513
+ g_parser.optouter << code
486
514
  end
487
515
 
488
- end
489
-
490
- .,.,118754107738065.,.,
516
+ end
517
+ .,.,120998292244191.,.,
491
518
 
492
- module_eval <<-'.,.,11875410776514.,.,', 'ast_base.dr', 56
493
- def _act_1 val
519
+ module_eval <<-'.,.,120998292256836.,.,', 'ast.dr', 85
520
+ def _act_1 val
494
521
  ""
495
522
 
496
- end
497
-
498
- .,.,11875410776514.,.,
523
+ end
524
+ .,.,120998292256836.,.,
499
525
 
500
- module_eval <<-'.,.,118754107720386.,.,', 'ast_base.dr', 58
501
- def _act_2 val
502
- _NODE, _opt_attr, _ACTION = *val
526
+ module_eval <<-'.,.,120998292239342.,.,', 'ast.dr', 87
527
+ def _act_2 val
528
+ _NODE, _opt_attr, _ACTION, = *val
503
529
 
504
530
  ini = %{
505
531
  def initialize
@@ -508,53 +534,48 @@ module_eval <<-'.,.,118754107720386.,.,', 'ast_base.dr', 58
508
534
  };#code
509
535
  master.gen_tmpl_code(:defnode, binding)
510
536
 
511
- end
512
-
513
- .,.,118754107720386.,.,
537
+ end
538
+ .,.,120998292239342.,.,
514
539
 
515
- module_eval <<-'.,.,118754107736984.,.,', 'ast_base.dr', 68
516
- def _act_3 val
540
+ module_eval <<-'.,.,120998292263713.,.,', 'ast.dr', 97
541
+ def _act_3 val
517
542
  []
518
543
 
519
- end
520
-
521
- .,.,118754107736984.,.,
544
+ end
545
+ .,.,120998292263713.,.,
522
546
 
523
- module_eval <<-'.,.,118754107764916.,.,', 'ast_base.dr', 70
524
- def _act_4 val
525
- _VISITOR, _opt_action = *val
547
+ module_eval <<-'.,.,120998292220850.,.,', 'ast.dr', 99
548
+ def _act_4 val
549
+ _VISITOR, _opt_action, = *val
526
550
 
527
- _opt_action[nil] = Token['', 0] unless _opt_action[nil]
551
+ _opt_action[nil] ||= Token['', 0]
528
552
  _opt_action.each do |pass, act|
529
553
  master.visitor[pass].unshift(
530
554
  master.gen_meval_code(act.lineno, 0, act.value.to_s))
531
555
  end
532
556
 
533
- end
534
-
535
- .,.,118754107764916.,.,
557
+ end
558
+ .,.,120998292220850.,.,
536
559
 
537
- module_eval <<-'.,.,118754107745518.,.,', 'ast_base.dr', 79
538
- def _act_5 val
539
- _defnode = *val
560
+ module_eval <<-'.,.,120998292217429.,.,', 'ast.dr', 108
561
+ def _act_5 val
562
+ _defnode, = *val
540
563
  _defnode
541
564
 
542
- end
543
-
544
- .,.,118754107745518.,.,
565
+ end
566
+ .,.,120998292217429.,.,
545
567
 
546
- module_eval <<-'.,.,118754107734821.,.,', 'ast_base.dr', 80
547
- def _act_6 val
548
- _defnode_list, _defnode = *val
568
+ module_eval <<-'.,.,120998292227244.,.,', 'ast.dr', 109
569
+ def _act_6 val
570
+ _defnode_list, _defnode, = *val
549
571
  _defnode_list << _defnode
550
572
 
551
- end
552
-
553
- .,.,118754107734821.,.,
573
+ end
574
+ .,.,120998292227244.,.,
554
575
 
555
- module_eval <<-'.,.,118754107753400.,.,', 'ast_base.dr', 84
556
- def _act_7 val
557
- _defnode_header, _opt_attr, _opt_action = *val
576
+ module_eval <<-'.,.,120998292237122.,.,', 'ast.dr', 113
577
+ def _act_7 val
578
+ _defnode_header, _opt_attr, _opt_action, = *val
558
579
 
559
580
  name, args = _defnode_header
560
581
  nodes, accept, attrs = [], '', _opt_attr
@@ -576,179 +597,161 @@ module_eval <<-'.,.,118754107753400.,.,', 'ast_base.dr', 84
576
597
  end
577
598
  master.gen_tmpl_code(:node, binding)
578
599
 
579
- end
580
-
581
- .,.,118754107753400.,.,
600
+ end
601
+ .,.,120998292237122.,.,
582
602
 
583
- module_eval <<-'.,.,118754107753793.,.,', 'ast_base.dr', 107
584
- def _act_8 val
585
- _ID, _, _ = *val
586
- [_ID.value, nil]
587
-
588
- end
603
+ module_eval <<-'.,.,12099829224464.,.,', 'ast.dr', 136
604
+ def _act_8 val
605
+ _ID, _, _, = *val
606
+ [_ID.value, []]
589
607
 
590
- .,.,118754107753793.,.,
608
+ end
609
+ .,.,12099829224464.,.,
591
610
 
592
- module_eval <<-'.,.,118754107756494.,.,', 'ast_base.dr', 108
593
- def _act_9 val
594
- _ID, _, _fact_list, _ = *val
611
+ module_eval <<-'.,.,120998292227496.,.,', 'ast.dr', 137
612
+ def _act_9 val
613
+ _ID, _, _fact_list, _, = *val
595
614
  [_ID.value, _fact_list]
596
615
 
597
- end
598
-
599
- .,.,118754107756494.,.,
616
+ end
617
+ .,.,120998292227496.,.,
600
618
 
601
- module_eval <<-'.,.,118754107730627.,.,', 'ast_base.dr', 111
602
- def _act_10 val
619
+ module_eval <<-'.,.,120998292215500.,.,', 'ast.dr', 140
620
+ def _act_10 val
603
621
  []
604
622
 
605
- end
606
-
607
- .,.,118754107730627.,.,
623
+ end
624
+ .,.,120998292215500.,.,
608
625
 
609
- module_eval <<-'.,.,118754107717207.,.,', 'ast_base.dr', 112
610
- def _act_11 val
611
- _, _ = *val
626
+ module_eval <<-'.,.,120998292236961.,.,', 'ast.dr', 141
627
+ def _act_11 val
628
+ _, _, = *val
612
629
  []
613
630
 
614
- end
615
-
616
- .,.,118754107717207.,.,
631
+ end
632
+ .,.,120998292236961.,.,
617
633
 
618
- module_eval <<-'.,.,118754107738971.,.,', 'ast_base.dr', 113
619
- def _act_12 val
620
- _, _id_list, _ = *val
634
+ module_eval <<-'.,.,120998292252270.,.,', 'ast.dr', 142
635
+ def _act_12 val
636
+ _, _id_list, _, = *val
621
637
  _id_list
622
638
 
623
- end
624
-
625
- .,.,118754107738971.,.,
639
+ end
640
+ .,.,120998292252270.,.,
626
641
 
627
- module_eval <<-'.,.,118754107752060.,.,', 'ast_base.dr', 116
628
- def _act_13 val
629
- _fact = *val
642
+ module_eval <<-'.,.,120998292239043.,.,', 'ast.dr', 145
643
+ def _act_13 val
644
+ _fact, = *val
630
645
  [_fact]
631
646
 
632
- end
633
-
634
- .,.,118754107752060.,.,
647
+ end
648
+ .,.,120998292239043.,.,
635
649
 
636
- module_eval <<-'.,.,118754107715890.,.,', 'ast_base.dr', 117
637
- def _act_14 val
638
- _fact_list, _, _fact = *val
650
+ module_eval <<-'.,.,120998292235915.,.,', 'ast.dr', 146
651
+ def _act_14 val
652
+ _fact_list, _, _fact, = *val
639
653
  _fact_list.push _fact
640
654
 
641
- end
642
-
643
- .,.,118754107715890.,.,
655
+ end
656
+ .,.,120998292235915.,.,
644
657
 
645
- module_eval <<-'.,.,118754107746326.,.,', 'ast_base.dr', 120
646
- def _act_15 val
647
- _ID = *val
658
+ module_eval <<-'.,.,120998292224012.,.,', 'ast.dr', 149
659
+ def _act_15 val
660
+ _ID, = *val
648
661
  _ID.value
649
662
 
650
- end
651
-
652
- .,.,118754107746326.,.,
663
+ end
664
+ .,.,120998292224012.,.,
653
665
 
654
- module_eval <<-'.,.,11875410778315.,.,', 'ast_base.dr', 121
655
- def _act_16 val
656
- _, _ID = *val
666
+ module_eval <<-'.,.,120998292234792.,.,', 'ast.dr', 150
667
+ def _act_16 val
668
+ _, _ID, = *val
657
669
  '-' + _ID.value
658
670
 
659
- end
660
-
661
- .,.,11875410778315.,.,
671
+ end
672
+ .,.,120998292234792.,.,
662
673
 
663
- module_eval <<-'.,.,118754107752669.,.,', 'ast_base.dr', 124
664
- def _act_17 val
665
- _ID = *val
674
+ module_eval <<-'.,.,120998292214019.,.,', 'ast.dr', 153
675
+ def _act_17 val
676
+ _ID, = *val
666
677
  [ _ID.value ]
667
678
 
668
- end
669
-
670
- .,.,118754107752669.,.,
679
+ end
680
+ .,.,120998292214019.,.,
671
681
 
672
- module_eval <<-'.,.,118754107765360.,.,', 'ast_base.dr', 125
673
- def _act_18 val
674
- _id_list, _, _ID = *val
682
+ module_eval <<-'.,.,120998292250833.,.,', 'ast.dr', 154
683
+ def _act_18 val
684
+ _id_list, _, _ID, = *val
675
685
  _id_list.push _ID.value
676
686
 
677
- end
678
-
679
- .,.,118754107765360.,.,
687
+ end
688
+ .,.,120998292250833.,.,
680
689
 
681
- module_eval <<-'.,.,118754107744253.,.,', 'ast_base.dr', 128
682
- def _act_19 val
690
+ module_eval <<-'.,.,12099829221352.,.,', 'ast.dr', 157
691
+ def _act_19 val
683
692
  {nil => Token['', 0]}
684
693
 
685
- end
686
-
687
- .,.,118754107744253.,.,
694
+ end
695
+ .,.,12099829221352.,.,
688
696
 
689
- module_eval <<-'.,.,118754107754433.,.,', 'ast_base.dr', 129
690
- def _act_20 val
691
- _ACTION = *val
697
+ module_eval <<-'.,.,120998292263848.,.,', 'ast.dr', 158
698
+ def _act_20 val
699
+ _ACTION, = *val
692
700
  {nil => _ACTION}
693
701
 
694
- end
695
-
696
- .,.,118754107754433.,.,
702
+ end
703
+ .,.,120998292263848.,.,
697
704
 
698
- module_eval <<-'.,.,1187541077547.,.,', 'ast_base.dr', 131
699
- def _act_21 val
700
- _pass_action_list = *val
701
-
702
- Hash.new(_pass_action_list).marge({nil => Token['', 0]})
705
+ module_eval <<-'.,.,12099829226375.,.,', 'ast.dr', 160
706
+ def _act_21 val
707
+ _pass_action_list, = *val
703
708
 
704
- end
709
+ Hash[ *_pass_action_list.flatten ].merge({nil => Token['', 0]})
705
710
 
706
- .,.,1187541077547.,.,
711
+ end
712
+ .,.,12099829226375.,.,
707
713
 
708
- module_eval <<-'.,.,118754107719437.,.,', 'ast_base.dr', 136
709
- def _act_22 val
710
- _pass_action = *val
711
- _pass_action
714
+ module_eval <<-'.,.,120998292257313.,.,', 'ast.dr', 165
715
+ def _act_22 val
716
+ _pass_action, = *val
717
+ [ _pass_action ]
712
718
 
713
- end
714
-
715
- .,.,118754107719437.,.,
719
+ end
720
+ .,.,120998292257313.,.,
716
721
 
717
- module_eval <<-'.,.,118754107742276.,.,', 'ast_base.dr', 137
718
- def _act_23 val
719
- _pass_action_list, _pass_action = *val
722
+ module_eval <<-'.,.,120998292225817.,.,', 'ast.dr', 166
723
+ def _act_23 val
724
+ _pass_action_list, _pass_action, = *val
720
725
  _pass_action_list << _pass_action
721
726
 
722
- end
723
-
724
- .,.,118754107742276.,.,
727
+ end
728
+ .,.,120998292225817.,.,
725
729
 
726
- module_eval <<-'.,.,118754107745765.,.,', 'ast_base.dr', 141
727
- def _act_24 val
728
- _, _ID, _, _ACTION = *val
730
+ module_eval <<-'.,.,120998292244454.,.,', 'ast.dr', 170
731
+ def _act_24 val
732
+ _, _ID, _, _ACTION, = *val
729
733
  [_ID.value, _ACTION]
730
734
 
731
- end
732
-
733
- .,.,118754107745765.,.,
735
+ end
736
+ .,.,120998292244454.,.,
734
737
 
735
738
  end
736
739
 
737
740
 
738
741
  ###
739
- ### ASTBuilderBaseExtension_postrhs - Part of Depager Extension (slave)
742
+ ### ASTBuilderExtension_postrhs - Part of Depager Extension (slave)
740
743
  ###
741
- module D4ASTBuilderBaseExtension_postrhs #:nodoc:all
744
+ module D4ASTBuilderExtension_postrhs #:nodoc:all
742
745
  end
743
746
 
744
- class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
747
+ class ASTBuilderExtension_postrhs < Depager::LALR::Basis #:nodoc:all
745
748
  include Depager::ExtensionUtils
746
749
 
747
750
 
748
751
  ### Reduce Table
749
752
  reduce_table = [
750
753
  [ -1, 1 ],
751
- [ 0, 2 ],
754
+ [ 0, 1 ],
752
755
  [ 2, 3 ],
753
756
  [ 2, 4 ],
754
757
  [ 3, 1 ],
@@ -762,6 +765,7 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
762
765
  [ 4, 1 ],
763
766
  [ 4, 1 ],
764
767
  [ 4, 1 ],
768
+ [ 4, 1 ],
765
769
  [ 6, 0 ],
766
770
  [ 6, 1 ],
767
771
  [ 5, 2 ],
@@ -777,16 +781,16 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
777
781
  t2i = {
778
782
  nil => 0,
779
783
  false => 1,
780
- :EG => 2,
781
- :ID => 3,
782
- "(" => 4,
783
- ")" => 5,
784
- "," => 6,
785
- :CONST => 7,
786
- :SYMBOL => 8,
787
- :STR => 9,
788
- :NIL => 10,
789
- :NUMBER => 11,
784
+ :ID => 2,
785
+ "(" => 3,
786
+ ")" => 4,
787
+ "," => 5,
788
+ :CONST => 6,
789
+ :SYMBOL => 7,
790
+ :STR => 8,
791
+ :NILNODE => 9,
792
+ :NUMBER => 10,
793
+ :NIL => 11,
790
794
  :EMBED => 12,
791
795
  "[" => 13,
792
796
  "]" => 14,
@@ -797,7 +801,6 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
797
801
  i2t = [
798
802
  nil,
799
803
  false,
800
- :EG,
801
804
  :ID,
802
805
  "(",
803
806
  ")",
@@ -805,8 +808,9 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
805
808
  :CONST,
806
809
  :SYMBOL,
807
810
  :STR,
808
- :NIL,
811
+ :NILNODE,
809
812
  :NUMBER,
813
+ :NIL,
810
814
  :EMBED,
811
815
  "[",
812
816
  "]",
@@ -815,66 +819,66 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
815
819
  ]
816
820
  ### Action Table
817
821
  action_table = [
818
- [ nil, nil, 2, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
822
+ [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
819
823
  [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
820
- [ nil, nil, nil, 5, nil, nil, nil, 12, 3, 6, 8, 10, nil, 13, nil, nil, nil, ],
824
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
821
825
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
822
826
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
823
- [ nil, nil, nil, nil, 14, nil, nil, nil, nil, nil, nil, nil, 16, nil, nil, nil, nil, ],
824
827
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
828
+ [ nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, nil, 17, nil, nil, nil, nil, ],
825
829
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
826
830
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
827
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 17, 18, ],
828
831
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
829
832
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
830
833
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
831
- [ nil, nil, nil, 5, nil, nil, nil, 12, 3, 6, 8, 10, nil, 13, 19, nil, nil, ],
832
- [ nil, nil, nil, 5, nil, 22, nil, 12, 3, 6, 8, 10, nil, 13, nil, nil, nil, ],
833
834
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
835
+ [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, 19, nil, nil, ],
836
+ [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
837
+ [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
834
838
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
835
- [ nil, nil, nil, 5, nil, nil, nil, 12, 3, 6, 8, 10, nil, 13, nil, nil, nil, ],
836
- [ nil, nil, nil, 5, nil, nil, nil, 12, 3, 6, 8, 10, nil, 13, nil, nil, nil, ],
837
839
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
838
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 17, 18, ],
839
- [ nil, nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, 26, nil, nil, ],
840
+ [ nil, nil, 6, nil, 24, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
840
841
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
841
- [ nil, nil, nil, nil, nil, 28, 27, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
842
+ [ nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, nil, 26, nil, nil, ],
843
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
844
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
845
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
842
846
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
847
+ [ nil, nil, nil, nil, 28, 27, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
843
848
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
849
+ [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
844
850
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
845
- [ nil, nil, nil, 5, nil, nil, nil, 12, 3, 6, 8, 10, nil, 13, nil, nil, nil, ],
846
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
847
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 17, 18, ],
851
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
848
852
  ]
849
853
  ### Default Reduce Table
850
854
  defred_table = [
851
855
  nil,
852
856
  nil,
853
- nil,
854
- -11,
857
+ -1,
855
858
  -6,
856
- -15,
857
- -12,
859
+ -7,
858
860
  -8,
861
+ -16,
862
+ -10,
863
+ -11,
864
+ -12,
859
865
  -13,
860
- -1,
861
866
  -14,
862
- -7,
863
- -10,
867
+ -15,
868
+ nil,
864
869
  nil,
865
870
  nil,
866
871
  -9,
867
- -16,
872
+ -17,
868
873
  nil,
874
+ -18,
869
875
  nil,
870
- -17,
871
876
  -4,
872
- nil,
877
+ -20,
878
+ -21,
873
879
  -2,
874
880
  nil,
875
881
  -19,
876
- -20,
877
- -18,
878
882
  nil,
879
883
  -3,
880
884
  -5,
@@ -883,30 +887,30 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
883
887
  nil,
884
888
  nil,
885
889
  nil,
886
- -11,
887
890
  -6,
891
+ -7,
892
+ -8,
888
893
  nil,
894
+ -10,
895
+ -11,
889
896
  -12,
890
- -8,
891
897
  -13,
892
- nil,
893
898
  -14,
894
- -7,
895
- -10,
899
+ -15,
900
+ nil,
896
901
  nil,
897
902
  nil,
898
903
  -9,
899
- -16,
904
+ -17,
905
+ nil,
906
+ -18,
900
907
  nil,
901
908
  nil,
902
- -17,
903
909
  nil,
904
910
  nil,
905
911
  -2,
906
912
  nil,
907
913
  -19,
908
- -20,
909
- -18,
910
914
  nil,
911
915
  -3,
912
916
  nil,
@@ -933,26 +937,25 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
933
937
  ]
934
938
  ### Goto Table
935
939
  goto_table = [
936
- [ 1, nil, nil, nil, nil, nil, nil, ],
940
+ [ 1, 2, 4, nil, 3, 5, nil, ],
937
941
  [ nil, nil, nil, nil, nil, nil, nil, ],
938
- [ nil, 9, 11, nil, 4, 7, nil, ],
939
942
  [ nil, nil, nil, nil, nil, nil, nil, ],
940
943
  [ nil, nil, nil, nil, nil, nil, nil, ],
941
- [ nil, nil, nil, nil, nil, nil, 15, ],
942
944
  [ nil, nil, nil, nil, nil, nil, nil, ],
943
945
  [ nil, nil, nil, nil, nil, nil, nil, ],
946
+ [ nil, nil, nil, nil, nil, nil, 16, ],
944
947
  [ nil, nil, nil, nil, nil, nil, nil, ],
945
948
  [ nil, nil, nil, nil, nil, nil, nil, ],
946
949
  [ nil, nil, nil, nil, nil, nil, nil, ],
947
950
  [ nil, nil, nil, nil, nil, nil, nil, ],
948
951
  [ nil, nil, nil, nil, nil, nil, nil, ],
949
- [ nil, 20, 11, 21, 4, 7, nil, ],
950
- [ nil, 20, 11, 23, 4, 7, nil, ],
951
952
  [ nil, nil, nil, nil, nil, nil, nil, ],
953
+ [ nil, 21, 4, 20, 3, 5, nil, ],
954
+ [ nil, 22, 4, nil, 3, 5, nil, ],
955
+ [ nil, 23, 4, nil, 3, 5, nil, ],
952
956
  [ nil, nil, nil, nil, nil, nil, nil, ],
953
- [ nil, 24, 11, nil, 4, 7, nil, ],
954
- [ nil, 25, 11, nil, 4, 7, nil, ],
955
957
  [ nil, nil, nil, nil, nil, nil, nil, ],
958
+ [ nil, 21, 4, 25, 3, 5, nil, ],
956
959
  [ nil, nil, nil, nil, nil, nil, nil, ],
957
960
  [ nil, nil, nil, nil, nil, nil, nil, ],
958
961
  [ nil, nil, nil, nil, nil, nil, nil, ],
@@ -960,7 +963,8 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
960
963
  [ nil, nil, nil, nil, nil, nil, nil, ],
961
964
  [ nil, nil, nil, nil, nil, nil, nil, ],
962
965
  [ nil, nil, nil, nil, nil, nil, nil, ],
963
- [ nil, 29, 11, nil, 4, 7, nil, ],
966
+ [ nil, nil, nil, nil, nil, nil, nil, ],
967
+ [ nil, 29, 4, nil, 3, 5, nil, ],
964
968
  [ nil, nil, nil, nil, nil, nil, nil, ],
965
969
  [ nil, nil, nil, nil, nil, nil, nil, ],
966
970
  ]
@@ -975,11 +979,20 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
975
979
  @g_parser = @p = p
976
980
  @master = @m = master
977
981
  @nparam = nparam
978
- @dect = D4ASTBuilderBaseExtension_postrhs::NVAction.new(self)
982
+ @dect = D4ASTBuilderExtension_postrhs::NVAction.new(self)
979
983
  init_parser
980
984
  end
981
985
 
982
986
 
987
+ def do_parse?
988
+ if @line =~ /^\s*=>/
989
+ @line = $'
990
+ true
991
+ else
992
+ false
993
+ end
994
+ end
995
+
983
996
 
984
997
  def banner
985
998
  "=>... / #{@master.class.name}"
@@ -1007,11 +1020,6 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
1007
1020
  yield _Token(:LL, $&)
1008
1021
 
1009
1022
 
1010
- when /\A=>/
1011
- @oldline = @line; @line = $'
1012
- yield _Token(:EG, $&)
1013
-
1014
-
1015
1023
  when /\A%([a-zA-Z0-9_]+)((::[a-zA-Z0-9_]+)*)/
1016
1024
  @oldline = @line; @line = $'
1017
1025
  yield _Token(:CONST, $1+$2)
@@ -1027,6 +1035,11 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
1027
1035
  yield _Token(:NIL, $&)
1028
1036
 
1029
1037
 
1038
+ when /\ANilNode/
1039
+ @oldline = @line; @line = $'
1040
+ yield _Token(:NILNODE, $&)
1041
+
1042
+
1030
1043
  when /\A[0-9]+/
1031
1044
  @oldline = @line; @line = $'
1032
1045
  yield _Token(:NUMBER, $&.to_i)
@@ -1059,14 +1072,20 @@ class ASTBuilderBaseExtension_postrhs < Depager::LALR::Basis #:nodoc:all
1059
1072
  end while @line0 = @line = getline
1060
1073
  yield nil, nil
1061
1074
  end
1062
-
1075
+ def do_default
1076
+ n = master.nrules
1077
+ master.optouter <<
1078
+ master.gen_defm_code("_ast_#{n} val", "NilNode.new(basis.file.lineno)", lineno)
1079
+ master.on_reduce[n] = ":_ast_#{n}"
1080
+ end
1081
+
1063
1082
  end
1064
1083
 
1065
1084
  ### Outer Code
1066
1085
 
1067
- class D4ASTBuilderBaseExtension_postrhs::NVAction < Depager::LALR::Action #:nodoc:all
1086
+ class D4ASTBuilderExtension_postrhs::NVAction < Depager::LALR::Action #:nodoc:all
1068
1087
  include Depager::DecoratorUtils
1069
-
1088
+ []
1070
1089
  on_reduce = [
1071
1090
  nil,
1072
1091
  :_act_0,
@@ -1089,6 +1108,7 @@ class D4ASTBuilderBaseExtension_postrhs::NVAction < Depager::LALR::Action #:nodo
1089
1108
  :_act_17,
1090
1109
  :_act_18,
1091
1110
  :_act_19,
1111
+ :_act_20,
1092
1112
 
1093
1113
  ]
1094
1114
  Tables = [on_reduce]
@@ -1099,31 +1119,29 @@ class D4ASTBuilderBaseExtension_postrhs::NVAction < Depager::LALR::Action #:nodo
1099
1119
  end
1100
1120
 
1101
1121
 
1102
- module_eval <<-'.,.,118754107714013.,.,', 'ast_base.dr', 170
1103
- def _act_0 val
1104
- _EG, _fnl = *val
1122
+ module_eval <<-'.,.,120998292239108.,.,', 'ast.dr', 207
1123
+ def _act_0 val
1124
+ _fnl, = *val
1105
1125
 
1106
1126
  n = master.nrules
1107
1127
  master.optouter <<
1108
- master.gen_defm_code("_ast_#{n} val", _fnl, _EG.lineno)
1128
+ master.gen_defm_code("_ast_#{n} val", _fnl, basis.file.lineno)
1109
1129
  master.on_reduce[n] = ":_ast_#{n}"
1110
1130
 
1111
- end
1112
-
1113
- .,.,118754107714013.,.,
1131
+ end
1132
+ .,.,120998292239108.,.,
1114
1133
 
1115
- module_eval <<-'.,.,118754107760130.,.,', 'ast_base.dr', 178
1116
- def _act_1 val
1117
- _ID, _, _ = *val
1134
+ module_eval <<-'.,.,120998292255540.,.,', 'ast.dr', 215
1135
+ def _act_1 val
1136
+ _ID, _, _, = *val
1118
1137
  "Node_#{_ID.value}.new(basis.file.lineno)"
1119
1138
 
1120
- end
1121
-
1122
- .,.,118754107760130.,.,
1139
+ end
1140
+ .,.,120998292255540.,.,
1123
1141
 
1124
- module_eval <<-'.,.,118754107725185.,.,', 'ast_base.dr', 180
1125
- def _act_2 val
1126
- _ID, _, _fnlpair, _ = *val
1142
+ module_eval <<-'.,.,120998292239123.,.,', 'ast.dr', 217
1143
+ def _act_2 val
1144
+ _ID, _, _fnlpair, _, = *val
1127
1145
 
1128
1146
  if g_parser.rhs.size > 0
1129
1147
  "Node_#{_ID.value}.new(val[0].lineno, #{_fnlpair.join(', ')})"
@@ -1131,143 +1149,136 @@ module_eval <<-'.,.,118754107725185.,.,', 'ast_base.dr', 180
1131
1149
  "Node_#{_ID.value}.new(basis.file.lineno, #{_fnlpair.join(', ')})"
1132
1150
  end
1133
1151
 
1134
- end
1135
-
1136
- .,.,118754107725185.,.,
1152
+ end
1153
+ .,.,120998292239123.,.,
1137
1154
 
1138
- module_eval <<-'.,.,118754107718708.,.,', 'ast_base.dr', 189
1139
- def _act_3 val
1140
- _fnl = *val
1155
+ module_eval <<-'.,.,120998292218775.,.,', 'ast.dr', 226
1156
+ def _act_3 val
1157
+ _fnl, = *val
1141
1158
  [_fnl]
1142
1159
 
1143
- end
1144
-
1145
- .,.,118754107718708.,.,
1160
+ end
1161
+ .,.,120998292218775.,.,
1146
1162
 
1147
- module_eval <<-'.,.,118754107758988.,.,', 'ast_base.dr', 190
1148
- def _act_4 val
1149
- _fnlpair, _, _fnl = *val
1163
+ module_eval <<-'.,.,120998292219935.,.,', 'ast.dr', 227
1164
+ def _act_4 val
1165
+ _fnlpair, _, _fnl, = *val
1150
1166
  _fnlpair << _fnl
1151
1167
 
1152
- end
1153
-
1154
- .,.,118754107758988.,.,
1168
+ end
1169
+ .,.,120998292219935.,.,
1155
1170
 
1156
- module_eval <<-'.,.,118754107723770.,.,', 'ast_base.dr', 193
1157
- def _act_5 val
1158
- _fact = *val
1171
+ module_eval <<-'.,.,120998292237800.,.,', 'ast.dr', 230
1172
+ def _act_5 val
1173
+ _fact, = *val
1159
1174
  _fact
1160
1175
 
1161
- end
1162
-
1163
- .,.,118754107723770.,.,
1176
+ end
1177
+ .,.,120998292237800.,.,
1164
1178
 
1165
- module_eval <<-'.,.,118754107750177.,.,', 'ast_base.dr', 194
1166
- def _act_6 val
1167
- _node = *val
1179
+ module_eval <<-'.,.,12099829227551.,.,', 'ast.dr', 231
1180
+ def _act_6 val
1181
+ _node, = *val
1168
1182
  _node
1169
1183
 
1170
- end
1171
-
1172
- .,.,118754107750177.,.,
1184
+ end
1185
+ .,.,12099829227551.,.,
1173
1186
 
1174
- module_eval <<-'.,.,118754107731712.,.,', 'ast_base.dr', 195
1175
- def _act_7 val
1176
- _list = *val
1187
+ module_eval <<-'.,.,120998292244492.,.,', 'ast.dr', 232
1188
+ def _act_7 val
1189
+ _list, = *val
1177
1190
  _list
1178
1191
 
1179
- end
1180
-
1181
- .,.,118754107731712.,.,
1192
+ end
1193
+ .,.,120998292244492.,.,
1182
1194
 
1183
- module_eval <<-'.,.,118754107736385.,.,', 'ast_base.dr', 199
1184
- def _act_8 val
1185
- _ID, _opt_embed = *val
1195
+ module_eval <<-'.,.,120998292242233.,.,', 'ast.dr', 236
1196
+ def _act_8 val
1197
+ _ID, _opt_embed, = *val
1186
1198
 
1187
- unless i = g_parser.name_to_rhs_index(val[0].value)
1188
- warn "#{g_parser.lineno}: ?#{val[0].value}"
1199
+ unless i = g_parser.name_to_rhs_index(_ID.value)
1200
+ warn "#{g_parser.lineno}: ?#{_ID.value}"
1189
1201
  raise
1190
1202
  end
1191
1203
  "val[#{i}]#{val[1]}"
1192
1204
 
1193
- end
1194
-
1195
- .,.,118754107736385.,.,
1205
+ end
1206
+ .,.,120998292242233.,.,
1196
1207
 
1197
- module_eval <<-'.,.,118754107744168.,.,', 'ast_base.dr', 206
1198
- def _act_9 val
1199
- _CONST = *val
1208
+ module_eval <<-'.,.,120998292219954.,.,', 'ast.dr', 243
1209
+ def _act_9 val
1210
+ _CONST, = *val
1200
1211
  "Depager::Token[#{_CONST.value}]"
1201
1212
 
1202
- end
1203
-
1204
- .,.,118754107744168.,.,
1213
+ end
1214
+ .,.,120998292219954.,.,
1205
1215
 
1206
- module_eval <<-'.,.,118754107728765.,.,', 'ast_base.dr', 207
1207
- def _act_10 val
1208
- _SYMBOL = *val
1216
+ module_eval <<-'.,.,120998292251058.,.,', 'ast.dr', 244
1217
+ def _act_10 val
1218
+ _SYMBOL, = *val
1209
1219
  "Depager::Token[#{_SYMBOL.value}]"
1210
1220
 
1211
- end
1212
-
1213
- .,.,118754107728765.,.,
1221
+ end
1222
+ .,.,120998292251058.,.,
1214
1223
 
1215
- module_eval <<-'.,.,118754107732274.,.,', 'ast_base.dr', 208
1216
- def _act_11 val
1217
- _STR = *val
1224
+ module_eval <<-'.,.,120998292253260.,.,', 'ast.dr', 245
1225
+ def _act_11 val
1226
+ _STR, = *val
1218
1227
  "Depager::Token['#{_STR.value}']"
1219
1228
 
1220
- end
1221
-
1222
- .,.,118754107732274.,.,
1229
+ end
1230
+ .,.,120998292253260.,.,
1223
1231
 
1224
- module_eval <<-'.,.,11875410774520.,.,', 'ast_base.dr', 209
1225
- def _act_12 val
1226
- _NIL = *val
1227
- "nil"
1232
+ module_eval <<-'.,.,120998292210497.,.,', 'ast.dr', 246
1233
+ def _act_12 val
1234
+ _NILNODE, = *val
1235
+ "NilNode.new(basis.file.lineno)"
1228
1236
 
1229
- end
1230
-
1231
- .,.,11875410774520.,.,
1237
+ end
1238
+ .,.,120998292210497.,.,
1232
1239
 
1233
- module_eval <<-'.,.,118754107711537.,.,', 'ast_base.dr', 210
1234
- def _act_13 val
1235
- _NUMBER = *val
1240
+ module_eval <<-'.,.,120998292239142.,.,', 'ast.dr', 247
1241
+ def _act_13 val
1242
+ _NUMBER, = *val
1236
1243
  "Depager::Token[#{_NUMBER.value}]"
1237
1244
 
1238
- end
1245
+ end
1246
+ .,.,120998292239142.,.,
1247
+
1248
+ module_eval <<-'.,.,120998292241721.,.,', 'ast.dr', 248
1249
+ def _act_14 val
1250
+ _NIL, = *val
1251
+ "nil"
1239
1252
 
1240
- .,.,118754107711537.,.,
1253
+ end
1254
+ .,.,120998292241721.,.,
1241
1255
 
1242
- module_eval <<-'.,.,118754107736080.,.,', 'ast_base.dr', 213
1243
- def _act_14 val
1256
+ module_eval <<-'.,.,120998292222707.,.,', 'ast.dr', 251
1257
+ def _act_15 val
1244
1258
  ''
1245
1259
 
1246
- end
1247
-
1248
- .,.,118754107736080.,.,
1260
+ end
1261
+ .,.,120998292222707.,.,
1249
1262
 
1250
- module_eval <<-'.,.,118754107755265.,.,', 'ast_base.dr', 214
1251
- def _act_15 val
1252
- _EMBED = *val
1263
+ module_eval <<-'.,.,120998292213288.,.,', 'ast.dr', 252
1264
+ def _act_16 val
1265
+ _EMBED, = *val
1253
1266
  _EMBED.value
1254
1267
 
1255
- end
1256
-
1257
- .,.,118754107755265.,.,
1268
+ end
1269
+ .,.,120998292213288.,.,
1258
1270
 
1259
- module_eval <<-'.,.,11875410774449.,.,', 'ast_base.dr', 217
1260
- def _act_16 val
1261
- _, _ = *val
1271
+ module_eval <<-'.,.,120998292244551.,.,', 'ast.dr', 255
1272
+ def _act_17 val
1273
+ _, _, = *val
1262
1274
  "NodeList.new(basis.file.lineno, [])"
1263
1275
 
1264
- end
1265
-
1266
- .,.,11875410774449.,.,
1276
+ end
1277
+ .,.,120998292244551.,.,
1267
1278
 
1268
- module_eval <<-'.,.,118754107747720.,.,', 'ast_base.dr', 219
1269
- def _act_17 val
1270
- _, _fnlpair, _ = *val
1279
+ module_eval <<-'.,.,120998292244197.,.,', 'ast.dr', 257
1280
+ def _act_18 val
1281
+ _, _fnlpair, _, = *val
1271
1282
 
1272
1283
  if g_parser.rhs.size > 0
1273
1284
  "NodeList.new(val[0].lineno, [#{_fnlpair.join(', ')}])"
@@ -1275,27 +1286,24 @@ module_eval <<-'.,.,118754107747720.,.,', 'ast_base.dr', 219
1275
1286
  "NodeList.new(basis.file.lineno, #{_fnlpair.join(', ')})"
1276
1287
  end
1277
1288
 
1278
- end
1279
-
1280
- .,.,118754107747720.,.,
1289
+ end
1290
+ .,.,120998292244197.,.,
1281
1291
 
1282
- module_eval <<-'.,.,118754107749519.,.,', 'ast_base.dr', 226
1283
- def _act_18 val
1284
- _l, _LL, _r = *val
1292
+ module_eval <<-'.,.,120998292253403.,.,', 'ast.dr', 264
1293
+ def _act_19 val
1294
+ _l, _LL, _r, = *val
1285
1295
  "#{_l}.push(#{_r})"
1286
1296
 
1287
- end
1288
-
1289
- .,.,118754107749519.,.,
1297
+ end
1298
+ .,.,120998292253403.,.,
1290
1299
 
1291
- module_eval <<-'.,.,118754107726284.,.,', 'ast_base.dr', 227
1292
- def _act_19 val
1293
- _l, _, _r = *val
1300
+ module_eval <<-'.,.,12099829222596.,.,', 'ast.dr', 265
1301
+ def _act_20 val
1302
+ _l, _, _r, = *val
1294
1303
  "#{_l}.concat(#{_r})"
1295
1304
 
1296
- end
1297
-
1298
- .,.,118754107726284.,.,
1305
+ end
1306
+ .,.,12099829222596.,.,
1299
1307
 
1300
1308
  end
1301
1309