lib/rbs/parser.rb



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

require 'racc/parser.rb'
module RBS
  class Parser < Racc::Parser

module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1041)

Types = RBS::Types
Namespace = RBS::Namespace
TypeName = RBS::TypeName
Declarations = RBS::AST::Declarations
Members = RBS::AST::Members
MethodType = RBS::MethodType
Annotation = RBS::AST::Annotation

class LocatedValue
  attr_reader :location
  attr_reader :value

  def initialize(location:, value:)
    @location = location
    @value = value
  end
end

require "strscan"

attr_reader :input
attr_reader :buffer
attr_reader :eof_re

def initialize(type, buffer:, eof_re:)
  super()
  @type = type
  @buffer = buffer
  @input = StringScanner.new(buffer.content)
  @eof_re = eof_re
  @eof = false
  @bound_variables_stack = []
  @comments = {}
  @ascii_only = buffer.content.ascii_only?
end

def start_merged_variables_scope
  set = @bound_variables_stack.last&.dup || Set.new
  @bound_variables_stack.push set
end

def start_new_variables_scope
  @bound_variables_stack.push Set.new
end

def reset_variable_scope
  @bound_variables_stack.pop
end

def insert_bound_variable(var)
  @bound_variables_stack.last << var
end

def is_bound_variable?(var)
  (@bound_variables_stack.last || Set.new).member?(var)
end

def self.parse_signature(input, eof_re: nil)
  case input
  when RBS::Buffer
    buffer = input
  else
    buffer = RBS::Buffer.new(name: nil, content: input.to_s)
  end

  self.new(:SIGNATURE, buffer: buffer, eof_re: eof_re).do_parse
end

def self.parse_type(input, variables: [], eof_re: nil)
  case input
  when RBS::Buffer
    buffer = input
  else
    buffer = RBS::Buffer.new(name: nil, content: input.to_s)
  end

  self.new(:TYPE, buffer: buffer, eof_re: eof_re).yield_self do |parser|
    parser.start_new_variables_scope

    variables.each do |var|
      parser.insert_bound_variable var
    end

    parser.do_parse
  ensure
    parser.reset_variable_scope
  end
end

def self.parse_method_type(input, variables: [], eof_re: nil)
  case input
  when RBS::Buffer
    buffer = input
  else
    buffer = RBS::Buffer.new(name: nil, content: input.to_s)
  end

  self.new(:METHODTYPE, buffer: buffer, eof_re: eof_re).yield_self do |parser|
    parser.start_new_variables_scope

    variables.each do |var|
      parser.insert_bound_variable var
    end

    parser.do_parse
  ensure
    parser.reset_variable_scope
  end
end

def leading_comment(location)
  @comments[location.start_line-1]
end

def push_comment(string, location)
  if (comment = leading_comment(location)) && comment.location.start_column == location.start_column
    comment.concat(string: "#{string}\n", location: location)
    @comments[comment.location.end_line] = comment
  else
    new_comment = AST::Comment.new(string: "#{string}\n", location: location)
    @comments[new_comment.location.end_line] = new_comment
  end
end

def new_token(type, value = input.matched)
  charpos = charpos(input)
  start_index = charpos - input.matched.size
  end_index = charpos

  location = RBS::Location.new(buffer: buffer,
                                           start_pos: start_index,
                                           end_pos: end_index)

  [type, LocatedValue.new(location: location, value: value)]
end

def charpos(scanner)
  if @ascii_only
    scanner.pos
  else
    scanner.charpos
  end
end

def empty_params_result
  [
    [],
    [],
    nil,
    [],
    {},
    {},
    nil
  ]
end

KEYWORDS = {
  "class" => :kCLASS,
  "type" => :kTYPE,
  "def" => :kDEF,
  "self" => :kSELF,
  "void" => :kVOID,
  "any" => :kANY,
  "untyped" => :kUNTYPED,
  "top" => :kTOP,
  "bot" => :kBOT,
  "instance" => :kINSTANCE,
  "bool" => :kBOOL,
  "nil" => :kNIL,
  "true" => :kTRUE,
  "false" => :kFALSE,
  "singleton" => :kSINGLETON,
  "interface" => :kINTERFACE,
  "end" => :kEND,
  "include" => :kINCLUDE,
  "extend" => :kEXTEND,
  "prepend" => :kPREPEND,
  "module" => :kMODULE,
  "attr_reader" => :kATTRREADER,
  "attr_writer" => :kATTRWRITER,
  "attr_accessor" => :kATTRACCESSOR,
  "public" => :kPUBLIC,
  "private" => :kPRIVATE,
  "alias" => :kALIAS,
  "extension" => :kEXTENSION,
  "incompatible" => :kINCOMPATIBLE,
  "unchecked" => :kUNCHECKED,
  "overload" => :kOVERLOAD,
  "out" => :kOUT,
  "in" => :kIN,
}
KEYWORDS_RE = /#{Regexp.union(*KEYWORDS.keys)}\b/

PUNCTS = {
  "===" => :tOPERATOR,
  "==" => :tOPERATOR,
  "=~" => :tOPERATOR,
  "!~" => :tOPERATOR,
  "!=" => :tOPERATOR,
  ">=" => :tOPERATOR,
  "<<" => :tOPERATOR,
  "<=>" => :tOPERATOR,
  "<=" => :tOPERATOR,
  ">>" => :tOPERATOR,
  ">" => :tOPERATOR,
  "~" => :tOPERATOR,
  "+@" => :tOPERATOR,
  "+" => :tOPERATOR,
  "[]=" => :tOPERATOR,
  "[]" => :tOPERATOR,
  "::" => :kCOLON2,
  ":" => :kCOLON,
  "(" => :kLPAREN,
  ")" => :kRPAREN,
  "[" => :kLBRACKET,
  "]" => :kRBRACKET,
  "{" => :kLBRACE,
  "}" => :kRBRACE,
  "," => :kCOMMA,
  "|" => :kBAR,
  "&" => :kAMP,
  "^" => :kHAT,
  "->" => :kARROW,
  "=>" => :kFATARROW,
  "=" => :kEQ,
  "?" => :kQUESTION,
  "!" => :kEXCLAMATION,
  "**" => :kSTAR2,
  "*" => :kSTAR,
  "..." => :kDOT3,
  "." => :kDOT,
  "<" => :kLT,
  "-@" => :tOPERATOR,
  "-" => :tOPERATOR,
  "/" => :tOPERATOR,
  "`" => :tOPERATOR,
  "%" => :tOPERATOR,
}
PUNCTS_RE = Regexp.union(*PUNCTS.keys)

ANNOTATION_RE = Regexp.union(/%a\{.*?\}/,
                             /%a\[.*?\]/,
                             /%a\(.*?\)/,
                             /%a\<.*?\>/,
                             /%a\|.*?\|/)
def next_token
  if @type
    type = @type
    @type = nil
    return [:"type_#{type}", nil]
  end

  return if @eof

  while true
    return if input.eos?

    case
    when input.scan(/\s+/)
      # skip
    when input.scan(/#(( *)|( ?(?<string>.*)))\n/)
      charpos = charpos(input)
      start_index = charpos - input.matched.size
      end_index = charpos-1

      location = RBS::Location.new(buffer: buffer,
                                               start_pos: start_index,
                                               end_pos: end_index)

      push_comment input[:string] || "", location
    else
      break
    end
  end

  case
  when eof_re && input.scan(eof_re)
    @eof = true
    [:tEOF, input.matched]
  when input.scan(/`[a-zA-Z_]\w*`/)
    s = input.matched.yield_self {|s| s[1, s.length-2] }
    new_token(:tQUOTEDIDENT, s)
  when input.scan(/`(\\`|[^` :])+`/)
    s = input.matched.yield_self {|s| s[1, s.length-2] }.gsub(/\\`/, '`')
    new_token(:tQUOTEDMETHOD, s)
  when input.scan(ANNOTATION_RE)
    s = input.matched.yield_self {|s| s[3, s.length-4] }.strip
    new_token(:tANNOTATION, s)
  when input.scan(/self\?/)
    new_token(:kSELFQ, "self?")
  when input.scan(/(([a-zA-Z]\w*)|(_\w+))=/)
    new_token(:tWRITE_ATTR)
  when input.scan(KEYWORDS_RE)
    new_token(KEYWORDS[input.matched], input.matched.to_sym)
  when input.scan(/:((@{,2}|\$)?\w+(\?|\!)?|\+|\-)\b?/)
    s = input.matched.yield_self {|s| s[1, s.length] }.to_sym
    new_token(:tSYMBOL, s)
  when input.scan(/[+-]?\d[\d_]*/)
    new_token(:tINTEGER, input.matched.to_i)
  when input.scan(PUNCTS_RE)
    new_token(PUNCTS[input.matched])
  when input.scan(/(::)?([A-Z]\w*::)+/)
    new_token(:tNAMESPACE)
  when input.scan(/[a-z_]\w*:/)
    new_token(:tLKEYWORD, input.matched.chop.to_sym)
  when input.scan(/[A-Z]\w*:/)
    new_token(:tUKEYWORD, input.matched.chop.to_sym)
  when input.scan(/\$[A-Za-z_]\w*/)
    new_token(:tGLOBALIDENT)
  when input.scan(/@[a-zA-Z_]\w*/)
    new_token(:tIVAR, input.matched.to_sym)
  when input.scan(/@@[a-zA-Z_]\w*/)
    new_token(:tCLASSVAR, input.matched.to_sym)
  when input.scan(/_[a-zA-Z]\w*\b/)
    new_token(:tINTERFACEIDENT)
  when input.scan(/[A-Z]\w*\b/)
    new_token(:tUIDENT)
  when input.scan(/[a-z_]\w*\b/)
    new_token(:tLIDENT)
  when input.scan(/"(\\"|[^"])*"/)
    s = input.matched.yield_self {|s| s[1, s.length - 2] }.gsub(/\\"/, '"')
    new_token(:tSTRING, s)
  when input.scan(/'(\\'|[^'])*'/)
    s = input.matched.yield_self {|s| s[1, s.length - 2] }.gsub(/\\'/, "'")
    new_token(:tSTRING, s)
  else
    raise "Unexpected token: #{input.peek(10)}..."
  end
end

def on_error(token_id, error_value, value_stack)
  raise SyntaxError.new(token_str: token_to_str(token_id), error_value: error_value, value_stack: value_stack)
end

class SyntaxError < StandardError
  attr_reader :token_str, :error_value, :value_stack

  def initialize(token_str:, error_value:, value_stack: nil)
    @token_str = token_str
    @error_value = error_value
    @value_stack = value_stack

    super "parse error on value: #{error_value.inspect} (#{token_str})"
  end
end

class SemanticsError < StandardError
  attr_reader :subject, :location, :original_message

  def initialize(message, subject:, location:)
    @subject = subject
    @location = location
    @original_message = message

    super "parse error on #{location}: #{message}"
  end
end

...end parser.y/module_eval...
##### State transition tables begin ###

clist = [
'339,340,33,341,74,277,278,33,33,352,50,378,33,338,33,33,404,350,5,377',
'207,208,209,210,211,212,213,214,218,37,215,206,216,217,102,113,103,104',
'105,119,33,32,51,334,328,329,32,32,332,330,333,32,299,32,32,331,118',
'106,107,108,110,112,111,327,336,337,109,114,116,197,85,359,42,120,121',
'117,122,339,340,32,341,58,59,43,33,33,50,50,229,33,338,33,33,48,198',
'86,86,207,208,209,210,211,212,213,214,218,64,215,206,216,217,102,113',
'103,104,105,119,33,51,51,334,328,329,32,32,332,330,333,32,194,32,32',
'331,118,106,107,108,110,112,111,327,336,337,109,114,116,339,340,39,341',
'120,121,117,122,81,156,32,142,195,338,155,322,143,40,41,144,207,208',
'209,210,211,212,213,214,353,393,215,206,216,217,102,113,103,104,105',
'119,86,87,145,334,328,329,39,274,332,330,333,2,3,4,86,331,118,106,107',
'108,110,112,111,327,336,337,109,114,116,40,41,162,275,120,121,117,122',
'339,340,146,341,58,59,61,62,74,63,318,40,41,338,154,395,394,270,271',
'86,207,208,209,210,211,212,213,214,218,314,215,206,216,217,102,113,103',
'104,105,119,86,86,157,334,328,329,58,59,332,330,333,159,55,54,56,331',
'118,106,107,108,110,112,111,327,336,337,109,114,116,339,340,161,341',
'120,121,117,122,58,59,40,41,41,338,55,54,56,40,41,164,207,208,209,210',
'211,212,213,214,218,156,215,206,216,217,102,113,103,104,105,119,40,41',
'-107,334,328,329,40,41,332,330,333,385,386,40,41,331,118,106,107,108',
'110,112,111,327,336,337,109,114,116,40,41,40,41,120,121,117,122,339',
'340,-108,341,58,59,40,41,40,41,40,41,-109,338,40,41,40,41,40,41,207',
'208,209,210,211,212,213,214,218,-110,215,206,216,217,102,113,103,104',
'105,119,40,41,-111,334,328,329,40,41,332,330,333,40,41,363,364,331,118',
'106,107,108,110,112,111,327,336,337,109,114,116,339,340,-112,341,120',
'121,117,122,40,41,40,41,-113,338,-114,-115,-116,-117,48,-132,207,208',
'209,210,211,212,213,214,218,169,215,206,216,217,102,113,103,104,105',
'119,170,171,172,334,328,329,173,174,332,330,333,175,42,199,232,331,118',
'106,107,108,110,112,111,327,336,337,109,114,116,233,235,236,237,120',
'121,117,122,339,340,239,341,58,59,81,243,243,243,249,252,42,338,255',
'257,261,263,265,266,207,208,209,210,211,212,213,214,218,42,215,206,216',
'217,102,113,103,104,105,119,268,305,307,334,328,329,261,309,332,330',
'333,265,319,320,321,331,118,106,107,108,110,112,111,327,336,337,109',
'114,116,33,357,58,59,120,121,117,122,22,23,21,362,26,-215,25,362,30',
'362,91,92,93,94,95,96,97,98,115,16,99,90,100,101,102,113,103,104,105',
'119,369,32,370,371,372,28,373,137,375,138,140,376,379,380,390,399,118',
'106,107,108,110,112,111,400,401,404,109,114,116,33,405,58,59,120,121',
'117,122,22,23,21,406,26,407,25,,30,,91,92,93,94,95,96,97,98,115,16,99',
'90,100,101,102,113,103,104,105,119,,32,,,,28,,,,,,,,,,,118,106,107,108',
'110,112,111,,,,109,114,116,33,,58,59,120,121,117,122,22,23,21,,26,-215',
'25,,30,,91,92,93,94,95,96,97,98,115,16,99,90,100,101,102,113,103,104',
'105,119,,32,,,,28,,205,,,140,,,,,,118,106,107,108,110,112,111,,,,109',
'114,116,33,,58,59,120,121,117,122,22,23,21,,26,-215,25,,30,,91,92,93',
'94,95,96,97,98,115,16,99,90,100,101,102,113,103,104,105,119,,32,,,,28',
',205,,,140,,,,,,118,106,107,108,110,112,111,,,,109,114,116,33,,58,59',
'120,121,117,122,22,23,21,,26,-215,25,,30,,91,92,93,94,95,96,97,98,115',
'16,99,90,100,101,102,113,103,104,105,119,,32,,,,28,,137,,138,140,,,',
',,118,106,107,108,110,112,111,,,,109,114,116,33,,58,59,120,121,117,122',
'22,23,21,,26,-215,25,,30,,91,92,93,94,95,96,97,98,115,16,99,90,100,101',
'102,113,103,104,105,119,,32,,,-4,28,-237,137,33,138,140,-237,78,,,74',
'118,106,107,108,110,112,111,,,,109,114,116,,,,,120,121,117,122,,,166',
'33,167,58,59,,,,32,22,23,21,,26,-215,25,,30,,91,92,93,94,95,96,97,98',
'115,16,99,90,100,101,102,113,103,104,105,119,39,32,,40,41,28,,137,,138',
'140,,,,,,118,106,107,108,110,112,111,58,59,168,109,114,116,,,,,120,121',
'117,122,,,207,208,209,210,211,212,213,214,218,,215,206,216,217,102,113',
'103,104,105,119,,,,,,,,205,,,140,,,,,,118,106,107,108,110,112,111,58',
'59,,109,114,116,,,,,120,121,117,122,,,207,208,209,210,211,212,213,214',
'218,,215,206,216,217,102,113,103,104,105,119,,,,,,,,205,,,140,,,,,,118',
'106,107,108,110,112,111,58,59,,109,114,116,,,,,120,121,117,122,,,207',
'208,209,210,211,212,213,214,218,,215,206,216,217,102,113,103,104,105',
'119,166,,167,166,,167,166,,167,166,,167,166,,167,,118,106,107,108,110',
'112,111,,,,109,114,116,,,,,120,121,117,122,,,,,,40,41,,40,41,,40,41',
',40,41,,40,41,,150,,,153,,151,,168,,,168,,,168,,-237,168,33,,168,-237',
'78,294,295,74,152,-237,,33,,,-237,78,294,295,74,149,,,,-237,,33,296',
',-237,78,294,295,74,,,291,290,296,,32,,,,,,,291,290,,,32,296,,,150,282',
',153,,151,291,290,318,-237,32,33,310,,-237,78,294,295,74,,,,,,,152,358',
'314,315,311,312,313,,,,316,149,296,,,,,,,,,291,290,,33,32,,,,,,,22,23',
'21,,26,,25,,30,306,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,',
'32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33',
',,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11',
'27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17',
'18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15',
'16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13',
'14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,45,30,,8,12,19,20',
'9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12',
'19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30',
',8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26',
',25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21',
'28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22',
'23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,',
',,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27',
'33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18',
'11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16',
'17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14',
'15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10',
'13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19',
'20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,',
'8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,',
'25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21',
'28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22',
'23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,',
',,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27',
'33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18',
'11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16',
'17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14',
'15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10',
'13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19',
'20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,',
'8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21,28,26,',
'25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22,23,21',
'28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,,,,32,22',
'23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27,33,,,,',
',,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18,11,27',
'33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16,17,18',
'11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14,15,16',
'17,18,11,27,33,,,,,,,32,22,23,21,28,26,,25,,30,,8,12,19,20,9,10,13,14',
'15,16,17,18,11,27,,,,,,,,32,,,,28' ]
        racc_action_table = arr = ::Array.new(2553, nil)
        idx = 0
        clist.each do |str|
          str.split(',', -1).each do |i|
            arr[idx] = i.to_i unless i.empty?
            idx += 1
          end
        end

clist = [
'373,373,315,373,267,260,260,257,265,317,28,362,263,373,229,316,407,317',
'1,362,373,373,373,373,373,373,373,373,373,5,373,373,373,373,373,373',
'373,373,373,373,314,315,28,373,373,373,257,265,373,373,373,263,267,229',
'316,373,373,373,373,373,373,373,373,373,373,373,373,373,373,160,46,324',
'7,373,373,373,373,312,312,314,312,312,312,24,188,187,194,235,187,186',
'312,185,48,27,160,46,324,312,312,312,312,312,312,312,312,312,32,312',
'312,312,312,312,312,312,312,312,312,153,194,235,312,312,312,188,187',
'312,312,312,186,158,185,48,312,312,312,312,312,312,312,312,312,312,312',
'312,312,312,318,318,35,318,312,312,312,312,36,77,153,52,158,318,77,298',
'53,6,6,54,318,318,318,318,318,318,318,318,318,381,318,318,318,318,318',
'318,318,318,318,318,298,47,55,318,318,318,6,258,318,318,318,0,0,0,381',
'318,318,318,318,318,318,318,318,318,318,318,318,318,318,47,47,84,258',
'318,318,318,318,384,384,56,384,384,384,31,31,74,31,304,250,250,384,76',
'383,382,255,255,84,384,384,384,384,384,384,384,384,384,304,384,384,384',
'384,384,384,384,384,384,384,383,382,78,384,384,384,30,30,384,384,384',
'80,30,30,30,384,384,384,384,384,384,384,384,384,384,384,384,384,384',
'406,406,81,406,384,384,384,384,143,143,147,147,82,406,143,143,143,389',
'389,88,406,406,406,406,406,406,406,406,406,89,406,406,406,406,406,406',
'406,406,406,406,391,391,90,406,406,406,392,392,406,406,406,372,372,367',
'367,406,406,406,406,406,406,406,406,406,406,406,406,406,406,365,365',
'182,182,406,406,406,406,313,313,91,313,313,313,183,183,184,184,360,360',
'92,313,163,163,356,356,190,190,313,313,313,313,313,313,313,313,313,93',
'313,313,313,313,313,313,313,313,313,313,191,191,94,313,313,313,192,192',
'313,313,313,355,355,335,335,313,313,313,313,313,313,313,313,313,313',
'313,313,313,313,354,354,95,354,313,313,313,313,388,388,44,44,96,354',
'97,98,99,100,101,115,354,354,354,354,354,354,354,354,354,125,354,354',
'354,354,354,354,354,354,354,354,126,127,129,354,354,354,131,134,354',
'354,354,135,141,170,189,354,354,354,354,354,354,354,354,354,354,354',
'354,354,354,193,195,196,198,354,354,354,354,311,311,203,311,311,311',
'226,227,228,230,231,234,238,311,241,242,243,244,245,247,311,311,311',
'311,311,311,311,311,311,251,311,311,311,311,311,311,311,311,311,311',
'253,269,273,311,311,311,275,276,311,311,311,280,294,295,296,311,311',
'311,311,311,311,311,311,311,311,311,311,311,311,172,321,172,172,311',
'311,311,311,172,172,172,326,172,172,172,344,172,346,172,172,172,172',
'172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,347',
'172,348,349,351,172,353,172,357,172,172,361,366,368,378,385,172,172',
'172,172,172,172,172,386,387,396,172,172,172,137,398,137,137,172,172',
'172,172,137,137,137,401,137,403,137,,137,,137,137,137,137,137,137,137',
'137,137,137,137,137,137,137,137,137,137,137,137,137,,137,,,,137,,,,',
',,,,,,137,137,137,137,137,137,137,,,,137,137,137,239,,239,239,137,137',
'137,137,239,239,239,,239,239,239,,239,,239,239,239,239,239,239,239,239',
'239,239,239,239,239,239,239,239,239,239,239,239,,239,,,,239,,239,,,239',
',,,,,239,239,239,239,239,239,239,,,,239,239,239,173,,173,173,239,239',
'239,239,173,173,173,,173,173,173,,173,,173,173,173,173,173,173,173,173',
'173,173,173,173,173,173,173,173,173,173,173,173,,173,,,,173,,173,,,173',
',,,,,173,173,173,173,173,173,173,,,,173,173,173,159,,159,159,173,173',
'173,173,159,159,159,,159,159,159,,159,,159,159,159,159,159,159,159,159',
'159,159,159,159,159,159,159,159,159,159,159,159,,159,,,,159,,159,,159',
'159,,,,,,159,159,159,159,159,159,159,,,,159,159,159,171,,171,171,159',
'159,159,159,171,171,171,,171,171,171,,171,,171,171,171,171,171,171,171',
'171,171,171,171,171,171,171,171,171,171,171,171,171,,171,,,34,171,34',
'171,34,171,171,34,34,,,34,171,171,171,171,171,171,171,,,,171,171,171',
',,,,171,171,171,171,,,178,50,178,50,50,,,,34,50,50,50,,50,50,50,,50',
',50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,34,50,',
'178,178,50,,50,,50,50,,,,,,50,50,50,50,50,50,50,175,175,178,50,50,50',
',,,,50,50,50,50,,,175,175,175,175,175,175,175,175,175,,175,175,175,175',
'175,175,175,175,175,175,,,,,,,,175,,,175,,,,,,175,175,175,175,175,175',
'175,174,174,,175,175,175,,,,,175,175,175,175,,,174,174,174,174,174,174',
'174,174,174,,174,174,174,174,174,174,174,174,174,174,,,,,,,,174,,,174',
',,,,,174,174,174,174,174,174,174,205,205,,174,174,174,,,,,174,174,174',
'174,,,205,205,205,205,205,205,205,205,205,,205,205,205,205,205,205,205',
'205,205,205,179,,179,222,,222,123,,123,176,,176,180,,180,,205,205,205',
'205,205,205,205,,,,205,205,205,,,,,205,205,205,205,,,,,,179,179,,222',
'222,,123,123,,176,176,,180,180,,75,,,75,,75,,179,,,222,,,123,,264,176',
'264,,180,264,264,264,264,264,75,279,,279,,,279,279,279,279,279,75,,',
',323,,323,264,,323,323,323,323,323,,,264,264,279,,264,,,,,,,279,279',
',,279,323,,,281,264,,281,,281,323,323,281,272,323,272,279,,272,272,272',
'272,272,,,,,,,281,323,281,281,281,281,281,,,,281,281,272,,,,,,,,,272',
'272,,154,272,,,,,,,154,154,154,,154,,154,,154,272,154,154,154,154,154',
'154,154,154,154,154,154,154,154,154,26,,,,,,,154,26,26,26,154,26,,26',
',26,,26,26,26,26,26,26,26,26,26,26,26,26,26,26,40,,,,,,,26,40,40,40',
'26,40,,40,,40,,40,40,40,40,40,40,40,40,40,40,40,40,40,40,41,,,,,,,40',
'41,41,41,40,41,,41,,41,,41,41,41,41,41,41,41,41,41,41,41,41,41,41,43',
',,,,,,41,43,43,43,41,43,,43,,43,,43,43,43,43,43,43,43,43,43,43,43,43',
'43,43,86,,,,,,,43,86,86,86,43,86,,86,,86,,86,86,86,86,86,86,86,86,86',
'86,86,86,86,86,25,,,,,,,86,25,25,25,86,25,,25,25,25,,25,25,25,25,25',
'25,25,25,25,25,25,25,25,25,233,,,,,,,25,233,233,233,25,233,,233,,233',
',233,233,233,233,233,233,233,233,233,233,233,233,233,233,266,,,,,,,233',
'266,266,266,233,266,,266,,266,,266,266,266,266,266,266,266,266,266,266',
'266,266,266,266,138,,,,,,,266,138,138,138,266,138,,138,,138,,138,138',
'138,138,138,138,138,138,138,138,138,138,138,138,139,,,,,,,138,139,139',
'139,138,139,,139,,139,,139,139,139,139,139,139,139,139,139,139,139,139',
'139,139,140,,,,,,,139,140,140,140,139,140,,140,,140,,140,140,140,140',
'140,140,140,140,140,140,140,140,140,140,232,,,,,,,140,232,232,232,140',
'232,,232,,232,,232,232,232,232,232,232,232,232,232,232,232,232,232,232',
'144,,,,,,,232,144,144,144,232,144,,144,,144,,144,144,144,144,144,144',
'144,144,144,144,144,144,144,144,145,,,,,,,144,145,145,145,144,145,,145',
',145,,145,145,145,145,145,145,145,145,145,145,145,145,145,145,57,,,',
',,,145,57,57,57,145,57,,57,,57,,57,57,57,57,57,57,57,57,57,57,57,57',
'57,57,307,,,,,,,57,307,307,307,57,307,,307,,307,,307,307,307,307,307',
'307,307,307,307,307,307,307,307,307,319,,,,,,,307,319,319,319,307,319',
',319,,319,,319,319,319,319,319,319,319,319,319,319,319,319,319,319,320',
',,,,,,319,320,320,320,319,320,,320,,320,,320,320,320,320,320,320,320',
'320,320,320,320,320,320,320,146,,,,,,,320,146,146,146,320,146,,146,',
'146,,146,146,146,146,146,146,146,146,146,146,146,146,146,146,325,,,',
',,,146,325,325,325,146,325,,325,,325,,325,325,325,325,325,325,325,325',
'325,325,325,325,325,325,199,,,,,,,325,199,199,199,325,199,,199,,199',
',199,199,199,199,199,199,199,199,199,199,199,199,199,199,2,,,,,,,199',
'2,2,2,199,2,,2,,2,,2,2,2,2,2,2,2,2,2,2,2,2,2,2,343,,,,,,,2,343,343,343',
'2,343,,343,,343,,343,343,343,343,343,343,343,343,343,343,343,343,343',
'343,345,,,,,,,343,345,345,345,343,345,,345,,345,,345,345,345,345,345',
'345,345,345,345,345,345,345,345,345,155,,,,,,,345,155,155,155,345,155',
',155,,155,,155,155,155,155,155,155,155,155,155,155,155,155,155,155,157',
',,,,,,155,157,157,157,155,157,,157,,157,,157,157,157,157,157,157,157',
'157,157,157,157,157,157,157,51,,,,,,,157,51,51,51,157,51,,51,,51,,51',
'51,51,51,51,51,51,51,51,51,51,51,51,51,369,,,,,,,51,369,369,369,51,369',
',369,,369,,369,369,369,369,369,369,369,369,369,369,369,369,369,369,370',
',,,,,,369,370,370,370,369,370,,370,,370,,370,370,370,370,370,370,370',
'370,370,370,370,370,370,370,371,,,,,,,370,371,371,371,370,371,,371,',
'371,,371,371,371,371,371,371,371,371,371,371,371,371,371,371,375,,,',
',,,371,375,375,375,371,375,,375,,375,,375,375,375,375,375,375,375,375',
'375,375,375,375,375,375,376,,,,,,,375,376,376,376,375,376,,376,,376',
',376,376,376,376,376,376,376,376,376,376,376,376,376,376,379,,,,,,,376',
'379,379,379,376,379,,379,,379,,379,379,379,379,379,379,379,379,379,379',
'379,379,379,379,380,,,,,,,379,380,380,380,379,380,,380,,380,,380,380',
'380,380,380,380,380,380,380,380,380,380,380,380,177,,,,,,,380,177,177',
'177,380,177,,177,,177,,177,177,177,177,177,177,177,177,177,177,177,177',
'177,177,,,,,,,,177,,,,177' ]
        racc_action_check = arr = ::Array.new(2553, nil)
        idx = 0
        clist.each do |str|
          str.split(',', -1).each do |i|
            arr[idx] = i.to_i unless i.empty?
            idx += 1
          end
        end

racc_action_pointer = [
   126,    18,  2089,   nil,   nil,    29,   118,    23,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,    65,  1577,  1417,    77,    -6,   nil,
   263,   227,   102,   nil,   961,    74,   136,   nil,   nil,   nil,
  1449,  1481,   nil,  1513,   403,   nil,    51,   170,    88,   nil,
   993,  2249,   136,   118,   112,   135,   172,  1865,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   220,  1236,   195,   153,   223,   nil,
   258,   292,   258,   nil,   198,   nil,  1545,   nil,   294,   319,
   292,   329,   339,   356,   369,   398,   408,   410,   411,   412,
   413,   440,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   415,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,  1215,   nil,   425,   461,   435,   nil,   436,
   nil,   440,   nil,   nil,   441,   445,   nil,   647,  1673,  1705,
  1737,   441,   nil,   294,  1801,  1833,  1993,   257,   nil,   nil,
   nil,   nil,   nil,   113,  1385,  2185,   nil,  2217,   109,   848,
    50,   nil,   nil,   338,   nil,   nil,   nil,   nil,   nil,   nil,
   443,   915,   580,   781,  1111,  1052,  1218,  2505,   993,  1209,
  1221,   nil,   318,   330,   332,    87,    85,    81,    80,   438,
   342,   364,   370,   459,    70,   488,   492,   nil,   508,  2057,
   nil,   nil,   nil,   473,   nil,  1170,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,  1212,   nil,   nil,   nil,   503,   504,   505,    10,
   506,   520,  1769,  1609,   505,    71,   nil,   nil,   478,   714,
   nil,   513,   473,   454,   490,   489,   nil,   516,   nil,   nil,
   189,   495,   nil,   534,   nil,   238,   nil,     3,   174,   nil,
   -70,   nil,   nil,     8,  1282,     4,  1641,    -7,   nil,   539,
   nil,   nil,  1347,   539,   nil,   484,   560,   nil,   nil,  1293,
   522,  1307,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   525,   526,   514,   nil,   142,   nil,
   nil,   nil,   nil,   nil,   192,   nil,   nil,  1897,   nil,   nil,
   nil,   513,    75,   367,    36,    -2,    11,   -61,   144,  1929,
  1961,   576,   nil,  1307,    52,  2025,   579,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   373,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,  2121,   583,  2153,   585,   604,   606,   607,
   nil,   589,   nil,   573,   436,   375,   340,   588,   nil,   nil,
   334,   591,     2,   nil,   nil,   316,   592,   300,   593,  2281,
  2313,  2345,   313,    -2,   nil,  2377,  2409,   nil,   619,  2441,
  2473,   156,   220,   219,   221,   582,   590,   616,   401,   264,
   nil,   287,   293,   nil,   nil,   nil,   591,   nil,   610,   nil,
   nil,   607,   nil,   619,   nil,   nil,   290,   -40,   nil,   nil ]

racc_action_default = [
  -241,  -241,  -237,    -6,   -16,  -241,    -4,  -160,  -163,  -164,
  -165,  -166,  -167,  -168,  -169,  -170,  -171,  -172,  -173,  -174,
  -175,  -176,  -177,  -178,  -179,  -237,  -237,  -241,  -241,  -187,
  -241,  -241,  -238,  -240,   -17,    -4,  -150,   410,    -1,    -5,
  -237,  -237,  -186,  -237,  -188,  -181,  -241,  -241,  -237,  -185,
  -237,  -237,  -241,  -191,  -241,  -241,  -241,  -237,  -199,  -200,
  -231,  -232,  -233,  -234,  -239,    -2,    -7,    -8,    -9,   -10,
   -11,   -12,   -13,   -14,   -17,  -241,  -241,  -241,  -241,    -3,
   -82,  -241,  -161,  -162,  -241,  -182,  -237,  -183,  -241,  -241,
  -173,  -163,  -167,  -174,  -175,  -164,  -165,  -168,  -169,  -172,
  -166,  -118,  -119,  -120,  -121,  -122,  -123,  -124,  -125,  -126,
  -127,  -128,  -129,  -130,  -131,  -170,  -133,  -134,  -135,  -136,
  -137,  -138,  -139,  -227,  -197,  -241,  -241,  -204,  -205,  -207,
  -208,  -210,  -211,  -214,  -217,  -219,  -220,  -237,  -237,  -237,
  -237,  -202,  -190,  -241,  -237,  -237,  -237,  -196,   -18,   -15,
   -15,   -15,   -15,  -237,  -237,  -237,  -236,  -237,   -84,  -237,
  -241,  -152,  -180,  -189,  -184,  -221,  -228,  -229,  -230,  -198,
  -241,  -237,  -237,  -237,  -215,  -215,  -227,  -237,  -227,  -227,
  -227,  -192,  -193,  -194,  -195,  -237,  -237,  -237,  -237,  -241,
  -157,  -158,  -159,  -241,  -241,  -241,  -241,  -151,  -241,  -237,
  -203,  -211,  -206,  -213,  -209,  -241,  -107,  -108,  -109,  -110,
  -111,  -112,  -113,  -114,  -115,  -116,  -117,  -118,  -132,  -216,
  -218,  -222,  -227,  -223,  -224,  -226,  -150,  -140,  -140,  -237,
  -140,  -241,  -237,  -237,  -241,  -241,   -83,  -153,  -201,  -237,
  -225,  -241,   -23,  -148,   -28,   -34,   -30,   -33,   -59,  -235,
  -156,   -81,   -85,  -241,  -212,  -241,   -34,  -237,  -241,  -142,
  -145,  -149,   -34,  -237,   -17,  -237,  -237,   -17,   -86,  -241,
   -20,   -21,   -17,   -24,  -141,  -148,  -241,  -146,  -147,   -17,
   -29,   -73,   -27,   -35,   -36,   -37,   -38,   -39,   -40,   -41,
   -42,   -43,   -44,   -45,  -241,  -241,  -241,   -31,  -241,   -58,
   -60,   -61,   -62,   -63,   -73,   -34,   -22,  -237,  -143,  -144,
   -26,  -241,  -241,  -241,  -237,  -237,  -237,   -70,  -241,  -237,
  -237,  -241,   -32,   -17,  -241,  -237,   -52,   -89,   -90,   -91,
   -92,   -93,   -94,   -95,   -96,   -97,  -100,  -101,  -102,  -103,
  -104,  -105,  -106,  -237,   -52,  -237,   -52,   -64,   -66,   -68,
   -71,  -241,   -74,  -132,  -241,   -55,   -56,  -241,   -19,   -25,
   -46,  -241,  -241,   -98,   -99,   -48,  -241,   -50,  -241,  -237,
  -237,  -237,   -75,  -241,  -154,  -237,  -237,   -53,  -241,  -237,
  -237,  -241,  -241,  -241,  -241,  -241,  -241,  -241,   -57,   -47,
   -54,   -49,   -51,   -65,   -67,   -69,   -16,   -87,  -241,   -76,
   -77,  -241,   -72,   -78,   -79,   -88,  -241,   -16,  -155,   -80 ]

racc_goto_table = [
     6,    57,    75,    46,    80,   189,    49,   126,    77,    88,
   141,    52,   165,   342,   342,   342,   245,   177,    38,   259,
   342,    84,    89,   201,    47,   204,   402,   326,   344,   346,
   203,   203,   264,    60,   354,   219,   220,   409,    82,    83,
   361,    34,   148,   272,    35,    66,    65,    79,   123,   279,
   280,   308,   269,   256,   262,   147,   342,   297,   366,   301,
   368,   242,   244,   302,   248,   221,   303,   223,   224,   225,
   374,   185,   186,   187,   188,   342,   230,   267,   300,   351,
   384,   247,   396,   158,   163,   177,   342,   193,   258,   387,
   276,   254,   323,   160,   202,     1,   nil,   203,   nil,   nil,
   398,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   342,   nil,
   nil,   240,   nil,   nil,    57,   247,   196,   247,   nil,   nil,
   nil,   nil,   408,   nil,   181,   nil,   nil,   nil,   200,   nil,
   nil,   nil,   nil,   nil,   nil,   176,   178,   179,   180,   nil,
   nil,   nil,   182,   183,   184,   nil,   226,   227,   228,   nil,
   nil,   nil,   190,   191,   nil,   192,   nil,   123,   238,    89,
    89,    89,   231,   nil,   nil,   nil,   347,   348,   349,   123,
   123,   123,   234,   nil,   nil,   222,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   251,   nil,   241,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,   273,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   250,    89,   nil,   nil,   nil,   304,   nil,   123,    77,   nil,
   nil,   nil,   nil,   nil,   298,   nil,    77,   nil,   nil,   nil,
   nil,   nil,   nil,    77,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   325,   343,   345,   324,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,    77,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   355,   356,   nil,
   nil,   nil,   nil,   360,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   365,   nil,   367,   nil,   nil,   nil,   381,   382,   383,
   nil,   nil,   nil,   nil,   nil,   397,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   388,   389,   nil,   nil,   391,   392 ]

racc_goto_check = [
     2,    36,    16,    23,    18,    27,    51,    50,    59,    17,
    49,    61,    74,    53,    53,    53,    25,    63,     3,    55,
    53,    23,    59,    69,     2,    69,    46,    37,    37,    37,
    64,    64,    20,    75,    37,    70,    70,    46,     2,     2,
    38,     4,    16,    20,     5,     6,     3,     3,     2,    20,
    25,    55,    19,    22,    24,     2,    53,    26,    38,    29,
    38,    21,    21,    30,    21,    74,    35,    74,    74,    74,
    37,    14,    14,    14,    14,    53,    39,    40,    41,    42,
    44,    27,    45,    47,     2,    63,    53,    48,    54,    37,
    57,    69,    20,    58,    65,     1,   nil,    64,   nil,   nil,
    37,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    53,   nil,
   nil,    74,   nil,   nil,    36,    27,    50,    27,   nil,   nil,
   nil,   nil,    37,   nil,    61,   nil,   nil,   nil,    50,   nil,
   nil,   nil,   nil,   nil,   nil,     2,     2,     2,     2,   nil,
   nil,   nil,     2,     2,     2,   nil,    17,    17,    17,   nil,
   nil,   nil,     2,     2,   nil,     2,   nil,     2,    49,    59,
    59,    59,    59,   nil,   nil,   nil,    27,    27,    27,     2,
     2,     2,    51,   nil,   nil,     2,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,    49,   nil,    18,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,    51,   nil,   nil,   nil,   nil,    17,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
     2,    59,   nil,   nil,   nil,    16,   nil,     2,    59,   nil,
   nil,   nil,   nil,   nil,    23,   nil,    59,   nil,   nil,   nil,
   nil,   nil,   nil,    59,   nil,   nil,   nil,   nil,   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,    36,    36,    23,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,    59,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,     2,     2,   nil,
   nil,   nil,   nil,     2,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,     2,   nil,     2,   nil,   nil,   nil,    23,    23,    23,
   nil,   nil,   nil,   nil,   nil,    36,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   nil,     2,     2,   nil,   nil,     2,     2 ]

racc_goto_pointer = [
   nil,    95,    -2,    12,    38,    40,    11,   nil,   nil,   nil,
   nil,   nil,   nil,   nil,   -78,   nil,   -32,   -39,   -32,  -203,
  -213,  -166,  -189,   -22,  -190,  -213,  -208,  -148,   nil,  -208,
  -204,   nil,   nil,   nil,   nil,  -201,   -29,  -284,  -286,  -112,
  -171,  -189,  -238,   nil,  -292,  -302,  -370,     3,   -71,   -41,
   -43,   -22,   nil,  -298,  -155,  -224,   nil,  -170,    12,   -26,
   nil,   -19,   nil,  -120,  -142,   -78,   nil,   nil,   nil,  -148,
  -139,   nil,   nil,   nil,  -111,     2 ]

racc_goto_default = [
   nil,   nil,    44,   nil,   nil,   403,   293,    67,    68,    69,
    70,    71,    72,    73,   nil,    36,   281,    76,   nil,   nil,
   nil,   nil,   nil,   nil,   nil,   nil,   246,    24,   283,   284,
   285,   286,   287,   288,   289,   292,   124,   nil,   nil,   nil,
   nil,   nil,   nil,   317,   nil,   nil,   nil,   nil,   nil,     7,
   nil,   nil,   335,   125,   nil,   nil,   260,   nil,   nil,    31,
    29,   nil,    53,   139,   127,   128,   129,   130,   131,   132,
   133,   134,   135,   136,   nil,   nil ]

racc_reduce_table = [
  0, 0, :racc_error,
  3, 80, :_reduce_1,
  3, 80, :_reduce_2,
  3, 80, :_reduce_3,
  0, 82, :_reduce_none,
  1, 82, :_reduce_none,
  0, 83, :_reduce_6,
  2, 83, :_reduce_7,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  1, 85, :_reduce_none,
  0, 93, :_reduce_15,
  0, 94, :_reduce_16,
  0, 95, :_reduce_17,
  2, 95, :_reduce_18,
  10, 92, :_reduce_19,
  1, 98, :_reduce_none,
  1, 98, :_reduce_none,
  8, 91, :_reduce_22,
  0, 101, :_reduce_23,
  2, 101, :_reduce_24,
  5, 101, :_reduce_25,
  8, 90, :_reduce_26,
  7, 90, :_reduce_27,
  0, 103, :_reduce_28,
  2, 103, :_reduce_29,
  1, 104, :_reduce_30,
  3, 104, :_reduce_31,
  4, 105, :_reduce_32,
  1, 105, :_reduce_33,
  0, 99, :_reduce_34,
  2, 99, :_reduce_35,
  1, 107, :_reduce_none,
  1, 107, :_reduce_none,
  1, 107, :_reduce_none,
  1, 107, :_reduce_none,
  1, 107, :_reduce_none,
  1, 107, :_reduce_none,
  1, 107, :_reduce_42,
  1, 107, :_reduce_43,
  1, 107, :_reduce_none,
  1, 107, :_reduce_none,
  4, 113, :_reduce_46,
  6, 113, :_reduce_47,
  4, 113, :_reduce_48,
  6, 113, :_reduce_49,
  4, 113, :_reduce_50,
  6, 113, :_reduce_51,
  0, 117, :_reduce_52,
  2, 117, :_reduce_53,
  3, 117, :_reduce_54,
  3, 112, :_reduce_55,
  3, 112, :_reduce_56,
  5, 112, :_reduce_57,
  7, 89, :_reduce_58,
  0, 119, :_reduce_59,
  2, 119, :_reduce_60,
  1, 120, :_reduce_61,
  1, 120, :_reduce_62,
  1, 120, :_reduce_none,
  3, 109, :_reduce_64,
  6, 109, :_reduce_65,
  3, 110, :_reduce_66,
  6, 110, :_reduce_67,
  3, 111, :_reduce_68,
  6, 111, :_reduce_69,
  0, 121, :_reduce_70,
  1, 121, :_reduce_71,
  7, 108, :_reduce_72,
  0, 122, :_reduce_none,
  2, 122, :_reduce_74,
  0, 123, :_reduce_75,
  2, 123, :_reduce_76,
  2, 123, :_reduce_77,
  1, 125, :_reduce_78,
  1, 125, :_reduce_79,
  3, 125, :_reduce_80,
  6, 84, :_reduce_81,
  0, 126, :_reduce_82,
  3, 126, :_reduce_83,
  0, 127, :_reduce_84,
  3, 127, :_reduce_85,
  4, 127, :_reduce_86,
  1, 124, :_reduce_none,
  2, 124, :_reduce_88,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  2, 116, :_reduce_98,
  2, 116, :_reduce_99,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 116, :_reduce_none,
  1, 131, :_reduce_none,
  1, 131, :_reduce_none,
  1, 131, :_reduce_none,
  1, 131, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  1, 132, :_reduce_none,
  0, 100, :_reduce_140,
  3, 100, :_reduce_141,
  1, 133, :_reduce_142,
  3, 133, :_reduce_143,
  3, 134, :_reduce_144,
  0, 136, :_reduce_145,
  1, 136, :_reduce_146,
  1, 136, :_reduce_147,
  0, 135, :_reduce_148,
  1, 135, :_reduce_149,
  0, 97, :_reduce_150,
  3, 97, :_reduce_151,
  1, 137, :_reduce_152,
  3, 137, :_reduce_153,
  4, 114, :_reduce_154,
  8, 114, :_reduce_155,
  5, 86, :_reduce_156,
  3, 87, :_reduce_157,
  3, 87, :_reduce_158,
  3, 88, :_reduce_159,
  1, 81, :_reduce_none,
  3, 81, :_reduce_161,
  3, 81, :_reduce_162,
  1, 128, :_reduce_163,
  1, 128, :_reduce_164,
  1, 128, :_reduce_165,
  1, 128, :_reduce_166,
  1, 128, :_reduce_167,
  1, 128, :_reduce_168,
  1, 128, :_reduce_169,
  1, 128, :_reduce_170,
  1, 128, :_reduce_171,
  1, 128, :_reduce_172,
  1, 128, :_reduce_173,
  1, 128, :_reduce_174,
  1, 128, :_reduce_175,
  1, 128, :_reduce_176,
  1, 128, :_reduce_177,
  1, 128, :_reduce_178,
  1, 128, :_reduce_179,
  4, 128, :_reduce_180,
  2, 128, :_reduce_181,
  3, 128, :_reduce_182,
  3, 128, :_reduce_183,
  4, 128, :_reduce_184,
  2, 128, :_reduce_185,
  2, 128, :_reduce_186,
  1, 128, :_reduce_none,
  1, 102, :_reduce_188,
  3, 102, :_reduce_189,
  3, 139, :_reduce_190,
  1, 140, :_reduce_191,
  3, 140, :_reduce_192,
  3, 141, :_reduce_193,
  3, 141, :_reduce_194,
  3, 141, :_reduce_195,
  2, 141, :_reduce_196,
  1, 142, :_reduce_none,
  2, 142, :_reduce_198,
  1, 115, :_reduce_none,
  1, 115, :_reduce_none,
  5, 130, :_reduce_201,
  2, 130, :_reduce_202,
  3, 129, :_reduce_203,
  1, 129, :_reduce_204,
  1, 129, :_reduce_none,
  3, 144, :_reduce_206,
  1, 144, :_reduce_207,
  1, 144, :_reduce_none,
  3, 146, :_reduce_209,
  1, 146, :_reduce_210,
  1, 146, :_reduce_none,
  3, 148, :_reduce_212,
  1, 148, :_reduce_213,
  1, 148, :_reduce_none,
  0, 149, :_reduce_215,
  3, 149, :_reduce_216,
  1, 149, :_reduce_217,
  3, 149, :_reduce_218,
  1, 149, :_reduce_219,
  1, 149, :_reduce_220,
  2, 143, :_reduce_221,
  3, 145, :_reduce_222,
  3, 147, :_reduce_223,
  3, 150, :_reduce_224,
  4, 151, :_reduce_225,
  3, 152, :_reduce_226,
  0, 153, :_reduce_none,
  1, 153, :_reduce_none,
  1, 153, :_reduce_none,
  1, 153, :_reduce_none,
  2, 106, :_reduce_231,
  1, 154, :_reduce_none,
  1, 154, :_reduce_none,
  1, 154, :_reduce_none,
  2, 118, :_reduce_235,
  2, 96, :_reduce_236,
  0, 138, :_reduce_237,
  1, 138, :_reduce_238,
  2, 138, :_reduce_239,
  1, 138, :_reduce_240 ]

racc_reduce_n = 241

racc_shift_n = 410

racc_token_table = {
  false => 0,
  :error => 1,
  :tUIDENT => 2,
  :tLIDENT => 3,
  :tNAMESPACE => 4,
  :tINTERFACEIDENT => 5,
  :tLKEYWORD => 6,
  :tUKEYWORD => 7,
  :tGLOBALIDENT => 8,
  :tIVAR => 9,
  :tCLASSVAR => 10,
  :tANNOTATION => 11,
  :tSTRING => 12,
  :tSYMBOL => 13,
  :tINTEGER => 14,
  :tWRITE_ATTR => 15,
  :kLPAREN => 16,
  :kRPAREN => 17,
  :kLBRACKET => 18,
  :kRBRACKET => 19,
  :kLBRACE => 20,
  :kRBRACE => 21,
  :kVOID => 22,
  :kNIL => 23,
  :kTRUE => 24,
  :kFALSE => 25,
  :kANY => 26,
  :kUNTYPED => 27,
  :kTOP => 28,
  :kBOT => 29,
  :kSELF => 30,
  :kSELFQ => 31,
  :kINSTANCE => 32,
  :kCLASS => 33,
  :kBOOL => 34,
  :kSINGLETON => 35,
  :kTYPE => 36,
  :kDEF => 37,
  :kMODULE => 38,
  :kPRIVATE => 39,
  :kPUBLIC => 40,
  :kALIAS => 41,
  :kCOLON => 42,
  :kCOLON2 => 43,
  :kCOMMA => 44,
  :kBAR => 45,
  :kAMP => 46,
  :kHAT => 47,
  :kARROW => 48,
  :kQUESTION => 49,
  :kEXCLAMATION => 50,
  :kSTAR => 51,
  :kSTAR2 => 52,
  :kFATARROW => 53,
  :kEQ => 54,
  :kDOT => 55,
  :kDOT3 => 56,
  :kLT => 57,
  :kINTERFACE => 58,
  :kEND => 59,
  :kINCLUDE => 60,
  :kEXTEND => 61,
  :kATTRREADER => 62,
  :kATTRWRITER => 63,
  :kATTRACCESSOR => 64,
  :tOPERATOR => 65,
  :tQUOTEDMETHOD => 66,
  :tQUOTEDIDENT => 67,
  :kPREPEND => 68,
  :kEXTENSION => 69,
  :kINCOMPATIBLE => 70,
  :type_TYPE => 71,
  :type_SIGNATURE => 72,
  :type_METHODTYPE => 73,
  :tEOF => 74,
  :kOUT => 75,
  :kIN => 76,
  :kUNCHECKED => 77,
  :kOVERLOAD => 78 }

racc_nt_base = 79

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",
  "tUIDENT",
  "tLIDENT",
  "tNAMESPACE",
  "tINTERFACEIDENT",
  "tLKEYWORD",
  "tUKEYWORD",
  "tGLOBALIDENT",
  "tIVAR",
  "tCLASSVAR",
  "tANNOTATION",
  "tSTRING",
  "tSYMBOL",
  "tINTEGER",
  "tWRITE_ATTR",
  "kLPAREN",
  "kRPAREN",
  "kLBRACKET",
  "kRBRACKET",
  "kLBRACE",
  "kRBRACE",
  "kVOID",
  "kNIL",
  "kTRUE",
  "kFALSE",
  "kANY",
  "kUNTYPED",
  "kTOP",
  "kBOT",
  "kSELF",
  "kSELFQ",
  "kINSTANCE",
  "kCLASS",
  "kBOOL",
  "kSINGLETON",
  "kTYPE",
  "kDEF",
  "kMODULE",
  "kPRIVATE",
  "kPUBLIC",
  "kALIAS",
  "kCOLON",
  "kCOLON2",
  "kCOMMA",
  "kBAR",
  "kAMP",
  "kHAT",
  "kARROW",
  "kQUESTION",
  "kEXCLAMATION",
  "kSTAR",
  "kSTAR2",
  "kFATARROW",
  "kEQ",
  "kDOT",
  "kDOT3",
  "kLT",
  "kINTERFACE",
  "kEND",
  "kINCLUDE",
  "kEXTEND",
  "kATTRREADER",
  "kATTRWRITER",
  "kATTRACCESSOR",
  "tOPERATOR",
  "tQUOTEDMETHOD",
  "tQUOTEDIDENT",
  "kPREPEND",
  "kEXTENSION",
  "kINCOMPATIBLE",
  "type_TYPE",
  "type_SIGNATURE",
  "type_METHODTYPE",
  "tEOF",
  "kOUT",
  "kIN",
  "kUNCHECKED",
  "kOVERLOAD",
  "$start",
  "target",
  "type",
  "eof",
  "signatures",
  "method_type",
  "signature",
  "type_decl",
  "const_decl",
  "global_decl",
  "interface_decl",
  "module_decl",
  "class_decl",
  "extension_decl",
  "start_new_scope",
  "start_merged_scope",
  "annotations",
  "class_name",
  "type_params",
  "extension_name",
  "class_members",
  "module_type_params",
  "super_class",
  "type_list",
  "colon_module_self_types",
  "module_self_types",
  "module_self_type",
  "qualified_name",
  "class_member",
  "method_member",
  "include_member",
  "extend_member",
  "prepend_member",
  "var_type_member",
  "attribute_member",
  "alias_member",
  "keyword",
  "method_name",
  "attr_var_opt",
  "interface_name",
  "interface_members",
  "interface_member",
  "overload",
  "attributes",
  "method_kind",
  "def_name",
  "method_types",
  "params_opt",
  "block_opt",
  "simple_type",
  "params",
  "function_type",
  "method_name0",
  "identifier_keywords",
  "module_type_params0",
  "module_type_param",
  "type_param_check",
  "type_param_variance",
  "type_params0",
  "namespace",
  "record_type",
  "record_fields",
  "record_field",
  "keyword_name",
  "required_positional",
  "optional_positional_params",
  "optional_positional",
  "rest_positional_param",
  "rest_positional",
  "trailing_positional_params",
  "keyword_params",
  "required_keyword",
  "optional_keyword",
  "rest_keyword",
  "var_name_opt",
  "simple_name" ]

Racc_debug_parser = false

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

# reduce 0 omitted

module_eval(<<'.,.,', 'parser.y', 27)
  def _reduce_1(val, _values, result)
            result = val[1]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 30)
  def _reduce_2(val, _values, result)
            result = val[1]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 33)
  def _reduce_3(val, _values, result)
            result = val[1]

    result
  end
.,.,

# reduce 4 omitted

# reduce 5 omitted

module_eval(<<'.,.,', 'parser.y', 39)
  def _reduce_6(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 41)
  def _reduce_7(val, _values, result)
            result = val[0].push(val[1])

    result
  end
.,.,

# reduce 8 omitted

# reduce 9 omitted

# reduce 10 omitted

# reduce 11 omitted

# reduce 12 omitted

# reduce 13 omitted

# reduce 14 omitted

module_eval(<<'.,.,', 'parser.y', 53)
  def _reduce_15(val, _values, result)
     start_new_variables_scope
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 54)
  def _reduce_16(val, _values, result)
     start_merged_variables_scope
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 57)
  def _reduce_17(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 59)
  def _reduce_18(val, _values, result)
            result = val[1].unshift(Annotation.new(string: val[0].value, location: val[0].location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 64)
  def _reduce_19(val, _values, result)
            reset_variable_scope

        location = val[1].location + val[9].location
        result = Declarations::Extension.new(
          name: val[3].value,
          type_params: val[4]&.value || [],
          extension_name: val[6].value.to_sym,
          members: val[8],
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

# reduce 20 omitted

# reduce 21 omitted

module_eval(<<'.,.,', 'parser.y', 82)
  def _reduce_22(val, _values, result)
            reset_variable_scope

        location = val[1].location + val[7].location
        result = Declarations::Class.new(
          name: val[3].value,
          type_params: val[4]&.value || Declarations::ModuleTypeParams.empty,
          super_class: val[5],
          members: val[6],
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 97)
  def _reduce_23(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 99)
  def _reduce_24(val, _values, result)
            result = Declarations::Class::Super.new(name: val[1].value,
                                                args: [])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 103)
  def _reduce_25(val, _values, result)
            result = Declarations::Class::Super.new(name: val[1].value,
                                                args: val[3])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 109)
  def _reduce_26(val, _values, result)
            reset_variable_scope

        location = val[1].location + val[7].location
        result = Declarations::Module.new(
          name: val[3].value,
          type_params: val[4]&.value || Declarations::ModuleTypeParams.empty,
          self_types: val[5],
          members: val[6],
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 123)
  def _reduce_27(val, _values, result)
            reset_variable_scope

        location = val[1].location + val[6].location
        result = Declarations::Module.new(
          name: val[3].value,
          type_params: Declarations::ModuleTypeParams.empty,
          self_types: val[4],
          members: val[5],
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 138)
  def _reduce_28(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 140)
  def _reduce_29(val, _values, result)
            result = val[1]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 145)
  def _reduce_30(val, _values, result)
            result = [val[0]]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 148)
  def _reduce_31(val, _values, result)
            result = val[0].push(val[2])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 153)
  def _reduce_32(val, _values, result)
            name = val[0].value
        args = val[2]
        location = val[0].location + val[3].location

        case
        when name.class?
          result = Declarations::Module::Self.new(name: name, args: args, location: location)
        when name.interface?
          result = Declarations::Module::Self.new(name: name, args: args, location: location)
        else
          raise SemanticsError.new("Module self type should be instance or interface", subject: val[0], location: val[0].location)
        end

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 167)
  def _reduce_33(val, _values, result)
            name = val[0].value
        args = []
        location = val[0].location

        case
        when name.class?
          result = Declarations::Module::Self.new(name: name, args: args, location: location)
        when name.interface?
          result = Declarations::Module::Self.new(name: name, args: args, location: location)
        else
          raise SemanticsError.new("Module self type should be instance or interface", subject: val[0], location: val[0].location)
        end

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 182)
  def _reduce_34(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 184)
  def _reduce_35(val, _values, result)
            result = val[0].push(val[1])

    result
  end
.,.,

# reduce 36 omitted

# reduce 37 omitted

# reduce 38 omitted

# reduce 39 omitted

# reduce 40 omitted

# reduce 41 omitted

module_eval(<<'.,.,', 'parser.y', 195)
  def _reduce_42(val, _values, result)
            result = Members::Public.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 198)
  def _reduce_43(val, _values, result)
            result = Members::Private.new(location: val[0].location)

    result
  end
.,.,

# reduce 44 omitted

# reduce 45 omitted

module_eval(<<'.,.,', 'parser.y', 205)
  def _reduce_46(val, _values, result)
            location = val[1].location + val[3].location
        result = Members::AttrReader.new(name: val[2].value,
                                         ivar_name: nil,
                                         type: val[3],
                                         annotations: val[0],
                                         location: location,
                                         comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 214)
  def _reduce_47(val, _values, result)
            location = val[1].location + val[5].location
        result = Members::AttrReader.new(name: val[2].value.to_sym,
                                         ivar_name: val[3],
                                         type: val[5],
                                         annotations: val[0],
                                         location: location,
                                         comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 223)
  def _reduce_48(val, _values, result)
            location = val[1].location + val[3].location
        result = Members::AttrWriter.new(name: val[2].value,
                                         ivar_name: nil,
                                         type: val[3],
                                         annotations: val[0],
                                         location: location,
                                         comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 232)
  def _reduce_49(val, _values, result)
            location = val[1].location + val[5].location
        result = Members::AttrWriter.new(name: val[2].value.to_sym,
                                         ivar_name: val[3],
                                         type: val[5],
                                         annotations: val[0],
                                         location: location,
                                         comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 241)
  def _reduce_50(val, _values, result)
            location = val[1].location + val[3].location
        result = Members::AttrAccessor.new(name: val[2].value,
                                           ivar_name: nil,
                                           type: val[3],
                                           annotations: val[0],
                                           location: location,
                                           comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 250)
  def _reduce_51(val, _values, result)
            location = val[1].location + val[5].location
        result = Members::AttrAccessor.new(name: val[2].value.to_sym,
                                           ivar_name: val[3],
                                           type: val[5],
                                           annotations: val[0],
                                           location: location,
                                           comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 260)
  def _reduce_52(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 261)
  def _reduce_53(val, _values, result)
     result = false
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 262)
  def _reduce_54(val, _values, result)
     result = val[1].value
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 266)
  def _reduce_55(val, _values, result)
            location = val[0].location + val[2].location
        result = Members::InstanceVariable.new(
          name: val[0].value,
          type: val[2],
          location: location,
          comment: leading_comment(location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 275)
  def _reduce_56(val, _values, result)
            type = val[2]

        if type.is_a?(Types::Variable)
          type = Types::ClassInstance.new(
            name: TypeName.new(name: type.name, namespace: Namespace.empty),
            args: [],
            location: type.location
          )
        end

        location = val[0].location + val[2].location
        result = Members::ClassVariable.new(
          name: val[0].value,
          type: type,
          location: location,
          comment: leading_comment(location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 294)
  def _reduce_57(val, _values, result)
          type = val[4]

      if type.is_a?(Types::Variable)
        type = Types::ClassInstance.new(
          name: TypeName.new(name: type.name, namespace: Namespace.empty),
          args: [],
          location: type.location
        )
      end

      location = val[0].location + val[4].location
      result = Members::ClassInstanceVariable.new(
        name: val[2].value,
        type: type,
        location: location,
        comment: leading_comment(location)
      )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 315)
  def _reduce_58(val, _values, result)
            reset_variable_scope

        location = val[1].location + val[6].location
        result = Declarations::Interface.new(
          name: val[3].value,
          type_params: val[4]&.value || Declarations::ModuleTypeParams.empty,
          members: val[5],
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 329)
  def _reduce_59(val, _values, result)
     result = []
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 331)
  def _reduce_60(val, _values, result)
            result = val[0].push(val[1])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 336)
  def _reduce_61(val, _values, result)
            unless val[0].kind == :instance
          raise SemanticsError.new("Interface cannot have singleton method", subject: val[0], location: val[0].location)
        end

        if val[0].types.last == :super
          raise SemanticsError.new("Interface method cannot have `super` type", subject: val[0], location: val[0].location)
        end

        result = val[0]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 347)
  def _reduce_62(val, _values, result)
            unless val[0].name.interface?
          raise SemanticsError.new("Interface should include an interface", subject: val[0], location: val[0].location)
        end

        result = val[0]

    result
  end
.,.,

# reduce 63 omitted

module_eval(<<'.,.,', 'parser.y', 357)
  def _reduce_64(val, _values, result)
            if val[2].value.alias?
          raise SemanticsError.new("Should include module or interface", subject: val[2].value, location: val[2].location)
        end
        location = val[1].location + val[2].location
        result = Members::Include.new(name: val[2].value,
                                      args: [],
                                      annotations: val[0],
                                      location: location,
                                      comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 368)
  def _reduce_65(val, _values, result)
            if val[2].value.alias?
          raise SemanticsError.new("Should include module or interface", subject: val[2].value, location: val[2].location)
        end
        location = val[1].location + val[5].location
        result = Members::Include.new(name: val[2].value,
                                      args: val[4],
                                      annotations: val[0],
                                      location: location,
                                      comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 381)
  def _reduce_66(val, _values, result)
            if val[2].value.alias?
          raise SemanticsError.new("Should extend module or interface", subject: val[2].value, location: val[2].location)
        end
        location = val[1].location + val[2].location
        result = Members::Extend.new(name: val[2].value,
                                     args: [],
                                     annotations: val[0],
                                     location: location,
                                     comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 392)
  def _reduce_67(val, _values, result)
            if val[2].value.alias?
          raise SemanticsError.new("Should extend module or interface", subject: val[2].value, location: val[2].location)
        end
        location = val[1].location + val[5].location
        result = Members::Extend.new(name: val[2].value,
                                     args: val[4],
                                     annotations: val[0],
                                     location: location,
                                     comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 405)
  def _reduce_68(val, _values, result)
            unless val[2].value.class?
          raise SemanticsError.new("Should prepend module", subject: val[2].value, location: val[2].location)
        end
        location = val[1].location + val[2].location
        result = Members::Prepend.new(name: val[2].value,
                                      args: [],
                                      annotations: val[0],
                                      location: location,
                                      comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 416)
  def _reduce_69(val, _values, result)
            unless val[2].value.class?
          raise SemanticsError.new("Should prepend module", subject: val[2].value, location: val[2].location)
        end
        location = val[1].location + val[5].location
        result = Members::Prepend.new(name: val[2].value,
                                      args: val[4],
                                      annotations: val[0],
                                      location: location,
                                      comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 428)
  def _reduce_70(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 430)
  def _reduce_71(val, _values, result)
            RBS.logger.warn "`overload def` syntax is deprecated. Use `...` syntax instead."
        result = val[0]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 436)
  def _reduce_72(val, _values, result)
            location = val[3].location + val[6].last.location

        last_type = val[6].last
        if last_type.is_a?(LocatedValue) && last_type.value == :dot3
          overload = true
          val[6].pop
        else
          overload = false
        end

        result = Members::MethodDefinition.new(
          name: val[5].value,
          kind: val[4],
          types: val[6],
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || val[2]&.location || val[3].location),
          overload: overload || !!val[2]
        )

    result
  end
.,.,

# reduce 73 omitted

module_eval(<<'.,.,', 'parser.y', 459)
  def _reduce_74(val, _values, result)
            RBS.logger.warn "`incompatible` method attribute is deprecated and ignored."

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 463)
  def _reduce_75(val, _values, result)
     result = :instance
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 464)
  def _reduce_76(val, _values, result)
     result = :singleton
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 465)
  def _reduce_77(val, _values, result)
     result = :singleton_instance
    result
  end
.,.,

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

module_eval(<<'.,.,', 'parser.y', 469)
  def _reduce_79(val, _values, result)
     result = [LocatedValue.new(value: :dot3, location: val[0].location)]
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 471)
  def _reduce_80(val, _values, result)
            result = val[2].unshift(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 476)
  def _reduce_81(val, _values, result)
            location = (val[1] || val[2] || val[3] || val[4]).location + val[5].location
        type_params = val[1]&.value || []

        params = val[2]&.value || empty_params_result

        type = Types::Function.new(
          required_positionals: params[0],
          optional_positionals: params[1],
          rest_positionals: params[2],
          trailing_positionals: params[3],
          required_keywords: params[4],
          optional_keywords: params[5],
          rest_keywords: params[6],
          return_type: val[5]
        )

        block = val[3]&.value

        result = MethodType.new(type_params: type_params,
                                type: type,
                                block: block,
                                location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 501)
  def _reduce_82(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 503)
  def _reduce_83(val, _values, result)
            result = LocatedValue.new(value: val[1], location: val[0].location + val[2].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 507)
  def _reduce_84(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 509)
  def _reduce_85(val, _values, result)
            block = MethodType::Block.new(type: val[1].value, required: true)
        result = LocatedValue.new(value: block, location: val[0].location + val[2].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 513)
  def _reduce_86(val, _values, result)
            block = MethodType::Block.new(type: val[2].value, required: false)
        result = LocatedValue.new(value: block, location: val[0].location + val[3].location)

    result
  end
.,.,

# reduce 87 omitted

module_eval(<<'.,.,', 'parser.y', 520)
  def _reduce_88(val, _values, result)
            result = LocatedValue.new(value: val[0].value.to_sym,
                                  location: val[0].location + val[1].location)

    result
  end
.,.,

# reduce 89 omitted

# reduce 90 omitted

# reduce 91 omitted

# reduce 92 omitted

# reduce 93 omitted

# reduce 94 omitted

# reduce 95 omitted

# reduce 96 omitted

# reduce 97 omitted

module_eval(<<'.,.,', 'parser.y', 529)
  def _reduce_98(val, _values, result)
            unless val[0].location.pred?(val[1].location)
          raise SyntaxError.new(token_str: "kQUESTION", error_value: val[1])
        end

        result = LocatedValue.new(value: "#{val[0].value}?",
                                  location: val[0].location + val[1].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 537)
  def _reduce_99(val, _values, result)
            unless val[0].location.pred?(val[1].location)
          raise SyntaxError.new(token_str: "kEXCLAMATION", error_value: val[1])
        end

        result = LocatedValue.new(value: "#{val[0].value}!",
                                  location: val[0].location + val[1].location)

    result
  end
.,.,

# reduce 100 omitted

# reduce 101 omitted

# reduce 102 omitted

# reduce 103 omitted

# 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

# reduce 123 omitted

# reduce 124 omitted

# reduce 125 omitted

# reduce 126 omitted

# reduce 127 omitted

# reduce 128 omitted

# reduce 129 omitted

# reduce 130 omitted

# reduce 131 omitted

# reduce 132 omitted

# reduce 133 omitted

# reduce 134 omitted

# reduce 135 omitted

# reduce 136 omitted

# reduce 137 omitted

# reduce 138 omitted

# reduce 139 omitted

module_eval(<<'.,.,', 'parser.y', 557)
  def _reduce_140(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 559)
  def _reduce_141(val, _values, result)
            val[1].each {|p| insert_bound_variable(p.name) }

        result = LocatedValue.new(value: val[1], location: val[0].location + val[2].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 566)
  def _reduce_142(val, _values, result)
            result = Declarations::ModuleTypeParams.new()
        result.add(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 570)
  def _reduce_143(val, _values, result)
            result = val[0].add(val[2])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 575)
  def _reduce_144(val, _values, result)
            result = Declarations::ModuleTypeParams::TypeParam.new(name: val[2].value.to_sym,
                                                               variance: val[1],
                                                               skip_validation: val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 581)
  def _reduce_145(val, _values, result)
     result = :invariant
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 582)
  def _reduce_146(val, _values, result)
     result = :covariant
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 583)
  def _reduce_147(val, _values, result)
     result = :contravariant
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 586)
  def _reduce_148(val, _values, result)
     result = false
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 587)
  def _reduce_149(val, _values, result)
     result = true
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 590)
  def _reduce_150(val, _values, result)
     result = nil
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 592)
  def _reduce_151(val, _values, result)
            val[1].each {|var| insert_bound_variable(var) }

        result = LocatedValue.new(value: val[1],
                                  location: val[0].location + val[2].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 600)
  def _reduce_152(val, _values, result)
            result = [val[0].value.to_sym]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 603)
  def _reduce_153(val, _values, result)
            result = val[0].push(val[2].value.to_sym)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 608)
  def _reduce_154(val, _values, result)
            location = val[1].location + val[3].location
        result = Members::Alias.new(
          new_name: val[2].value.to_sym,
          old_name: val[3].value.to_sym,
          kind: :instance,
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 619)
  def _reduce_155(val, _values, result)
            location = val[1].location + val[7].location
        result = Members::Alias.new(
          new_name: val[4].value.to_sym,
          old_name: val[7].value.to_sym,
          kind: :singleton,
          annotations: val[0],
          location: location,
          comment: leading_comment(val[0].first&.location || location)
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 632)
  def _reduce_156(val, _values, result)
            location = val[1].location + val[4].location
        result = Declarations::Alias.new(name: val[2].value,
                                         type: val[4],
                                         annotations: val[0],
                                         location: location,
                                         comment: leading_comment(val[0].first&.location || location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 642)
  def _reduce_157(val, _values, result)
            location = val[0].location + val[2].location
        result = Declarations::Constant.new(name: val[0].value,
                                            type: val[2],
                                            location: location,
                                            comment: leading_comment(location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 649)
  def _reduce_158(val, _values, result)
            location = (val[0] || val[1]).location + val[2].location
        name = TypeName.new(name: val[1].value, namespace: val[0]&.value || Namespace.empty)
        result = Declarations::Constant.new(name: name,
                                            type: val[2],
                                            location: location,
                                            comment: leading_comment(location))

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 659)
  def _reduce_159(val, _values, result)
            location = val[0].location + val[2].location
        result = Declarations::Global.new(name: val[0].value.to_sym,
                                          type: val[2],
                                          location: location,
                                          comment: leading_comment(location))

    result
  end
.,.,

# reduce 160 omitted

module_eval(<<'.,.,', 'parser.y', 669)
  def _reduce_161(val, _values, result)
            types = case l = val[0]
                when Types::Union
                  l.types + [val[2]]
                else
                  [l, val[2]]
                end

        result = Types::Union.new(types: types, location: val[0].location + val[2].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 679)
  def _reduce_162(val, _values, result)
            types = case l = val[0]
                when Types::Intersection
                  l.types + [val[2]]
                else
                  [l, val[2]]
                end

        result = Types::Intersection.new(types: types,
                                         location: val[0].location + val[2].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 692)
  def _reduce_163(val, _values, result)
            result = Types::Bases::Void.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 695)
  def _reduce_164(val, _values, result)
            RBS.logger.warn "`any` type is deprecated. Use `untyped` instead. (#{val[0].location.to_s})"
        result = Types::Bases::Any.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 699)
  def _reduce_165(val, _values, result)
            result = Types::Bases::Any.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 702)
  def _reduce_166(val, _values, result)
            result = Types::Bases::Bool.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 705)
  def _reduce_167(val, _values, result)
            result = Types::Bases::Nil.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 708)
  def _reduce_168(val, _values, result)
            result = Types::Bases::Top.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 711)
  def _reduce_169(val, _values, result)
            result = Types::Bases::Bottom.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 714)
  def _reduce_170(val, _values, result)
            result = Types::Bases::Self.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 717)
  def _reduce_171(val, _values, result)
            result = Types::Optional.new(type: Types::Bases::Self.new(location: val[0].location),
                                     location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 721)
  def _reduce_172(val, _values, result)
            result = Types::Bases::Instance.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 724)
  def _reduce_173(val, _values, result)
            result = Types::Bases::Class.new(location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 727)
  def _reduce_174(val, _values, result)
            result = Types::Literal.new(literal: true, location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 730)
  def _reduce_175(val, _values, result)
            result = Types::Literal.new(literal: false, location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 733)
  def _reduce_176(val, _values, result)
            result = Types::Literal.new(literal: val[0].value, location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 736)
  def _reduce_177(val, _values, result)
            result = Types::Literal.new(literal: val[0].value, location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 739)
  def _reduce_178(val, _values, result)
            result = Types::Literal.new(literal: val[0].value, location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 742)
  def _reduce_179(val, _values, result)
            name = val[0].value
        args = []
        location = val[0].location

        case
        when name.class?
          if is_bound_variable?(name.name)
            result = Types::Variable.new(name: name.name, location: location)
          else
            result = Types::ClassInstance.new(name: name, args: args, location: location)
          end
        when name.alias?
          result = Types::Alias.new(name: name, location: location)
        when name.interface?
          result = Types::Interface.new(name: name, args: args, location: location)
        end

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 760)
  def _reduce_180(val, _values, result)
            name = val[0].value
        args = val[2]
        location = val[0].location + val[3].location

        case
        when name.class?
          if is_bound_variable?(name.name)
            raise SemanticsError.new("#{name.name} is type variable and cannot be applied", subject: name, location: location)
          end
          result = Types::ClassInstance.new(name: name, args: args, location: location)
        when name.interface?
          result = Types::Interface.new(name: name, args: args, location: location)
        else
          raise SyntaxError.new(token_str: "kLBRACKET", error_value: val[1])
        end

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 777)
  def _reduce_181(val, _values, result)
            location = val[0].location + val[1].location
        result = Types::Tuple.new(types: [], location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 781)
  def _reduce_182(val, _values, result)
            location = val[0].location + val[2].location
        types = val[1]
        result = Types::Tuple.new(types: types, location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 786)
  def _reduce_183(val, _values, result)
            type = val[1].dup
        type.instance_eval do
          @location = val[0].location + val[2].location
        end
        result = type

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 793)
  def _reduce_184(val, _values, result)
            result = Types::ClassSingleton.new(name: val[2].value,
                                           location: val[0].location + val[3].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 797)
  def _reduce_185(val, _values, result)
            result = Types::Proc.new(type: val[1].value, location: val[0].location + val[1].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 800)
  def _reduce_186(val, _values, result)
            result = Types::Optional.new(type: val[0], location: val[0].location + val[1].location)

    result
  end
.,.,

# reduce 187 omitted

module_eval(<<'.,.,', 'parser.y', 806)
  def _reduce_188(val, _values, result)
            result = [val[0]]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 809)
  def _reduce_189(val, _values, result)
            result = val[0] + [val[2]]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 814)
  def _reduce_190(val, _values, result)
            result = Types::Record.new(
          fields: val[1],
          location: val[0].location + val[2].location
        )

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 822)
  def _reduce_191(val, _values, result)
            result = val[0]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 825)
  def _reduce_192(val, _values, result)
            result = val[0].merge!(val[2])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 830)
  def _reduce_193(val, _values, result)
            result = { val[0].value => val[2] }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 833)
  def _reduce_194(val, _values, result)
            result = { val[0].value => val[2] }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 836)
  def _reduce_195(val, _values, result)
            result = { val[0].value => val[2] }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 839)
  def _reduce_196(val, _values, result)
            result = { val[0].value => val[1] }

    result
  end
.,.,

# reduce 197 omitted

module_eval(<<'.,.,', 'parser.y', 845)
  def _reduce_198(val, _values, result)
            result = val[0]

    result
  end
.,.,

# reduce 199 omitted

# reduce 200 omitted

module_eval(<<'.,.,', 'parser.y', 852)
  def _reduce_201(val, _values, result)
            location = val[0].location + val[4].location
        type = Types::Function.new(
          required_positionals: val[1][0],
          optional_positionals: val[1][1],
          rest_positionals: val[1][2],
          trailing_positionals: val[1][3],
          required_keywords: val[1][4],
          optional_keywords: val[1][5],
          rest_keywords: val[1][6],
          return_type: val[4],
        )

        result = LocatedValue.new(value: type, location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 867)
  def _reduce_202(val, _values, result)
            location = val[0].location + val[1].location
        type = Types::Function.new(
          required_positionals: [],
          optional_positionals: [],
          rest_positionals: nil,
          trailing_positionals: [],
          required_keywords: {},
          optional_keywords: {},
          rest_keywords: nil,
          return_type: val[2]
        )

        result = LocatedValue.new(value: type, location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 884)
  def _reduce_203(val, _values, result)
            result = val[2]
        result[0].unshift(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 888)
  def _reduce_204(val, _values, result)
            result = empty_params_result
        result[0].unshift(val[0])

    result
  end
.,.,

# reduce 205 omitted

module_eval(<<'.,.,', 'parser.y', 895)
  def _reduce_206(val, _values, result)
            result = val[2]
        result[1].unshift(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 899)
  def _reduce_207(val, _values, result)
            result = empty_params_result
        result[1].unshift(val[0])

    result
  end
.,.,

# reduce 208 omitted

module_eval(<<'.,.,', 'parser.y', 906)
  def _reduce_209(val, _values, result)
            result = val[2]
        result[2] = val[0]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 910)
  def _reduce_210(val, _values, result)
            result = empty_params_result
        result[2] = val[0]

    result
  end
.,.,

# reduce 211 omitted

module_eval(<<'.,.,', 'parser.y', 917)
  def _reduce_212(val, _values, result)
            result = val[2]
        result[3].unshift(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 921)
  def _reduce_213(val, _values, result)
            result = empty_params_result
        result[3].unshift(val[0])

    result
  end
.,.,

# reduce 214 omitted

module_eval(<<'.,.,', 'parser.y', 928)
  def _reduce_215(val, _values, result)
            result = empty_params_result

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 931)
  def _reduce_216(val, _values, result)
            result = val[2]
        result[4].merge!(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 935)
  def _reduce_217(val, _values, result)
            result = empty_params_result
        result[4].merge!(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 939)
  def _reduce_218(val, _values, result)
            result = val[2]
        result[5].merge!(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 943)
  def _reduce_219(val, _values, result)
            result = empty_params_result
        result[5].merge!(val[0])

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 947)
  def _reduce_220(val, _values, result)
            result = empty_params_result
        result[6] = val[0]

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 953)
  def _reduce_221(val, _values, result)
            result = Types::Function::Param.new(type: val[0],
                                            name: val[1]&.value&.to_sym)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 959)
  def _reduce_222(val, _values, result)
            result = Types::Function::Param.new(type: val[1],
                                            name: val[2]&.value&.to_sym)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 965)
  def _reduce_223(val, _values, result)
            result = Types::Function::Param.new(type: val[1],
                                            name: val[2]&.value&.to_sym)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 971)
  def _reduce_224(val, _values, result)
            param = Types::Function::Param.new(type: val[1],
                                           name: val[2]&.value&.to_sym)
        result = { val[0].value => param }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 978)
  def _reduce_225(val, _values, result)
            param = Types::Function::Param.new(type: val[2],
                                           name: val[3]&.value&.to_sym)
        result = { val[1].value => param }

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 985)
  def _reduce_226(val, _values, result)
            result = Types::Function::Param.new(type: val[1],
                                            name: val[2]&.value&.to_sym)

    result
  end
.,.,

# reduce 227 omitted

# reduce 228 omitted

# reduce 229 omitted

# reduce 230 omitted

module_eval(<<'.,.,', 'parser.y', 994)
  def _reduce_231(val, _values, result)
            namespace = val[0]&.value || Namespace.empty
        name = val[1].value.to_sym
        type_name = TypeName.new(namespace: namespace, name: name)
        location = (loc0 = val[0]&.location) ? loc0 + val[1].location : val[1].location
        result = LocatedValue.new(value: type_name, location: location)

    result
  end
.,.,

# reduce 232 omitted

# reduce 233 omitted

# reduce 234 omitted

module_eval(<<'.,.,', 'parser.y', 1006)
  def _reduce_235(val, _values, result)
            namespace = val[0]&.value || Namespace.empty
        name = val[1].value.to_sym
        type_name = TypeName.new(namespace: namespace, name: name)
        location = (loc0 = val[0]&.location) ? loc0 + val[1].location : val[1].location
        result = LocatedValue.new(value: type_name, location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 1015)
  def _reduce_236(val, _values, result)
            namespace = val[0]&.value || Namespace.empty
        name = val[1].value.to_sym
        type_name = TypeName.new(namespace: namespace, name: name)
        location = (loc0 = val[0]&.location) ? loc0 + val[1].location : val[1].location
        result = LocatedValue.new(value: type_name, location: location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 1024)
  def _reduce_237(val, _values, result)
            result = nil

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 1027)
  def _reduce_238(val, _values, result)
            result = LocatedValue.new(value: Namespace.root, location: val[0].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 1030)
  def _reduce_239(val, _values, result)
            namespace = Namespace.parse(val[1].value).absolute!
        result = LocatedValue.new(value: namespace, location: val[0].location + val[1].location)

    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 1034)
  def _reduce_240(val, _values, result)
            namespace = Namespace.parse(val[0].value)
        result = LocatedValue.new(value: namespace, location: val[0].location)

    result
  end
.,.,

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

  end   # class Parser
end   # module RBS