mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
833 lines
19 KiB
Text
833 lines
19 KiB
Text
#
|
|
# DO NOT MODIFY!!!!
|
|
# This file is automatically generated by Racc 1.4.16
|
|
# from Racc grammar file "".
|
|
#
|
|
|
|
require 'racc/parser.rb'
|
|
module Machete
|
|
class Parser < Racc::Parser
|
|
|
|
module_eval(<<'...end machete.y/module_eval...', 'machete.y', 175)
|
|
|
|
include Matchers
|
|
|
|
class SyntaxError < StandardError; end
|
|
|
|
def parse(input)
|
|
@input = input
|
|
@pos = 0
|
|
|
|
do_parse
|
|
end
|
|
|
|
private
|
|
|
|
def integer_value(value)
|
|
if value =~ /^0[bB]/
|
|
value[2..-1].to_i(2)
|
|
elsif value =~ /^0[oO]/
|
|
value[2..-1].to_i(8)
|
|
elsif value =~ /^0[dD]/
|
|
value[2..-1].to_i(10)
|
|
elsif value =~ /^0[xX]/
|
|
value[2..-1].to_i(16)
|
|
elsif value =~ /^0/
|
|
value.to_i(8)
|
|
else
|
|
value.to_i
|
|
end
|
|
end
|
|
|
|
def symbol_value(value)
|
|
value[1..-1].to_sym
|
|
end
|
|
|
|
def string_value(value)
|
|
quote = value[0..0]
|
|
if quote == "'"
|
|
value[1..-2].gsub("\\\\", "\\").gsub("\\'", "'")
|
|
elsif quote == '"'
|
|
value[1..-2].
|
|
gsub("\\\\", "\\").
|
|
gsub('\\"', '"').
|
|
gsub("\\n", "\n").
|
|
gsub("\\t", "\t").
|
|
gsub("\\r", "\r").
|
|
gsub("\\f", "\f").
|
|
gsub("\\v", "\v").
|
|
gsub("\\a", "\a").
|
|
gsub("\\e", "\e").
|
|
gsub("\\b", "\b").
|
|
gsub("\\s", "\s").
|
|
gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }.
|
|
gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr }
|
|
else
|
|
raise "Unknown quote: #{quote.inspect}."
|
|
end
|
|
end
|
|
|
|
REGEXP_OPTIONS = {
|
|
'i' => Regexp::IGNORECASE,
|
|
'm' => Regexp::MULTILINE,
|
|
'x' => Regexp::EXTENDED
|
|
}
|
|
|
|
def regexp_value(value)
|
|
/\A\/(.*)\/([imx]*)\z/ =~ value
|
|
pattern, options = $1, $2
|
|
|
|
Regexp.new(pattern, options.chars.map { |ch| REGEXP_OPTIONS[ch] }.inject(:|))
|
|
end
|
|
|
|
# "^" needs to be here because if it were among operators recognized by
|
|
# METHOD_NAME, "^=" would be recognized as two tokens.
|
|
SIMPLE_TOKENS = [
|
|
"|",
|
|
"<",
|
|
">",
|
|
",",
|
|
"=",
|
|
"^=",
|
|
"^",
|
|
"$=",
|
|
"[",
|
|
"]",
|
|
"*=",
|
|
"*",
|
|
"+",
|
|
"?",
|
|
"{",
|
|
"}"
|
|
]
|
|
|
|
COMPLEX_TOKENS = [
|
|
[:NIL, /^nil/],
|
|
[:TRUE, /^true/],
|
|
[:FALSE, /^false/],
|
|
# INTEGER needs to be before METHOD_NAME, otherwise e.g. "+1" would be
|
|
# recognized as two tokens.
|
|
[
|
|
:INTEGER,
|
|
/^
|
|
[+-]? # sign
|
|
(
|
|
0[bB][01]+(_[01]+)* # binary (prefixed)
|
|
|
|
|
0[oO][0-7]+(_[0-7]+)* # octal (prefixed)
|
|
|
|
|
0[dD]\d+(_\d+)* # decimal (prefixed)
|
|
|
|
|
0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)* # hexadecimal (prefixed)
|
|
|
|
|
0[0-7]*(_[0-7]+)* # octal (unprefixed)
|
|
|
|
|
[1-9]\d*(_\d+)* # decimal (unprefixed)
|
|
)
|
|
/x
|
|
],
|
|
[
|
|
:SYMBOL,
|
|
/^
|
|
:
|
|
(
|
|
# class name
|
|
[A-Z][a-zA-Z0-9_]*
|
|
|
|
|
# regular method name
|
|
[a-z_][a-zA-Z0-9_]*[?!=]?
|
|
|
|
|
# instance variable name
|
|
@[a-zA-Z_][a-zA-Z0-9_]*
|
|
|
|
|
# class variable name
|
|
@@[a-zA-Z_][a-zA-Z0-9_]*
|
|
|
|
|
# operator (sorted by length, then alphabetically)
|
|
(<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&*+\-\/<>^`|~])
|
|
)
|
|
/x
|
|
],
|
|
[
|
|
:STRING,
|
|
/^
|
|
(
|
|
' # sinqle-quoted string
|
|
(
|
|
\\[\\'] # escape
|
|
|
|
|
[^'] # regular character
|
|
)*
|
|
'
|
|
|
|
|
" # double-quoted string
|
|
(
|
|
\\ # escape
|
|
(
|
|
[\\"ntrfvaebs] # one-character escape
|
|
|
|
|
[0-7]{1,3} # octal number escape
|
|
|
|
|
x[0-9a-fA-F]{1,2} # hexadecimal number escape
|
|
)
|
|
|
|
|
[^"] # regular character
|
|
)*
|
|
"
|
|
)
|
|
/x
|
|
],
|
|
[
|
|
:REGEXP,
|
|
/^
|
|
\/
|
|
(
|
|
\\ # escape
|
|
(
|
|
[\\\/ntrfvaebs\(\)\[\]\{\}\-\.\?\*\+\|\^\$] # one-character escape
|
|
|
|
|
[0-7]{2,3} # octal number escape
|
|
|
|
|
x[0-9a-fA-F]{1,2} # hexadecimal number escape
|
|
)
|
|
|
|
|
[^\/] # regular character
|
|
)*
|
|
\/
|
|
[imx]*
|
|
/x
|
|
],
|
|
# ANY, EVEN and ODD need to be before METHOD_NAME, otherwise they would be
|
|
# recognized as method names.
|
|
[:ANY, /^any/],
|
|
[:EVEN, /^even/],
|
|
[:ODD, /^odd/],
|
|
# We exclude "*", "+", "<", ">", "^" and "|" from method names since they are
|
|
# lexed as simple tokens. This is because they have also other meanings in
|
|
# Machette patterns beside Ruby method names.
|
|
[
|
|
:METHOD_NAME,
|
|
/^
|
|
(
|
|
# regular name
|
|
[a-z_][a-zA-Z0-9_]*[?!=]?
|
|
|
|
|
# operator (sorted by length, then alphabetically)
|
|
(<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&\-\/`~])
|
|
)
|
|
/x
|
|
],
|
|
[:CLASS_NAME, /^[A-Z][a-zA-Z0-9_]*/]
|
|
]
|
|
|
|
def next_token
|
|
skip_whitespace
|
|
|
|
return false if remaining_input.empty?
|
|
|
|
# Complex tokens need to be before simple tokens, otherwise e.g. "<<" would be
|
|
# recognized as two tokens.
|
|
|
|
COMPLEX_TOKENS.each do |type, regexp|
|
|
if remaining_input =~ regexp
|
|
@pos += $&.length
|
|
return [type, $&]
|
|
end
|
|
end
|
|
|
|
SIMPLE_TOKENS.each do |token|
|
|
if remaining_input[0...token.length] == token
|
|
@pos += token.length
|
|
return [token, token]
|
|
end
|
|
end
|
|
|
|
raise SyntaxError, "Unexpected character: #{remaining_input[0..0].inspect}."
|
|
end
|
|
|
|
def skip_whitespace
|
|
if remaining_input =~ /\A^[ \t\r\n]+/
|
|
@pos += $&.length
|
|
end
|
|
end
|
|
|
|
def remaining_input
|
|
@input[@pos..-1]
|
|
end
|
|
|
|
def on_error(error_token_id, error_value, value_stack)
|
|
raise SyntaxError, "Unexpected token: #{error_value.inspect}."
|
|
end
|
|
...end machete.y/module_eval...
|
|
##### State transition tables begin ###
|
|
|
|
racc_action_table = [
|
|
75, 24, 9, 10, 11, 12, 13, 14, 15, 16,
|
|
66, 67, 68, 7, 48, 9, 10, 11, 12, 13,
|
|
14, 15, 16, 17, 74, 8, 7, 76, 9, 10,
|
|
11, 12, 13, 14, 15, 16, 71, 18, 8, 7,
|
|
72, 9, 10, 11, 12, 13, 14, 15, 16, 73,
|
|
70, 8, 7, 19, 9, 10, 11, 12, 13, 14,
|
|
15, 16, 69, 18, 8, 7, 30, 31, 32, 51,
|
|
52, 53, 54, 33, 34, 35, 29, 8, 41, 38,
|
|
39, 77, 30, 31, 32, 47, 36, 37, 40, 33,
|
|
34, 35, 29, nil, 41, 38, 39, 18, 49, 50,
|
|
62, 63, 36, 37, 40, 43, 44, 55, 64, 65,
|
|
45, 46, 57, 58, nil, nil, nil, nil, nil, 56 ]
|
|
|
|
racc_action_check = [
|
|
70, 17, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
54, 54, 54, 0, 22, 8, 8, 8, 8, 8,
|
|
8, 8, 8, 1, 70, 0, 8, 71, 18, 18,
|
|
18, 18, 18, 18, 18, 18, 56, 1, 8, 18,
|
|
57, 48, 48, 48, 48, 48, 48, 48, 48, 58,
|
|
55, 18, 48, 7, 51, 51, 51, 51, 51, 51,
|
|
51, 51, 55, 61, 48, 51, 19, 19, 19, 28,
|
|
28, 28, 28, 19, 19, 19, 19, 51, 19, 19,
|
|
19, 75, 50, 50, 50, 21, 19, 19, 19, 50,
|
|
50, 50, 50, nil, 50, 50, 50, 20, 26, 26,
|
|
52, 52, 50, 50, 50, 20, 20, 46, 53, 53,
|
|
20, 20, 46, 46, nil, nil, nil, nil, nil, 46 ]
|
|
|
|
racc_action_pointer = [
|
|
0, 23, nil, nil, nil, nil, nil, 38, 13, nil,
|
|
nil, nil, nil, nil, nil, nil, nil, 1, 26, 64,
|
|
83, 59, -3, nil, nil, nil, 82, nil, 51, nil,
|
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, nil, nil, nil, nil, nil, 102, nil, 39, nil,
|
|
80, 52, 94, 102, 4, 33, 31, 11, 20, nil,
|
|
nil, 49, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
-5, -2, nil, nil, nil, 52, nil, nil ]
|
|
|
|
racc_action_default = [
|
|
-56, -56, -1, -3, -4, -5, -6, -7, -33, -48,
|
|
-49, -50, -51, -52, -53, -54, -55, -56, -56, -56,
|
|
-37, -56, -34, -35, 78, -2, -56, -9, -56, -19,
|
|
-20, -21, -22, -23, -24, -25, -26, -27, -28, -29,
|
|
-30, -31, -38, -39, -40, -41, -56, -32, -56, -8,
|
|
-56, -56, -56, -56, -56, -56, -56, -56, -56, -36,
|
|
-10, -11, -12, -15, -13, -16, -14, -17, -18, -42,
|
|
-56, -56, -46, -47, -43, -56, -44, -45 ]
|
|
|
|
racc_goto_table = [
|
|
1, 23, 27, 21, 22, 42, 25, 26, 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, 60, nil, nil, nil, nil, nil, nil,
|
|
nil, 59, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, 61 ]
|
|
|
|
racc_goto_check = [
|
|
1, 12, 8, 10, 11, 13, 2, 7, 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, 8, nil, nil, nil, nil, nil, nil,
|
|
nil, 12, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
nil, 1 ]
|
|
|
|
racc_goto_pointer = [
|
|
nil, 0, -12, nil, nil, nil, nil, -12, -17, nil,
|
|
-5, -4, -7, -15 ]
|
|
|
|
racc_goto_default = [
|
|
nil, 20, 2, 3, 4, 5, 6, nil, nil, 28,
|
|
nil, nil, nil, nil ]
|
|
|
|
racc_reduce_table = [
|
|
0, 0, :racc_error,
|
|
1, 31, :_reduce_none,
|
|
3, 31, :_reduce_2,
|
|
1, 32, :_reduce_none,
|
|
1, 32, :_reduce_none,
|
|
1, 32, :_reduce_none,
|
|
1, 32, :_reduce_none,
|
|
1, 33, :_reduce_7,
|
|
4, 33, :_reduce_8,
|
|
1, 37, :_reduce_none,
|
|
3, 37, :_reduce_10,
|
|
3, 38, :_reduce_11,
|
|
3, 38, :_reduce_12,
|
|
3, 38, :_reduce_13,
|
|
3, 38, :_reduce_14,
|
|
3, 38, :_reduce_15,
|
|
3, 38, :_reduce_16,
|
|
3, 38, :_reduce_17,
|
|
3, 38, :_reduce_18,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
1, 39, :_reduce_none,
|
|
3, 34, :_reduce_32,
|
|
0, 40, :_reduce_33,
|
|
1, 40, :_reduce_none,
|
|
1, 41, :_reduce_35,
|
|
3, 41, :_reduce_36,
|
|
1, 42, :_reduce_none,
|
|
2, 42, :_reduce_38,
|
|
1, 43, :_reduce_39,
|
|
1, 43, :_reduce_40,
|
|
1, 43, :_reduce_41,
|
|
3, 43, :_reduce_42,
|
|
4, 43, :_reduce_43,
|
|
4, 43, :_reduce_44,
|
|
5, 43, :_reduce_45,
|
|
3, 43, :_reduce_46,
|
|
3, 43, :_reduce_47,
|
|
1, 35, :_reduce_48,
|
|
1, 35, :_reduce_49,
|
|
1, 35, :_reduce_50,
|
|
1, 35, :_reduce_51,
|
|
1, 35, :_reduce_52,
|
|
1, 35, :_reduce_53,
|
|
1, 35, :_reduce_54,
|
|
1, 36, :_reduce_55 ]
|
|
|
|
racc_reduce_n = 56
|
|
|
|
racc_shift_n = 78
|
|
|
|
racc_token_table = {
|
|
false => 0,
|
|
:error => 1,
|
|
:NIL => 2,
|
|
:TRUE => 3,
|
|
:FALSE => 4,
|
|
:INTEGER => 5,
|
|
:SYMBOL => 6,
|
|
:STRING => 7,
|
|
:REGEXP => 8,
|
|
:ANY => 9,
|
|
:EVEN => 10,
|
|
:ODD => 11,
|
|
:METHOD_NAME => 12,
|
|
:CLASS_NAME => 13,
|
|
"|" => 14,
|
|
"<" => 15,
|
|
">" => 16,
|
|
"," => 17,
|
|
"=" => 18,
|
|
"^=" => 19,
|
|
"$=" => 20,
|
|
"*=" => 21,
|
|
"*" => 22,
|
|
"+" => 23,
|
|
"^" => 24,
|
|
"[" => 25,
|
|
"]" => 26,
|
|
"?" => 27,
|
|
"{" => 28,
|
|
"}" => 29 }
|
|
|
|
racc_nt_base = 30
|
|
|
|
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",
|
|
"NIL",
|
|
"TRUE",
|
|
"FALSE",
|
|
"INTEGER",
|
|
"SYMBOL",
|
|
"STRING",
|
|
"REGEXP",
|
|
"ANY",
|
|
"EVEN",
|
|
"ODD",
|
|
"METHOD_NAME",
|
|
"CLASS_NAME",
|
|
"\"|\"",
|
|
"\"<\"",
|
|
"\">\"",
|
|
"\",\"",
|
|
"\"=\"",
|
|
"\"^=\"",
|
|
"\"$=\"",
|
|
"\"*=\"",
|
|
"\"*\"",
|
|
"\"+\"",
|
|
"\"^\"",
|
|
"\"[\"",
|
|
"\"]\"",
|
|
"\"?\"",
|
|
"\"{\"",
|
|
"\"}\"",
|
|
"$start",
|
|
"expression",
|
|
"primary",
|
|
"node",
|
|
"array",
|
|
"literal",
|
|
"any",
|
|
"attrs",
|
|
"attr",
|
|
"method_name",
|
|
"items_opt",
|
|
"items",
|
|
"item",
|
|
"quantifier" ]
|
|
|
|
Racc_debug_parser = false
|
|
|
|
##### State transition tables end #####
|
|
|
|
# reduce 0 omitted
|
|
|
|
# reduce 1 omitted
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 44)
|
|
def _reduce_2(val, _values, result)
|
|
result = if val[0].is_a?(ChoiceMatcher)
|
|
ChoiceMatcher.new(val[0].alternatives << val[2])
|
|
else
|
|
ChoiceMatcher.new([val[0], val[2]])
|
|
end
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
# reduce 3 omitted
|
|
|
|
# reduce 4 omitted
|
|
|
|
# reduce 5 omitted
|
|
|
|
# reduce 6 omitted
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 57)
|
|
def _reduce_7(val, _values, result)
|
|
result = NodeMatcher.new(val[0].to_sym)
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 60)
|
|
def _reduce_8(val, _values, result)
|
|
result = NodeMatcher.new(val[0].to_sym, val[2])
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
# reduce 9 omitted
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 64)
|
|
def _reduce_10(val, _values, result)
|
|
result = val[0].merge(val[2])
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 66)
|
|
def _reduce_11(val, _values, result)
|
|
result = { val[0].to_sym => val[2] }
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 68)
|
|
def _reduce_12(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => SymbolRegexpMatcher.new(
|
|
Regexp.new("^" + Regexp.escape(symbol_value(val[2]).to_s))
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 75)
|
|
def _reduce_13(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => SymbolRegexpMatcher.new(
|
|
Regexp.new(Regexp.escape(symbol_value(val[2]).to_s) + "$")
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 82)
|
|
def _reduce_14(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => SymbolRegexpMatcher.new(
|
|
Regexp.new(Regexp.escape(symbol_value(val[2]).to_s))
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 89)
|
|
def _reduce_15(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => StringRegexpMatcher.new(
|
|
Regexp.new("^" + Regexp.escape(string_value(val[2])))
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 96)
|
|
def _reduce_16(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => StringRegexpMatcher.new(
|
|
Regexp.new(Regexp.escape(string_value(val[2])) + "$")
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 103)
|
|
def _reduce_17(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => StringRegexpMatcher.new(
|
|
Regexp.new(Regexp.escape(string_value(val[2])))
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 110)
|
|
def _reduce_18(val, _values, result)
|
|
result = {
|
|
val[0].to_sym => IndifferentRegexpMatcher.new(
|
|
Regexp.new(regexp_value(val[2]))
|
|
)
|
|
}
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
# reduce 19 omitted
|
|
|
|
# reduce 20 omitted
|
|
|
|
# reduce 21 omitted
|
|
|
|
# reduce 22 omitted
|
|
|
|
# reduce 23 omitted
|
|
|
|
# reduce 24 omitted
|
|
|
|
# reduce 25 omitted
|
|
|
|
# reduce 26 omitted
|
|
|
|
# reduce 27 omitted
|
|
|
|
# reduce 28 omitted
|
|
|
|
# reduce 29 omitted
|
|
|
|
# reduce 30 omitted
|
|
|
|
# reduce 31 omitted
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 134)
|
|
def _reduce_32(val, _values, result)
|
|
result = ArrayMatcher.new(val[1])
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 136)
|
|
def _reduce_33(val, _values, result)
|
|
result = []
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
# reduce 34 omitted
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 139)
|
|
def _reduce_35(val, _values, result)
|
|
result = [val[0]]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 140)
|
|
def _reduce_36(val, _values, result)
|
|
result = val[0] << val[2]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
# reduce 37 omitted
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 143)
|
|
def _reduce_38(val, _values, result)
|
|
result = Quantifier.new(val[0], *val[1])
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 145)
|
|
def _reduce_39(val, _values, result)
|
|
result = [0, nil, 1]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 146)
|
|
def _reduce_40(val, _values, result)
|
|
result = [1, nil, 1]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 147)
|
|
def _reduce_41(val, _values, result)
|
|
result = [0, 1, 1]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 149)
|
|
def _reduce_42(val, _values, result)
|
|
result = [integer_value(val[1]), integer_value(val[1]), 1]
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 152)
|
|
def _reduce_43(val, _values, result)
|
|
result = [integer_value(val[1]), nil, 1]
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 155)
|
|
def _reduce_44(val, _values, result)
|
|
result = [0, integer_value(val[2]), 1]
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 158)
|
|
def _reduce_45(val, _values, result)
|
|
result = [integer_value(val[1]), integer_value(val[3]), 1]
|
|
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 160)
|
|
def _reduce_46(val, _values, result)
|
|
result = [0, nil, 2]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 161)
|
|
def _reduce_47(val, _values, result)
|
|
result = [1, nil, 2]
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 163)
|
|
def _reduce_48(val, _values, result)
|
|
result = LiteralMatcher.new(nil)
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 164)
|
|
def _reduce_49(val, _values, result)
|
|
result = LiteralMatcher.new(true)
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 165)
|
|
def _reduce_50(val, _values, result)
|
|
result = LiteralMatcher.new(false)
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 166)
|
|
def _reduce_51(val, _values, result)
|
|
result = LiteralMatcher.new(integer_value(val[0]))
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 167)
|
|
def _reduce_52(val, _values, result)
|
|
result = LiteralMatcher.new(symbol_value(val[0]))
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 168)
|
|
def _reduce_53(val, _values, result)
|
|
result = LiteralMatcher.new(string_value(val[0]))
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 169)
|
|
def _reduce_54(val, _values, result)
|
|
result = LiteralMatcher.new(regexp_value(val[0]))
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
module_eval(<<'.,.,', 'machete.y', 171)
|
|
def _reduce_55(val, _values, result)
|
|
result = AnyMatcher.new
|
|
result
|
|
end
|
|
.,.,
|
|
|
|
def _reduce_none(val, _values, result)
|
|
val[0]
|
|
end
|
|
|
|
end # class Parser
|
|
end # module Machete
|