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.
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.6.0
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
 
@@ -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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new(val[1], [val[0], val[2]])
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 = Cel::Operation.new("!", [val[1]])
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 = Cel::Operation.new("-", [val[1]])
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 = Cel::Operation.new("!", [val[1]])
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 = Cel::Operation.new("-", [val[1]])
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 = Cel::Invoke.new(var: val[0], func: val[2])
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 = Cel::Invoke.new(var: val[0], func: val[2], args: [val[4]].flatten(1))
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 = Cel::Invoke.new(var: val[0], func: "[]", args: val[2])
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 = Cel::Message.new(val[0], val[2])
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 = Cel::Identifier.new(val[0])
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 = Cel::Invoke.new(func: val[0], args: [val[2]].flatten(1))
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 = Cel::List.new(Array(val[1]))
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 = Cel::Map.new(Hash[val[1]])
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
- # 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
+ .,.,
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 = nil
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(Cel::Identifier.new(val[2]) => val[4])
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 = { Cel::Identifier.new(val[0]) => val[2] }
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]] = val[4]; result = val[0]
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 = { val[0] => val[2] }
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 = Cel::Number.new(:int, val[0])
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 = Cel::Number.new(:uint, val[0])
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 = Cel::Number.new(:double, val[0])
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 = Cel::Bool.new(val[0])
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 = Cel::Null.new()
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 = Cel::String.new(val[0])
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 = Cel::Bytes.new(val[0])
931
+ result = literal_bytes(val[0])
898
932
  result
899
933
  end
900
934
  .,.,