cel 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +23 -1
- data/lib/cel/ast/elements/protobuf.rb +411 -66
- data/lib/cel/ast/elements.rb +340 -103
- data/lib/cel/ast/types.rb +151 -15
- data/lib/cel/checker.rb +133 -30
- data/lib/cel/context.rb +55 -6
- data/lib/cel/encoder.rb +31 -13
- data/lib/cel/environment.rb +58 -13
- data/lib/cel/errors.rb +19 -1
- data/lib/cel/macro.rb +91 -26
- data/lib/cel/parser.rb +430 -396
- data/lib/cel/program.rb +255 -48
- data/lib/cel/version.rb +1 -1
- data/lib/cel.rb +232 -1
- metadata +18 -8
data/lib/cel/parser.rb
CHANGED
@@ -1,20 +1,17 @@
|
|
1
1
|
#
|
2
2
|
# DO NOT MODIFY!!!!
|
3
|
-
# This file is automatically generated by Racc 1.
|
4
|
-
# from Racc grammar file "".
|
3
|
+
# This file is automatically generated by Racc 1.8.1
|
4
|
+
# from Racc grammar file "parser.ry".
|
5
5
|
#
|
6
6
|
|
7
7
|
require 'racc/parser.rb'
|
8
8
|
|
9
9
|
require 'strscan'
|
10
10
|
require 'bigdecimal'
|
11
|
-
require 'cel/ast/elements'
|
12
11
|
module Cel
|
13
12
|
class Parser < Racc::Parser
|
14
13
|
|
15
|
-
module_eval(<<'...end parser.ry/module_eval...', 'parser.ry',
|
16
|
-
|
17
|
-
|
14
|
+
module_eval(<<'...end parser.ry/module_eval...', 'parser.ry', 96)
|
18
15
|
|
19
16
|
OPERATORS = if RUBY_VERSION < "2.7.0"
|
20
17
|
{
|
@@ -37,6 +34,52 @@ end.freeze
|
|
37
34
|
|
38
35
|
OPERATORS_RE = Regexp.union(*OPERATORS.keys)
|
39
36
|
|
37
|
+
BACKSLASH = "\\\\" # Must be literally two backslashes for proper interpolation
|
38
|
+
DIGIT = "[0-9]"
|
39
|
+
EXPONENT = "(?:[eE][+-]?#{DIGIT}+)"
|
40
|
+
HEXDIGIT = "[0-9a-fA-F]"
|
41
|
+
RAW = "(?<raw>[rR])"
|
42
|
+
|
43
|
+
ESC_CHAR_SEQ = "#{BACKSLASH}[abfnrtv\"'#{BACKSLASH}?`]"
|
44
|
+
ESC_OCT_SEQ = "#{BACKSLASH}[0-3][0-7]{2}"
|
45
|
+
ESC_BYTE_SEQ = "#{BACKSLASH}[xX]#{HEXDIGIT}{2}"
|
46
|
+
ESC_UNI_SEQ = "#{BACKSLASH}u#{HEXDIGIT}{4}|#{BACKSLASH}U#{HEXDIGIT}{8}"
|
47
|
+
ESC_SEQ = "#{ESC_CHAR_SEQ}|#{ESC_BYTE_SEQ}|#{ESC_UNI_SEQ}|#{ESC_OCT_SEQ}"
|
48
|
+
|
49
|
+
WHITESPACE_REGEX = /[ \t\r\n\u000C]+/
|
50
|
+
COMMENT_REGEX = %r{//[^\n]*}
|
51
|
+
|
52
|
+
NUM_FLOAT_REGEX = Regexp.union(
|
53
|
+
/#{DIGIT}+\.#{DIGIT}+#{EXPONENT}?/,
|
54
|
+
/#{DIGIT}+#{EXPONENT}/,
|
55
|
+
/\.#{DIGIT}+#{EXPONENT}?/
|
56
|
+
)
|
57
|
+
|
58
|
+
NUM_INT_REGEX = Regexp.union(
|
59
|
+
/0x(?<hex>#{HEXDIGIT}+)/,
|
60
|
+
/(?<dec>#{DIGIT}+)/
|
61
|
+
)
|
62
|
+
|
63
|
+
NUM_UINT_REGEX = Regexp.union(
|
64
|
+
/0x(?<hex>#{HEXDIGIT}+)[uU]/,
|
65
|
+
/(?<dec>#{DIGIT}+)[uU]/
|
66
|
+
)
|
67
|
+
|
68
|
+
STRING_REGEX = Regexp.union(
|
69
|
+
/"""(?<str>(?:#{ESC_SEQ}|[^\\])*)"""/,
|
70
|
+
/'''(?<str>(?:#{ESC_SEQ}|[^\\])*)'''/,
|
71
|
+
/"(?<str>(?:#{ESC_SEQ}|[^\\"\n\r])*)"/,
|
72
|
+
/'(?<str>(?:#{ESC_SEQ}|[^\\'\n\r])*)'/,
|
73
|
+
/#{RAW}"""(?<str>.*?)"""/m,
|
74
|
+
/#{RAW}'''(?<str>.*?)'''/m,
|
75
|
+
/#{RAW}"(?<str>[^"\n\r]*)"/,
|
76
|
+
/#{RAW}'(?<str>[^'\n\r]*)'/,
|
77
|
+
)
|
78
|
+
|
79
|
+
QUOTED_MAP_FIELD_REGEX = /`/
|
80
|
+
|
81
|
+
BYTES_REGEX = /[bB]#{STRING_REGEX}/
|
82
|
+
|
40
83
|
RESERVED = %W[
|
41
84
|
as break const continue else
|
42
85
|
for function if import let
|
@@ -44,20 +87,11 @@ loop package namespace return
|
|
44
87
|
var void while
|
45
88
|
].freeze
|
46
89
|
|
47
|
-
IDENTIFIER_REGEX = /[
|
48
|
-
|
49
|
-
STRING_LIT_REGEX = Regexp.union(
|
50
|
-
/"""(?~""")*"""/,
|
51
|
-
/'''(?~''')*'''/,
|
52
|
-
/"(\\"|[^"])*"/,
|
53
|
-
/'(\\'|[^'])*'/,
|
54
|
-
)
|
90
|
+
IDENTIFIER_REGEX = /[_a-zA-Z][_a-zA-Z0-9]*/
|
55
91
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
/((\d*\.\d+)|\d+)([eE][+\-]?\d+)?/, # integer, float, exponent
|
60
|
-
)
|
92
|
+
def initialize(package = nil)
|
93
|
+
@package = package
|
94
|
+
end
|
61
95
|
|
62
96
|
def parse(str)
|
63
97
|
tokenize(str)
|
@@ -67,12 +101,7 @@ rescue Racc::ParseError => err
|
|
67
101
|
end
|
68
102
|
|
69
103
|
def parse_error(error)
|
70
|
-
parse_error =
|
71
|
-
when /parse error on value "([^"]+)" \(tRESERVED\)/
|
72
|
-
Cel::ParseError.new("invalid usage of the reserved word \"#{$1}\"")
|
73
|
-
else
|
74
|
-
Cel::ParseError.new(error.message)
|
75
|
-
end
|
104
|
+
parse_error = Cel::ParseError.new(error.message)
|
76
105
|
parse_error.set_backtrace(error.backtrace)
|
77
106
|
parse_error
|
78
107
|
end
|
@@ -86,38 +115,22 @@ def tokenize(str)
|
|
86
115
|
|
87
116
|
until scanner.eos?
|
88
117
|
case
|
89
|
-
when scanner.scan(
|
118
|
+
when scanner.scan(WHITESPACE_REGEX)
|
90
119
|
# skip whitespace
|
91
|
-
when scanner.scan(
|
120
|
+
when scanner.scan(COMMENT_REGEX)
|
92
121
|
# skip comment lines
|
93
|
-
when scanner.scan(
|
94
|
-
@q <<
|
95
|
-
when scanner.scan(
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
# when '\\s' then "\s"
|
106
|
-
# when '\\t' then "\t"
|
107
|
-
# when '\\v' then "\v"
|
108
|
-
# when '\\"' then '"'
|
109
|
-
# end
|
110
|
-
# end
|
111
|
-
|
112
|
-
# s = scanner.matched.yield_self {|s| s[1, s.length - 2] }.gsub(/\\'/, "'")
|
113
|
-
|
114
|
-
str = scanner.matched
|
115
|
-
|
116
|
-
@q << if str.start_with?("b")
|
117
|
-
[:tBYTES, convert_to_bytes(str.byteslice(2..-2))]
|
118
|
-
else
|
119
|
-
[:tSTRING, convert_to_string(str)]
|
120
|
-
end
|
122
|
+
when scanner.scan(NUM_FLOAT_REGEX)
|
123
|
+
@q << [:tDOUBLE, Float(scanner.matched)]
|
124
|
+
when scanner.scan(NUM_UINT_REGEX)
|
125
|
+
@q << [:tUINT, scanner[:hex] ? scanner[:hex].to_i(16) : scanner[:dec].to_i]
|
126
|
+
when scanner.scan(NUM_INT_REGEX)
|
127
|
+
@q << [:tINT, scanner[:hex] ? scanner[:hex].to_i(16) : scanner[:dec].to_i]
|
128
|
+
when scanner.scan(STRING_REGEX)
|
129
|
+
str = convert_to_string(scanner[:raw], scanner[:str], true)
|
130
|
+
@q << [:tSTRING, str]
|
131
|
+
when scanner.scan(BYTES_REGEX)
|
132
|
+
str = convert_to_string(scanner[:raw], scanner[:str])
|
133
|
+
@q << [:tBYTES, convert_to_bytes(str)]
|
121
134
|
when scanner.scan(IDENTIFIER_REGEX)
|
122
135
|
word = scanner.matched
|
123
136
|
if word == "null"
|
@@ -126,8 +139,6 @@ def tokenize(str)
|
|
126
139
|
@q << [:tBOOL, true]
|
127
140
|
elsif word == "false"
|
128
141
|
@q << [:tBOOL, false]
|
129
|
-
elsif RESERVED.include?(word)
|
130
|
-
@q << [:tRESERVED, scanner.matched]
|
131
142
|
elsif word == "in"
|
132
143
|
@q << [OPERATORS[scanner.matched], scanner.matched]
|
133
144
|
else
|
@@ -135,6 +146,16 @@ def tokenize(str)
|
|
135
146
|
end
|
136
147
|
when scanner.scan(OPERATORS_RE)
|
137
148
|
@q << [OPERATORS[scanner.matched], scanner.matched]
|
149
|
+
when scanner.scan(QUOTED_MAP_FIELD_REGEX)
|
150
|
+
current_pos = scanner.pos
|
151
|
+
|
152
|
+
raise ParseError, "unexpected value: #{scanner.string}" unless scanner.scan_until(QUOTED_MAP_FIELD_REGEX)
|
153
|
+
|
154
|
+
raise ParseError, "unexpected value: #{scanner.string}" if scanner.post_match.start_with?("(")
|
155
|
+
|
156
|
+
# TODO: ensure that no newline is in the string
|
157
|
+
|
158
|
+
@q << [:tIDENTIFIER, scanner.pre_match[current_pos..-1]]
|
138
159
|
when scanner.scan(/\A.|\n/o)
|
139
160
|
s = scanner.matched
|
140
161
|
@q << [s, s]
|
@@ -149,286 +170,294 @@ def next_token
|
|
149
170
|
@q.shift
|
150
171
|
end
|
151
172
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
173
|
+
CHAR_SEQ_MAP = {
|
174
|
+
"\\a" => "\a",
|
175
|
+
"\\b" => "\b",
|
176
|
+
"\\f" => "\f",
|
177
|
+
"\\n" => "\n",
|
178
|
+
"\\r" => "\r",
|
179
|
+
"\\t" => "\t",
|
180
|
+
"\\v" => "\v",
|
181
|
+
"\\\"" => "\"",
|
182
|
+
"\\'" => "'",
|
183
|
+
"\\\\" => "\\",
|
184
|
+
"\\?" => "?",
|
185
|
+
"\\`" => "`",
|
186
|
+
}.freeze
|
187
|
+
ESC_SEQ_REGEX = /#{ESC_SEQ}/
|
188
|
+
def convert_to_string(raw, str, encode_to_utf8 = false)
|
189
|
+
# Raw strings do not interpret escape sequences
|
190
|
+
return str if raw
|
191
|
+
|
192
|
+
# Parse and convert all escape sequences
|
193
|
+
str.gsub(ESC_SEQ_REGEX) do |match|
|
194
|
+
case match[1]
|
195
|
+
when "0", "1", "2", "3"
|
196
|
+
# Octal sequence - ESC_OCT_SEQ
|
197
|
+
fragment = match[1..].to_i(8)
|
198
|
+
encode_to_utf8 ? [fragment].pack("U") : fragment.chr
|
199
|
+
when "x", "X"
|
200
|
+
# Hex sequence - ESC_BYTE_SEQ
|
201
|
+
fragment = match[2..].to_i(16)
|
202
|
+
encode_to_utf8 ? [fragment].pack("U") : fragment.chr
|
203
|
+
when "u", "U"
|
204
|
+
# Unicode escape sequence - ESC_UNI_SEQ
|
205
|
+
[match[2..].to_i(16)].pack('U')
|
176
206
|
else
|
177
|
-
|
207
|
+
# Char escape sequence - ESC_CHAR_SEQ
|
208
|
+
CHAR_SEQ_MAP.fetch(match)
|
178
209
|
end
|
179
210
|
end
|
180
211
|
end
|
181
212
|
|
182
|
-
|
183
|
-
|
213
|
+
def convert_to_bytes(str)
|
214
|
+
str.unpack("C*")
|
215
|
+
end
|
184
216
|
|
185
|
-
def convert_to_string(str)
|
186
217
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
str = str.byteslice(2..-2).inspect.byteslice(1..-2)
|
191
|
-
return str
|
192
|
-
end
|
218
|
+
def literal_string(str)
|
219
|
+
Cel::String.new(str)
|
220
|
+
end
|
193
221
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
str = str.byteslice(3..-4)
|
198
|
-
else
|
199
|
-
str = str.byteslice(1..-2)
|
200
|
-
end
|
222
|
+
def literal_bytes(bytes)
|
223
|
+
Cel::Bytes.new(bytes)
|
224
|
+
end
|
201
225
|
|
202
|
-
|
226
|
+
def literal_int(int)
|
227
|
+
Cel::Number.new(:int, int)
|
203
228
|
end
|
204
229
|
|
205
|
-
def
|
206
|
-
|
230
|
+
def literal_uint(int)
|
231
|
+
Cel::Number.new(:uint, int)
|
207
232
|
end
|
208
233
|
|
234
|
+
def literal_double(double)
|
235
|
+
Cel::Number.new(:double, double)
|
236
|
+
end
|
209
237
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
238
|
+
def literal_bool(bool)
|
239
|
+
Cel::Bool.cast(bool)
|
240
|
+
end
|
241
|
+
|
242
|
+
def literal_null
|
243
|
+
Cel::Null::INSTANCE
|
244
|
+
end
|
245
|
+
|
246
|
+
def new_map(val)
|
247
|
+
Cel::Map.new(val)
|
248
|
+
end
|
249
|
+
|
250
|
+
def new_list(val)
|
251
|
+
Cel::List.new(Array(val))
|
252
|
+
end
|
253
|
+
|
254
|
+
def new_identifier(id)
|
255
|
+
Cel::Identifier.new(id, @package)
|
256
|
+
end
|
257
|
+
|
258
|
+
def new_message(type, struct)
|
259
|
+
Cel::Message.new(type, struct, package: @package)
|
260
|
+
end
|
261
|
+
|
262
|
+
def global_call(function, args = nil)
|
263
|
+
Cel::Invoke.new(func: function, var: nil, args: args, package: @package)
|
264
|
+
end
|
265
|
+
|
266
|
+
def receiver_call(function, target, args = nil)
|
267
|
+
Cel::Invoke.new(func: function, var: target, args: args, package: @package)
|
268
|
+
end
|
269
|
+
|
270
|
+
def operation(op, operands)
|
271
|
+
Cel::Operation.new(op, operands)
|
272
|
+
end
|
273
|
+
|
274
|
+
# Checks whether the given identifier token is a reserved word or not. Throws
|
275
|
+
# a ParseError if it's a reserved word.
|
276
|
+
def validated_id!(identifier)
|
277
|
+
return identifier unless RESERVED.include?(identifier)
|
278
|
+
|
279
|
+
raise Cel::ParseError.new("invalid usage of the reserved word \"#{identifier}\"")
|
241
280
|
end
|
242
281
|
|
243
282
|
...end parser.ry/module_eval...
|
244
283
|
##### State transition tables begin ###
|
245
284
|
|
246
285
|
racc_action_table = [
|
247
|
-
22, 23, 24, 25, 26, 27, 28,
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
nil, nil, nil, nil, nil,
|
265
|
-
nil, 18, 22, 23, 24, 25, 26,
|
266
|
-
20, nil, nil, 13, nil, nil, nil, nil,
|
267
|
-
nil, 12,
|
268
|
-
24, 25, 26, 27, 28,
|
269
|
-
nil, nil, nil, nil, nil, nil, nil, 12,
|
270
|
-
nil,
|
271
|
-
28,
|
272
|
-
nil, nil, nil, 12,
|
273
|
-
22, 23, 24, 25, 26, 27, 28,
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
nil, nil, nil, nil, nil,
|
278
|
-
|
279
|
-
|
280
|
-
nil,
|
281
|
-
|
282
|
-
|
283
|
-
nil,
|
284
|
-
|
285
|
-
nil, nil, nil,
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
nil, nil, nil, nil, nil,
|
291
|
-
nil, 18, 22, 23, 24, 25, 26,
|
292
|
-
20, nil, nil, 13, nil, nil, nil, nil,
|
293
|
-
nil, 12,
|
294
|
-
24, 25, 26, 27, 28,
|
295
|
-
nil, nil, nil, nil, nil, nil, nil, 12,
|
296
|
-
nil,
|
297
|
-
28,
|
298
|
-
nil, nil, nil, 12,
|
299
|
-
22, 23, 24, 25, 26, 27, 28,
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
nil, nil, nil, nil, nil,
|
304
|
-
|
305
|
-
|
306
|
-
nil,
|
307
|
-
24, 25, 26, 27, 28, nil, 20, nil, nil, 13,
|
308
|
-
nil, nil, nil, nil, nil, nil, nil, 12, 21, 16,
|
309
|
-
nil, 17, nil, 18, 22, 23, 24, 25, 26, 27,
|
310
|
-
28, nil, 20, nil, nil, 13, nil, nil, nil, nil,
|
311
|
-
nil, nil, nil, 12, 21, 16, nil, 17, nil, 18 ]
|
286
|
+
22, 23, 24, 25, 26, 27, 28, 20, 32, 38,
|
287
|
+
13, 39, 78, 40, 4, 35, 36, 32, 12, 17,
|
288
|
+
31, 18, 29, 21, 16, 22, 23, 24, 25, 26,
|
289
|
+
27, 28, 20, 35, 36, 22, 23, 24, 25, 26,
|
290
|
+
27, 28, 20, 42, 17, 45, 18, 4, 21, 16,
|
291
|
+
33, 38, 34, 39, 17, 40, 18, 37, 21, 16,
|
292
|
+
22, 23, 24, 25, 26, 27, 28, 20, 47, 38,
|
293
|
+
13, 39, 55, 40, 56, 67, 68, 72, 12, 17,
|
294
|
+
73, 18, 74, 21, 16, 22, 23, 24, 25, 26,
|
295
|
+
27, 28, 20, 75, 76, 13, 77, 33, 34, 37,
|
296
|
+
37, 79, 80, 12, 17, 81, 18, 82, 21, 16,
|
297
|
+
22, 23, 24, 25, 26, 27, 28, 20, 83, 84,
|
298
|
+
13, 89, 92, 93, 94, nil, nil, nil, 12, 17,
|
299
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
300
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
301
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
302
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
303
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
304
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
305
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
306
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
307
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
308
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
309
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
310
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
311
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
312
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
313
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
314
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
315
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
316
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
317
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
318
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
319
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
320
|
+
27, 28, 20, nil, nil, 22, 23, 24, 25, 26,
|
321
|
+
27, 28, 20, 42, 17, 45, 18, nil, 21, 16,
|
322
|
+
nil, nil, nil, nil, 17, nil, 18, nil, 21, 16,
|
323
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
324
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
325
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
326
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
327
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
328
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
329
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
330
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
331
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
332
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
333
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
334
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
335
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
336
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
337
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
338
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
339
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
340
|
+
nil, 18, nil, 21, 16, 22, 23, 24, 25, 26,
|
341
|
+
27, 28, 20, nil, nil, 13, nil, nil, nil, nil,
|
342
|
+
nil, nil, nil, 12, 17, nil, 18, nil, 21, 16,
|
343
|
+
22, 23, 24, 25, 26, 27, 28, 20, nil, nil,
|
344
|
+
13, nil, nil, nil, nil, nil, nil, nil, 12, 17,
|
345
|
+
nil, 18, nil, 21, 16 ]
|
312
346
|
|
313
347
|
racc_action_check = [
|
314
|
-
0, 0, 0, 0, 0, 0, 0,
|
315
|
-
|
316
|
-
|
317
|
-
12, 12, 12,
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
18, 18, 18,
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
nil, nil, nil, nil, nil,
|
332
|
-
nil,
|
333
|
-
|
334
|
-
nil,
|
335
|
-
|
336
|
-
nil, nil, nil, nil, nil, nil, nil,
|
337
|
-
nil,
|
338
|
-
|
339
|
-
nil, nil, nil,
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
nil, nil, nil,
|
345
|
-
|
346
|
-
|
347
|
-
nil,
|
348
|
-
|
349
|
-
|
350
|
-
nil,
|
351
|
-
|
352
|
-
nil, nil, nil,
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
nil, nil, nil, nil, nil,
|
358
|
-
nil,
|
359
|
-
|
360
|
-
nil,
|
361
|
-
|
362
|
-
nil, nil, nil, nil, nil, nil, nil,
|
363
|
-
nil,
|
364
|
-
|
365
|
-
nil, nil, nil,
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
nil, nil, nil,
|
371
|
-
|
372
|
-
|
373
|
-
nil,
|
374
|
-
92, 92, 92, 92, 92, nil, 92, nil, nil, 92,
|
375
|
-
nil, nil, nil, nil, nil, nil, nil, 92, 92, 92,
|
376
|
-
nil, 92, nil, 92, 94, 94, 94, 94, 94, 94,
|
377
|
-
94, nil, 94, nil, nil, 94, nil, nil, nil, nil,
|
378
|
-
nil, nil, nil, 94, 94, 94, nil, 94, nil, 94 ]
|
348
|
+
0, 0, 0, 0, 0, 0, 0, 0, 57, 11,
|
349
|
+
0, 11, 57, 11, 0, 8, 8, 5, 0, 0,
|
350
|
+
5, 0, 1, 0, 0, 12, 12, 12, 12, 12,
|
351
|
+
12, 12, 12, 60, 60, 13, 13, 13, 13, 13,
|
352
|
+
13, 13, 13, 12, 12, 13, 12, 2, 12, 12,
|
353
|
+
6, 43, 7, 43, 13, 43, 13, 9, 13, 13,
|
354
|
+
16, 16, 16, 16, 16, 16, 16, 16, 15, 46,
|
355
|
+
16, 46, 21, 46, 29, 39, 40, 48, 16, 16,
|
356
|
+
49, 16, 50, 16, 16, 17, 17, 17, 17, 17,
|
357
|
+
17, 17, 17, 52, 53, 17, 54, 58, 59, 61,
|
358
|
+
62, 64, 65, 17, 17, 66, 17, 67, 17, 17,
|
359
|
+
18, 18, 18, 18, 18, 18, 18, 18, 68, 71,
|
360
|
+
18, 81, 86, 89, 91, nil, nil, nil, 18, 18,
|
361
|
+
nil, 18, nil, 18, 18, 31, 31, 31, 31, 31,
|
362
|
+
31, 31, 31, nil, nil, 31, nil, nil, nil, nil,
|
363
|
+
nil, nil, nil, 31, 31, nil, 31, nil, 31, 31,
|
364
|
+
32, 32, 32, 32, 32, 32, 32, 32, nil, nil,
|
365
|
+
32, nil, nil, nil, nil, nil, nil, nil, 32, 32,
|
366
|
+
nil, 32, nil, 32, 32, 33, 33, 33, 33, 33,
|
367
|
+
33, 33, 33, nil, nil, 33, nil, nil, nil, nil,
|
368
|
+
nil, nil, nil, 33, 33, nil, 33, nil, 33, 33,
|
369
|
+
34, 34, 34, 34, 34, 34, 34, 34, nil, nil,
|
370
|
+
34, nil, nil, nil, nil, nil, nil, nil, 34, 34,
|
371
|
+
nil, 34, nil, 34, 34, 35, 35, 35, 35, 35,
|
372
|
+
35, 35, 35, nil, nil, 35, nil, nil, nil, nil,
|
373
|
+
nil, nil, nil, 35, 35, nil, 35, nil, 35, 35,
|
374
|
+
36, 36, 36, 36, 36, 36, 36, 36, nil, nil,
|
375
|
+
36, nil, nil, nil, nil, nil, nil, nil, 36, 36,
|
376
|
+
nil, 36, nil, 36, 36, 37, 37, 37, 37, 37,
|
377
|
+
37, 37, 37, nil, nil, 37, nil, nil, nil, nil,
|
378
|
+
nil, nil, nil, 37, 37, nil, 37, nil, 37, 37,
|
379
|
+
38, 38, 38, 38, 38, 38, 38, 38, nil, nil,
|
380
|
+
38, nil, nil, nil, nil, nil, nil, nil, 38, 38,
|
381
|
+
nil, 38, nil, 38, 38, 42, 42, 42, 42, 42,
|
382
|
+
42, 42, 42, nil, nil, 45, 45, 45, 45, 45,
|
383
|
+
45, 45, 45, 42, 42, 45, 42, nil, 42, 42,
|
384
|
+
nil, nil, nil, nil, 45, nil, 45, nil, 45, 45,
|
385
|
+
47, 47, 47, 47, 47, 47, 47, 47, nil, nil,
|
386
|
+
47, nil, nil, nil, nil, nil, nil, nil, 47, 47,
|
387
|
+
nil, 47, nil, 47, 47, 74, 74, 74, 74, 74,
|
388
|
+
74, 74, 74, nil, nil, 74, nil, nil, nil, nil,
|
389
|
+
nil, nil, nil, 74, 74, nil, 74, nil, 74, 74,
|
390
|
+
76, 76, 76, 76, 76, 76, 76, 76, nil, nil,
|
391
|
+
76, nil, nil, nil, nil, nil, nil, nil, 76, 76,
|
392
|
+
nil, 76, nil, 76, 76, 77, 77, 77, 77, 77,
|
393
|
+
77, 77, 77, nil, nil, 77, nil, nil, nil, nil,
|
394
|
+
nil, nil, nil, 77, 77, nil, 77, nil, 77, 77,
|
395
|
+
78, 78, 78, 78, 78, 78, 78, 78, nil, nil,
|
396
|
+
78, nil, nil, nil, nil, nil, nil, nil, 78, 78,
|
397
|
+
nil, 78, nil, 78, 78, 82, 82, 82, 82, 82,
|
398
|
+
82, 82, 82, nil, nil, 82, nil, nil, nil, nil,
|
399
|
+
nil, nil, nil, 82, 82, nil, 82, nil, 82, 82,
|
400
|
+
83, 83, 83, 83, 83, 83, 83, 83, nil, nil,
|
401
|
+
83, nil, nil, nil, nil, nil, nil, nil, 83, 83,
|
402
|
+
nil, 83, nil, 83, 83, 92, 92, 92, 92, 92,
|
403
|
+
92, 92, 92, nil, nil, 92, nil, nil, nil, nil,
|
404
|
+
nil, nil, nil, 92, 92, nil, 92, nil, 92, 92,
|
405
|
+
93, 93, 93, 93, 93, 93, 93, 93, nil, nil,
|
406
|
+
93, nil, nil, nil, nil, nil, nil, nil, 93, 93,
|
407
|
+
nil, 93, nil, 93, 93 ]
|
379
408
|
|
380
409
|
racc_action_pointer = [
|
381
|
-
-2,
|
382
|
-
nil, -
|
383
|
-
nil,
|
384
|
-
nil,
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
nil,
|
389
|
-
nil,
|
390
|
-
|
410
|
+
-2, 22, 31, nil, nil, 2, 36, 39, 4, 47,
|
411
|
+
nil, -12, 23, 33, nil, 42, 58, 83, 108, nil,
|
412
|
+
nil, 63, nil, nil, nil, nil, nil, nil, nil, 74,
|
413
|
+
nil, 133, 158, 183, 208, 233, 258, 283, 308, 66,
|
414
|
+
67, nil, 333, 30, nil, 343, 48, 368, 50, 58,
|
415
|
+
54, nil, 69, 66, 77, nil, nil, -7, 83, 85,
|
416
|
+
22, 89, 90, nil, 79, 78, 77, 88, 92, nil,
|
417
|
+
nil, 92, nil, nil, 393, nil, 418, 443, 468, nil,
|
418
|
+
nil, 112, 493, 518, nil, nil, 103, nil, nil, 104,
|
419
|
+
nil, 97, 543, 568, nil, nil, nil ]
|
391
420
|
|
392
421
|
racc_action_default = [
|
393
422
|
-56, -56, -56, -2, -3, -5, -7, -9, -11, -14,
|
394
423
|
-16, -17, -56, -56, -24, -29, -56, -38, -39, -34,
|
395
424
|
-35, -56, -49, -50, -51, -52, -53, -54, -55, -56,
|
396
|
-
-1, -56, -56, -56, -56, -56, -56, -56, -56, -
|
397
|
-
-
|
425
|
+
-1, -56, -56, -56, -56, -56, -56, -56, -56, -43,
|
426
|
+
-56, -18, -56, -21, -19, -56, -23, -38, -56, -56,
|
398
427
|
-37, -42, -56, -40, -56, -36, 97, -56, -6, -8,
|
399
|
-
-10, -12, -13, -15, -
|
400
|
-
-22, -56, -31, -32, -56, -33, -56, -56, -56, -
|
401
|
-
-
|
402
|
-
-
|
428
|
+
-10, -12, -13, -15, -56, -56, -44, -56, -27, -20,
|
429
|
+
-22, -56, -31, -32, -56, -33, -56, -56, -56, -25,
|
430
|
+
-26, -56, -56, -38, -30, -41, -56, -48, -4, -56,
|
431
|
+
-46, -56, -56, -56, -28, -47, -45 ]
|
403
432
|
|
404
433
|
racc_goto_table = [
|
405
434
|
2, 49, 43, 46, 44, 1, 3, 41, 30, 61,
|
406
|
-
62, 57, 58, 59, 60, 63, 48,
|
407
|
-
53,
|
408
|
-
nil, 71, 43, nil, nil, 46, 70, 69, nil,
|
435
|
+
62, 57, 58, 59, 60, 63, 48, 65, 54, 52,
|
436
|
+
53, 66, nil, nil, nil, nil, nil, nil, nil, nil,
|
437
|
+
nil, 71, 43, nil, nil, 46, 70, 69, 64, nil,
|
409
438
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
410
439
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
411
|
-
nil, nil, nil,
|
440
|
+
nil, nil, nil, nil, nil, nil, nil, 91, nil, nil,
|
412
441
|
nil, nil, nil, nil, 85, nil, 86, 87, 88, nil,
|
413
|
-
nil, nil, nil,
|
414
|
-
nil, nil, 95,
|
442
|
+
nil, nil, 90, nil, nil, nil, nil, nil, nil, nil,
|
443
|
+
nil, nil, 95, 96 ]
|
415
444
|
|
416
445
|
racc_goto_check = [
|
417
|
-
2,
|
418
|
-
8, 4, 5, 6, 7, 9, 2,
|
446
|
+
2, 15, 10, 10, 12, 1, 3, 11, 3, 8,
|
447
|
+
8, 4, 5, 6, 7, 9, 2, 14, 2, 17,
|
419
448
|
20, 21, nil, nil, nil, nil, nil, nil, nil, nil,
|
420
|
-
nil,
|
449
|
+
nil, 15, 10, nil, nil, 10, 12, 11, 2, nil,
|
421
450
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
422
451
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
423
|
-
nil, nil, nil,
|
452
|
+
nil, nil, nil, nil, nil, nil, nil, 15, nil, nil,
|
424
453
|
nil, nil, nil, nil, 2, nil, 2, 2, 2, nil,
|
425
|
-
nil, nil,
|
426
|
-
nil, nil, 2,
|
454
|
+
nil, nil, 2, nil, nil, nil, nil, nil, nil, nil,
|
455
|
+
nil, nil, 2, 2 ]
|
427
456
|
|
428
457
|
racc_goto_pointer = [
|
429
458
|
nil, 5, 0, 6, -20, -20, -20, -20, -26, -22,
|
430
|
-
-10, -5, -9, nil, -
|
431
|
-
2, -
|
459
|
+
-10, -5, -9, nil, -22, -16, nil, 1, nil, nil,
|
460
|
+
2, -18 ]
|
432
461
|
|
433
462
|
racc_goto_default = [
|
434
463
|
nil, nil, 51, nil, 5, 6, 7, 8, 9, 10,
|
@@ -437,61 +466,61 @@ racc_goto_default = [
|
|
437
466
|
|
438
467
|
racc_reduce_table = [
|
439
468
|
0, 0, :racc_error,
|
440
|
-
2,
|
469
|
+
2, 30, :_reduce_none,
|
470
|
+
1, 30, :_reduce_none,
|
471
|
+
1, 32, :_reduce_none,
|
472
|
+
5, 31, :_reduce_4,
|
441
473
|
1, 31, :_reduce_none,
|
474
|
+
3, 33, :_reduce_6,
|
442
475
|
1, 33, :_reduce_none,
|
443
|
-
|
444
|
-
1, 32, :_reduce_none,
|
445
|
-
3, 34, :_reduce_6,
|
476
|
+
3, 34, :_reduce_8,
|
446
477
|
1, 34, :_reduce_none,
|
447
|
-
3, 35, :
|
478
|
+
3, 35, :_reduce_10,
|
448
479
|
1, 35, :_reduce_none,
|
449
|
-
3, 36, :
|
480
|
+
3, 36, :_reduce_12,
|
481
|
+
3, 36, :_reduce_13,
|
450
482
|
1, 36, :_reduce_none,
|
451
|
-
3, 37, :
|
452
|
-
3, 37, :_reduce_13,
|
483
|
+
3, 37, :_reduce_15,
|
453
484
|
1, 37, :_reduce_none,
|
454
|
-
3, 38, :_reduce_15,
|
455
485
|
1, 38, :_reduce_none,
|
456
|
-
|
457
|
-
2,
|
458
|
-
2,
|
459
|
-
|
486
|
+
2, 38, :_reduce_18,
|
487
|
+
2, 38, :_reduce_19,
|
488
|
+
2, 40, :_reduce_20,
|
489
|
+
1, 40, :_reduce_none,
|
490
|
+
2, 41, :_reduce_22,
|
460
491
|
1, 41, :_reduce_none,
|
461
|
-
|
492
|
+
1, 39, :_reduce_none,
|
493
|
+
4, 39, :_reduce_25,
|
494
|
+
4, 39, :_reduce_26,
|
495
|
+
3, 39, :_reduce_27,
|
496
|
+
6, 39, :_reduce_28,
|
497
|
+
1, 42, :_reduce_29,
|
498
|
+
4, 42, :_reduce_30,
|
499
|
+
3, 42, :_reduce_31,
|
500
|
+
3, 42, :_reduce_32,
|
501
|
+
3, 42, :_reduce_33,
|
462
502
|
1, 42, :_reduce_none,
|
463
|
-
1,
|
464
|
-
|
465
|
-
6, 40, :_reduce_26,
|
466
|
-
4, 40, :_reduce_27,
|
467
|
-
4, 40, :_reduce_28,
|
468
|
-
1, 43, :_reduce_29,
|
469
|
-
4, 43, :_reduce_30,
|
470
|
-
3, 43, :_reduce_31,
|
471
|
-
3, 43, :_reduce_32,
|
472
|
-
3, 43, :_reduce_33,
|
473
|
-
1, 43, :_reduce_none,
|
474
|
-
1, 46, :_reduce_none,
|
475
|
-
2, 46, :_reduce_none,
|
503
|
+
1, 45, :_reduce_none,
|
504
|
+
2, 45, :_reduce_36,
|
476
505
|
1, 44, :_reduce_none,
|
477
506
|
0, 44, :_reduce_38,
|
478
|
-
0,
|
479
|
-
1,
|
480
|
-
3,
|
481
|
-
1,
|
482
|
-
0,
|
483
|
-
1,
|
484
|
-
5,
|
485
|
-
3,
|
486
|
-
5,
|
487
|
-
3,
|
488
|
-
1,
|
489
|
-
1,
|
490
|
-
1,
|
491
|
-
1,
|
492
|
-
1,
|
493
|
-
1,
|
494
|
-
1,
|
507
|
+
0, 46, :_reduce_39,
|
508
|
+
1, 46, :_reduce_none,
|
509
|
+
3, 48, :_reduce_41,
|
510
|
+
1, 48, :_reduce_42,
|
511
|
+
0, 43, :_reduce_43,
|
512
|
+
1, 43, :_reduce_none,
|
513
|
+
5, 50, :_reduce_45,
|
514
|
+
3, 50, :_reduce_46,
|
515
|
+
5, 49, :_reduce_47,
|
516
|
+
3, 49, :_reduce_48,
|
517
|
+
1, 47, :_reduce_49,
|
518
|
+
1, 47, :_reduce_50,
|
519
|
+
1, 47, :_reduce_51,
|
520
|
+
1, 47, :_reduce_52,
|
521
|
+
1, 47, :_reduce_53,
|
522
|
+
1, 47, :_reduce_54,
|
523
|
+
1, 47, :_reduce_55 ]
|
495
524
|
|
496
525
|
racc_reduce_n = 56
|
497
526
|
|
@@ -507,29 +536,28 @@ racc_token_table = {
|
|
507
536
|
:tNULL => 6,
|
508
537
|
:tSTRING => 7,
|
509
538
|
:tBYTES => 8,
|
510
|
-
:
|
511
|
-
:
|
512
|
-
:
|
513
|
-
:
|
514
|
-
:
|
515
|
-
:
|
516
|
-
:
|
517
|
-
:
|
518
|
-
:
|
519
|
-
|
520
|
-
"
|
521
|
-
"
|
522
|
-
"
|
523
|
-
"
|
524
|
-
"
|
525
|
-
"
|
526
|
-
"
|
527
|
-
"
|
528
|
-
"
|
529
|
-
"
|
530
|
-
|
531
|
-
|
532
|
-
racc_nt_base = 30
|
539
|
+
:tIDENTIFIER => 9,
|
540
|
+
:tMULTIOP => 10,
|
541
|
+
:tADDOP => 11,
|
542
|
+
:tSUBOP => 12,
|
543
|
+
:tRELOP => 13,
|
544
|
+
:tANDOP => 14,
|
545
|
+
:tOROP => 15,
|
546
|
+
:tEOF => 16,
|
547
|
+
:UMINUS => 17,
|
548
|
+
"?" => 18,
|
549
|
+
":" => 19,
|
550
|
+
"!" => 20,
|
551
|
+
"[" => 21,
|
552
|
+
"]" => 22,
|
553
|
+
"{" => 23,
|
554
|
+
"}" => 24,
|
555
|
+
"." => 25,
|
556
|
+
"(" => 26,
|
557
|
+
")" => 27,
|
558
|
+
"," => 28 }
|
559
|
+
|
560
|
+
racc_nt_base = 29
|
533
561
|
|
534
562
|
racc_use_result_var = true
|
535
563
|
|
@@ -548,6 +576,7 @@ Racc_arg = [
|
|
548
576
|
racc_shift_n,
|
549
577
|
racc_reduce_n,
|
550
578
|
racc_use_result_var ]
|
579
|
+
Ractor.make_shareable(Racc_arg) if defined?(Ractor)
|
551
580
|
|
552
581
|
Racc_token_to_s_table = [
|
553
582
|
"$end",
|
@@ -559,7 +588,6 @@ Racc_token_to_s_table = [
|
|
559
588
|
"tNULL",
|
560
589
|
"tSTRING",
|
561
590
|
"tBYTES",
|
562
|
-
"tRESERVED",
|
563
591
|
"tIDENTIFIER",
|
564
592
|
"tMULTIOP",
|
565
593
|
"tADDOP",
|
@@ -572,13 +600,13 @@ Racc_token_to_s_table = [
|
|
572
600
|
"\"?\"",
|
573
601
|
"\":\"",
|
574
602
|
"\"!\"",
|
575
|
-
"\".\"",
|
576
|
-
"\"(\"",
|
577
|
-
"\")\"",
|
578
603
|
"\"[\"",
|
579
604
|
"\"]\"",
|
580
605
|
"\"{\"",
|
581
606
|
"\"}\"",
|
607
|
+
"\".\"",
|
608
|
+
"\"(\"",
|
609
|
+
"\")\"",
|
582
610
|
"\",\"",
|
583
611
|
"$start",
|
584
612
|
"target",
|
@@ -594,14 +622,15 @@ Racc_token_to_s_table = [
|
|
594
622
|
"negated_member",
|
595
623
|
"negative_member",
|
596
624
|
"primary",
|
597
|
-
"maybe_expr_list",
|
598
625
|
"maybe_field_inits",
|
626
|
+
"maybe_expr_list",
|
599
627
|
"identifier",
|
600
628
|
"maybe_map_inits",
|
601
629
|
"literal",
|
602
630
|
"expr_list",
|
603
631
|
"map_inits",
|
604
632
|
"field_inits" ]
|
633
|
+
Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)
|
605
634
|
|
606
635
|
Racc_debug_parser = false
|
607
636
|
|
@@ -626,7 +655,7 @@ module_eval(<<'.,.,', 'parser.ry', 17)
|
|
626
655
|
|
627
656
|
module_eval(<<'.,.,', 'parser.ry', 20)
|
628
657
|
def _reduce_6(val, _values, result)
|
629
|
-
result =
|
658
|
+
result = operation(val[1], [val[0], val[2]])
|
630
659
|
result
|
631
660
|
end
|
632
661
|
.,.,
|
@@ -635,7 +664,7 @@ module_eval(<<'.,.,', 'parser.ry', 20)
|
|
635
664
|
|
636
665
|
module_eval(<<'.,.,', 'parser.ry', 23)
|
637
666
|
def _reduce_8(val, _values, result)
|
638
|
-
result =
|
667
|
+
result = operation(val[1], [val[0], val[2]])
|
639
668
|
result
|
640
669
|
end
|
641
670
|
.,.,
|
@@ -644,7 +673,7 @@ module_eval(<<'.,.,', 'parser.ry', 23)
|
|
644
673
|
|
645
674
|
module_eval(<<'.,.,', 'parser.ry', 26)
|
646
675
|
def _reduce_10(val, _values, result)
|
647
|
-
result =
|
676
|
+
result = operation(val[1], [val[0], val[2]])
|
648
677
|
result
|
649
678
|
end
|
650
679
|
.,.,
|
@@ -653,14 +682,14 @@ module_eval(<<'.,.,', 'parser.ry', 26)
|
|
653
682
|
|
654
683
|
module_eval(<<'.,.,', 'parser.ry', 29)
|
655
684
|
def _reduce_12(val, _values, result)
|
656
|
-
result =
|
685
|
+
result = operation(val[1], [val[0], val[2]])
|
657
686
|
result
|
658
687
|
end
|
659
688
|
.,.,
|
660
689
|
|
661
690
|
module_eval(<<'.,.,', 'parser.ry', 30)
|
662
691
|
def _reduce_13(val, _values, result)
|
663
|
-
result =
|
692
|
+
result = operation(val[1], [val[0], val[2]])
|
664
693
|
result
|
665
694
|
end
|
666
695
|
.,.,
|
@@ -669,7 +698,7 @@ module_eval(<<'.,.,', 'parser.ry', 30)
|
|
669
698
|
|
670
699
|
module_eval(<<'.,.,', 'parser.ry', 33)
|
671
700
|
def _reduce_15(val, _values, result)
|
672
|
-
result =
|
701
|
+
result = operation(val[1], [val[0], val[2]])
|
673
702
|
result
|
674
703
|
end
|
675
704
|
.,.,
|
@@ -680,21 +709,21 @@ module_eval(<<'.,.,', 'parser.ry', 33)
|
|
680
709
|
|
681
710
|
module_eval(<<'.,.,', 'parser.ry', 38)
|
682
711
|
def _reduce_18(val, _values, result)
|
683
|
-
result =
|
712
|
+
result = operation("!", [val[1]])
|
684
713
|
result
|
685
714
|
end
|
686
715
|
.,.,
|
687
716
|
|
688
717
|
module_eval(<<'.,.,', 'parser.ry', 39)
|
689
718
|
def _reduce_19(val, _values, result)
|
690
|
-
result =
|
719
|
+
result = operation("-", [val[1]])
|
691
720
|
result
|
692
721
|
end
|
693
722
|
.,.,
|
694
723
|
|
695
724
|
module_eval(<<'.,.,', 'parser.ry', 41)
|
696
725
|
def _reduce_20(val, _values, result)
|
697
|
-
result =
|
726
|
+
result = operation("!", [val[1]])
|
698
727
|
result
|
699
728
|
end
|
700
729
|
.,.,
|
@@ -703,7 +732,7 @@ module_eval(<<'.,.,', 'parser.ry', 41)
|
|
703
732
|
|
704
733
|
module_eval(<<'.,.,', 'parser.ry', 44)
|
705
734
|
def _reduce_22(val, _values, result)
|
706
|
-
result =
|
735
|
+
result = operation("-", [val[1]])
|
707
736
|
result
|
708
737
|
end
|
709
738
|
.,.,
|
@@ -714,42 +743,42 @@ module_eval(<<'.,.,', 'parser.ry', 44)
|
|
714
743
|
|
715
744
|
module_eval(<<'.,.,', 'parser.ry', 48)
|
716
745
|
def _reduce_25(val, _values, result)
|
717
|
-
result =
|
746
|
+
result = receiver_call("[]", val[0], val[2])
|
718
747
|
result
|
719
748
|
end
|
720
749
|
.,.,
|
721
750
|
|
722
751
|
module_eval(<<'.,.,', 'parser.ry', 49)
|
723
752
|
def _reduce_26(val, _values, result)
|
724
|
-
result =
|
753
|
+
result = new_message(val[0], val[2])
|
725
754
|
result
|
726
755
|
end
|
727
756
|
.,.,
|
728
757
|
|
729
758
|
module_eval(<<'.,.,', 'parser.ry', 50)
|
730
759
|
def _reduce_27(val, _values, result)
|
731
|
-
result =
|
760
|
+
result = receiver_call(val[2], val[0])
|
732
761
|
result
|
733
762
|
end
|
734
763
|
.,.,
|
735
764
|
|
736
765
|
module_eval(<<'.,.,', 'parser.ry', 51)
|
737
766
|
def _reduce_28(val, _values, result)
|
738
|
-
result =
|
767
|
+
result = receiver_call(val[2], val[0], [val[4]].flatten(1))
|
739
768
|
result
|
740
769
|
end
|
741
770
|
.,.,
|
742
771
|
|
743
772
|
module_eval(<<'.,.,', 'parser.ry', 54)
|
744
773
|
def _reduce_29(val, _values, result)
|
745
|
-
result =
|
774
|
+
result = new_identifier(validated_id!(val[0]))
|
746
775
|
result
|
747
776
|
end
|
748
777
|
.,.,
|
749
778
|
|
750
779
|
module_eval(<<'.,.,', 'parser.ry', 55)
|
751
780
|
def _reduce_30(val, _values, result)
|
752
|
-
result =
|
781
|
+
result = global_call(validated_id!(val[0]), val[2])
|
753
782
|
result
|
754
783
|
end
|
755
784
|
.,.,
|
@@ -763,14 +792,14 @@ module_eval(<<'.,.,', 'parser.ry', 56)
|
|
763
792
|
|
764
793
|
module_eval(<<'.,.,', 'parser.ry', 57)
|
765
794
|
def _reduce_32(val, _values, result)
|
766
|
-
result =
|
795
|
+
result = new_list(val[1])
|
767
796
|
result
|
768
797
|
end
|
769
798
|
.,.,
|
770
799
|
|
771
800
|
module_eval(<<'.,.,', 'parser.ry', 58)
|
772
801
|
def _reduce_33(val, _values, result)
|
773
|
-
result =
|
802
|
+
result = new_map(val[1])
|
774
803
|
result
|
775
804
|
end
|
776
805
|
.,.,
|
@@ -779,7 +808,12 @@ module_eval(<<'.,.,', 'parser.ry', 58)
|
|
779
808
|
|
780
809
|
# reduce 35 omitted
|
781
810
|
|
782
|
-
|
811
|
+
module_eval(<<'.,.,', 'parser.ry', 62)
|
812
|
+
def _reduce_36(val, _values, result)
|
813
|
+
result = val[1]
|
814
|
+
result
|
815
|
+
end
|
816
|
+
.,.,
|
783
817
|
|
784
818
|
# reduce 37 omitted
|
785
819
|
|
@@ -792,7 +826,7 @@ module_eval(<<'.,.,', 'parser.ry', 65)
|
|
792
826
|
|
793
827
|
module_eval(<<'.,.,', 'parser.ry', 67)
|
794
828
|
def _reduce_39(val, _values, result)
|
795
|
-
result =
|
829
|
+
result = []
|
796
830
|
result
|
797
831
|
end
|
798
832
|
.,.,
|
@@ -808,7 +842,7 @@ module_eval(<<'.,.,', 'parser.ry', 70)
|
|
808
842
|
|
809
843
|
module_eval(<<'.,.,', 'parser.ry', 71)
|
810
844
|
def _reduce_42(val, _values, result)
|
811
|
-
[val[0]]
|
845
|
+
result = [val[0]]
|
812
846
|
result
|
813
847
|
end
|
814
848
|
.,.,
|
@@ -824,77 +858,77 @@ module_eval(<<'.,.,', 'parser.ry', 73)
|
|
824
858
|
|
825
859
|
module_eval(<<'.,.,', 'parser.ry', 76)
|
826
860
|
def _reduce_45(val, _values, result)
|
827
|
-
result = val[0].merge(
|
861
|
+
result = val[0].merge(new_identifier(val[2]) => val[4])
|
828
862
|
result
|
829
863
|
end
|
830
864
|
.,.,
|
831
865
|
|
832
866
|
module_eval(<<'.,.,', 'parser.ry', 77)
|
833
867
|
def _reduce_46(val, _values, result)
|
834
|
-
result = {
|
868
|
+
result = { new_identifier(val[0]) => val[2] }
|
835
869
|
result
|
836
870
|
end
|
837
871
|
.,.,
|
838
872
|
|
839
873
|
module_eval(<<'.,.,', 'parser.ry', 79)
|
840
874
|
def _reduce_47(val, _values, result)
|
841
|
-
val[0][val[2]
|
875
|
+
val[0] << [val[2], val[4]]; result = val[0]
|
842
876
|
result
|
843
877
|
end
|
844
878
|
.,.,
|
845
879
|
|
846
880
|
module_eval(<<'.,.,', 'parser.ry', 80)
|
847
881
|
def _reduce_48(val, _values, result)
|
848
|
-
result =
|
882
|
+
result = [[val[0], val[2]]]
|
849
883
|
result
|
850
884
|
end
|
851
885
|
.,.,
|
852
886
|
|
853
887
|
module_eval(<<'.,.,', 'parser.ry', 82)
|
854
888
|
def _reduce_49(val, _values, result)
|
855
|
-
result =
|
889
|
+
result = literal_int(val[0])
|
856
890
|
result
|
857
891
|
end
|
858
892
|
.,.,
|
859
893
|
|
860
894
|
module_eval(<<'.,.,', 'parser.ry', 83)
|
861
895
|
def _reduce_50(val, _values, result)
|
862
|
-
result =
|
896
|
+
result = literal_uint(val[0])
|
863
897
|
result
|
864
898
|
end
|
865
899
|
.,.,
|
866
900
|
|
867
901
|
module_eval(<<'.,.,', 'parser.ry', 84)
|
868
902
|
def _reduce_51(val, _values, result)
|
869
|
-
result =
|
903
|
+
result = literal_double(val[0])
|
870
904
|
result
|
871
905
|
end
|
872
906
|
.,.,
|
873
907
|
|
874
908
|
module_eval(<<'.,.,', 'parser.ry', 85)
|
875
909
|
def _reduce_52(val, _values, result)
|
876
|
-
result =
|
910
|
+
result = literal_bool(val[0])
|
877
911
|
result
|
878
912
|
end
|
879
913
|
.,.,
|
880
914
|
|
881
915
|
module_eval(<<'.,.,', 'parser.ry', 86)
|
882
916
|
def _reduce_53(val, _values, result)
|
883
|
-
result =
|
917
|
+
result = literal_null
|
884
918
|
result
|
885
919
|
end
|
886
920
|
.,.,
|
887
921
|
|
888
922
|
module_eval(<<'.,.,', 'parser.ry', 87)
|
889
923
|
def _reduce_54(val, _values, result)
|
890
|
-
result =
|
924
|
+
result = literal_string(val[0])
|
891
925
|
result
|
892
926
|
end
|
893
927
|
.,.,
|
894
928
|
|
895
929
|
module_eval(<<'.,.,', 'parser.ry', 88)
|
896
930
|
def _reduce_55(val, _values, result)
|
897
|
-
result =
|
931
|
+
result = literal_bytes(val[0])
|
898
932
|
result
|
899
933
|
end
|
900
934
|
.,.,
|