prism 0.15.1 → 0.17.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.
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,