Class: Depager::ASTBuilderExtension::PreRuleList0::Parser

Inherits:
LALR::Basis show all
Includes:
Utils::ExtensionSlaveMethods
Defined in:
lib/depager/plugins/ast.rb

Overview

:nodoc:all

Constant Summary collapse

REDUCE_TABLE =

Reduce Table

[
  [ -1, 1 ],
  [ 0, 3 ],
  [ 1, 0 ],
  [ 1, 3 ],
  [ 2, 0 ],
  [ 2, 2 ],
  [ 3, 1 ],
  [ 3, 2 ],
  [ 6, 3 ],
  [ 7, 3 ],
  [ 7, 4 ],
  [ 4, 0 ],
  [ 4, 2 ],
  [ 4, 3 ],
  [ 8, 1 ],
  [ 8, 3 ],
  [ 10, 1 ],
  [ 10, 2 ],
  [ 9, 1 ],
  [ 9, 3 ],
  [ 5, 0 ],
  [ 5, 1 ],
  [ 5, 1 ],
  [ 11, 1 ],
  [ 11, 2 ],
  [ 12, 4 ],
]
TERM_TO_INT =

Term to Int

{
  nil => 0,
  false => 1,
  :NODE => 2,
  :ACTION => 3,
  :VISITOR => 4,
  :ID => 5,
  "(" => 6,
  ")" => 7,
  "[" => 8,
  "]" => 9,
  "," => 10,
  "-" => 11,
  "<" => 12,
  ">" => 13,
}
INT_TO_TERM =

Int to Term

[
  nil,
  false,
  :NODE,
  :ACTION,
  :VISITOR,
  :ID,
  "(",
  ")",
  "[",
  "]",
  ",",
  "-",
  "<",
  ">",
]
ACTION_TABLE =

Action Table

[
  [ nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, 13, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
  [ nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 20, nil, nil, nil, 18, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, 7, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 26, 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, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, 13, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
  [ nil, nil, nil, nil, nil, 32, nil, 29, 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, nil, nil, nil, nil, 34, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 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, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, 36, nil, nil, 37, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 38, 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, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 32, 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, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
]
DEFRED_TABLE =

Default Reduce Table

[
  -2,
  nil,
  -4,
  -11,
  nil,
  -20,
  nil,
  nil,
  -1,
  -6,
  -11,
  nil,
  -5,
  -21,
  -22,
  -23,
  nil,
  -3,
  -12,
  nil,
  -18,
  -7,
  -20,
  nil,
  -24,
  nil,
  -13,
  nil,
  -8,
  -9,
  nil,
  -14,
  -16,
  nil,
  nil,
  -19,
  -10,
  nil,
  -17,
  -25,
  -15,
]
DEFRED_AFTER_SHIFT_TABLE =
[
  nil,
  nil,
  nil,
  nil,
  nil,
  nil,
  nil,
  nil,
  nil,
  -6,
  nil,
  nil,
  -5,
  -21,
  nil,
  -23,
  nil,
  -3,
  -12,
  nil,
  -18,
  -7,
  nil,
  nil,
  -24,
  nil,
  -13,
  nil,
  -8,
  -9,
  nil,
  -14,
  -16,
  nil,
  nil,
  -19,
  -10,
  nil,
  -17,
  -25,
  -15,
]
NONTERM_TO_INT =

Nonterm to Int

{
  :start => 0,
  :opt_defnode => 1,
  :opt_defvis => 2,
  :defnode_list => 3,
  :opt_attr => 4,
  :opt_action => 5,
  :defnode => 6,
  :defnode_header => 7,
  :fact_list => 8,
  :id_list => 9,
  :fact => 10,
  :pass_action_list => 11,
  :pass_action => 12,
}
INT_TO_NONTERM =

Int to Nonterm

[
  :start,
  :opt_defnode,
  :opt_defvis,
  :defnode_list,
  :opt_attr,
  :opt_action,
  :defnode,
  :defnode_header,
  :fact_list,
  :id_list,
  :fact,
  :pass_action_list,
  :pass_action,
]
GOTO_TABLE =

Goto Table

[
  [ 1, 2, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, 8, nil, nil, 9, 10, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 12, nil, nil, nil, nil, nil, 14, 15, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 19, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, 21, 10, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, 22, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 24, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, 14, 15, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, 30, nil, 31, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 40, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
]

Constants inherited from LALR::Parser

LALR::Parser::ACC

Instance Attribute Summary

Attributes included from Utils::ExtensionSlaveMethods

#d_parser, #g_parser, #master

Attributes inherited from LALR::Basis

#action_value, #basis, #file, #line, #lookahead, #parser_size, #stack

Instance Method Summary collapse

Methods included from Utils::ExtensionSlaveMethods

#abort_driver, #do_default, #do_parse

Methods included from Utils::CodeGeneratorMethods

#expand_inline_code, #generate_action_decorator_code, #generate_decorator_code, #parse_block

Methods included from Utils::CommonMethods

#error_exit, #error_message, #expanded_code_delimiter, #file, #full_target_name, #input_path, #inspect, #target_name, #target_namespace, #warning

Methods inherited from LALR::Basis

#abort_driver, #accept, #do_abort_driver, #error, #next_decorator_index, #reduce, #shift

Methods inherited from LALR::Parser

#accept, #error, #parse, #reduce, #shift

Constructor Details

#initialize(g_parser, master) ⇒ Parser

Returns a new instance of Parser.



363
364
365
366
367
368
369
# File 'lib/depager/plugins/ast.rb', line 363

def initialize g_parser, master
  super()
  @g_parser  = g_parser
  @d_parser  = g_parser.d_parser
  @master    = master
  @decorated = Action.new(self)
end

Instance Method Details

#action_tableObject



188
# File 'lib/depager/plugins/ast.rb', line 188

def action_table; ACTION_TABLE; end


382
383
384
# File 'lib/depager/plugins/ast.rb', line 382

def banner
  "%AST{ ... } / Depager::ASTBuilderExtension"
end

#defred_after_shift_tableObject



279
# File 'lib/depager/plugins/ast.rb', line 279

def defred_after_shift_table; DEFRED_AFTER_SHIFT_TABLE; end

#defred_tableObject



234
# File 'lib/depager/plugins/ast.rb', line 234

def defred_table; DEFRED_TABLE; end

#do_parse?Boolean

Returns:

  • (Boolean)


372
373
374
375
376
377
378
379
# File 'lib/depager/plugins/ast.rb', line 372

def do_parse?
  if @line.match(/^\s*%AST\{\s*\Z/)
     @line = $' 
    true
  else
    false
  end
end

#goto_tableObject



361
# File 'lib/depager/plugins/ast.rb', line 361

def goto_table; GOTO_TABLE; end

#int_to_nontermObject



315
# File 'lib/depager/plugins/ast.rb', line 315

def int_to_nonterm; INT_TO_NONTERM; end

#int_to_termObject



142
# File 'lib/depager/plugins/ast.rb', line 142

def int_to_term; INT_TO_TERM; end

#lex {|nil, nil| ... } ⇒ Object

Yields:

  • (nil, nil)


386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
# File 'lib/depager/plugins/ast.rb', line 386

def lex
  begin
    until @line.empty?
      case @line
          when /\A\s+/, /\A#.*/
            @line = $'
                 

          when /\A%\}\s*\Z/
            @line = $'
                 @line = $'; yield nil,nil 

          when /\ANode/
            @line = $'
                 yield token(:NODE, $&) 

          when /\AVisitor/
            @line = $'
                 yield token(:VISITOR, $&) 

          when /\A[a-zA-Z][a-zA-Z0-9_]*/
            @line = $'
                 yield token(:ID, $&) 

          when /\A\{/
            #
                 lineno = file.lineno; yield token(:ACTION, parse_block, lineno) 

          when /\A./
            @line = $'
                 yield token($&, $&) 


      else
        raise RuntimeError, "must not happen #{@line}"
      end
    end
  end while @original_line = @line = file.gets
  yield nil, nil
end

#nonterm_to_intObject



297
# File 'lib/depager/plugins/ast.rb', line 297

def nonterm_to_int; NONTERM_TO_INT; end

#reduce_tableObject



104
# File 'lib/depager/plugins/ast.rb', line 104

def reduce_table; REDUCE_TABLE; end

#term_to_intObject



123
# File 'lib/depager/plugins/ast.rb', line 123

def term_to_int; TERM_TO_INT; end