#
# DO NOT MODIFY!!!!
# This file is automatically generated by racc 1.4.4
# from racc grammer file "misp.y".
#

require 'racc/parser'


module Misp

  class Parser < Racc::Parser

module_eval <<'..end misp.y modeval..id51c84f25c2', 'misp.y', 22

require 'strscan'
require 'misp'

def p(*args)
  Misp::Pair.new(*args)
end

def initialize(str)
  super()
  @scanner = StringScanner.new(str)
end

def next_token
  @scanner.scan /\s*/ # ignore whitespace
  return nil if @scanner.eos?
  s = @scanner.scan(/[^.()'{}|\s]+/)
  if s
    [:atom, s.to_sym]
  elsif !@scanner.scan(/\s+/)
    s = @scanner.get_byte
    [s, s]
  end
end

public :do_parse
..end misp.y modeval..id51c84f25c2

##### racc 1.4.4 generates ###

racc_reduce_table = [
 0, 0, :racc_error,
 1, 13, :_reduce_none,
 1, 13, :_reduce_none,
 3, 14, :_reduce_3,
 1, 14, :_reduce_none,
 1, 14, :_reduce_none,
 1, 14, :_reduce_none,
 1, 15, :_reduce_7,
 3, 15, :_reduce_8,
 2, 15, :_reduce_9,
 2, 16, :_reduce_10,
 6, 17, :_reduce_11,
 5, 18, :_reduce_12,
 1, 19, :_reduce_13,
 2, 19, :_reduce_14 ]

racc_reduce_n = 15

racc_shift_n = 31

racc_action_table = [
    10,     1,     3,    20,    19,     6,     8,     1,     3,    11,
    11,     6,     8,     1,     3,     1,     3,     6,     8,     6,
     8,     1,     3,     1,     3,     6,     8,     6,     8,     1,
     3,     1,     3,     6,     8,     6,     8,     1,     3,    11,
    24,     6,     8,     1,     3,    27,    22,     6,     8,    30,
    11,    16,    11,    11,    15,    11,    11 ]

racc_action_check = [
     2,    12,    12,    13,    12,    12,    12,    24,    24,    12,
     2,    24,    24,     6,     6,    27,    27,     6,     6,    27,
    27,     3,     3,    11,    11,     3,     3,    11,    11,     0,
     0,    22,    22,     0,     0,    22,    22,    19,    19,    17,
    17,    19,    19,    15,    15,    23,    15,    15,    15,    29,
    29,    10,    14,    26,     8,    28,    25 ]

racc_action_pointer = [
    27,   nil,     0,    19,   nil,   nil,    11,   nil,    46,   nil,
    51,    21,    -1,    -1,    42,    41,   nil,    29,   nil,    35,
   nil,   nil,    29,    37,     5,    46,    43,    13,    45,    40,
   nil ]

racc_action_default = [
   -15,    -2,   -15,   -15,    -1,    -4,   -15,    -5,   -15,    -6,
   -15,   -15,    -7,   -15,   -10,   -15,    31,   -15,    -9,   -15,
    -3,   -13,   -15,   -15,   -15,    -8,   -14,   -15,   -12,   -15,
   -11 ]

racc_goto_table = [
     2,    13,    23,   nil,   nil,   nil,    14,   nil,   nil,   nil,
    18,    17,   nil,    21,   nil,   nil,   nil,   nil,   nil,    25,
   nil,   nil,    26,   nil,    28,   nil,   nil,    29 ]

racc_goto_check = [
     1,     3,     7,   nil,   nil,   nil,     1,   nil,   nil,   nil,
     3,     1,   nil,     3,   nil,   nil,   nil,   nil,   nil,     1,
   nil,   nil,     1,   nil,     1,   nil,   nil,     1 ]

racc_goto_pointer = [
   nil,     0,   nil,    -2,   nil,   nil,   nil,   -13 ]

racc_goto_default = [
   nil,    12,     4,   nil,     5,     7,     9,   nil ]

racc_token_table = {
 false => 0,
 Object.new => 1,
 :atom => 2,
 "(" => 3,
 ")" => 4,
 "." => 5,
 "'" => 6,
 "{" => 7,
 "|" => 8,
 "}" => 9,
 "=" => 10,
 ";" => 11 }

racc_use_result_var = true

racc_nt_base = 12

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',
'atom',
'"("',
'")"',
'"."',
'"""',
'"{"',
'"|"',
'"}"',
'"="',
'";"',
'$start',
'expr',
'pair',
'list',
'quote',
'function',
'assign',
'params']

Racc_debug_parser = false

##### racc system variables end #####

 # reduce 0 omitted

 # reduce 1 omitted

 # reduce 2 omitted

module_eval <<'.,.,', 'misp.y', 7
  def _reduce_3( val, _values, result )
 result = val[1]
   result
  end
.,.,

 # reduce 4 omitted

 # reduce 5 omitted

 # reduce 6 omitted

module_eval <<'.,.,', 'misp.y', 11
  def _reduce_7( val, _values, result )
 result = p(val[0])
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 12
  def _reduce_8( val, _values, result )
 result = p(val[0], val[2])
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 13
  def _reduce_9( val, _values, result )
 result = p(val[0], val[1])
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 14
  def _reduce_10( val, _values, result )
 result = p(:quote, p(val[1]))
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 15
  def _reduce_11( val, _values, result )
 result = p(:fn, p(val[2], p(val[4])))
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 16
  def _reduce_12( val, _values, result )
 result=p(p(:fn,p(val[0],p(val[4]))),val[2])
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 17
  def _reduce_13( val, _values, result )
 result = val[0]
   result
  end
.,.,

module_eval <<'.,.,', 'misp.y', 18
  def _reduce_14( val, _values, result )
 result = val[1]
   result
  end
.,.,

 def _reduce_none( val, _values, result )
  result
 end

  end   # class Parser

end   # module Misp
