prism 0.15.1 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -1
  3. data/Makefile +12 -0
  4. data/README.md +3 -1
  5. data/config.yml +66 -50
  6. data/docs/configuration.md +2 -0
  7. data/docs/fuzzing.md +1 -1
  8. data/docs/javascript.md +90 -0
  9. data/docs/releasing.md +27 -0
  10. data/docs/ruby_api.md +2 -0
  11. data/docs/serialization.md +28 -29
  12. data/ext/prism/api_node.c +856 -826
  13. data/ext/prism/api_pack.c +20 -9
  14. data/ext/prism/extension.c +494 -119
  15. data/ext/prism/extension.h +1 -1
  16. data/include/prism/ast.h +3157 -747
  17. data/include/prism/defines.h +40 -8
  18. data/include/prism/diagnostic.h +36 -3
  19. data/include/prism/enc/pm_encoding.h +119 -28
  20. data/include/prism/node.h +38 -30
  21. data/include/prism/options.h +204 -0
  22. data/include/prism/pack.h +44 -33
  23. data/include/prism/parser.h +445 -199
  24. data/include/prism/prettyprint.h +26 -0
  25. data/include/prism/regexp.h +16 -2
  26. data/include/prism/util/pm_buffer.h +102 -18
  27. data/include/prism/util/pm_char.h +162 -48
  28. data/include/prism/util/pm_constant_pool.h +128 -34
  29. data/include/prism/util/pm_list.h +68 -38
  30. data/include/prism/util/pm_memchr.h +18 -3
  31. data/include/prism/util/pm_newline_list.h +71 -28
  32. data/include/prism/util/pm_state_stack.h +25 -7
  33. data/include/prism/util/pm_string.h +115 -27
  34. data/include/prism/util/pm_string_list.h +25 -6
  35. data/include/prism/util/pm_strncasecmp.h +32 -0
  36. data/include/prism/util/pm_strpbrk.h +31 -17
  37. data/include/prism/version.h +28 -3
  38. data/include/prism.h +229 -36
  39. data/lib/prism/compiler.rb +5 -5
  40. data/lib/prism/debug.rb +43 -13
  41. data/lib/prism/desugar_compiler.rb +1 -1
  42. data/lib/prism/dispatcher.rb +27 -26
  43. data/lib/prism/dsl.rb +16 -16
  44. data/lib/prism/ffi.rb +138 -61
  45. data/lib/prism/lex_compat.rb +26 -16
  46. data/lib/prism/mutation_compiler.rb +11 -11
  47. data/lib/prism/node.rb +426 -227
  48. data/lib/prism/node_ext.rb +23 -16
  49. data/lib/prism/node_inspector.rb +1 -1
  50. data/lib/prism/pack.rb +79 -40
  51. data/lib/prism/parse_result/comments.rb +7 -2
  52. data/lib/prism/parse_result/newlines.rb +4 -0
  53. data/lib/prism/parse_result.rb +157 -21
  54. data/lib/prism/pattern.rb +14 -3
  55. data/lib/prism/ripper_compat.rb +28 -10
  56. data/lib/prism/serialize.rb +935 -307
  57. data/lib/prism/visitor.rb +9 -5
  58. data/lib/prism.rb +20 -2
  59. data/prism.gemspec +11 -2
  60. data/rbi/prism.rbi +7305 -0
  61. data/rbi/prism_static.rbi +196 -0
  62. data/sig/prism.rbs +4468 -0
  63. data/sig/prism_static.rbs +123 -0
  64. data/src/diagnostic.c +56 -53
  65. data/src/enc/pm_big5.c +1 -0
  66. data/src/enc/pm_euc_jp.c +1 -0
  67. data/src/enc/pm_gbk.c +1 -0
  68. data/src/enc/pm_shift_jis.c +1 -0
  69. data/src/enc/pm_tables.c +316 -80
  70. data/src/enc/pm_unicode.c +54 -9
  71. data/src/enc/pm_windows_31j.c +1 -0
  72. data/src/node.c +357 -345
  73. data/src/options.c +170 -0
  74. data/src/prettyprint.c +7697 -1643
  75. data/src/prism.c +1964 -1125
  76. data/src/regexp.c +153 -95
  77. data/src/serialize.c +432 -397
  78. data/src/token_type.c +3 -1
  79. data/src/util/pm_buffer.c +88 -23
  80. data/src/util/pm_char.c +103 -57
  81. data/src/util/pm_constant_pool.c +52 -22
  82. data/src/util/pm_list.c +12 -4
  83. data/src/util/pm_memchr.c +5 -3
  84. data/src/util/pm_newline_list.c +25 -63
  85. data/src/util/pm_state_stack.c +9 -3
  86. data/src/util/pm_string.c +95 -85
  87. data/src/util/pm_string_list.c +14 -15
  88. data/src/util/pm_strncasecmp.c +10 -3
  89. data/src/util/pm_strpbrk.c +25 -19
  90. metadata +12 -3
  91. data/docs/prism.png +0 -0
@@ -11,7 +11,7 @@ require "stringio"
11
11
  if String.instance_method(:unpack1).parameters.none? { |_, name| name == :offset }
12
12
  String.prepend(
13
13
  Module.new {
14
- def unpack1(format, offset: 0)
14
+ def unpack1(format, offset: 0) # :nodoc:
15
15
  offset == 0 ? super(format) : self[offset..].unpack1(format)
16
16
  end
17
17
  }
@@ -19,11 +19,21 @@ if String.instance_method(:unpack1).parameters.none? { |_, name| name == :offset
19
19
  end
20
20
 
21
21
  module Prism
22
+ # A module responsible for deserializing parse results.
22
23
  module Serialize
24
+ # The major version of prism that we are expecting to find in the serialized
25
+ # strings.
23
26
  MAJOR_VERSION = 0
24
- MINOR_VERSION = 15
25
- PATCH_VERSION = 1
26
27
 
28
+ # The minor version of prism that we are expecting to find in the serialized
29
+ # strings.
30
+ MINOR_VERSION = 17
31
+
32
+ # The patch version of prism that we are expecting to find in the serialized
33
+ # strings.
34
+ PATCH_VERSION = 0
35
+
36
+ # Deserialize the AST represented by the given string into a parse result.
27
37
  def self.load(input, serialized)
28
38
  input = input.dup
29
39
  source = Source.new(input)
@@ -34,13 +44,16 @@ module Prism
34
44
  result
35
45
  end
36
46
 
47
+ # Deserialize the tokens represented by the given string into a parse
48
+ # result.
37
49
  def self.load_tokens(source, serialized)
38
50
  Loader.new(source, serialized).load_tokens_result
39
51
  end
40
52
 
41
- class Loader
53
+ class Loader # :nodoc:
42
54
  attr_reader :encoding, :input, :serialized, :io
43
55
  attr_reader :constant_pool_offset, :constant_pool, :source
56
+ attr_reader :start_line
44
57
 
45
58
  def initialize(source, serialized)
46
59
  @encoding = Encoding::UTF_8
@@ -54,14 +67,43 @@ module Prism
54
67
  @constant_pool = nil
55
68
 
56
69
  @source = source
70
+ define_load_node_lambdas unless RUBY_ENGINE == "ruby"
71
+ end
72
+
73
+ def load_header
74
+ raise "Invalid serialization" if io.read(5) != "PRISM"
75
+ raise "Invalid serialization" if io.read(3).unpack("C3") != [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION]
76
+ only_semantic_fields = io.read(1).unpack1("C")
77
+ unless only_semantic_fields == 0
78
+ raise "Invalid serialization (location fields must be included but are not)"
79
+ end
57
80
  end
58
81
 
59
82
  def load_encoding
60
83
  Encoding.find(io.read(load_varint))
61
84
  end
62
85
 
86
+ def load_force_encoding
87
+ @encoding = load_encoding
88
+ @input = input.force_encoding(@encoding).freeze
89
+ end
90
+
91
+ def load_start_line
92
+ source.start_line = load_varint
93
+ end
94
+
95
+ def load_comments
96
+ load_varint.times.map do
97
+ case load_varint
98
+ when 0 then InlineComment.new(load_location)
99
+ when 1 then EmbDocComment.new(load_location)
100
+ when 2 then DATAComment.new(load_location)
101
+ end
102
+ end
103
+ end
104
+
63
105
  def load_metadata
64
- comments = load_varint.times.map { Comment.new(Comment::TYPES.fetch(load_varint), load_location) }
106
+ comments = load_comments
65
107
  magic_comments = load_varint.times.map { MagicComment.new(load_location, load_location) }
66
108
  errors = load_varint.times.map { ParseError.new(load_embedded_string, load_location) }
67
109
  warnings = load_varint.times.map { ParseWarning.new(load_embedded_string, load_location) }
@@ -84,6 +126,7 @@ module Prism
84
126
  def load_tokens_result
85
127
  tokens = load_tokens
86
128
  encoding = load_encoding
129
+ load_start_line
87
130
  comments, magic_comments, errors, warnings = load_metadata
88
131
 
89
132
  if encoding != @encoding
@@ -95,15 +138,9 @@ module Prism
95
138
  end
96
139
 
97
140
  def load_nodes
98
- raise "Invalid serialization" if io.read(5) != "PRISM"
99
- raise "Invalid serialization" if io.read(3).unpack("C3") != [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION]
100
- only_semantic_fields = io.read(1).unpack1("C")
101
- unless only_semantic_fields == 0
102
- raise "Invalid serialization (location fields must be included but are not)"
103
- end
104
-
105
- @encoding = load_encoding
106
- @input = input.force_encoding(@encoding).freeze
141
+ load_header
142
+ load_force_encoding
143
+ load_start_line
107
144
 
108
145
  comments, magic_comments, errors, warnings = load_metadata
109
146
 
@@ -201,304 +238,895 @@ module Prism
201
238
  load_constant(index - 1) if index != 0
202
239
  end
203
240
 
204
- def load_node
205
- type = io.getbyte
206
- location = load_location
241
+ if RUBY_ENGINE == 'ruby'
242
+ def load_node
243
+ type = io.getbyte
244
+ location = load_location
207
245
 
208
- case type
209
- when 1 then
210
- AliasGlobalVariableNode.new(load_node, load_node, load_location, location)
211
- when 2 then
212
- AliasMethodNode.new(load_node, load_node, load_location, location)
213
- when 3 then
214
- AlternationPatternNode.new(load_node, load_node, load_location, location)
215
- when 4 then
216
- AndNode.new(load_node, load_node, load_location, location)
217
- when 5 then
218
- ArgumentsNode.new(Array.new(load_varint) { load_node }, location)
219
- when 6 then
220
- ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
221
- when 7 then
222
- ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
223
- when 8 then
224
- AssocNode.new(load_node, load_optional_node, load_optional_location, location)
225
- when 9 then
226
- AssocSplatNode.new(load_optional_node, load_location, location)
227
- when 10 then
228
- BackReferenceReadNode.new(load_required_constant, location)
229
- when 11 then
230
- BeginNode.new(load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location, location)
231
- when 12 then
232
- BlockArgumentNode.new(load_optional_node, load_location, location)
233
- when 13 then
234
- BlockLocalVariableNode.new(load_required_constant, location)
235
- when 14 then
236
- BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
237
- when 15 then
238
- BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
239
- when 16 then
240
- BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
241
- when 17 then
242
- BreakNode.new(load_optional_node, load_location, location)
243
- when 18 then
244
- CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
245
- when 19 then
246
- CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_required_constant, location)
247
- when 20 then
248
- CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
249
- when 21 then
250
- CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
251
- when 22 then
252
- CapturePatternNode.new(load_node, load_node, load_location, location)
253
- when 23 then
254
- CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
255
- when 24 then
256
- ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
257
- when 25 then
258
- ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
259
- when 26 then
260
- ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
261
- when 27 then
262
- ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
263
- when 28 then
264
- ClassVariableReadNode.new(load_required_constant, location)
265
- when 29 then
266
- ClassVariableTargetNode.new(load_required_constant, location)
267
- when 30 then
268
- ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
269
- when 31 then
270
- ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
271
- when 32 then
272
- ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
273
- when 33 then
274
- ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
275
- when 34 then
276
- ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
277
- when 35 then
278
- ConstantPathNode.new(load_optional_node, load_node, load_location, location)
279
- when 36 then
280
- ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
281
- when 37 then
282
- ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
283
- when 38 then
284
- ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
285
- when 39 then
286
- ConstantPathWriteNode.new(load_node, load_location, load_node, location)
287
- when 40 then
288
- ConstantReadNode.new(load_required_constant, location)
289
- when 41 then
290
- ConstantTargetNode.new(load_required_constant, location)
291
- when 42 then
292
- ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
293
- when 43 then
294
- load_serialized_length
295
- DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
296
- when 44 then
297
- DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
298
- when 45 then
299
- ElseNode.new(load_location, load_optional_node, load_optional_location, location)
300
- when 46 then
301
- EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
302
- when 47 then
303
- EmbeddedVariableNode.new(load_location, load_node, location)
304
- when 48 then
305
- EnsureNode.new(load_location, load_optional_node, load_location, location)
306
- when 49 then
307
- FalseNode.new(location)
308
- when 50 then
309
- FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
310
- when 51 then
311
- FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
312
- when 52 then
313
- FloatNode.new(location)
314
- when 53 then
315
- ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
316
- when 54 then
317
- ForwardingArgumentsNode.new(location)
318
- when 55 then
319
- ForwardingParameterNode.new(location)
320
- when 56 then
321
- ForwardingSuperNode.new(load_optional_node, location)
322
- when 57 then
323
- GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
324
- when 58 then
325
- GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
326
- when 59 then
327
- GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
328
- when 60 then
329
- GlobalVariableReadNode.new(load_required_constant, location)
330
- when 61 then
331
- GlobalVariableTargetNode.new(load_required_constant, location)
332
- when 62 then
333
- GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
334
- when 63 then
335
- HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
336
- when 64 then
337
- HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
338
- when 65 then
339
- IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
340
- when 66 then
341
- ImaginaryNode.new(load_node, location)
342
- when 67 then
343
- ImplicitNode.new(load_node, location)
344
- when 68 then
345
- InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
346
- when 69 then
347
- IndexAndWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
348
- when 70 then
349
- IndexOperatorWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_required_constant, load_location, load_node, location)
350
- when 71 then
351
- IndexOrWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
352
- when 72 then
353
- InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
354
- when 73 then
355
- InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
356
- when 74 then
357
- InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
358
- when 75 then
359
- InstanceVariableReadNode.new(load_required_constant, location)
360
- when 76 then
361
- InstanceVariableTargetNode.new(load_required_constant, location)
362
- when 77 then
363
- InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
364
- when 78 then
365
- IntegerNode.new(load_varint, location)
366
- when 79 then
367
- InterpolatedMatchLastLineNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
368
- when 80 then
369
- InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
370
- when 81 then
371
- InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
372
- when 82 then
373
- InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
374
- when 83 then
375
- InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
376
- when 84 then
377
- KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
378
- when 85 then
379
- KeywordParameterNode.new(load_required_constant, load_location, load_optional_node, location)
380
- when 86 then
381
- KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
382
- when 87 then
383
- LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
384
- when 88 then
385
- LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
386
- when 89 then
387
- LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
388
- when 90 then
389
- LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
390
- when 91 then
391
- LocalVariableReadNode.new(load_required_constant, load_varint, location)
392
- when 92 then
393
- LocalVariableTargetNode.new(load_required_constant, load_varint, location)
394
- when 93 then
395
- LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
396
- when 94 then
397
- MatchLastLineNode.new(load_location, load_location, load_location, load_string, load_varint, location)
398
- when 95 then
399
- MatchPredicateNode.new(load_node, load_node, load_location, location)
400
- when 96 then
401
- MatchRequiredNode.new(load_node, load_node, load_location, location)
402
- when 97 then
403
- MatchWriteNode.new(load_node, Array.new(load_varint) { load_required_constant }, location)
404
- when 98 then
405
- MissingNode.new(location)
406
- when 99 then
407
- ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
408
- when 100 then
409
- MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
410
- when 101 then
411
- MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
412
- when 102 then
413
- NextNode.new(load_optional_node, load_location, location)
414
- when 103 then
415
- NilNode.new(location)
416
- when 104 then
417
- NoKeywordsParameterNode.new(load_location, load_location, location)
418
- when 105 then
419
- NumberedReferenceReadNode.new(load_varint, location)
420
- when 106 then
421
- OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
422
- when 107 then
423
- OrNode.new(load_node, load_node, load_location, location)
424
- when 108 then
425
- ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
426
- when 109 then
427
- ParenthesesNode.new(load_optional_node, load_location, load_location, location)
428
- when 110 then
429
- PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
430
- when 111 then
431
- PinnedVariableNode.new(load_node, load_location, location)
432
- when 112 then
433
- PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
434
- when 113 then
435
- PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
436
- when 114 then
437
- ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
438
- when 115 then
439
- RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
440
- when 116 then
441
- RationalNode.new(load_node, location)
442
- when 117 then
443
- RedoNode.new(location)
444
- when 118 then
445
- RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
446
- when 119 then
447
- RequiredDestructuredParameterNode.new(Array.new(load_varint) { load_node }, load_location, load_location, location)
448
- when 120 then
449
- RequiredParameterNode.new(load_required_constant, location)
450
- when 121 then
451
- RescueModifierNode.new(load_node, load_location, load_node, location)
452
- when 122 then
453
- RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
454
- when 123 then
455
- RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
456
- when 124 then
457
- RetryNode.new(location)
458
- when 125 then
459
- ReturnNode.new(load_location, load_optional_node, location)
460
- when 126 then
461
- SelfNode.new(location)
462
- when 127 then
463
- SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
464
- when 128 then
465
- SourceEncodingNode.new(location)
466
- when 129 then
467
- SourceFileNode.new(load_string, location)
468
- when 130 then
469
- SourceLineNode.new(location)
470
- when 131 then
471
- SplatNode.new(load_location, load_optional_node, location)
472
- when 132 then
473
- StatementsNode.new(Array.new(load_varint) { load_node }, location)
474
- when 133 then
475
- StringConcatNode.new(load_node, load_node, location)
476
- when 134 then
477
- StringNode.new(load_varint, load_optional_location, load_location, load_optional_location, load_string, location)
478
- when 135 then
479
- SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
480
- when 136 then
481
- SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
482
- when 137 then
483
- TrueNode.new(location)
484
- when 138 then
485
- UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
486
- when 139 then
487
- UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
488
- when 140 then
489
- UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
490
- when 141 then
491
- WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
492
- when 142 then
493
- WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
494
- when 143 then
495
- XStringNode.new(load_location, load_location, load_location, load_string, location)
496
- when 144 then
497
- YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
246
+ case type
247
+ when 1 then
248
+ AliasGlobalVariableNode.new(load_node, load_node, load_location, location)
249
+ when 2 then
250
+ AliasMethodNode.new(load_node, load_node, load_location, location)
251
+ when 3 then
252
+ AlternationPatternNode.new(load_node, load_node, load_location, location)
253
+ when 4 then
254
+ AndNode.new(load_node, load_node, load_location, location)
255
+ when 5 then
256
+ ArgumentsNode.new(Array.new(load_varint) { load_node }, load_varint, location)
257
+ when 6 then
258
+ ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
259
+ when 7 then
260
+ ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
261
+ when 8 then
262
+ AssocNode.new(load_node, load_optional_node, load_optional_location, location)
263
+ when 9 then
264
+ AssocSplatNode.new(load_optional_node, load_location, location)
265
+ when 10 then
266
+ BackReferenceReadNode.new(load_required_constant, location)
267
+ when 11 then
268
+ BeginNode.new(load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location, location)
269
+ when 12 then
270
+ BlockArgumentNode.new(load_optional_node, load_location, location)
271
+ when 13 then
272
+ BlockLocalVariableNode.new(load_required_constant, location)
273
+ when 14 then
274
+ BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
275
+ when 15 then
276
+ BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
277
+ when 16 then
278
+ BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
279
+ when 17 then
280
+ BreakNode.new(load_optional_node, load_location, location)
281
+ when 18 then
282
+ CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
283
+ when 19 then
284
+ CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_required_constant, location)
285
+ when 20 then
286
+ CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
287
+ when 21 then
288
+ CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
289
+ when 22 then
290
+ CapturePatternNode.new(load_node, load_node, load_location, location)
291
+ when 23 then
292
+ CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
293
+ when 24 then
294
+ ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
295
+ when 25 then
296
+ ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
297
+ when 26 then
298
+ ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
299
+ when 27 then
300
+ ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
301
+ when 28 then
302
+ ClassVariableReadNode.new(load_required_constant, location)
303
+ when 29 then
304
+ ClassVariableTargetNode.new(load_required_constant, location)
305
+ when 30 then
306
+ ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
307
+ when 31 then
308
+ ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
309
+ when 32 then
310
+ ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
311
+ when 33 then
312
+ ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
313
+ when 34 then
314
+ ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
315
+ when 35 then
316
+ ConstantPathNode.new(load_optional_node, load_node, load_location, location)
317
+ when 36 then
318
+ ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
319
+ when 37 then
320
+ ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
321
+ when 38 then
322
+ ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
323
+ when 39 then
324
+ ConstantPathWriteNode.new(load_node, load_location, load_node, location)
325
+ when 40 then
326
+ ConstantReadNode.new(load_required_constant, location)
327
+ when 41 then
328
+ ConstantTargetNode.new(load_required_constant, location)
329
+ when 42 then
330
+ ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
331
+ when 43 then
332
+ load_serialized_length
333
+ DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
334
+ when 44 then
335
+ DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
336
+ when 45 then
337
+ ElseNode.new(load_location, load_optional_node, load_optional_location, location)
338
+ when 46 then
339
+ EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
340
+ when 47 then
341
+ EmbeddedVariableNode.new(load_location, load_node, location)
342
+ when 48 then
343
+ EnsureNode.new(load_location, load_optional_node, load_location, location)
344
+ when 49 then
345
+ FalseNode.new(location)
346
+ when 50 then
347
+ FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
348
+ when 51 then
349
+ FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
350
+ when 52 then
351
+ FloatNode.new(location)
352
+ when 53 then
353
+ ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
354
+ when 54 then
355
+ ForwardingArgumentsNode.new(location)
356
+ when 55 then
357
+ ForwardingParameterNode.new(location)
358
+ when 56 then
359
+ ForwardingSuperNode.new(load_optional_node, location)
360
+ when 57 then
361
+ GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
362
+ when 58 then
363
+ GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
364
+ when 59 then
365
+ GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
366
+ when 60 then
367
+ GlobalVariableReadNode.new(load_required_constant, location)
368
+ when 61 then
369
+ GlobalVariableTargetNode.new(load_required_constant, location)
370
+ when 62 then
371
+ GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
372
+ when 63 then
373
+ HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
374
+ when 64 then
375
+ HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
376
+ when 65 then
377
+ IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
378
+ when 66 then
379
+ ImaginaryNode.new(load_node, location)
380
+ when 67 then
381
+ ImplicitNode.new(load_node, location)
382
+ when 68 then
383
+ InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
384
+ when 69 then
385
+ IndexAndWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
386
+ when 70 then
387
+ IndexOperatorWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_required_constant, load_location, load_node, location)
388
+ when 71 then
389
+ IndexOrWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
390
+ when 72 then
391
+ InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
392
+ when 73 then
393
+ InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
394
+ when 74 then
395
+ InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
396
+ when 75 then
397
+ InstanceVariableReadNode.new(load_required_constant, location)
398
+ when 76 then
399
+ InstanceVariableTargetNode.new(load_required_constant, location)
400
+ when 77 then
401
+ InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
402
+ when 78 then
403
+ IntegerNode.new(load_varint, location)
404
+ when 79 then
405
+ InterpolatedMatchLastLineNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
406
+ when 80 then
407
+ InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
408
+ when 81 then
409
+ InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
410
+ when 82 then
411
+ InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
412
+ when 83 then
413
+ InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
414
+ when 84 then
415
+ KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
416
+ when 85 then
417
+ KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
418
+ when 86 then
419
+ LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
420
+ when 87 then
421
+ LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
422
+ when 88 then
423
+ LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
424
+ when 89 then
425
+ LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
426
+ when 90 then
427
+ LocalVariableReadNode.new(load_required_constant, load_varint, location)
428
+ when 91 then
429
+ LocalVariableTargetNode.new(load_required_constant, load_varint, location)
430
+ when 92 then
431
+ LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
432
+ when 93 then
433
+ MatchLastLineNode.new(load_location, load_location, load_location, load_string, load_varint, location)
434
+ when 94 then
435
+ MatchPredicateNode.new(load_node, load_node, load_location, location)
436
+ when 95 then
437
+ MatchRequiredNode.new(load_node, load_node, load_location, location)
438
+ when 96 then
439
+ MatchWriteNode.new(load_node, Array.new(load_varint) { load_required_constant }, location)
440
+ when 97 then
441
+ MissingNode.new(location)
442
+ when 98 then
443
+ ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
444
+ when 99 then
445
+ MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
446
+ when 100 then
447
+ MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
448
+ when 101 then
449
+ NextNode.new(load_optional_node, load_location, location)
450
+ when 102 then
451
+ NilNode.new(location)
452
+ when 103 then
453
+ NoKeywordsParameterNode.new(load_location, load_location, location)
454
+ when 104 then
455
+ NumberedReferenceReadNode.new(load_varint, location)
456
+ when 105 then
457
+ OptionalKeywordParameterNode.new(load_required_constant, load_location, load_node, location)
458
+ when 106 then
459
+ OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
460
+ when 107 then
461
+ OrNode.new(load_node, load_node, load_location, location)
462
+ when 108 then
463
+ ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
464
+ when 109 then
465
+ ParenthesesNode.new(load_optional_node, load_location, load_location, location)
466
+ when 110 then
467
+ PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
468
+ when 111 then
469
+ PinnedVariableNode.new(load_node, load_location, location)
470
+ when 112 then
471
+ PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
472
+ when 113 then
473
+ PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
474
+ when 114 then
475
+ ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
476
+ when 115 then
477
+ RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
478
+ when 116 then
479
+ RationalNode.new(load_node, location)
480
+ when 117 then
481
+ RedoNode.new(location)
482
+ when 118 then
483
+ RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
484
+ when 119 then
485
+ RequiredKeywordParameterNode.new(load_required_constant, load_location, location)
486
+ when 120 then
487
+ RequiredParameterNode.new(load_required_constant, location)
488
+ when 121 then
489
+ RescueModifierNode.new(load_node, load_location, load_node, location)
490
+ when 122 then
491
+ RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
492
+ when 123 then
493
+ RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
494
+ when 124 then
495
+ RetryNode.new(location)
496
+ when 125 then
497
+ ReturnNode.new(load_location, load_optional_node, location)
498
+ when 126 then
499
+ SelfNode.new(location)
500
+ when 127 then
501
+ SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
502
+ when 128 then
503
+ SourceEncodingNode.new(location)
504
+ when 129 then
505
+ SourceFileNode.new(load_string, location)
506
+ when 130 then
507
+ SourceLineNode.new(location)
508
+ when 131 then
509
+ SplatNode.new(load_location, load_optional_node, location)
510
+ when 132 then
511
+ StatementsNode.new(Array.new(load_varint) { load_node }, location)
512
+ when 133 then
513
+ StringConcatNode.new(load_node, load_node, location)
514
+ when 134 then
515
+ StringNode.new(load_varint, load_optional_location, load_location, load_optional_location, load_string, location)
516
+ when 135 then
517
+ SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
518
+ when 136 then
519
+ SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
520
+ when 137 then
521
+ TrueNode.new(location)
522
+ when 138 then
523
+ UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
524
+ when 139 then
525
+ UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
526
+ when 140 then
527
+ UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
528
+ when 141 then
529
+ WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
530
+ when 142 then
531
+ WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
532
+ when 143 then
533
+ XStringNode.new(load_location, load_location, load_location, load_string, location)
534
+ when 144 then
535
+ YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
536
+ end
537
+ end
538
+ else
539
+ def load_node
540
+ type = io.getbyte
541
+ @load_node_lambdas[type].call
542
+ end
543
+
544
+ def define_load_node_lambdas
545
+ @load_node_lambdas = [
546
+ nil,
547
+ -> {
548
+ location = load_location
549
+ AliasGlobalVariableNode.new(load_node, load_node, load_location, location)
550
+ },
551
+ -> {
552
+ location = load_location
553
+ AliasMethodNode.new(load_node, load_node, load_location, location)
554
+ },
555
+ -> {
556
+ location = load_location
557
+ AlternationPatternNode.new(load_node, load_node, load_location, location)
558
+ },
559
+ -> {
560
+ location = load_location
561
+ AndNode.new(load_node, load_node, load_location, location)
562
+ },
563
+ -> {
564
+ location = load_location
565
+ ArgumentsNode.new(Array.new(load_varint) { load_node }, load_varint, location)
566
+ },
567
+ -> {
568
+ location = load_location
569
+ ArrayNode.new(Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
570
+ },
571
+ -> {
572
+ location = load_location
573
+ ArrayPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
574
+ },
575
+ -> {
576
+ location = load_location
577
+ AssocNode.new(load_node, load_optional_node, load_optional_location, location)
578
+ },
579
+ -> {
580
+ location = load_location
581
+ AssocSplatNode.new(load_optional_node, load_location, location)
582
+ },
583
+ -> {
584
+ location = load_location
585
+ BackReferenceReadNode.new(load_required_constant, location)
586
+ },
587
+ -> {
588
+ location = load_location
589
+ BeginNode.new(load_optional_location, load_optional_node, load_optional_node, load_optional_node, load_optional_node, load_optional_location, location)
590
+ },
591
+ -> {
592
+ location = load_location
593
+ BlockArgumentNode.new(load_optional_node, load_location, location)
594
+ },
595
+ -> {
596
+ location = load_location
597
+ BlockLocalVariableNode.new(load_required_constant, location)
598
+ },
599
+ -> {
600
+ location = load_location
601
+ BlockNode.new(Array.new(load_varint) { load_required_constant }, load_optional_node, load_optional_node, load_location, load_location, location)
602
+ },
603
+ -> {
604
+ location = load_location
605
+ BlockParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
606
+ },
607
+ -> {
608
+ location = load_location
609
+ BlockParametersNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
610
+ },
611
+ -> {
612
+ location = load_location
613
+ BreakNode.new(load_optional_node, load_location, location)
614
+ },
615
+ -> {
616
+ location = load_location
617
+ CallAndWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
618
+ },
619
+ -> {
620
+ location = load_location
621
+ CallNode.new(load_optional_node, load_optional_location, load_optional_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, load_varint, load_required_constant, location)
622
+ },
623
+ -> {
624
+ location = load_location
625
+ CallOperatorWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_required_constant, load_location, load_node, location)
626
+ },
627
+ -> {
628
+ location = load_location
629
+ CallOrWriteNode.new(load_optional_node, load_optional_location, load_optional_location, load_varint, load_required_constant, load_required_constant, load_location, load_node, location)
630
+ },
631
+ -> {
632
+ location = load_location
633
+ CapturePatternNode.new(load_node, load_node, load_location, location)
634
+ },
635
+ -> {
636
+ location = load_location
637
+ CaseNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_location, load_location, location)
638
+ },
639
+ -> {
640
+ location = load_location
641
+ ClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_location, load_optional_node, load_optional_node, load_location, load_required_constant, location)
642
+ },
643
+ -> {
644
+ location = load_location
645
+ ClassVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
646
+ },
647
+ -> {
648
+ location = load_location
649
+ ClassVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
650
+ },
651
+ -> {
652
+ location = load_location
653
+ ClassVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
654
+ },
655
+ -> {
656
+ location = load_location
657
+ ClassVariableReadNode.new(load_required_constant, location)
658
+ },
659
+ -> {
660
+ location = load_location
661
+ ClassVariableTargetNode.new(load_required_constant, location)
662
+ },
663
+ -> {
664
+ location = load_location
665
+ ClassVariableWriteNode.new(load_required_constant, load_location, load_node, load_optional_location, location)
666
+ },
667
+ -> {
668
+ location = load_location
669
+ ConstantAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
670
+ },
671
+ -> {
672
+ location = load_location
673
+ ConstantOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
674
+ },
675
+ -> {
676
+ location = load_location
677
+ ConstantOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
678
+ },
679
+ -> {
680
+ location = load_location
681
+ ConstantPathAndWriteNode.new(load_node, load_location, load_node, location)
682
+ },
683
+ -> {
684
+ location = load_location
685
+ ConstantPathNode.new(load_optional_node, load_node, load_location, location)
686
+ },
687
+ -> {
688
+ location = load_location
689
+ ConstantPathOperatorWriteNode.new(load_node, load_location, load_node, load_required_constant, location)
690
+ },
691
+ -> {
692
+ location = load_location
693
+ ConstantPathOrWriteNode.new(load_node, load_location, load_node, location)
694
+ },
695
+ -> {
696
+ location = load_location
697
+ ConstantPathTargetNode.new(load_optional_node, load_node, load_location, location)
698
+ },
699
+ -> {
700
+ location = load_location
701
+ ConstantPathWriteNode.new(load_node, load_location, load_node, location)
702
+ },
703
+ -> {
704
+ location = load_location
705
+ ConstantReadNode.new(load_required_constant, location)
706
+ },
707
+ -> {
708
+ location = load_location
709
+ ConstantTargetNode.new(load_required_constant, location)
710
+ },
711
+ -> {
712
+ location = load_location
713
+ ConstantWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
714
+ },
715
+ -> {
716
+ location = load_location
717
+ load_serialized_length
718
+ DefNode.new(load_required_constant, load_location, load_optional_node, load_optional_node, load_optional_node, Array.new(load_varint) { load_required_constant }, load_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, load_optional_location, location)
719
+ },
720
+ -> {
721
+ location = load_location
722
+ DefinedNode.new(load_optional_location, load_node, load_optional_location, load_location, location)
723
+ },
724
+ -> {
725
+ location = load_location
726
+ ElseNode.new(load_location, load_optional_node, load_optional_location, location)
727
+ },
728
+ -> {
729
+ location = load_location
730
+ EmbeddedStatementsNode.new(load_location, load_optional_node, load_location, location)
731
+ },
732
+ -> {
733
+ location = load_location
734
+ EmbeddedVariableNode.new(load_location, load_node, location)
735
+ },
736
+ -> {
737
+ location = load_location
738
+ EnsureNode.new(load_location, load_optional_node, load_location, location)
739
+ },
740
+ -> {
741
+ location = load_location
742
+ FalseNode.new(location)
743
+ },
744
+ -> {
745
+ location = load_location
746
+ FindPatternNode.new(load_optional_node, load_node, Array.new(load_varint) { load_node }, load_node, load_optional_location, load_optional_location, location)
747
+ },
748
+ -> {
749
+ location = load_location
750
+ FlipFlopNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
751
+ },
752
+ -> {
753
+ location = load_location
754
+ FloatNode.new(location)
755
+ },
756
+ -> {
757
+ location = load_location
758
+ ForNode.new(load_node, load_node, load_optional_node, load_location, load_location, load_optional_location, load_location, location)
759
+ },
760
+ -> {
761
+ location = load_location
762
+ ForwardingArgumentsNode.new(location)
763
+ },
764
+ -> {
765
+ location = load_location
766
+ ForwardingParameterNode.new(location)
767
+ },
768
+ -> {
769
+ location = load_location
770
+ ForwardingSuperNode.new(load_optional_node, location)
771
+ },
772
+ -> {
773
+ location = load_location
774
+ GlobalVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
775
+ },
776
+ -> {
777
+ location = load_location
778
+ GlobalVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
779
+ },
780
+ -> {
781
+ location = load_location
782
+ GlobalVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
783
+ },
784
+ -> {
785
+ location = load_location
786
+ GlobalVariableReadNode.new(load_required_constant, location)
787
+ },
788
+ -> {
789
+ location = load_location
790
+ GlobalVariableTargetNode.new(load_required_constant, location)
791
+ },
792
+ -> {
793
+ location = load_location
794
+ GlobalVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
795
+ },
796
+ -> {
797
+ location = load_location
798
+ HashNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
799
+ },
800
+ -> {
801
+ location = load_location
802
+ HashPatternNode.new(load_optional_node, Array.new(load_varint) { load_node }, load_optional_node, load_optional_location, load_optional_location, location)
803
+ },
804
+ -> {
805
+ location = load_location
806
+ IfNode.new(load_optional_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
807
+ },
808
+ -> {
809
+ location = load_location
810
+ ImaginaryNode.new(load_node, location)
811
+ },
812
+ -> {
813
+ location = load_location
814
+ ImplicitNode.new(load_node, location)
815
+ },
816
+ -> {
817
+ location = load_location
818
+ InNode.new(load_node, load_optional_node, load_location, load_optional_location, location)
819
+ },
820
+ -> {
821
+ location = load_location
822
+ IndexAndWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
823
+ },
824
+ -> {
825
+ location = load_location
826
+ IndexOperatorWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_required_constant, load_location, load_node, location)
827
+ },
828
+ -> {
829
+ location = load_location
830
+ IndexOrWriteNode.new(load_optional_node, load_optional_location, load_location, load_optional_node, load_location, load_optional_node, load_varint, load_location, load_node, location)
831
+ },
832
+ -> {
833
+ location = load_location
834
+ InstanceVariableAndWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
835
+ },
836
+ -> {
837
+ location = load_location
838
+ InstanceVariableOperatorWriteNode.new(load_required_constant, load_location, load_location, load_node, load_required_constant, location)
839
+ },
840
+ -> {
841
+ location = load_location
842
+ InstanceVariableOrWriteNode.new(load_required_constant, load_location, load_location, load_node, location)
843
+ },
844
+ -> {
845
+ location = load_location
846
+ InstanceVariableReadNode.new(load_required_constant, location)
847
+ },
848
+ -> {
849
+ location = load_location
850
+ InstanceVariableTargetNode.new(load_required_constant, location)
851
+ },
852
+ -> {
853
+ location = load_location
854
+ InstanceVariableWriteNode.new(load_required_constant, load_location, load_node, load_location, location)
855
+ },
856
+ -> {
857
+ location = load_location
858
+ IntegerNode.new(load_varint, location)
859
+ },
860
+ -> {
861
+ location = load_location
862
+ InterpolatedMatchLastLineNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
863
+ },
864
+ -> {
865
+ location = load_location
866
+ InterpolatedRegularExpressionNode.new(load_location, Array.new(load_varint) { load_node }, load_location, load_varint, location)
867
+ },
868
+ -> {
869
+ location = load_location
870
+ InterpolatedStringNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
871
+ },
872
+ -> {
873
+ location = load_location
874
+ InterpolatedSymbolNode.new(load_optional_location, Array.new(load_varint) { load_node }, load_optional_location, location)
875
+ },
876
+ -> {
877
+ location = load_location
878
+ InterpolatedXStringNode.new(load_location, Array.new(load_varint) { load_node }, load_location, location)
879
+ },
880
+ -> {
881
+ location = load_location
882
+ KeywordHashNode.new(Array.new(load_varint) { load_node }, location)
883
+ },
884
+ -> {
885
+ location = load_location
886
+ KeywordRestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
887
+ },
888
+ -> {
889
+ location = load_location
890
+ LambdaNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_location, load_optional_node, load_optional_node, location)
891
+ },
892
+ -> {
893
+ location = load_location
894
+ LocalVariableAndWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
895
+ },
896
+ -> {
897
+ location = load_location
898
+ LocalVariableOperatorWriteNode.new(load_location, load_location, load_node, load_required_constant, load_required_constant, load_varint, location)
899
+ },
900
+ -> {
901
+ location = load_location
902
+ LocalVariableOrWriteNode.new(load_location, load_location, load_node, load_required_constant, load_varint, location)
903
+ },
904
+ -> {
905
+ location = load_location
906
+ LocalVariableReadNode.new(load_required_constant, load_varint, location)
907
+ },
908
+ -> {
909
+ location = load_location
910
+ LocalVariableTargetNode.new(load_required_constant, load_varint, location)
911
+ },
912
+ -> {
913
+ location = load_location
914
+ LocalVariableWriteNode.new(load_required_constant, load_varint, load_location, load_node, load_location, location)
915
+ },
916
+ -> {
917
+ location = load_location
918
+ MatchLastLineNode.new(load_location, load_location, load_location, load_string, load_varint, location)
919
+ },
920
+ -> {
921
+ location = load_location
922
+ MatchPredicateNode.new(load_node, load_node, load_location, location)
923
+ },
924
+ -> {
925
+ location = load_location
926
+ MatchRequiredNode.new(load_node, load_node, load_location, location)
927
+ },
928
+ -> {
929
+ location = load_location
930
+ MatchWriteNode.new(load_node, Array.new(load_varint) { load_required_constant }, location)
931
+ },
932
+ -> {
933
+ location = load_location
934
+ MissingNode.new(location)
935
+ },
936
+ -> {
937
+ location = load_location
938
+ ModuleNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_node, load_optional_node, load_location, load_required_constant, location)
939
+ },
940
+ -> {
941
+ location = load_location
942
+ MultiTargetNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, location)
943
+ },
944
+ -> {
945
+ location = load_location
946
+ MultiWriteNode.new(Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, load_optional_location, load_optional_location, load_location, load_node, location)
947
+ },
948
+ -> {
949
+ location = load_location
950
+ NextNode.new(load_optional_node, load_location, location)
951
+ },
952
+ -> {
953
+ location = load_location
954
+ NilNode.new(location)
955
+ },
956
+ -> {
957
+ location = load_location
958
+ NoKeywordsParameterNode.new(load_location, load_location, location)
959
+ },
960
+ -> {
961
+ location = load_location
962
+ NumberedReferenceReadNode.new(load_varint, location)
963
+ },
964
+ -> {
965
+ location = load_location
966
+ OptionalKeywordParameterNode.new(load_required_constant, load_location, load_node, location)
967
+ },
968
+ -> {
969
+ location = load_location
970
+ OptionalParameterNode.new(load_required_constant, load_location, load_location, load_node, location)
971
+ },
972
+ -> {
973
+ location = load_location
974
+ OrNode.new(load_node, load_node, load_location, location)
975
+ },
976
+ -> {
977
+ location = load_location
978
+ ParametersNode.new(Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, Array.new(load_varint) { load_node }, Array.new(load_varint) { load_node }, load_optional_node, load_optional_node, location)
979
+ },
980
+ -> {
981
+ location = load_location
982
+ ParenthesesNode.new(load_optional_node, load_location, load_location, location)
983
+ },
984
+ -> {
985
+ location = load_location
986
+ PinnedExpressionNode.new(load_node, load_location, load_location, load_location, location)
987
+ },
988
+ -> {
989
+ location = load_location
990
+ PinnedVariableNode.new(load_node, load_location, location)
991
+ },
992
+ -> {
993
+ location = load_location
994
+ PostExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
995
+ },
996
+ -> {
997
+ location = load_location
998
+ PreExecutionNode.new(load_optional_node, load_location, load_location, load_location, location)
999
+ },
1000
+ -> {
1001
+ location = load_location
1002
+ ProgramNode.new(Array.new(load_varint) { load_required_constant }, load_node, location)
1003
+ },
1004
+ -> {
1005
+ location = load_location
1006
+ RangeNode.new(load_optional_node, load_optional_node, load_location, load_varint, location)
1007
+ },
1008
+ -> {
1009
+ location = load_location
1010
+ RationalNode.new(load_node, location)
1011
+ },
1012
+ -> {
1013
+ location = load_location
1014
+ RedoNode.new(location)
1015
+ },
1016
+ -> {
1017
+ location = load_location
1018
+ RegularExpressionNode.new(load_location, load_location, load_location, load_string, load_varint, location)
1019
+ },
1020
+ -> {
1021
+ location = load_location
1022
+ RequiredKeywordParameterNode.new(load_required_constant, load_location, location)
1023
+ },
1024
+ -> {
1025
+ location = load_location
1026
+ RequiredParameterNode.new(load_required_constant, location)
1027
+ },
1028
+ -> {
1029
+ location = load_location
1030
+ RescueModifierNode.new(load_node, load_location, load_node, location)
1031
+ },
1032
+ -> {
1033
+ location = load_location
1034
+ RescueNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_location, load_optional_node, load_optional_node, load_optional_node, location)
1035
+ },
1036
+ -> {
1037
+ location = load_location
1038
+ RestParameterNode.new(load_optional_constant, load_optional_location, load_location, location)
1039
+ },
1040
+ -> {
1041
+ location = load_location
1042
+ RetryNode.new(location)
1043
+ },
1044
+ -> {
1045
+ location = load_location
1046
+ ReturnNode.new(load_location, load_optional_node, location)
1047
+ },
1048
+ -> {
1049
+ location = load_location
1050
+ SelfNode.new(location)
1051
+ },
1052
+ -> {
1053
+ location = load_location
1054
+ SingletonClassNode.new(Array.new(load_varint) { load_required_constant }, load_location, load_location, load_node, load_optional_node, load_location, location)
1055
+ },
1056
+ -> {
1057
+ location = load_location
1058
+ SourceEncodingNode.new(location)
1059
+ },
1060
+ -> {
1061
+ location = load_location
1062
+ SourceFileNode.new(load_string, location)
1063
+ },
1064
+ -> {
1065
+ location = load_location
1066
+ SourceLineNode.new(location)
1067
+ },
1068
+ -> {
1069
+ location = load_location
1070
+ SplatNode.new(load_location, load_optional_node, location)
1071
+ },
1072
+ -> {
1073
+ location = load_location
1074
+ StatementsNode.new(Array.new(load_varint) { load_node }, location)
1075
+ },
1076
+ -> {
1077
+ location = load_location
1078
+ StringConcatNode.new(load_node, load_node, location)
1079
+ },
1080
+ -> {
1081
+ location = load_location
1082
+ StringNode.new(load_varint, load_optional_location, load_location, load_optional_location, load_string, location)
1083
+ },
1084
+ -> {
1085
+ location = load_location
1086
+ SuperNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, load_optional_node, location)
1087
+ },
1088
+ -> {
1089
+ location = load_location
1090
+ SymbolNode.new(load_optional_location, load_optional_location, load_optional_location, load_string, location)
1091
+ },
1092
+ -> {
1093
+ location = load_location
1094
+ TrueNode.new(location)
1095
+ },
1096
+ -> {
1097
+ location = load_location
1098
+ UndefNode.new(Array.new(load_varint) { load_node }, load_location, location)
1099
+ },
1100
+ -> {
1101
+ location = load_location
1102
+ UnlessNode.new(load_location, load_node, load_optional_node, load_optional_node, load_optional_location, location)
1103
+ },
1104
+ -> {
1105
+ location = load_location
1106
+ UntilNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
1107
+ },
1108
+ -> {
1109
+ location = load_location
1110
+ WhenNode.new(load_location, Array.new(load_varint) { load_node }, load_optional_node, location)
1111
+ },
1112
+ -> {
1113
+ location = load_location
1114
+ WhileNode.new(load_location, load_optional_location, load_node, load_optional_node, load_varint, location)
1115
+ },
1116
+ -> {
1117
+ location = load_location
1118
+ XStringNode.new(load_location, load_location, load_location, load_string, location)
1119
+ },
1120
+ -> {
1121
+ location = load_location
1122
+ YieldNode.new(load_location, load_optional_location, load_optional_node, load_optional_location, location)
1123
+ },
1124
+ ]
498
1125
  end
499
1126
  end
500
1127
  end
501
1128
 
1129
+ # The token types that can be indexed by their enum values.
502
1130
  TOKEN_TYPES = [
503
1131
  nil,
504
1132
  :EOF,