#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.8.1
# from Racc grammar file "parser.y".
#

require 'racc/parser.rb'
module Tomlrb
  class GeneratedParser < Racc::Parser
##### State transition tables begin ###

racc_action_table = [
     2,    45,    16,    56,    17,    44,    18,    55,    23,    19,
    20,    14,    21,    22,     8,     4,    10,    36,    16,    12,
    17,    48,    18,    46,    47,    19,    20,    42,    21,    22,
    50,    51,    87,    86,    39,    54,    39,    72,    73,    74,
    75,    70,    71,    67,    68,    65,    66,    69,    78,   nil,
    59,   nil,   nil,    12,    72,    73,    74,    75,    70,    71,
    67,    68,    65,    66,    69,   nil,   nil,    59,   nil,   nil,
    12,    72,    73,    74,    75,    70,    71,    67,    68,    65,
    66,    69,    91,   nil,    59,    89,   nil,    12,    72,    73,
    74,    75,    70,    71,    67,    68,    65,    66,    69,    91,
   nil,    59,    89,   nil,    12,    72,    73,    74,    75,    70,
    71,    67,    68,    65,    66,    69,    91,   nil,    59,    89,
   nil,    12,    72,    73,    74,    75,    70,    71,    67,    68,
    65,    66,    69,    91,   nil,    59,    89,    29,    12,    30,
   nil,    31,   nil,   nil,    32,    33,    27,    34,    35,    29,
   nil,    30,    25,    31,   nil,   nil,    32,    33,    81,    34,
    35,    16,   nil,    17,    25,    18,   nil,   nil,    19,    20,
    77,    21,    22,    16,   nil,    17,   nil,    18,   nil,   nil,
    19,    20,    42,    21,    22,    16,   nil,    17,   nil,    18,
   nil,   nil,    19,    20,    85,    21,    22,    95,   nil,   nil,
    93,   nil,   nil,   nil,    94 ]

racc_action_check = [
     1,    13,     1,    41,     1,    13,     1,    41,     2,     1,
     1,     1,     1,     1,     1,     1,     1,    10,    11,     1,
    11,    25,    11,    24,    24,    11,    11,    11,    11,    11,
    26,    26,    57,    57,    38,    40,    11,    44,    44,    44,
    44,    44,    44,    44,    44,    44,    44,    44,    50,   nil,
    44,   nil,   nil,    44,    55,    55,    55,    55,    55,    55,
    55,    55,    55,    55,    55,   nil,   nil,    55,   nil,   nil,
    55,    58,    58,    58,    58,    58,    58,    58,    58,    58,
    58,    58,    58,   nil,    58,    58,   nil,    58,    91,    91,
    91,    91,    91,    91,    91,    91,    91,    91,    91,    91,
   nil,    91,    91,   nil,    91,    94,    94,    94,    94,    94,
    94,    94,    94,    94,    94,    94,    94,   nil,    94,    94,
   nil,    94,    95,    95,    95,    95,    95,    95,    95,    95,
    95,    95,    95,    95,   nil,    95,    95,     9,    95,     9,
   nil,     9,   nil,   nil,     9,     9,     9,     9,     9,    51,
   nil,    51,     9,    51,   nil,   nil,    51,    51,    51,    51,
    51,    45,   nil,    45,    51,    45,   nil,   nil,    45,    45,
    45,    45,    45,    54,   nil,    54,   nil,    54,   nil,   nil,
    54,    54,    54,    54,    54,    56,   nil,    56,   nil,    56,
   nil,   nil,    56,    56,    56,    56,    56,    90,   nil,   nil,
    90,   nil,   nil,   nil,    90 ]

racc_action_pointer = [
   nil,     0,     8,   nil,   nil,   nil,   nil,   nil,   nil,   135,
     1,    16,   nil,   -17,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,     9,     4,    13,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    14,   nil,
    14,   -15,   nil,   nil,    34,   159,   nil,   nil,   nil,   nil,
    31,   147,   nil,   nil,   171,    51,   183,    18,    68,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   183,    85,   nil,   nil,   102,   119,   nil,   nil,   nil ]

racc_action_default = [
    -1,   -79,   -79,    -2,    -3,    -4,    -5,    -6,    -7,   -79,
   -11,   -79,   -31,   -79,   -45,   -46,   -47,   -48,   -49,   -50,
   -51,   -52,   -53,    99,   -79,   -13,   -79,   -20,   -21,   -22,
   -23,   -24,   -25,   -26,   -27,   -28,   -10,   -29,   -79,   -32,
   -33,   -79,   -39,   -40,   -67,   -79,    -8,    -9,   -12,   -14,
   -16,   -79,   -30,   -34,   -79,   -67,   -79,   -79,   -67,   -61,
   -62,   -63,   -64,   -65,   -66,   -68,   -69,   -70,   -71,   -72,
   -73,   -74,   -75,   -76,   -77,   -78,   -43,   -44,   -15,   -17,
   -18,   -19,   -35,   -36,   -37,   -38,   -41,   -42,   -54,   -55,
   -79,   -67,   -56,   -58,   -67,   -67,   -57,   -59,   -60 ]

racc_goto_table = [
    15,    24,    38,    88,    28,    37,    57,     1,     3,     5,
     6,     7,     9,    49,    53,    13,    92,    83,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,    52,   nil,   nil,   nil,    96,   nil,   nil,    97,
    98,   nil,   nil,    79,    76,    82,    80,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,    84 ]

racc_goto_check = [
    18,     7,    13,    22,    10,    12,    17,     1,     2,     3,
     4,     5,     6,     9,    15,    19,    23,    17,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,    12,   nil,   nil,   nil,    22,   nil,   nil,    22,
    22,   nil,   nil,     7,    18,    13,    10,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,    18 ]

racc_goto_pointer = [
   nil,     7,     7,     8,     9,    10,    11,    -8,   nil,   -13,
    -5,   nil,    -6,    -9,   nil,   -26,   nil,   -38,    -1,    14,
   nil,   nil,   -55,   -74,   nil,   nil,   nil ]

racc_goto_default = [
   nil,   nil,   nil,   nil,   nil,    62,   nil,   nil,    26,   nil,
   nil,    11,   nil,   nil,    40,   nil,    41,    90,    43,   nil,
    61,    58,   nil,   nil,    60,    63,    64 ]

racc_reduce_table = [
  0, 0, :racc_error,
  0, 24, :_reduce_none,
  2, 24, :_reduce_none,
  2, 24, :_reduce_none,
  1, 25, :_reduce_none,
  1, 25, :_reduce_none,
  1, 25, :_reduce_none,
  1, 25, :_reduce_none,
  3, 26, :_reduce_none,
  3, 26, :_reduce_none,
  2, 29, :_reduce_10,
  1, 29, :_reduce_11,
  2, 30, :_reduce_12,
  1, 30, :_reduce_13,
  2, 30, :_reduce_none,
  2, 32, :_reduce_15,
  1, 32, :_reduce_16,
  2, 32, :_reduce_none,
  3, 31, :_reduce_18,
  3, 31, :_reduce_19,
  1, 31, :_reduce_20,
  1, 31, :_reduce_21,
  1, 33, :_reduce_none,
  1, 33, :_reduce_23,
  1, 33, :_reduce_none,
  1, 33, :_reduce_none,
  1, 33, :_reduce_none,
  1, 33, :_reduce_none,
  1, 33, :_reduce_none,
  2, 28, :_reduce_none,
  3, 28, :_reduce_none,
  1, 34, :_reduce_31,
  1, 35, :_reduce_32,
  1, 36, :_reduce_none,
  2, 36, :_reduce_none,
  2, 38, :_reduce_none,
  3, 37, :_reduce_36,
  3, 39, :_reduce_37,
  3, 39, :_reduce_38,
  1, 39, :_reduce_39,
  1, 39, :_reduce_40,
  4, 27, :_reduce_41,
  4, 27, :_reduce_42,
  3, 42, :_reduce_43,
  3, 42, :_reduce_44,
  1, 42, :_reduce_45,
  1, 42, :_reduce_46,
  1, 41, :_reduce_none,
  1, 41, :_reduce_48,
  1, 41, :_reduce_none,
  1, 41, :_reduce_none,
  1, 41, :_reduce_none,
  1, 41, :_reduce_none,
  1, 41, :_reduce_none,
  2, 43, :_reduce_none,
  1, 45, :_reduce_55,
  2, 45, :_reduce_none,
  2, 45, :_reduce_none,
  1, 46, :_reduce_58,
  2, 46, :_reduce_none,
  2, 46, :_reduce_none,
  1, 44, :_reduce_61,
  1, 40, :_reduce_62,
  1, 40, :_reduce_none,
  1, 40, :_reduce_none,
  1, 47, :_reduce_none,
  1, 47, :_reduce_none,
  0, 49, :_reduce_none,
  1, 49, :_reduce_68,
  1, 49, :_reduce_69,
  1, 49, :_reduce_70,
  1, 49, :_reduce_71,
  1, 49, :_reduce_72,
  1, 49, :_reduce_73,
  1, 49, :_reduce_74,
  1, 48, :_reduce_75,
  1, 48, :_reduce_76,
  1, 48, :_reduce_77,
  1, 48, :_reduce_78 ]

racc_reduce_n = 79

racc_shift_n = 99

racc_token_table = {
  false => 0,
  :error => 1,
  :IDENTIFIER => 2,
  :STRING_MULTI => 3,
  :STRING_BASIC => 4,
  :STRING_LITERAL_MULTI => 5,
  :STRING_LITERAL => 6,
  :DATETIME => 7,
  :LOCAL_TIME => 8,
  :INTEGER => 9,
  :NON_DEC_INTEGER => 10,
  :FLOAT => 11,
  :FLOAT_KEYWORD => 12,
  :BOOLEAN => 13,
  :NEWLINE => 14,
  :EOS => 15,
  "[" => 16,
  "]" => 17,
  "." => 18,
  "{" => 19,
  "}" => 20,
  "," => 21,
  "=" => 22 }

racc_nt_base = 23

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 ]
Ractor.make_shareable(Racc_arg) if defined?(Ractor)

Racc_token_to_s_table = [
  "$end",
  "error",
  "IDENTIFIER",
  "STRING_MULTI",
  "STRING_BASIC",
  "STRING_LITERAL_MULTI",
  "STRING_LITERAL",
  "DATETIME",
  "LOCAL_TIME",
  "INTEGER",
  "NON_DEC_INTEGER",
  "FLOAT",
  "FLOAT_KEYWORD",
  "BOOLEAN",
  "NEWLINE",
  "EOS",
  "\"[\"",
  "\"]\"",
  "\".\"",
  "\"{\"",
  "\"}\"",
  "\",\"",
  "\"=\"",
  "$start",
  "expressions",
  "expression",
  "table",
  "assignment",
  "inline_table",
  "table_start",
  "table_continued",
  "table_identifier",
  "table_next",
  "table_identifier_component",
  "inline_table_start",
  "inline_table_end",
  "inline_continued",
  "inline_assignment",
  "inline_next",
  "inline_assignment_key",
  "value",
  "assignment_key_component",
  "assignment_key",
  "array",
  "start_array",
  "array_continued",
  "array_next",
  "scalar",
  "string",
  "literal" ]
Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)

Racc_debug_parser = false

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

# reduce 0 omitted

# reduce 1 omitted

# reduce 2 omitted

# reduce 3 omitted

# reduce 4 omitted

# reduce 5 omitted

# reduce 6 omitted

# reduce 7 omitted

# reduce 8 omitted

# reduce 9 omitted

module_eval(<<'.,.,', 'parser.y', 18)
  def _reduce_10(val, _values, result)
     @handler.start_(:array_of_tables)
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 19)
  def _reduce_11(val, _values, result)
     @handler.start_(:table)
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 22)
  def _reduce_12(val, _values, result)
     array = @handler.end_(:array_of_tables); @handler.set_context(array, is_array_of_tables: true)
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 23)
  def _reduce_13(val, _values, result)
     array = @handler.end_(:table); @handler.set_context(array)
    result
  end
.,.,

# reduce 14 omitted

module_eval(<<'.,.,', 'parser.y', 27)
  def _reduce_15(val, _values, result)
     array = @handler.end_(:array_of_tables); @handler.set_context(array, is_array_of_tables: true)
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 28)
  def _reduce_16(val, _values, result)
     array = @handler.end_(:table); @handler.set_context(array)
    result
  end
.,.,

# reduce 17 omitted

module_eval(<<'.,.,', 'parser.y', 32)
  def _reduce_18(val, _values, result)
     @handler.push(val[2])
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 33)
  def _reduce_19(val, _values, result)
     val[2].split('.').each { |k| @handler.push(k) }
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 35)
  def _reduce_20(val, _values, result)
          keys = val[0].split('.')
      @handler.start_(:table)
      keys.each { |key| @handler.push(key) }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 39)
  def _reduce_21(val, _values, result)
     @handler.push(val[0])
    result
  end
.,.,

# reduce 22 omitted

module_eval(<<'.,.,', 'parser.y', 43)
  def _reduce_23(val, _values, result)
     result = StringUtils.replace_escaped_chars(val[0])
    result
  end
.,.,

# reduce 24 omitted

# reduce 25 omitted

# reduce 26 omitted

# reduce 27 omitted

# reduce 28 omitted

# reduce 29 omitted

# reduce 30 omitted

module_eval(<<'.,.,', 'parser.y', 55)
  def _reduce_31(val, _values, result)
     @handler.start_(:inline)
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 59)
  def _reduce_32(val, _values, result)
          array = @handler.end_(:inline)
      @handler.push_inline(array)

    result
  end
.,.,

# reduce 33 omitted

# reduce 34 omitted

# reduce 35 omitted

module_eval(<<'.,.,', 'parser.y', 72)
  def _reduce_36(val, _values, result)
          keys = @handler.end_(:inline_keys)
      @handler.push(keys)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 78)
  def _reduce_37(val, _values, result)
          @handler.push(val[2]) 

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 80)
  def _reduce_38(val, _values, result)
     val[2].split('.').each { |k| @handler.push(k) }
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 82)
  def _reduce_39(val, _values, result)
          keys = val[0].split('.')
      @handler.start_(:inline_keys)
      keys.each { |key| @handler.push(key) }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 87)
  def _reduce_40(val, _values, result)
          @handler.start_(:inline_keys) 
      @handler.push(val[0]) 

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 93)
  def _reduce_41(val, _values, result)
          keys = @handler.end_(:keys)
      value = keys.pop
      @handler.validate_value(value)
      @handler.push(value)
      @handler.assign(keys)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 100)
  def _reduce_42(val, _values, result)
          keys = @handler.end_(:keys)
      value = keys.pop
      @handler.validate_value(value)
      @handler.push(value)
      @handler.assign(keys)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 108)
  def _reduce_43(val, _values, result)
     @handler.push(val[2])
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 109)
  def _reduce_44(val, _values, result)
     val[2].split('.').each { |k| @handler.push(k) }
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 111)
  def _reduce_45(val, _values, result)
          keys = val[0].split('.')
      @handler.start_(:keys)
      keys.each { |key| @handler.push(key) }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 115)
  def _reduce_46(val, _values, result)
     @handler.start_(:keys); @handler.push(val[0])
    result
  end
.,.,

# reduce 47 omitted

module_eval(<<'.,.,', 'parser.y', 119)
  def _reduce_48(val, _values, result)
     result = StringUtils.replace_escaped_chars(val[0])
    result
  end
.,.,

# reduce 49 omitted

# reduce 50 omitted

# reduce 51 omitted

# reduce 52 omitted

# reduce 53 omitted

# reduce 54 omitted

module_eval(<<'.,.,', 'parser.y', 130)
  def _reduce_55(val, _values, result)
     array = @handler.end_(:array); @handler.push(array.compact)
    result
  end
.,.,

# reduce 56 omitted

# reduce 57 omitted

module_eval(<<'.,.,', 'parser.y', 135)
  def _reduce_58(val, _values, result)
     array = @handler.end_(:array); @handler.push(array.compact)
    result
  end
.,.,

# reduce 59 omitted

# reduce 60 omitted

module_eval(<<'.,.,', 'parser.y', 140)
  def _reduce_61(val, _values, result)
     @handler.start_(:array)
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 143)
  def _reduce_62(val, _values, result)
     @handler.push(val[0])
    result
  end
.,.,

# reduce 63 omitted

# reduce 64 omitted

# reduce 65 omitted

# reduce 66 omitted

# reduce 67 omitted

module_eval(<<'.,.,', 'parser.y', 152)
  def _reduce_68(val, _values, result)
     result = val[0].to_f
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 154)
  def _reduce_69(val, _values, result)
          v = val[0]
      result = if v.end_with?('nan')
                 Float::NAN
               else
                 (v[0] == '-' ? -1 : 1) * Float::INFINITY
               end

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 161)
  def _reduce_70(val, _values, result)
     result = val[0].to_i
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 163)
  def _reduce_71(val, _values, result)
          base = case val[0][1]
             when 'x' then 16
             when 'o' then 8
             when 'b' then 2
             end
      result = val[0].to_i(base)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 170)
  def _reduce_72(val, _values, result)
     result = val[0] == 'true' ? true : false
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 172)
  def _reduce_73(val, _values, result)
          v = val[0]
      result = if v[6].nil?
                 if v[4].nil?
                   LocalDate.new(v[0], v[1], v[2])
                 else
                   LocalDateTime.new(v[0], v[1], v[2], v[3] || 0, v[4] || 0, v[5].to_f)
                 end
               else
                 # Patch for 24:00:00 which Ruby parses
                 if v[3].to_i == 24 && v[4].to_i == 0 && v[5].to_i == 0
                   v[3] = (v[3].to_i + 1).to_s
                 end

                 Time.new(v[0], v[1], v[2], v[3] || 0, v[4] || 0, v[5].to_f, v[6])
               end

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 188)
  def _reduce_74(val, _values, result)
     result = LocalTime.new(*val[0])
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 191)
  def _reduce_75(val, _values, result)
     result = StringUtils.replace_escaped_chars(StringUtils.multiline_replacements(val[0]))
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 192)
  def _reduce_76(val, _values, result)
     result = StringUtils.replace_escaped_chars(val[0])
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 193)
  def _reduce_77(val, _values, result)
     result = StringUtils.strip_spaces(val[0])
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 194)
  def _reduce_78(val, _values, result)
     result = val[0]
    result
  end
.,.,

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

  end   # class GeneratedParser
end   # module Tomlrb
