#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.4.6
# from Racc grammer file "".
#

###### racc/parser.rb begin
unless $".index 'racc/parser.rb'
$".push 'racc/parser.rb'
self.class.module_eval(<<'...end racc/parser.rb/module_eval...', 'racc/parser.rb', 1)
  #
# $Id$
#
# Copyright (c) 1999-2006 Minero Aoki
#
# This program is free software.
# You can distribute/modify this program under the same terms of ruby.
#
# As a special exception, when this code is copied by Racc
# into a Racc output file, you may use that output file
# without restriction.
#

unless defined?(NotImplementedError)
  NotImplementedError = NotImplementError
end

module Racc
  class ParseError < StandardError; end
end
unless defined?(::ParseError)
  ParseError = Racc::ParseError
end

module Racc

  unless defined?(Racc_No_Extentions)
    Racc_No_Extentions = false
  end

  class Parser

    Racc_Runtime_Version = '1.4.6'
    Racc_Runtime_Revision = '$Id$'

    Racc_Runtime_Core_Version_R = '1.4.6'
    Racc_Runtime_Core_Revision_R = '$Id$'.split[1]
    begin
      require 'racc/cparse'
    # Racc_Runtime_Core_Version_C  = (defined in extention)
      Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
      unless new.respond_to?(:_racc_do_parse_c, true)
        raise LoadError, 'old cparse.so'
      end
      if Racc_No_Extentions
        raise LoadError, 'selecting ruby version of racc runtime core'
      end

      Racc_Main_Parsing_Routine    = :_racc_do_parse_c
      Racc_YY_Parse_Method         = :_racc_yyparse_c
      Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_C
      Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_C
      Racc_Runtime_Type            = 'c'
    rescue LoadError
      Racc_Main_Parsing_Routine    = :_racc_do_parse_rb
      Racc_YY_Parse_Method         = :_racc_yyparse_rb
      Racc_Runtime_Core_Version    = Racc_Runtime_Core_Version_R
      Racc_Runtime_Core_Revision   = Racc_Runtime_Core_Revision_R
      Racc_Runtime_Type            = 'ruby'
    end

    def Parser.racc_runtime_type
      Racc_Runtime_Type
    end

    private

    def _racc_setup
      @yydebug = false unless self.class::Racc_debug_parser
      @yydebug = false unless defined?(@yydebug)
      if @yydebug
        @racc_debug_out = $stderr unless defined?(@racc_debug_out)
        @racc_debug_out ||= $stderr
      end
      arg = self.class::Racc_arg
      arg[13] = true if arg.size < 14
      arg
    end

    def _racc_init_sysvars
      @racc_state  = [0]
      @racc_tstack = []
      @racc_vstack = []

      @racc_t = nil
      @racc_val = nil

      @racc_read_next = true

      @racc_user_yyerror = false
      @racc_error_status = 0
    end

    ###
    ### do_parse
    ###

    def do_parse
      __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
    end

    def next_token
      raise NotImplementedError, "#{self.class}\#next_token is not defined"
    end

    def _racc_do_parse_rb(arg, in_debug)
      action_table, action_check, action_default, action_pointer,
      goto_table,   goto_check,   goto_default,   goto_pointer,
      nt_base,      reduce_table, token_table,    shift_n,
      reduce_n,     use_result,   * = arg

      _racc_init_sysvars
      tok = act = i = nil
      nerr = 0

      catch(:racc_end_parse) {
        while true
          if i = action_pointer[@racc_state[-1]]
            if @racc_read_next
              if @racc_t != 0   # not EOF
                tok, @racc_val = next_token()
                unless tok      # EOF
                  @racc_t = 0
                else
                  @racc_t = (token_table[tok] or 1)   # error token
                end
                racc_read_token(@racc_t, tok, @racc_val) if @yydebug
                @racc_read_next = false
              end
            end
            i += @racc_t
            unless i >= 0 and
                   act = action_table[i] and
                   action_check[i] == @racc_state[-1]
              act = action_default[@racc_state[-1]]
            end
          else
            act = action_default[@racc_state[-1]]
          end
          while act = _racc_evalact(act, arg)
            ;
          end
        end
      }
    end

    ###
    ### yyparse
    ###

    def yyparse(recv, mid)
      __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
    end

    def _racc_yyparse_rb(recv, mid, arg, c_debug)
      action_table, action_check, action_default, action_pointer,
      goto_table,   goto_check,   goto_default,   goto_pointer,
      nt_base,      reduce_table, token_table,    shift_n,
      reduce_n,     use_result,   * = arg

      _racc_init_sysvars
      nerr = 0

      catch(:racc_end_parse) {
        until i = action_pointer[@racc_state[-1]]
          while act = _racc_evalact(action_default[@racc_state[-1]], arg)
            ;
          end
        end
        recv.__send__(mid) do |tok, val|
          unless tok
            @racc_t = 0
          else
            @racc_t = (token_table[tok] or 1)   # error token
          end
          @racc_val = val
          @racc_read_next = false

          i += @racc_t
          unless i >= 0 and
                 act = action_table[i] and
                 action_check[i] == @racc_state[-1]
            act = action_default[@racc_state[-1]]
          end
          while act = _racc_evalact(act, arg)
            ;
          end

          while !(i = action_pointer[@racc_state[-1]]) ||
                ! @racc_read_next ||
                @racc_t == 0  # $
            unless i and i += @racc_t and
                   i >= 0 and
                   act = action_table[i] and
                   action_check[i] == @racc_state[-1]
              act = action_default[@racc_state[-1]]
            end
            while act = _racc_evalact(act, arg)
              ;
            end
          end
        end
      }
    end

    ###
    ### common
    ###

    def _racc_evalact(act, arg)
      action_table, action_check, action_default, action_pointer,
      goto_table,   goto_check,   goto_default,   goto_pointer,
      nt_base,      reduce_table, token_table,    shift_n,
      reduce_n,     use_result,   * = arg
      nerr = 0   # tmp

      if act > 0 and act < shift_n
        #
        # shift
        #
        if @racc_error_status > 0
          @racc_error_status -= 1 unless @racc_t == 1   # error token
        end
        @racc_vstack.push @racc_val
        @racc_state.push act
        @racc_read_next = true
        if @yydebug
          @racc_tstack.push @racc_t
          racc_shift @racc_t, @racc_tstack, @racc_vstack
        end

      elsif act < 0 and act > -reduce_n
        #
        # reduce
        #
        code = catch(:racc_jump) {
          @racc_state.push _racc_do_reduce(arg, act)
          false
        }
        if code
          case code
          when 1 # yyerror
            @racc_user_yyerror = true   # user_yyerror
            return -reduce_n
          when 2 # yyaccept
            return shift_n
          else
            raise '[Racc Bug] unknown jump code'
          end
        end

      elsif act == shift_n
        #
        # accept
        #
        racc_accept if @yydebug
        throw :racc_end_parse, @racc_vstack[0]

      elsif act == -reduce_n
        #
        # error
        #
        case @racc_error_status
        when 0
          unless arg[21]    # user_yyerror
            nerr += 1
            on_error @racc_t, @racc_val, @racc_vstack
          end
        when 3
          if @racc_t == 0   # is $
            throw :racc_end_parse, nil
          end
          @racc_read_next = true
        end
        @racc_user_yyerror = false
        @racc_error_status = 3
        while true
          if i = action_pointer[@racc_state[-1]]
            i += 1   # error token
            if  i >= 0 and
                (act = action_table[i]) and
                action_check[i] == @racc_state[-1]
              break
            end
          end
          throw :racc_end_parse, nil if @racc_state.size <= 1
          @racc_state.pop
          @racc_vstack.pop
          if @yydebug
            @racc_tstack.pop
            racc_e_pop @racc_state, @racc_tstack, @racc_vstack
          end
        end
        return act

      else
        raise "[Racc Bug] unknown action #{act.inspect}"
      end

      racc_next_state(@racc_state[-1], @racc_state) if @yydebug

      nil
    end

    def _racc_do_reduce(arg, act)
      action_table, action_check, action_default, action_pointer,
      goto_table,   goto_check,   goto_default,   goto_pointer,
      nt_base,      reduce_table, token_table,    shift_n,
      reduce_n,     use_result,   * = arg
      state = @racc_state
      vstack = @racc_vstack
      tstack = @racc_tstack

      i = act * -3
      len       = reduce_table[i]
      reduce_to = reduce_table[i+1]
      method_id = reduce_table[i+2]
      void_array = []

      tmp_t = tstack[-len, len] if @yydebug
      tmp_v = vstack[-len, len]
      tstack[-len, len] = void_array if @yydebug
      vstack[-len, len] = void_array
      state[-len, len]  = void_array

      # tstack must be updated AFTER method call
      if use_result
        vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
      else
        vstack.push __send__(method_id, tmp_v, vstack)
      end
      tstack.push reduce_to

      racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug

      k1 = reduce_to - nt_base
      if i = goto_pointer[k1]
        i += state[-1]
        if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
          return curstate
        end
      end
      goto_default[k1]
    end

    def on_error(t, val, vstack)
      raise ParseError, sprintf("\nparse error on value %s (%s)",
                                val.inspect, token_to_str(t) || '?')
    end

    def yyerror
      throw :racc_jump, 1
    end

    def yyaccept
      throw :racc_jump, 2
    end

    def yyerrok
      @racc_error_status = 0
    end

    #
    # for debugging output
    #

    def racc_read_token(t, tok, val)
      @racc_debug_out.print 'read    '
      @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
      @racc_debug_out.puts val.inspect
      @racc_debug_out.puts
    end

    def racc_shift(tok, tstack, vstack)
      @racc_debug_out.puts "shift   #{racc_token2str tok}"
      racc_print_stacks tstack, vstack
      @racc_debug_out.puts
    end

    def racc_reduce(toks, sim, tstack, vstack)
      out = @racc_debug_out
      out.print 'reduce '
      if toks.empty?
        out.print ' <none>'
      else
        toks.each {|t| out.print ' ', racc_token2str(t) }
      end
      out.puts " --> #{racc_token2str(sim)}"
          
      racc_print_stacks tstack, vstack
      @racc_debug_out.puts
    end

    def racc_accept
      @racc_debug_out.puts 'accept'
      @racc_debug_out.puts
    end

    def racc_e_pop(state, tstack, vstack)
      @racc_debug_out.puts 'error recovering mode: pop token'
      racc_print_states state
      racc_print_stacks tstack, vstack
      @racc_debug_out.puts
    end

    def racc_next_state(curstate, state)
      @racc_debug_out.puts  "goto    #{curstate}"
      racc_print_states state
      @racc_debug_out.puts
    end

    def racc_print_stacks(t, v)
      out = @racc_debug_out
      out.print '        ['
      t.each_index do |i|
        out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
      end
      out.puts ' ]'
    end

    def racc_print_states(s)
      out = @racc_debug_out
      out.print '        ['
      s.each {|st| out.print ' ', st }
      out.puts ' ]'
    end

    def racc_token2str(tok)
      self.class::Racc_token_to_s_table[tok] or
          raise "[Racc Bug] can't convert token #{tok} to string"
    end

    def token_to_str(t)
      self.class::Racc_token_to_s_table[t]
    end

  end

end

...end racc/parser.rb/module_eval...
end
###### racc/parser.rb end
module Protobuf
  class ProtoParser < Racc::Parser

module_eval(<<'...end proto.y/module_eval...', 'proto.y', 170)

  require 'strscan'

  def parse(f)
    @scanner = StringScanner.new(f.read)
    yyparse(self, :scan)
  end

  def scan_debug
    scan do |token, value|
      p [token, value]
      yield [token, value]
    end
  end

  def scan
    until @scanner.eos?
      case
      when match(/\s+/, /\/\/.*/)
        # skip
      when match(/\/\*/)
        # C-like comment
        raise 'EOF inside block comment' until @scanner.scan_until(/\*\//)
      when match(/(?:required|optional|repeated|import|package|option|message|extend|enum|service|syntax|rpc|returns|group|default|extensions|to|max|double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\b/)
        yield [@token, @token.to_sym]
      when match(/[+-]?\d*\.\d+([Ee][\+-]?\d+)?/)
        yield [:FLOAT_LITERAL, @token.to_f]
      when match(/[+-]?[1-9]\d*(?!\.)/, /0(?![.xX0-9])/)
        yield [:DEC_INTEGER, @token.to_i]
      when match(/0[xX]([A-Fa-f0-9])+/)
        yield [:HEX_INTEGER, @token.to_i(0)]
      when match(/0[0-7]+/)
        yield [:OCT_INTEGER, @token.to_i(0)]
      when match(/(true|false)\b/)
        yield [:BOOLEAN_LITERAL, @token == 'true']
      when match(/"(?:[^"\\]|\\.)*"/, /'(?:[^'\\]|\\.)*'/)
        yield [:STRING_LITERAL, eval(@token)]
      when match(/[a-zA-Z_]\w*/)
        yield [:IDENT, @token.to_sym]
      when match(/./)
        yield [@token, @token]
      else
        raise "parse error around #{@scanner.string[@scanner.pos, 32].inspect}"
      end
    end
    yield [false, nil]
  end

  def match(*regular_expressions)
    regular_expressions.each do |re|
      if @scanner.scan(re)
        @token = @scanner[0]
        return true
      end
    end
    false
  end
...end proto.y/module_eval...
##### State transition tables begin ###

racc_action_table = [
    60,   181,    57,    28,    29,    60,   165,    57,    95,    89,
    60,   193,    57,    90,    14,    14,   162,    46,    97,    91,
    85,   192,    47,    96,   182,    62,    63,    64,    99,   100,
   101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
   111,   112,   113,    59,    61,    62,    63,    64,    59,    61,
    62,    63,    64,    59,    61,    62,    63,    64,   125,    14,
   126,   121,    39,   127,   195,   128,   129,    28,    29,   130,
   131,   132,   133,    28,    29,   134,   135,    28,    29,   122,
   123,   124,   136,   137,   138,   139,   140,   141,   142,   143,
   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
   154,    74,   173,    36,    47,   179,    84,    14,   117,    15,
    16,   179,    65,    17,    47,   118,    48,    80,    62,    63,
    64,   119,   174,    77,    78,    79,   178,    76,    77,    78,
    79,    20,   178,    11,    12,    34,    13,   156,   157,    14,
    42,    15,    16,   159,   160,    17,    18,    19,    11,    12,
   161,    13,    40,    43,    14,    33,    15,    16,   166,    44,
    17,    18,    19,    62,    63,    64,    62,    63,    64,    62,
    63,    64,    62,    63,    64,    55,    54,    32,    39,    31,
   175,    30,   180,    47,   183,   184,    45,   186,    26,    25,
    23,   190,    22,   171 ]

racc_action_check = [
    48,   176,    48,    75,    75,   183,   157,   183,    53,    52,
   184,   190,   184,    52,    53,    52,   155,    35,    75,    53,
    52,   190,    35,    53,   176,   157,   157,   157,    75,    75,
    75,    75,    75,    75,    75,    75,    75,    75,    75,    75,
    75,    75,    75,    48,    48,    48,    48,    48,   183,   183,
   183,   183,   183,   184,   184,   184,   184,   184,    98,   194,
    98,    98,    26,    98,   194,    98,    98,   159,   159,    98,
    98,    98,    98,    16,    16,    98,    98,   180,   180,    98,
    98,    98,    98,    98,    98,    98,    98,    98,    98,    98,
    98,    98,    98,    98,    98,    98,    98,    98,    98,    98,
    98,    49,   170,    24,    51,   182,    50,    49,    90,    49,
    49,   174,    49,    49,    37,    96,    37,    50,    76,    76,
    76,    97,   170,    49,    49,    49,   182,    49,    50,    50,
    50,     1,   174,     1,     1,    22,     1,   115,   116,     1,
    29,     1,     1,   118,   119,     1,     1,     1,     0,     0,
   120,     0,    27,    30,     0,    20,     0,     0,   158,    31,
     0,     0,     0,   117,   117,   117,   161,   161,   161,   156,
   156,   156,   160,   160,   160,    47,    45,    19,   169,    18,
   171,    17,   175,    41,   178,   179,    32,   181,    15,    14,
    13,   185,    12,   167 ]

racc_action_pointer = [
   146,   131,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   188,   184,   183,   182,    67,   175,   173,   168,
   155,   nil,   133,   nil,   101,   nil,    50,   140,   nil,   134,
   141,   147,   182,   nil,   nil,    15,   nil,   107,   nil,   nil,
   nil,   176,   nil,   nil,   nil,   174,   nil,   169,    -4,    99,
   104,    97,     7,     6,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,    -3,    69,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    99,   nil,   nil,   nil,   nil,   nil,   109,   115,    55,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,    91,   109,   114,   125,   135,
   141,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   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,   120,   -24,   156,    61,
   123,   117,   nil,   nil,   nil,   nil,   nil,   174,   nil,   166,
   100,   160,   nil,   nil,   105,   164,   -22,   nil,   175,   176,
    71,   185,    99,     1,     6,   172,   nil,   nil,   nil,   nil,
     9,   nil,   nil,   nil,    51,   nil,   nil ]

racc_action_default = [
  -133,  -133,    -1,    -3,    -4,    -5,    -6,    -7,    -8,    -9,
   -10,   -11,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
  -133,    -2,  -133,   -14,  -133,   -14,  -133,  -133,   -14,  -133,
  -133,  -133,  -133,   197,   -12,  -133,   -16,  -133,   -18,   -47,
   -20,  -123,   -14,   -26,   -33,  -133,   -13,  -133,  -133,  -133,
  -133,  -124,  -133,  -133,   -38,   -15,   -17,  -125,  -126,  -127,
  -128,  -129,  -130,  -131,  -132,   -46,   -48,   -49,   -50,   -51,
   -52,   -53,   -54,   -55,   -56,  -133,  -133,  -104,  -105,  -106,
   -19,   -21,   -22,   -23,   -24,   -25,   -27,   -28,   -29,   -30,
  -133,   -32,   -34,   -35,   -36,   -37,  -133,  -133,  -133,  -107,
  -108,  -109,  -110,  -111,  -112,  -113,  -114,  -115,  -116,  -117,
  -118,  -119,  -120,  -121,  -122,   -99,  -101,  -133,  -133,  -133,
  -133,   -60,   -61,   -62,   -63,   -64,   -65,   -66,   -67,   -68,
   -69,   -70,   -71,   -72,   -73,   -74,   -75,   -76,   -77,   -78,
   -79,   -80,   -81,   -82,   -83,   -84,   -85,   -86,   -87,   -88,
   -89,   -90,   -91,   -92,   -93,  -133,  -133,  -133,  -133,   -44,
  -133,  -133,   -98,  -100,  -102,  -103,   -31,  -133,   -45,  -133,
  -133,  -133,   -57,   -58,  -133,  -133,  -133,   -94,  -133,  -133,
   -44,  -133,  -133,  -133,  -133,  -133,   -59,   -95,   -96,   -97,
  -133,   -39,   -42,   -41,  -133,   -40,   -43 ]

racc_goto_table = [
    73,    38,    56,    87,    93,   116,    27,   115,   167,    35,
   177,    37,     2,    21,    41,    72,    83,    88,   187,    67,
    82,    50,    24,    52,    86,    81,    68,    53,    51,   185,
    92,    94,    70,   191,   194,    49,    66,    71,    98,   120,
   176,    69,     1,   155,   nil,   nil,   158,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   114,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   116,   164,   163,   nil,   169,
   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,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   188,   189,   nil,
   nil,   nil,   nil,   nil,   172,   196 ]

racc_goto_check = [
     8,    14,    13,     8,     8,    23,    15,    38,    27,    11,
    37,    11,     2,     2,    11,    19,    19,    22,    37,    18,
    18,    16,    12,    20,    21,    17,     5,    24,    11,    27,
    25,    26,     4,    28,    29,    30,    31,    32,    34,    35,
    36,     3,     1,    39,   nil,   nil,    23,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,    15,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,    23,    23,    38,   nil,    23,
    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,    13,    13,   nil,
   nil,   nil,   nil,   nil,    14,     8 ]

racc_goto_pointer = [
   nil,    42,    12,    -8,   -17,   -23,   nil,   nil,   -49,   nil,
   nil,   -14,     8,   -46,   -25,   -10,   -19,   -25,   -30,   -34,
   -20,   -28,   -35,   -71,   -17,   -23,   -22,  -151,  -157,  -158,
    -4,   -13,   -12,   nil,   -37,   -59,  -134,  -164,   -69,   -72 ]

racc_goto_default = [
   nil,   nil,   nil,     3,     4,     5,     6,     7,     8,     9,
    10,   nil,   nil,   nil,   nil,   168,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,    58,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,    75,   nil,   nil,   nil,   nil,   nil,   nil ]

racc_reduce_table = [
  0, 0, :racc_error,
  1, 53, :_reduce_1,
  2, 53, :_reduce_2,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_none,
  1, 54, :_reduce_11,
  3, 58, :_reduce_12,
  4, 59, :_reduce_13,
  0, 63, :_reduce_14,
  3, 63, :_reduce_15,
  3, 60, :_reduce_16,
  4, 64, :_reduce_17,
  3, 55, :_reduce_18,
  5, 56, :_reduce_19,
  0, 68, :_reduce_20,
  2, 68, :_reduce_21,
  1, 69, :_reduce_none,
  1, 69, :_reduce_none,
  1, 69, :_reduce_24,
  5, 57, :_reduce_25,
  0, 72, :_reduce_26,
  2, 72, :_reduce_27,
  1, 73, :_reduce_none,
  1, 73, :_reduce_none,
  1, 73, :_reduce_30,
  4, 74, :_reduce_31,
  5, 61, :_reduce_32,
  0, 76, :_reduce_33,
  2, 76, :_reduce_34,
  1, 77, :_reduce_none,
  1, 77, :_reduce_none,
  1, 77, :_reduce_37,
  4, 62, :_reduce_38,
  10, 78, :_reduce_39,
  3, 80, :_reduce_none,
  1, 80, :_reduce_none,
  0, 81, :_reduce_42,
  2, 81, :_reduce_43,
  0, 79, :_reduce_none,
  1, 79, :_reduce_none,
  3, 66, :_reduce_46,
  0, 82, :_reduce_47,
  2, 82, :_reduce_48,
  1, 83, :_reduce_none,
  1, 83, :_reduce_none,
  1, 83, :_reduce_none,
  1, 83, :_reduce_none,
  1, 83, :_reduce_none,
  1, 83, :_reduce_none,
  1, 83, :_reduce_none,
  1, 83, :_reduce_56,
  6, 71, :_reduce_57,
  6, 70, :_reduce_58,
  9, 70, :_reduce_59,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 87, :_reduce_none,
  1, 88, :_reduce_94,
  3, 88, :_reduce_95,
  3, 89, :_reduce_96,
  3, 89, :_reduce_97,
  4, 84, :_reduce_98,
  0, 91, :_reduce_99,
  2, 91, :_reduce_100,
  1, 90, :_reduce_101,
  3, 90, :_reduce_102,
  3, 90, :_reduce_103,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  1, 86, :_reduce_none,
  2, 67, :_reduce_123,
  3, 67, :_reduce_124,
  1, 65, :_reduce_none,
  1, 65, :_reduce_none,
  1, 65, :_reduce_none,
  1, 65, :_reduce_none,
  1, 65, :_reduce_none,
  1, 75, :_reduce_none,
  1, 75, :_reduce_none,
  1, 75, :_reduce_none ]

racc_reduce_n = 133

racc_shift_n = 197

racc_token_table = {
  false => 0,
  :error => 1,
  ";" => 2,
  "import" => 3,
  :STRING_LITERAL => 4,
  "package" => 5,
  :IDENT => 6,
  "." => 7,
  "option" => 8,
  "=" => 9,
  "message" => 10,
  "extend" => 11,
  "{" => 12,
  "}" => 13,
  "enum" => 14,
  "service" => 15,
  "syntax" => 16,
  "rpc" => 17,
  "(" => 18,
  ")" => 19,
  "returns" => 20,
  "group" => 21,
  "[" => 22,
  "]" => 23,
  "required" => 24,
  "optional" => 25,
  "repeated" => 26,
  "default" => 27,
  "extensions" => 28,
  "to" => 29,
  "max" => 30,
  "double" => 31,
  "float" => 32,
  "int32" => 33,
  "int64" => 34,
  "uint32" => 35,
  "uint64" => 36,
  "sint32" => 37,
  "sint64" => 38,
  "fixed32" => 39,
  "fixed64" => 40,
  "sfixed32" => 41,
  "sfixed64" => 42,
  "bool" => 43,
  "string" => 44,
  "bytes" => 45,
  "," => 46,
  :FLOAT_LITERAL => 47,
  :BOOLEAN_LITERAL => 48,
  :DEC_INTEGER => 49,
  :HEX_INTEGER => 50,
  :OCT_INTEGER => 51 }

racc_nt_base = 52

racc_use_result_var = true

Racc_arg = [
  racc_action_table,
  racc_action_check,
  racc_action_default,
  racc_action_pointer,
  racc_goto_table,
  racc_goto_check,
  racc_goto_default,
  racc_goto_pointer,
  racc_nt_base,
  racc_reduce_table,
  racc_token_table,
  racc_shift_n,
  racc_reduce_n,
  racc_use_result_var ]

Racc_token_to_s_table = [
  "$end",
  "error",
  "\";\"",
  "\"import\"",
  "STRING_LITERAL",
  "\"package\"",
  "IDENT",
  "\".\"",
  "\"option\"",
  "\"=\"",
  "\"message\"",
  "\"extend\"",
  "\"{\"",
  "\"}\"",
  "\"enum\"",
  "\"service\"",
  "\"syntax\"",
  "\"rpc\"",
  "\"(\"",
  "\")\"",
  "\"returns\"",
  "\"group\"",
  "\"[\"",
  "\"]\"",
  "\"required\"",
  "\"optional\"",
  "\"repeated\"",
  "\"default\"",
  "\"extensions\"",
  "\"to\"",
  "\"max\"",
  "\"double\"",
  "\"float\"",
  "\"int32\"",
  "\"int64\"",
  "\"uint32\"",
  "\"uint64\"",
  "\"sint32\"",
  "\"sint64\"",
  "\"fixed32\"",
  "\"fixed64\"",
  "\"sfixed32\"",
  "\"sfixed64\"",
  "\"bool\"",
  "\"string\"",
  "\"bytes\"",
  "\",\"",
  "FLOAT_LITERAL",
  "BOOLEAN_LITERAL",
  "DEC_INTEGER",
  "HEX_INTEGER",
  "OCT_INTEGER",
  "$start",
  "proto",
  "proto_item",
  "message",
  "extend",
  "enum",
  "import",
  "package",
  "option",
  "service",
  "syntax",
  "dot_ident_list",
  "option_body",
  "constant",
  "message_body",
  "user_type",
  "extend_body_list",
  "extend_body",
  "field",
  "group",
  "enum_body_list",
  "enum_body",
  "enum_field",
  "integer_literal",
  "service_body_list",
  "service_body",
  "rpc",
  "rpc_arg",
  "rpc_option_body",
  "option_list",
  "message_body_body_list",
  "message_body_body",
  "extensions",
  "label",
  "type",
  "field_name",
  "field_option_list",
  "field_option",
  "extension",
  "comma_extension_list" ]

Racc_debug_parser = false

##### State transition tables end #####

# reduce 0 omitted

module_eval(<<'.,.,', 'proto.y', 3)
  def _reduce_1(val, _values, result)
     result = Protobuf::Node::ProtoNode.new(val) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 5)
  def _reduce_2(val, _values, result)
     result.children << val[1] if val[1]
    result
  end
.,.,

# reduce 3 omitted

# reduce 4 omitted

# reduce 5 omitted

# reduce 6 omitted

# reduce 7 omitted

# reduce 8 omitted

# reduce 9 omitted

# reduce 10 omitted

module_eval(<<'.,.,', 'proto.y', 15)
  def _reduce_11(val, _values, result)
     result = nil 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 18)
  def _reduce_12(val, _values, result)
     result = Protobuf::Node::ImportNode.new(val[1]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 21)
  def _reduce_13(val, _values, result)
     result = Protobuf::Node::PackageNode.new(val[2].unshift(val[1])) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 24)
  def _reduce_14(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 26)
  def _reduce_15(val, _values, result)
     result << val[2] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 29)
  def _reduce_16(val, _values, result)
     result = Protobuf::Node::OptionNode.new(*val[1]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 32)
  def _reduce_17(val, _values, result)
     result = [val[1].unshift(val[0]), val[3]] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 35)
  def _reduce_18(val, _values, result)
     result = Protobuf::Node::MessageNode.new(val[1], val[2]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 38)
  def _reduce_19(val, _values, result)
     result = Protobuf::Node::ExtendNode.new(val[1], val[3]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 41)
  def _reduce_20(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 43)
  def _reduce_21(val, _values, result)
     result << val[1] if val[1] 
    result
  end
.,.,

# reduce 22 omitted

# reduce 23 omitted

module_eval(<<'.,.,', 'proto.y', 47)
  def _reduce_24(val, _values, result)
     result = nil 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 50)
  def _reduce_25(val, _values, result)
     result = Protobuf::Node::EnumNode.new(val[1], val[3]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 53)
  def _reduce_26(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 55)
  def _reduce_27(val, _values, result)
     result << val[1] if val[1] 
    result
  end
.,.,

# reduce 28 omitted

# reduce 29 omitted

module_eval(<<'.,.,', 'proto.y', 59)
  def _reduce_30(val, _values, result)
     result = nil 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 62)
  def _reduce_31(val, _values, result)
     result = Protobuf::Node::EnumFieldNode.new(val[0], val[2]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 65)
  def _reduce_32(val, _values, result)
     result = Protobuf::Node::ServiceNode.new(val[1], val[3]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 68)
  def _reduce_33(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 70)
  def _reduce_34(val, _values, result)
     result << val[1] if val[1] 
    result
  end
.,.,

# reduce 35 omitted

# reduce 36 omitted

module_eval(<<'.,.,', 'proto.y', 74)
  def _reduce_37(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 76)
  def _reduce_38(val, _values, result)
     result = Protobuf::Node::SyntaxNode.new(val[2]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 79)
  def _reduce_39(val, _values, result)
     result = Protobuf::Node::RpcNode.new(val[1], val[3], val[7]) 
    result
  end
.,.,

# reduce 40 omitted

# reduce 41 omitted

module_eval(<<'.,.,', 'proto.y', 85)
  def _reduce_42(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 87)
  def _reduce_43(val, _values, result)
     result << val[1] if val[1] 
    result
  end
.,.,

# reduce 44 omitted

# reduce 45 omitted

module_eval(<<'.,.,', 'proto.y', 93)
  def _reduce_46(val, _values, result)
     result = val[1] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 96)
  def _reduce_47(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 98)
  def _reduce_48(val, _values, result)
     result << val[1] if val[1] 
    result
  end
.,.,

# reduce 49 omitted

# reduce 50 omitted

# reduce 51 omitted

# reduce 52 omitted

# reduce 53 omitted

# reduce 54 omitted

# reduce 55 omitted

module_eval(<<'.,.,', 'proto.y', 107)
  def _reduce_56(val, _values, result)
     result = nil 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 110)
  def _reduce_57(val, _values, result)
     result = Protobuf::Node::GroupNode.new(val[0], val[2], val[4], val[5]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 113)
  def _reduce_58(val, _values, result)
     result = Protobuf::Node::FieldNode.new(val[0], val[1], val[2], val[4]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 115)
  def _reduce_59(val, _values, result)
     result = Protobuf::Node::FieldNode.new(val[0], val[1], val[2], val[4], val[6]) 
    result
  end
.,.,

# reduce 60 omitted

# reduce 61 omitted

# reduce 62 omitted

# reduce 63 omitted

# reduce 64 omitted

# reduce 65 omitted

# reduce 66 omitted

# reduce 67 omitted

# reduce 68 omitted

# reduce 69 omitted

# reduce 70 omitted

# reduce 71 omitted

# reduce 72 omitted

# reduce 73 omitted

# reduce 74 omitted

# reduce 75 omitted

# reduce 76 omitted

# reduce 77 omitted

# reduce 78 omitted

# reduce 79 omitted

# reduce 80 omitted

# reduce 81 omitted

# reduce 82 omitted

# reduce 83 omitted

# reduce 84 omitted

# reduce 85 omitted

# reduce 86 omitted

# reduce 87 omitted

# reduce 88 omitted

# reduce 89 omitted

# reduce 90 omitted

# reduce 91 omitted

# reduce 92 omitted

# reduce 93 omitted

module_eval(<<'.,.,', 'proto.y', 120)
  def _reduce_94(val, _values, result)
     result = val 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 122)
  def _reduce_95(val, _values, result)
     result << val[2] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 125)
  def _reduce_96(val, _values, result)
     result = [:default, val[2]] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 127)
  def _reduce_97(val, _values, result)
     result = [val[0], val[2]] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 130)
  def _reduce_98(val, _values, result)
     result = Protobuf::Node::ExtensionsNode.new(val[2].unshift(val[1])) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 133)
  def _reduce_99(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 135)
  def _reduce_100(val, _values, result)
     result << val[1] 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 138)
  def _reduce_101(val, _values, result)
     result = Protobuf::Node::ExtensionRangeNode.new(val[0]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 140)
  def _reduce_102(val, _values, result)
     result = Protobuf::Node::ExtensionRangeNode.new(val[0], val[2]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 142)
  def _reduce_103(val, _values, result)
     result = Protobuf::Node::ExtensionRangeNode.new(val[0], :max) 
    result
  end
.,.,

# reduce 104 omitted

# reduce 105 omitted

# reduce 106 omitted

# reduce 107 omitted

# reduce 108 omitted

# reduce 109 omitted

# reduce 110 omitted

# reduce 111 omitted

# reduce 112 omitted

# reduce 113 omitted

# reduce 114 omitted

# reduce 115 omitted

# reduce 116 omitted

# reduce 117 omitted

# reduce 118 omitted

# reduce 119 omitted

# reduce 120 omitted

# reduce 121 omitted

# reduce 122 omitted

module_eval(<<'.,.,', 'proto.y', 153)
  def _reduce_123(val, _values, result)
     result = val[1].unshift(val[0]) 
    result
  end
.,.,

module_eval(<<'.,.,', 'proto.y', 155)
  def _reduce_124(val, _values, result)
     result = val[1].unshift(val[0]) 
    result
  end
.,.,

# reduce 125 omitted

# reduce 126 omitted

# reduce 127 omitted

# reduce 128 omitted

# reduce 129 omitted

# reduce 130 omitted

# reduce 131 omitted

# reduce 132 omitted

def _reduce_none(val, _values, result)
  val[0]
end

  end   # class ProtoParser
  end   # module Protobuf
