Class: Depager::ASTBuilderExtension::PostRhs1::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, 1 ],
  [ 2, 3 ],
  [ 2, 4 ],
  [ 3, 1 ],
  [ 3, 3 ],
  [ 1, 1 ],
  [ 1, 1 ],
  [ 1, 1 ],
  [ 4, 2 ],
  [ 4, 1 ],
  [ 4, 1 ],
  [ 4, 1 ],
  [ 4, 1 ],
  [ 4, 1 ],
  [ 4, 1 ],
  [ 6, 0 ],
  [ 6, 1 ],
  [ 5, 2 ],
  [ 5, 3 ],
  [ 5, 3 ],
  [ 5, 3 ],
]
TERM_TO_INT =

Term to Int

{
  nil => 0,
  false => 1,
  :ID => 2,
  "(" => 3,
  ")" => 4,
  "," => 5,
  :CONST => 6,
  :SYMBOL => 7,
  :STR => 8,
  :NILNODE => 9,
  :NUMBER => 10,
  :NIL => 11,
  :EMBED => 12,
  "[" => 13,
  "]" => 14,
  :LL => 15,
  "@" => 16,
}
INT_TO_TERM =

Int to Term

[
  nil,
  false,
  :ID,
  "(",
  ")",
  ",",
  :CONST,
  :SYMBOL,
  :STR,
  :NILNODE,
  :NUMBER,
  :NIL,
  :EMBED,
  "[",
  "]",
  :LL,
  "@",
]
ACTION_TABLE =

Action Table

[
  [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
  [ 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, 14, 15, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 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, 18, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, 19, nil, nil, ],
  [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
  [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
  [ nil, nil, 6, nil, 24, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 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, nil, 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, 14, 15, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 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, 28, 26, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, 6, nil, nil, nil, 7, 8, 9, 10, 11, 12, nil, 13, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
]
DEFRED_TABLE =

Default Reduce Table

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

Nonterm to Int

{
  :start => 0,
  :fnl => 1,
  :node => 2,
  :fnlpair => 3,
  :fact => 4,
  :list => 5,
  :opt_embed => 6,
}
INT_TO_NONTERM =

Int to Nonterm

[
  :start,
  :fnl,
  :node,
  :fnlpair,
  :fact,
  :list,
  :opt_embed,
]
GOTO_TABLE =

Goto Table

[
  [ 1, 2, 4, nil, 3, 5, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ 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, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, 21, 4, 20, 3, 5, nil, ],
  [ nil, 22, 4, nil, 3, 5, nil, ],
  [ nil, 23, 4, nil, 3, 5, nil, ],
  [ nil, 21, 4, 25, 3, 5, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, nil, nil, nil, nil, nil, nil, ],
  [ nil, 29, 4, nil, 3, 5, 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.



929
930
931
932
933
934
935
# File 'lib/depager/plugins/ast.rb', line 929

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



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

def action_table; ACTION_TABLE; end


948
949
950
# File 'lib/depager/plugins/ast.rb', line 948

def banner
  "=>... / Depager::ASTBuilderExtension"
end

#defred_after_shift_tableObject



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

def defred_after_shift_table; DEFRED_AFTER_SHIFT_TABLE; end

#defred_tableObject



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

def defred_table; DEFRED_TABLE; end

#do_parse?Boolean

Returns:

  • (Boolean)


938
939
940
941
942
943
944
945
# File 'lib/depager/plugins/ast.rb', line 938

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

#goto_tableObject



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

def goto_table; GOTO_TABLE; end

#int_to_nontermObject



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

def int_to_nonterm; INT_TO_NONTERM; end

#int_to_termObject



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

def int_to_term; INT_TO_TERM; end

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

Yields:

  • (nil, nil)


952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
# File 'lib/depager/plugins/ast.rb', line 952

def lex
  begin
    until @line.empty?
      case @line
          when /\A[ \t]+/
            @line = $'
                 

          when /\A\r?\n/
            @line = $'
                 yield nil, nil                 

          when /\A<</
            @line = $'
                 yield token(:LL, $&)          

          when /\A%([a-zA-Z0-9_]+)((::[a-zA-Z0-9_]+)*)/
            @line = $'
                 yield token(:CONST, $1+$2)    

          when /\A%\((.+)\)%/
            @line = $'
                 yield token(:EMBED, $1)       

          when /\Anil/
            @line = $'
                 yield token(:NIL, $&)         

          when /\ANilNode/
            @line = $'
                 yield token(:NILNODE, $&)     

          when /\A[0-9]+/
            @line = $'
                 yield token(:NUMBER, $&.to_i) 

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

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

          when /\A'(.+)'/
            @line = $'
                 yield token(:STR, $1)         

          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



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

def nonterm_to_int; NONTERM_TO_INT; end

#reduce_tableObject



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

def reduce_table; REDUCE_TABLE; end

#term_to_intObject



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

def term_to_int; TERM_TO_INT; end