mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	This changeset includes a sample racc file from [this auto-generated
file](44e9bf0440/lib/rjson/parser.rb)
(MIT-licensed).
[Racc](https://github.com/tenderlove/racc) Racc is an LALR(1) parser
generator. It is written in Ruby itself, and generates ruby programs.
		
	
		
			
				
	
	
		
			268 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			268 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#
 | 
						|
# DO NOT MODIFY!!!!
 | 
						|
# This file is automatically generated by Racc 1.4.7
 | 
						|
# from Racc grammer file "".
 | 
						|
#
 | 
						|
 | 
						|
require 'racc/parser.rb'
 | 
						|
module RJSON
 | 
						|
  class Parser < Racc::Parser
 | 
						|
 | 
						|
 | 
						|
  require 'rjson/handler'
 | 
						|
 | 
						|
  attr_reader :handler
 | 
						|
 | 
						|
  def initialize tokenizer, handler = Handler.new
 | 
						|
    @tokenizer = tokenizer
 | 
						|
    @handler   = handler
 | 
						|
    super()
 | 
						|
  end
 | 
						|
 | 
						|
  def next_token
 | 
						|
    @tokenizer.next_token
 | 
						|
  end
 | 
						|
 | 
						|
  def parse
 | 
						|
    do_parse
 | 
						|
    handler
 | 
						|
  end
 | 
						|
##### State transition tables begin ###
 | 
						|
 | 
						|
racc_action_table = [
 | 
						|
     9,    33,     9,    11,    13,    16,    19,    22,     9,     7,
 | 
						|
    23,     1,     9,    11,    13,    16,    19,    29,    30,     7,
 | 
						|
    21,     1,     9,    11,    13,    16,    19,    31,   nil,     7,
 | 
						|
    21,     1,    23,     7,   nil,     1 ]
 | 
						|
 | 
						|
racc_action_check = [
 | 
						|
     6,    27,    33,    33,    33,    33,    33,     3,    31,    33,
 | 
						|
     6,    33,    29,    29,    29,    29,    29,    12,    22,    29,
 | 
						|
    12,    29,     2,     2,     2,     2,     2,    25,   nil,     2,
 | 
						|
     2,     2,    25,     0,   nil,     0 ]
 | 
						|
 | 
						|
racc_action_pointer = [
 | 
						|
    24,   nil,    20,     7,   nil,   nil,    -2,   nil,   nil,   nil,
 | 
						|
   nil,   nil,    10,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
 | 
						|
   nil,   nil,    18,   nil,   nil,    20,   nil,    -7,   nil,    10,
 | 
						|
   nil,     6,   nil,     0,   nil,   nil,   nil ]
 | 
						|
 | 
						|
racc_action_default = [
 | 
						|
   -27,   -12,   -21,   -27,    -1,    -2,   -27,   -10,   -15,   -26,
 | 
						|
    -8,   -22,   -27,   -23,   -17,   -16,   -24,   -20,   -18,   -25,
 | 
						|
   -19,   -11,   -27,   -13,    -3,   -27,    -6,   -27,    -9,   -21,
 | 
						|
    37,   -27,    -4,   -21,   -14,    -5,    -7 ]
 | 
						|
 | 
						|
racc_goto_table = [
 | 
						|
     8,    26,    24,    27,    10,     3,    25,     5,     4,    12,
 | 
						|
   nil,   nil,   nil,   nil,    28,   nil,   nil,   nil,   nil,   nil,
 | 
						|
   nil,    32,   nil,   nil,   nil,   nil,    35,    34,    27,   nil,
 | 
						|
   nil,    36 ]
 | 
						|
 | 
						|
racc_goto_check = [
 | 
						|
     9,     7,     5,     8,    11,     1,     6,     3,     2,    12,
 | 
						|
   nil,   nil,   nil,   nil,    11,   nil,   nil,   nil,   nil,   nil,
 | 
						|
   nil,     5,   nil,   nil,   nil,   nil,     7,     9,     8,   nil,
 | 
						|
   nil,     9 ]
 | 
						|
 | 
						|
racc_goto_pointer = [
 | 
						|
   nil,     5,     8,     7,   nil,    -4,     0,    -5,    -3,    -2,
 | 
						|
   nil,     2,     7,   nil,   nil ]
 | 
						|
 | 
						|
racc_goto_default = [
 | 
						|
   nil,   nil,    14,    18,     6,   nil,   nil,   nil,    20,   nil,
 | 
						|
     2,   nil,   nil,    15,    17 ]
 | 
						|
 | 
						|
racc_reduce_table = [
 | 
						|
  0, 0, :racc_error,
 | 
						|
  1, 14, :_reduce_none,
 | 
						|
  1, 14, :_reduce_none,
 | 
						|
  2, 15, :_reduce_none,
 | 
						|
  3, 15, :_reduce_none,
 | 
						|
  3, 19, :_reduce_none,
 | 
						|
  1, 19, :_reduce_none,
 | 
						|
  3, 20, :_reduce_none,
 | 
						|
  2, 16, :_reduce_none,
 | 
						|
  3, 16, :_reduce_none,
 | 
						|
  1, 23, :_reduce_10,
 | 
						|
  1, 24, :_reduce_11,
 | 
						|
  1, 17, :_reduce_12,
 | 
						|
  1, 18, :_reduce_13,
 | 
						|
  3, 25, :_reduce_none,
 | 
						|
  1, 25, :_reduce_none,
 | 
						|
  1, 22, :_reduce_none,
 | 
						|
  1, 22, :_reduce_none,
 | 
						|
  1, 22, :_reduce_none,
 | 
						|
  1, 26, :_reduce_none,
 | 
						|
  1, 26, :_reduce_20,
 | 
						|
  0, 27, :_reduce_none,
 | 
						|
  1, 27, :_reduce_22,
 | 
						|
  1, 27, :_reduce_23,
 | 
						|
  1, 27, :_reduce_24,
 | 
						|
  1, 27, :_reduce_25,
 | 
						|
  1, 21, :_reduce_26 ]
 | 
						|
 | 
						|
racc_reduce_n = 27
 | 
						|
 | 
						|
racc_shift_n = 37
 | 
						|
 | 
						|
racc_token_table = {
 | 
						|
  false => 0,
 | 
						|
  :error => 1,
 | 
						|
  :STRING => 2,
 | 
						|
  :NUMBER => 3,
 | 
						|
  :TRUE => 4,
 | 
						|
  :FALSE => 5,
 | 
						|
  :NULL => 6,
 | 
						|
  "," => 7,
 | 
						|
  ":" => 8,
 | 
						|
  "[" => 9,
 | 
						|
  "]" => 10,
 | 
						|
  "{" => 11,
 | 
						|
  "}" => 12 }
 | 
						|
 | 
						|
racc_nt_base = 13
 | 
						|
 | 
						|
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",
 | 
						|
  "STRING",
 | 
						|
  "NUMBER",
 | 
						|
  "TRUE",
 | 
						|
  "FALSE",
 | 
						|
  "NULL",
 | 
						|
  "\",\"",
 | 
						|
  "\":\"",
 | 
						|
  "\"[\"",
 | 
						|
  "\"]\"",
 | 
						|
  "\"{\"",
 | 
						|
  "\"}\"",
 | 
						|
  "$start",
 | 
						|
  "document",
 | 
						|
  "object",
 | 
						|
  "array",
 | 
						|
  "start_object",
 | 
						|
  "end_object",
 | 
						|
  "pairs",
 | 
						|
  "pair",
 | 
						|
  "string",
 | 
						|
  "value",
 | 
						|
  "start_array",
 | 
						|
  "end_array",
 | 
						|
  "values",
 | 
						|
  "scalar",
 | 
						|
  "literal" ]
 | 
						|
 | 
						|
Racc_debug_parser = false
 | 
						|
 | 
						|
##### State transition tables end #####
 | 
						|
 | 
						|
# reduce 0 omitted
 | 
						|
 | 
						|
# reduce 1 omitted
 | 
						|
 | 
						|
# reduce 2 omitted
 | 
						|
 | 
						|
# reduce 3 omitted
 | 
						|
 | 
						|
# reduce 4 omitted
 | 
						|
 | 
						|
# reduce 5 omitted
 | 
						|
 | 
						|
# reduce 6 omitted
 | 
						|
 | 
						|
# reduce 7 omitted
 | 
						|
 | 
						|
# reduce 8 omitted
 | 
						|
 | 
						|
# reduce 9 omitted
 | 
						|
 | 
						|
def _reduce_10(val, _values, result)
 | 
						|
 @handler.start_array  
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_11(val, _values, result)
 | 
						|
 @handler.end_array    
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_12(val, _values, result)
 | 
						|
 @handler.start_object 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_13(val, _values, result)
 | 
						|
 @handler.end_object   
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
# reduce 14 omitted
 | 
						|
 | 
						|
# reduce 15 omitted
 | 
						|
 | 
						|
# reduce 16 omitted
 | 
						|
 | 
						|
# reduce 17 omitted
 | 
						|
 | 
						|
# reduce 18 omitted
 | 
						|
 | 
						|
# reduce 19 omitted
 | 
						|
 | 
						|
def _reduce_20(val, _values, result)
 | 
						|
 @handler.scalar val[0] 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
# reduce 21 omitted
 | 
						|
 | 
						|
def _reduce_22(val, _values, result)
 | 
						|
 n = val[0]; result = n.count('.') > 0 ? n.to_f : n.to_i 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_23(val, _values, result)
 | 
						|
 result = true 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_24(val, _values, result)
 | 
						|
 result = false 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_25(val, _values, result)
 | 
						|
 result = nil 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_26(val, _values, result)
 | 
						|
 @handler.scalar val[0].gsub(/^"|"$/, '') 
 | 
						|
    result
 | 
						|
end
 | 
						|
 | 
						|
def _reduce_none(val, _values, result)
 | 
						|
  val[0]
 | 
						|
end
 | 
						|
 | 
						|
  end   # class Parser
 | 
						|
  end   # module RJSON
 |