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.
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.7.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', 97)
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 = /[a-zA-Z][_a-zA-Z0-9]*/
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
- NUMBER_REGEX = Regexp.union(
57
- /(0x[0-9a-fA-F]+)[uU]?/, # hexadecimal
58
- /(\d+)[uU]/, # uinteger
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 = case error.message
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(/\s+/)
118
+ when scanner.scan(WHITESPACE_REGEX)
90
119
  # skip whitespace
91
- when scanner.scan(/#(( *)|( ?(?<string>.*)))\n/)
120
+ when scanner.scan(COMMENT_REGEX)
92
121
  # skip comment lines
93
- when scanner.scan(NUMBER_REGEX)
94
- @q << convert_to_number(scanner)
95
- when scanner.scan(/[bB]?[rR]?#{STRING_LIT_REGEX}/) # string
96
- # s = scanner.matched.yield_self {|s| s[1, s.length - 2] }
97
- # .gsub(DBL_QUOTE_STR_ESCAPE_SEQUENCES_RE) do |match|
98
- # case match
99
- # when '\\a' then "\a"
100
- # when '\\b' then "\b"
101
- # when '\\e' then "\e"
102
- # when '\\f' then "\f"
103
- # when '\\n' then "\n"
104
- # when '\\r' then "\r"
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
- def convert_to_number(scanner)
153
- matched = scanner.matched
154
- hexa, uint, number, floating, exp = scanner.captures
155
-
156
- if hexa && !hexa.empty?
157
- return [:tINT, hexa.to_i(16)]
158
- end
159
-
160
- if uint && !uint.empty?
161
- return [:tUINT, Integer(uint)]
162
- end
163
-
164
- if exp && !exp.empty?
165
- # third matched group, can only be a floating exponential, let's convert tout suite
166
- [:tDOUBLE, BigDecimal(matched)]
167
- elsif floating && !floating.empty?
168
- if number == floating || floating.start_with?(".")
169
- [:tDOUBLE, Float(matched)]
170
- elsif number.nil? || number.empty?
171
- [:tDOUBLE, BigDecimal(matched)]
172
- end
173
- else
174
- if matched[-1].downcase == "u"
175
- [:tINT, Integer(matched[0..-2]).abs]
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
- [:tINT, Integer(matched)]
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
- TRIPE_DOUBLE_QUOTES = %Q{"""}
183
- TRIPE_SINGLE_QUOTES = %Q{'''}
213
+ def convert_to_bytes(str)
214
+ str.unpack("C*")
215
+ end
184
216
 
185
- def convert_to_string(str)
186
217
 
187
- if str.start_with?("r")
188
- # If preceded by an r or R character, the string is a raw string
189
- # and does not interpret escape sequences.
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
- if str.size > 6 && (
195
- (str.start_with?(TRIPE_DOUBLE_QUOTES) && str.end_with?(TRIPE_DOUBLE_QUOTES)) ||
196
- (str.start_with?(TRIPE_SINGLE_QUOTES) && str.end_with?(TRIPE_SINGLE_QUOTES)))
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
- cleanup_escape_sequences(str)
226
+ def literal_int(int)
227
+ Cel::Number.new(:int, int)
203
228
  end
204
229
 
205
- def convert_to_bytes(str)
206
- str.unpack("C*")
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
- BIN_ESCAPE = /\\([0-3][0-7][0-7])/
211
- HEX_ESCAPE = /\\x([0-9a-fA-F]{2})/
212
- BPM_ESCAPE = /\\u([0-9a-fA-F]{4})/
213
- UNICODE_ESCAPE = /\\u([0-9a-fA-F]{4})/
214
- WHITESPACE_ESCAPE = /\\([bfnrt"'\\])/
215
- ESCAPE_UNION = Regexp.union(BIN_ESCAPE, HEX_ESCAPE, BPM_ESCAPE, WHITESPACE_ESCAPE)
216
- # For the sake of a readable representation, the escape sequences (ESCAPE) are kept
217
- # implicit in string tokens. This means that strings without the r or R (raw) prefix
218
- # process ESCAPE sequences, while in strings with the raw prefix they stay uninterpreted.
219
- # See documentation of string literals below.
220
- def cleanup_escape_sequences(str)
221
- str.gsub!(ESCAPE_UNION) do |match|
222
- case match
223
- when /\\"/
224
- "\""
225
- when BIN_ESCAPE
226
- # For strings, it denotes the unicode code point.
227
- Regexp.last_match(1).to_i.chr(Encoding::UTF_8)
228
- when HEX_ESCAPE
229
- # For strings, it denotes the unicode code point.
230
- Regexp.last_match(1).hex.chr(Encoding::UTF_8)
231
- when BPM_ESCAPE
232
- Regexp.last_match(1).hex.chr(Encoding::BPM)
233
- when UNICODE_ESCAPE
234
- # encoding a Unicode code point. Valid only for string literals.
235
- Regexp.last_match(1).hex.chr(Encoding::UTF_8)
236
- when WHITESPACE_ESCAPE
237
- Regexp.last_match(0)
238
- end
239
- end
240
- str
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, 38, 20, 29,
248
- 39, 13, 40, 38, 32, 4, 39, 31, 40, 12,
249
- 21, 16, 4, 17, 33, 18, 22, 23, 24, 25,
250
- 26, 27, 28, 38, 20, 32, 39, 34, 40, 78,
251
- 35, 36, 35, 36, 37, 42, 21, 16, 47, 17,
252
- 55, 18, 22, 23, 24, 25, 26, 27, 28, 56,
253
- 20, 64, 68, 45, 72, 73, 74, 75, 76, 77,
254
- 33, 34, 21, 16, 37, 17, 37, 18, 22, 23,
255
- 24, 25, 26, 27, 28, 79, 20, 80, 81, 13,
256
- 82, 83, 84, 90, 92, 93, 94, 12, 21, 16,
257
- nil, 17, nil, 18, 22, 23, 24, 25, 26, 27,
258
- 28, nil, 20, nil, nil, 13, nil, nil, nil, nil,
259
- nil, nil, nil, 12, 21, 16, nil, 17, nil, 18,
260
- 22, 23, 24, 25, 26, 27, 28, nil, 20, nil,
261
- nil, 13, nil, nil, nil, nil, nil, nil, nil, 12,
262
- 21, 16, nil, 17, nil, 18, 22, 23, 24, 25,
263
- 26, 27, 28, nil, 20, nil, nil, 13, nil, nil,
264
- nil, nil, nil, nil, nil, 12, 21, 16, nil, 17,
265
- nil, 18, 22, 23, 24, 25, 26, 27, 28, nil,
266
- 20, nil, nil, 13, nil, nil, nil, nil, nil, nil,
267
- nil, 12, 21, 16, nil, 17, nil, 18, 22, 23,
268
- 24, 25, 26, 27, 28, nil, 20, nil, nil, 13,
269
- nil, nil, nil, nil, nil, nil, nil, 12, 21, 16,
270
- nil, 17, nil, 18, 22, 23, 24, 25, 26, 27,
271
- 28, nil, 20, nil, nil, 13, nil, nil, nil, nil,
272
- nil, nil, nil, 12, 21, 16, nil, 17, nil, 18,
273
- 22, 23, 24, 25, 26, 27, 28, nil, 20, nil,
274
- nil, 13, nil, nil, nil, nil, nil, nil, nil, 12,
275
- 21, 16, nil, 17, nil, 18, 22, 23, 24, 25,
276
- 26, 27, 28, nil, 20, nil, nil, 13, nil, nil,
277
- nil, nil, nil, nil, nil, 12, 21, 16, nil, 17,
278
- nil, 18, 22, 23, 24, 25, 26, 27, 28, nil,
279
- 20, nil, nil, 13, nil, nil, nil, nil, nil, nil,
280
- nil, 12, 21, 16, nil, 17, nil, 18, 22, 23,
281
- 24, 25, 26, 27, 28, nil, 20, nil, nil, 13,
282
- nil, nil, nil, nil, nil, nil, nil, 12, 21, 16,
283
- nil, 17, nil, 18, 22, 23, 24, 25, 26, 27,
284
- 28, nil, 20, nil, nil, nil, nil, nil, nil, nil,
285
- nil, nil, nil, 42, 21, 16, nil, 17, nil, 18,
286
- 22, 23, 24, 25, 26, 27, 28, nil, 20, nil,
287
- nil, 45, nil, nil, nil, nil, nil, nil, nil, nil,
288
- 21, 16, nil, 17, nil, 18, 22, 23, 24, 25,
289
- 26, 27, 28, nil, 20, nil, nil, 13, nil, nil,
290
- nil, nil, nil, nil, nil, 12, 21, 16, nil, 17,
291
- nil, 18, 22, 23, 24, 25, 26, 27, 28, nil,
292
- 20, nil, nil, 13, nil, nil, nil, nil, nil, nil,
293
- nil, 12, 21, 16, nil, 17, nil, 18, 22, 23,
294
- 24, 25, 26, 27, 28, nil, 20, nil, nil, 13,
295
- nil, nil, nil, nil, nil, nil, nil, 12, 21, 16,
296
- nil, 17, nil, 18, 22, 23, 24, 25, 26, 27,
297
- 28, nil, 20, nil, nil, 13, nil, nil, nil, nil,
298
- nil, nil, nil, 12, 21, 16, nil, 17, nil, 18,
299
- 22, 23, 24, 25, 26, 27, 28, nil, 20, nil,
300
- nil, 13, nil, nil, nil, nil, nil, nil, nil, 12,
301
- 21, 16, nil, 17, nil, 18, 22, 23, 24, 25,
302
- 26, 27, 28, nil, 20, nil, nil, 13, nil, nil,
303
- nil, nil, nil, nil, nil, 12, 21, 16, nil, 17,
304
- nil, 18, 22, 23, 24, 25, 26, 27, 28, nil,
305
- 20, nil, nil, 13, nil, nil, nil, nil, nil, nil,
306
- nil, 12, 21, 16, nil, 17, nil, 18, 22, 23,
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, 11, 0, 1,
315
- 11, 0, 11, 43, 5, 0, 43, 5, 43, 0,
316
- 0, 0, 2, 0, 6, 0, 12, 12, 12, 12,
317
- 12, 12, 12, 46, 12, 57, 46, 7, 46, 57,
318
- 8, 8, 60, 60, 9, 12, 12, 12, 15, 12,
319
- 21, 12, 13, 13, 13, 13, 13, 13, 13, 29,
320
- 13, 38, 40, 13, 48, 49, 50, 52, 53, 54,
321
- 58, 59, 13, 13, 61, 13, 62, 13, 16, 16,
322
- 16, 16, 16, 16, 16, 64, 16, 65, 66, 16,
323
- 67, 68, 71, 82, 86, 89, 90, 16, 16, 16,
324
- nil, 16, nil, 16, 17, 17, 17, 17, 17, 17,
325
- 17, nil, 17, nil, nil, 17, nil, nil, nil, nil,
326
- nil, nil, nil, 17, 17, 17, nil, 17, nil, 17,
327
- 18, 18, 18, 18, 18, 18, 18, nil, 18, nil,
328
- nil, 18, nil, nil, nil, nil, nil, nil, nil, 18,
329
- 18, 18, nil, 18, nil, 18, 31, 31, 31, 31,
330
- 31, 31, 31, nil, 31, nil, nil, 31, nil, nil,
331
- nil, nil, nil, nil, nil, 31, 31, 31, nil, 31,
332
- nil, 31, 32, 32, 32, 32, 32, 32, 32, nil,
333
- 32, nil, nil, 32, nil, nil, nil, nil, nil, nil,
334
- nil, 32, 32, 32, nil, 32, nil, 32, 33, 33,
335
- 33, 33, 33, 33, 33, nil, 33, nil, nil, 33,
336
- nil, nil, nil, nil, nil, nil, nil, 33, 33, 33,
337
- nil, 33, nil, 33, 34, 34, 34, 34, 34, 34,
338
- 34, nil, 34, nil, nil, 34, nil, nil, nil, nil,
339
- nil, nil, nil, 34, 34, 34, nil, 34, nil, 34,
340
- 35, 35, 35, 35, 35, 35, 35, nil, 35, nil,
341
- nil, 35, nil, nil, nil, nil, nil, nil, nil, 35,
342
- 35, 35, nil, 35, nil, 35, 36, 36, 36, 36,
343
- 36, 36, 36, nil, 36, nil, nil, 36, nil, nil,
344
- nil, nil, nil, nil, nil, 36, 36, 36, nil, 36,
345
- nil, 36, 37, 37, 37, 37, 37, 37, 37, nil,
346
- 37, nil, nil, 37, nil, nil, nil, nil, nil, nil,
347
- nil, 37, 37, 37, nil, 37, nil, 37, 39, 39,
348
- 39, 39, 39, 39, 39, nil, 39, nil, nil, 39,
349
- nil, nil, nil, nil, nil, nil, nil, 39, 39, 39,
350
- nil, 39, nil, 39, 42, 42, 42, 42, 42, 42,
351
- 42, nil, 42, nil, nil, nil, nil, nil, nil, nil,
352
- nil, nil, nil, 42, 42, 42, nil, 42, nil, 42,
353
- 45, 45, 45, 45, 45, 45, 45, nil, 45, nil,
354
- nil, 45, nil, nil, nil, nil, nil, nil, nil, nil,
355
- 45, 45, nil, 45, nil, 45, 47, 47, 47, 47,
356
- 47, 47, 47, nil, 47, nil, nil, 47, nil, nil,
357
- nil, nil, nil, nil, nil, 47, 47, 47, nil, 47,
358
- nil, 47, 74, 74, 74, 74, 74, 74, 74, nil,
359
- 74, nil, nil, 74, nil, nil, nil, nil, nil, nil,
360
- nil, 74, 74, 74, nil, 74, nil, 74, 76, 76,
361
- 76, 76, 76, 76, 76, nil, 76, nil, nil, 76,
362
- nil, nil, nil, nil, nil, nil, nil, 76, 76, 76,
363
- nil, 76, nil, 76, 77, 77, 77, 77, 77, 77,
364
- 77, nil, 77, nil, nil, 77, nil, nil, nil, nil,
365
- nil, nil, nil, 77, 77, 77, nil, 77, nil, 77,
366
- 78, 78, 78, 78, 78, 78, 78, nil, 78, nil,
367
- nil, 78, nil, nil, nil, nil, nil, nil, nil, 78,
368
- 78, 78, nil, 78, nil, 78, 79, 79, 79, 79,
369
- 79, 79, 79, nil, 79, nil, nil, 79, nil, nil,
370
- nil, nil, nil, nil, nil, 79, 79, 79, nil, 79,
371
- nil, 79, 83, 83, 83, 83, 83, 83, 83, nil,
372
- 83, nil, nil, 83, nil, nil, nil, nil, nil, nil,
373
- nil, 83, 83, 83, nil, 83, nil, 83, 92, 92,
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, 9, 5, nil, nil, -2, 9, 23, 28, 33,
382
- nil, -15, 24, 50, nil, 25, 76, 102, 128, nil,
383
- nil, 40, nil, nil, nil, nil, nil, nil, nil, 59,
384
- nil, 154, 180, 206, 232, 258, 284, 310, 51, 336,
385
- 52, nil, 362, -9, nil, 388, 11, 414, 40, 39,
386
- 37, nil, 39, 39, 49, nil, nil, 19, 55, 57,
387
- 30, 63, 65, nil, 62, 61, 60, 61, 71, nil,
388
- nil, 68, nil, nil, 440, nil, 466, 492, 518, 544,
389
- nil, nil, 83, 570, nil, nil, 74, nil, nil, 71,
390
- 76, nil, 596, nil, 622, nil, nil ]
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, -56,
397
- -43, -18, -56, -21, -19, -56, -23, -38, -56, -56,
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, -25, -56, -56, -44, -56, -20,
400
- -22, -56, -31, -32, -56, -33, -56, -56, -56, -38,
401
- -27, -28, -56, -56, -30, -41, -56, -48, -4, -56,
402
- -56, -46, -56, -26, -56, -47, -45 ]
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, 66, 54, 52,
407
- 53, 67, nil, nil, nil, nil, nil, nil, nil, nil,
408
- nil, 71, 43, nil, nil, 46, 70, 69, nil, 65,
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, 89, nil, nil, nil, 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, 91, nil, nil, nil, nil, nil, nil,
414
- nil, nil, 95, nil, 96 ]
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, 14, 10, 10, 12, 1, 3, 11, 3, 8,
418
- 8, 4, 5, 6, 7, 9, 2, 15, 2, 17,
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, 14, 10, nil, nil, 10, 12, 11, nil, 2,
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, 14, nil, nil, nil, 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, nil, 2, nil, nil, nil, nil, nil, nil,
426
- nil, nil, 2, 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, -16, -23, nil, 1, nil, nil,
431
- 2, -19 ]
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, 31, :_reduce_none,
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
- 5, 32, :_reduce_4,
444
- 1, 32, :_reduce_none,
445
- 3, 34, :_reduce_6,
476
+ 3, 34, :_reduce_8,
446
477
  1, 34, :_reduce_none,
447
- 3, 35, :_reduce_8,
478
+ 3, 35, :_reduce_10,
448
479
  1, 35, :_reduce_none,
449
- 3, 36, :_reduce_10,
480
+ 3, 36, :_reduce_12,
481
+ 3, 36, :_reduce_13,
450
482
  1, 36, :_reduce_none,
451
- 3, 37, :_reduce_12,
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
- 1, 39, :_reduce_none,
457
- 2, 39, :_reduce_18,
458
- 2, 39, :_reduce_19,
459
- 2, 41, :_reduce_20,
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
- 2, 42, :_reduce_22,
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, 40, :_reduce_none,
464
- 3, 40, :_reduce_25,
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, 47, :_reduce_39,
479
- 1, 47, :_reduce_none,
480
- 3, 49, :_reduce_41,
481
- 1, 49, :_reduce_42,
482
- 0, 45, :_reduce_43,
483
- 1, 45, :_reduce_none,
484
- 5, 51, :_reduce_45,
485
- 3, 51, :_reduce_46,
486
- 5, 50, :_reduce_47,
487
- 3, 50, :_reduce_48,
488
- 1, 48, :_reduce_49,
489
- 1, 48, :_reduce_50,
490
- 1, 48, :_reduce_51,
491
- 1, 48, :_reduce_52,
492
- 1, 48, :_reduce_53,
493
- 1, 48, :_reduce_54,
494
- 1, 48, :_reduce_55 ]
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
- :tRESERVED => 9,
511
- :tIDENTIFIER => 10,
512
- :tMULTIOP => 11,
513
- :tADDOP => 12,
514
- :tSUBOP => 13,
515
- :tRELOP => 14,
516
- :tANDOP => 15,
517
- :tOROP => 16,
518
- :tEOF => 17,
519
- :UMINUS => 18,
520
- "?" => 19,
521
- ":" => 20,
522
- "!" => 21,
523
- "." => 22,
524
- "(" => 23,
525
- ")" => 24,
526
- "[" => 25,
527
- "]" => 26,
528
- "{" => 27,
529
- "}" => 28,
530
- "," => 29 }
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new("!", [val[1]])
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 = Cel::Operation.new("-", [val[1]])
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 = Cel::Operation.new("!", [val[1]])
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 = Cel::Operation.new("-", [val[1]])
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 = Cel::Invoke.new(var: val[0], func: val[2])
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 = Cel::Invoke.new(var: val[0], func: val[2], args: [val[4]].flatten(1))
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 = Cel::Invoke.new(var: val[0], func: "[]", args: val[2])
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 = Cel::Message.new(val[0], val[2])
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 = Cel::Identifier.new(val[0])
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 = Cel::Invoke.new(func: val[0], args: [val[2]].flatten(1))
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 = Cel::List.new(Array(val[1]))
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 = Cel::Map.new(Hash[val[1]])
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
- # reduce 36 omitted
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 = nil
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(Cel::Identifier.new(val[2]) => val[4])
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 = { Cel::Identifier.new(val[0]) => val[2] }
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]] = val[4]; result = val[0]
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 = { val[0] => val[2] }
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 = Cel::Number.new(:int, val[0])
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 = Cel::Number.new(:uint, val[0])
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 = Cel::Number.new(:double, val[0])
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 = Cel::Bool.new(val[0])
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 = Cel::Null.new()
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 = Cel::String.new(val[0])
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 = Cel::Bytes.new(val[0])
931
+ result = literal_bytes(val[0])
900
932
  result
901
933
  end
902
934
  .,.,