cel 0.2.3 → 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 +17 -0
- data/README.md +23 -1
- data/lib/cel/ast/elements/protobuf.rb +411 -66
- data/lib/cel/ast/elements.rb +339 -113
- 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 +428 -396
- data/lib/cel/program.rb +255 -48
- data/lib/cel/version.rb +1 -1
- data/lib/cel.rb +232 -1
- metadata +18 -9
- data/lib/cel/parser.tab.rb +0 -1023
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
|
|
@@ -560,7 +588,6 @@ Racc_token_to_s_table = [
|
|
560
588
|
"tNULL",
|
561
589
|
"tSTRING",
|
562
590
|
"tBYTES",
|
563
|
-
"tRESERVED",
|
564
591
|
"tIDENTIFIER",
|
565
592
|
"tMULTIOP",
|
566
593
|
"tADDOP",
|
@@ -573,13 +600,13 @@ Racc_token_to_s_table = [
|
|
573
600
|
"\"?\"",
|
574
601
|
"\":\"",
|
575
602
|
"\"!\"",
|
576
|
-
"\".\"",
|
577
|
-
"\"(\"",
|
578
|
-
"\")\"",
|
579
603
|
"\"[\"",
|
580
604
|
"\"]\"",
|
581
605
|
"\"{\"",
|
582
606
|
"\"}\"",
|
607
|
+
"\".\"",
|
608
|
+
"\"(\"",
|
609
|
+
"\")\"",
|
583
610
|
"\",\"",
|
584
611
|
"$start",
|
585
612
|
"target",
|
@@ -595,8 +622,8 @@ Racc_token_to_s_table = [
|
|
595
622
|
"negated_member",
|
596
623
|
"negative_member",
|
597
624
|
"primary",
|
598
|
-
"maybe_expr_list",
|
599
625
|
"maybe_field_inits",
|
626
|
+
"maybe_expr_list",
|
600
627
|
"identifier",
|
601
628
|
"maybe_map_inits",
|
602
629
|
"literal",
|
@@ -628,7 +655,7 @@ module_eval(<<'.,.,', 'parser.ry', 17)
|
|
628
655
|
|
629
656
|
module_eval(<<'.,.,', 'parser.ry', 20)
|
630
657
|
def _reduce_6(val, _values, result)
|
631
|
-
result =
|
658
|
+
result = operation(val[1], [val[0], val[2]])
|
632
659
|
result
|
633
660
|
end
|
634
661
|
.,.,
|
@@ -637,7 +664,7 @@ module_eval(<<'.,.,', 'parser.ry', 20)
|
|
637
664
|
|
638
665
|
module_eval(<<'.,.,', 'parser.ry', 23)
|
639
666
|
def _reduce_8(val, _values, result)
|
640
|
-
result =
|
667
|
+
result = operation(val[1], [val[0], val[2]])
|
641
668
|
result
|
642
669
|
end
|
643
670
|
.,.,
|
@@ -646,7 +673,7 @@ module_eval(<<'.,.,', 'parser.ry', 23)
|
|
646
673
|
|
647
674
|
module_eval(<<'.,.,', 'parser.ry', 26)
|
648
675
|
def _reduce_10(val, _values, result)
|
649
|
-
result =
|
676
|
+
result = operation(val[1], [val[0], val[2]])
|
650
677
|
result
|
651
678
|
end
|
652
679
|
.,.,
|
@@ -655,14 +682,14 @@ module_eval(<<'.,.,', 'parser.ry', 26)
|
|
655
682
|
|
656
683
|
module_eval(<<'.,.,', 'parser.ry', 29)
|
657
684
|
def _reduce_12(val, _values, result)
|
658
|
-
result =
|
685
|
+
result = operation(val[1], [val[0], val[2]])
|
659
686
|
result
|
660
687
|
end
|
661
688
|
.,.,
|
662
689
|
|
663
690
|
module_eval(<<'.,.,', 'parser.ry', 30)
|
664
691
|
def _reduce_13(val, _values, result)
|
665
|
-
result =
|
692
|
+
result = operation(val[1], [val[0], val[2]])
|
666
693
|
result
|
667
694
|
end
|
668
695
|
.,.,
|
@@ -671,7 +698,7 @@ module_eval(<<'.,.,', 'parser.ry', 30)
|
|
671
698
|
|
672
699
|
module_eval(<<'.,.,', 'parser.ry', 33)
|
673
700
|
def _reduce_15(val, _values, result)
|
674
|
-
result =
|
701
|
+
result = operation(val[1], [val[0], val[2]])
|
675
702
|
result
|
676
703
|
end
|
677
704
|
.,.,
|
@@ -682,21 +709,21 @@ module_eval(<<'.,.,', 'parser.ry', 33)
|
|
682
709
|
|
683
710
|
module_eval(<<'.,.,', 'parser.ry', 38)
|
684
711
|
def _reduce_18(val, _values, result)
|
685
|
-
result =
|
712
|
+
result = operation("!", [val[1]])
|
686
713
|
result
|
687
714
|
end
|
688
715
|
.,.,
|
689
716
|
|
690
717
|
module_eval(<<'.,.,', 'parser.ry', 39)
|
691
718
|
def _reduce_19(val, _values, result)
|
692
|
-
result =
|
719
|
+
result = operation("-", [val[1]])
|
693
720
|
result
|
694
721
|
end
|
695
722
|
.,.,
|
696
723
|
|
697
724
|
module_eval(<<'.,.,', 'parser.ry', 41)
|
698
725
|
def _reduce_20(val, _values, result)
|
699
|
-
result =
|
726
|
+
result = operation("!", [val[1]])
|
700
727
|
result
|
701
728
|
end
|
702
729
|
.,.,
|
@@ -705,7 +732,7 @@ module_eval(<<'.,.,', 'parser.ry', 41)
|
|
705
732
|
|
706
733
|
module_eval(<<'.,.,', 'parser.ry', 44)
|
707
734
|
def _reduce_22(val, _values, result)
|
708
|
-
result =
|
735
|
+
result = operation("-", [val[1]])
|
709
736
|
result
|
710
737
|
end
|
711
738
|
.,.,
|
@@ -716,42 +743,42 @@ module_eval(<<'.,.,', 'parser.ry', 44)
|
|
716
743
|
|
717
744
|
module_eval(<<'.,.,', 'parser.ry', 48)
|
718
745
|
def _reduce_25(val, _values, result)
|
719
|
-
result =
|
746
|
+
result = receiver_call("[]", val[0], val[2])
|
720
747
|
result
|
721
748
|
end
|
722
749
|
.,.,
|
723
750
|
|
724
751
|
module_eval(<<'.,.,', 'parser.ry', 49)
|
725
752
|
def _reduce_26(val, _values, result)
|
726
|
-
result =
|
753
|
+
result = new_message(val[0], val[2])
|
727
754
|
result
|
728
755
|
end
|
729
756
|
.,.,
|
730
757
|
|
731
758
|
module_eval(<<'.,.,', 'parser.ry', 50)
|
732
759
|
def _reduce_27(val, _values, result)
|
733
|
-
result =
|
760
|
+
result = receiver_call(val[2], val[0])
|
734
761
|
result
|
735
762
|
end
|
736
763
|
.,.,
|
737
764
|
|
738
765
|
module_eval(<<'.,.,', 'parser.ry', 51)
|
739
766
|
def _reduce_28(val, _values, result)
|
740
|
-
result =
|
767
|
+
result = receiver_call(val[2], val[0], [val[4]].flatten(1))
|
741
768
|
result
|
742
769
|
end
|
743
770
|
.,.,
|
744
771
|
|
745
772
|
module_eval(<<'.,.,', 'parser.ry', 54)
|
746
773
|
def _reduce_29(val, _values, result)
|
747
|
-
result =
|
774
|
+
result = new_identifier(validated_id!(val[0]))
|
748
775
|
result
|
749
776
|
end
|
750
777
|
.,.,
|
751
778
|
|
752
779
|
module_eval(<<'.,.,', 'parser.ry', 55)
|
753
780
|
def _reduce_30(val, _values, result)
|
754
|
-
result =
|
781
|
+
result = global_call(validated_id!(val[0]), val[2])
|
755
782
|
result
|
756
783
|
end
|
757
784
|
.,.,
|
@@ -765,14 +792,14 @@ module_eval(<<'.,.,', 'parser.ry', 56)
|
|
765
792
|
|
766
793
|
module_eval(<<'.,.,', 'parser.ry', 57)
|
767
794
|
def _reduce_32(val, _values, result)
|
768
|
-
result =
|
795
|
+
result = new_list(val[1])
|
769
796
|
result
|
770
797
|
end
|
771
798
|
.,.,
|
772
799
|
|
773
800
|
module_eval(<<'.,.,', 'parser.ry', 58)
|
774
801
|
def _reduce_33(val, _values, result)
|
775
|
-
result =
|
802
|
+
result = new_map(val[1])
|
776
803
|
result
|
777
804
|
end
|
778
805
|
.,.,
|
@@ -781,7 +808,12 @@ module_eval(<<'.,.,', 'parser.ry', 58)
|
|
781
808
|
|
782
809
|
# reduce 35 omitted
|
783
810
|
|
784
|
-
|
811
|
+
module_eval(<<'.,.,', 'parser.ry', 62)
|
812
|
+
def _reduce_36(val, _values, result)
|
813
|
+
result = val[1]
|
814
|
+
result
|
815
|
+
end
|
816
|
+
.,.,
|
785
817
|
|
786
818
|
# reduce 37 omitted
|
787
819
|
|
@@ -794,7 +826,7 @@ module_eval(<<'.,.,', 'parser.ry', 65)
|
|
794
826
|
|
795
827
|
module_eval(<<'.,.,', 'parser.ry', 67)
|
796
828
|
def _reduce_39(val, _values, result)
|
797
|
-
result =
|
829
|
+
result = []
|
798
830
|
result
|
799
831
|
end
|
800
832
|
.,.,
|
@@ -810,7 +842,7 @@ module_eval(<<'.,.,', 'parser.ry', 70)
|
|
810
842
|
|
811
843
|
module_eval(<<'.,.,', 'parser.ry', 71)
|
812
844
|
def _reduce_42(val, _values, result)
|
813
|
-
[val[0]]
|
845
|
+
result = [val[0]]
|
814
846
|
result
|
815
847
|
end
|
816
848
|
.,.,
|
@@ -826,77 +858,77 @@ module_eval(<<'.,.,', 'parser.ry', 73)
|
|
826
858
|
|
827
859
|
module_eval(<<'.,.,', 'parser.ry', 76)
|
828
860
|
def _reduce_45(val, _values, result)
|
829
|
-
result = val[0].merge(
|
861
|
+
result = val[0].merge(new_identifier(val[2]) => val[4])
|
830
862
|
result
|
831
863
|
end
|
832
864
|
.,.,
|
833
865
|
|
834
866
|
module_eval(<<'.,.,', 'parser.ry', 77)
|
835
867
|
def _reduce_46(val, _values, result)
|
836
|
-
result = {
|
868
|
+
result = { new_identifier(val[0]) => val[2] }
|
837
869
|
result
|
838
870
|
end
|
839
871
|
.,.,
|
840
872
|
|
841
873
|
module_eval(<<'.,.,', 'parser.ry', 79)
|
842
874
|
def _reduce_47(val, _values, result)
|
843
|
-
val[0][val[2]
|
875
|
+
val[0] << [val[2], val[4]]; result = val[0]
|
844
876
|
result
|
845
877
|
end
|
846
878
|
.,.,
|
847
879
|
|
848
880
|
module_eval(<<'.,.,', 'parser.ry', 80)
|
849
881
|
def _reduce_48(val, _values, result)
|
850
|
-
result =
|
882
|
+
result = [[val[0], val[2]]]
|
851
883
|
result
|
852
884
|
end
|
853
885
|
.,.,
|
854
886
|
|
855
887
|
module_eval(<<'.,.,', 'parser.ry', 82)
|
856
888
|
def _reduce_49(val, _values, result)
|
857
|
-
result =
|
889
|
+
result = literal_int(val[0])
|
858
890
|
result
|
859
891
|
end
|
860
892
|
.,.,
|
861
893
|
|
862
894
|
module_eval(<<'.,.,', 'parser.ry', 83)
|
863
895
|
def _reduce_50(val, _values, result)
|
864
|
-
result =
|
896
|
+
result = literal_uint(val[0])
|
865
897
|
result
|
866
898
|
end
|
867
899
|
.,.,
|
868
900
|
|
869
901
|
module_eval(<<'.,.,', 'parser.ry', 84)
|
870
902
|
def _reduce_51(val, _values, result)
|
871
|
-
result =
|
903
|
+
result = literal_double(val[0])
|
872
904
|
result
|
873
905
|
end
|
874
906
|
.,.,
|
875
907
|
|
876
908
|
module_eval(<<'.,.,', 'parser.ry', 85)
|
877
909
|
def _reduce_52(val, _values, result)
|
878
|
-
result =
|
910
|
+
result = literal_bool(val[0])
|
879
911
|
result
|
880
912
|
end
|
881
913
|
.,.,
|
882
914
|
|
883
915
|
module_eval(<<'.,.,', 'parser.ry', 86)
|
884
916
|
def _reduce_53(val, _values, result)
|
885
|
-
result =
|
917
|
+
result = literal_null
|
886
918
|
result
|
887
919
|
end
|
888
920
|
.,.,
|
889
921
|
|
890
922
|
module_eval(<<'.,.,', 'parser.ry', 87)
|
891
923
|
def _reduce_54(val, _values, result)
|
892
|
-
result =
|
924
|
+
result = literal_string(val[0])
|
893
925
|
result
|
894
926
|
end
|
895
927
|
.,.,
|
896
928
|
|
897
929
|
module_eval(<<'.,.,', 'parser.ry', 88)
|
898
930
|
def _reduce_55(val, _values, result)
|
899
|
-
result =
|
931
|
+
result = literal_bytes(val[0])
|
900
932
|
result
|
901
933
|
end
|
902
934
|
.,.,
|