prism 0.13.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 (95) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +172 -0
  3. data/CODE_OF_CONDUCT.md +76 -0
  4. data/CONTRIBUTING.md +62 -0
  5. data/LICENSE.md +7 -0
  6. data/Makefile +84 -0
  7. data/README.md +89 -0
  8. data/config.yml +2481 -0
  9. data/docs/build_system.md +74 -0
  10. data/docs/building.md +22 -0
  11. data/docs/configuration.md +60 -0
  12. data/docs/design.md +53 -0
  13. data/docs/encoding.md +117 -0
  14. data/docs/fuzzing.md +93 -0
  15. data/docs/heredocs.md +36 -0
  16. data/docs/mapping.md +117 -0
  17. data/docs/ripper.md +36 -0
  18. data/docs/ruby_api.md +25 -0
  19. data/docs/serialization.md +181 -0
  20. data/docs/testing.md +55 -0
  21. data/ext/prism/api_node.c +4725 -0
  22. data/ext/prism/api_pack.c +256 -0
  23. data/ext/prism/extconf.rb +136 -0
  24. data/ext/prism/extension.c +626 -0
  25. data/ext/prism/extension.h +18 -0
  26. data/include/prism/ast.h +1932 -0
  27. data/include/prism/defines.h +45 -0
  28. data/include/prism/diagnostic.h +231 -0
  29. data/include/prism/enc/pm_encoding.h +95 -0
  30. data/include/prism/node.h +41 -0
  31. data/include/prism/pack.h +141 -0
  32. data/include/prism/parser.h +418 -0
  33. data/include/prism/regexp.h +19 -0
  34. data/include/prism/unescape.h +48 -0
  35. data/include/prism/util/pm_buffer.h +51 -0
  36. data/include/prism/util/pm_char.h +91 -0
  37. data/include/prism/util/pm_constant_pool.h +78 -0
  38. data/include/prism/util/pm_list.h +67 -0
  39. data/include/prism/util/pm_memchr.h +14 -0
  40. data/include/prism/util/pm_newline_list.h +61 -0
  41. data/include/prism/util/pm_state_stack.h +24 -0
  42. data/include/prism/util/pm_string.h +61 -0
  43. data/include/prism/util/pm_string_list.h +25 -0
  44. data/include/prism/util/pm_strpbrk.h +29 -0
  45. data/include/prism/version.h +4 -0
  46. data/include/prism.h +82 -0
  47. data/lib/prism/compiler.rb +465 -0
  48. data/lib/prism/debug.rb +157 -0
  49. data/lib/prism/desugar_compiler.rb +206 -0
  50. data/lib/prism/dispatcher.rb +2051 -0
  51. data/lib/prism/dsl.rb +750 -0
  52. data/lib/prism/ffi.rb +251 -0
  53. data/lib/prism/lex_compat.rb +838 -0
  54. data/lib/prism/mutation_compiler.rb +718 -0
  55. data/lib/prism/node.rb +14540 -0
  56. data/lib/prism/node_ext.rb +55 -0
  57. data/lib/prism/node_inspector.rb +68 -0
  58. data/lib/prism/pack.rb +185 -0
  59. data/lib/prism/parse_result/comments.rb +172 -0
  60. data/lib/prism/parse_result/newlines.rb +60 -0
  61. data/lib/prism/parse_result.rb +266 -0
  62. data/lib/prism/pattern.rb +239 -0
  63. data/lib/prism/ripper_compat.rb +174 -0
  64. data/lib/prism/serialize.rb +662 -0
  65. data/lib/prism/visitor.rb +470 -0
  66. data/lib/prism.rb +64 -0
  67. data/prism.gemspec +113 -0
  68. data/src/diagnostic.c +287 -0
  69. data/src/enc/pm_big5.c +52 -0
  70. data/src/enc/pm_euc_jp.c +58 -0
  71. data/src/enc/pm_gbk.c +61 -0
  72. data/src/enc/pm_shift_jis.c +56 -0
  73. data/src/enc/pm_tables.c +507 -0
  74. data/src/enc/pm_unicode.c +2324 -0
  75. data/src/enc/pm_windows_31j.c +56 -0
  76. data/src/node.c +2633 -0
  77. data/src/pack.c +493 -0
  78. data/src/prettyprint.c +2136 -0
  79. data/src/prism.c +14587 -0
  80. data/src/regexp.c +580 -0
  81. data/src/serialize.c +1899 -0
  82. data/src/token_type.c +349 -0
  83. data/src/unescape.c +637 -0
  84. data/src/util/pm_buffer.c +103 -0
  85. data/src/util/pm_char.c +272 -0
  86. data/src/util/pm_constant_pool.c +252 -0
  87. data/src/util/pm_list.c +41 -0
  88. data/src/util/pm_memchr.c +33 -0
  89. data/src/util/pm_newline_list.c +134 -0
  90. data/src/util/pm_state_stack.c +19 -0
  91. data/src/util/pm_string.c +200 -0
  92. data/src/util/pm_string_list.c +29 -0
  93. data/src/util/pm_strncasecmp.c +17 -0
  94. data/src/util/pm_strpbrk.c +66 -0
  95. metadata +138 -0
data/lib/prism/dsl.rb ADDED
@@ -0,0 +1,750 @@
1
+ # frozen_string_literal: true
2
+ =begin
3
+ This file is generated by the templates/template.rb script and should not be
4
+ modified manually. See templates/lib/prism/dsl.rb.erb
5
+ if you are looking to modify the template
6
+ =end
7
+
8
+ module Prism
9
+ # The DSL module provides a set of methods that can be used to create prism
10
+ # nodes in a more concise manner. For example, instead of writing:
11
+ #
12
+ # source = Prism::Source.new("[1]")
13
+ #
14
+ # Prism::ArrayNode.new(
15
+ # [
16
+ # Prism::IntegerNode.new(
17
+ # Prism::IntegerBaseFlags::DECIMAL,
18
+ # Prism::Location.new(source, 1, 1),
19
+ # )
20
+ # ],
21
+ # Prism::Location.new(source, 0, 1),
22
+ # Prism::Location.new(source, 2, 1)
23
+ # )
24
+ #
25
+ # you could instead write:
26
+ #
27
+ # source = Prism::Source.new("[1]")
28
+ #
29
+ # ArrayNode(
30
+ # IntegerNode(Prism::IntegerBaseFlags::DECIMAL, Location(source, 1, 1))),
31
+ # Location(source, 0, 1),
32
+ # Location(source, 2, 1)
33
+ # )
34
+ #
35
+ # This is mostly helpful in the context of writing tests, but can also be used
36
+ # to generate trees programmatically.
37
+ module DSL
38
+ private
39
+
40
+ # Create a new Location object
41
+ def Location(source = nil, start_offset = 0, length = 0)
42
+ Location.new(source, start_offset, length)
43
+ end
44
+
45
+ # Create a new AliasGlobalVariableNode node
46
+ def AliasGlobalVariableNode(new_name, old_name, keyword_loc, location = Location())
47
+ AliasGlobalVariableNode.new(new_name, old_name, keyword_loc, location)
48
+ end
49
+
50
+ # Create a new AliasMethodNode node
51
+ def AliasMethodNode(new_name, old_name, keyword_loc, location = Location())
52
+ AliasMethodNode.new(new_name, old_name, keyword_loc, location)
53
+ end
54
+
55
+ # Create a new AlternationPatternNode node
56
+ def AlternationPatternNode(left, right, operator_loc, location = Location())
57
+ AlternationPatternNode.new(left, right, operator_loc, location)
58
+ end
59
+
60
+ # Create a new AndNode node
61
+ def AndNode(left, right, operator_loc, location = Location())
62
+ AndNode.new(left, right, operator_loc, location)
63
+ end
64
+
65
+ # Create a new ArgumentsNode node
66
+ def ArgumentsNode(arguments, location = Location())
67
+ ArgumentsNode.new(arguments, location)
68
+ end
69
+
70
+ # Create a new ArrayNode node
71
+ def ArrayNode(elements, opening_loc, closing_loc, location = Location())
72
+ ArrayNode.new(elements, opening_loc, closing_loc, location)
73
+ end
74
+
75
+ # Create a new ArrayPatternNode node
76
+ def ArrayPatternNode(constant, requireds, rest, posts, opening_loc, closing_loc, location = Location())
77
+ ArrayPatternNode.new(constant, requireds, rest, posts, opening_loc, closing_loc, location)
78
+ end
79
+
80
+ # Create a new AssocNode node
81
+ def AssocNode(key, value, operator_loc, location = Location())
82
+ AssocNode.new(key, value, operator_loc, location)
83
+ end
84
+
85
+ # Create a new AssocSplatNode node
86
+ def AssocSplatNode(value, operator_loc, location = Location())
87
+ AssocSplatNode.new(value, operator_loc, location)
88
+ end
89
+
90
+ # Create a new BackReferenceReadNode node
91
+ def BackReferenceReadNode(location = Location())
92
+ BackReferenceReadNode.new(location)
93
+ end
94
+
95
+ # Create a new BeginNode node
96
+ def BeginNode(begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc, location = Location())
97
+ BeginNode.new(begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc, location)
98
+ end
99
+
100
+ # Create a new BlockArgumentNode node
101
+ def BlockArgumentNode(expression, operator_loc, location = Location())
102
+ BlockArgumentNode.new(expression, operator_loc, location)
103
+ end
104
+
105
+ # Create a new BlockLocalVariableNode node
106
+ def BlockLocalVariableNode(name, location = Location())
107
+ BlockLocalVariableNode.new(name, location)
108
+ end
109
+
110
+ # Create a new BlockNode node
111
+ def BlockNode(locals, parameters, body, opening_loc, closing_loc, location = Location())
112
+ BlockNode.new(locals, parameters, body, opening_loc, closing_loc, location)
113
+ end
114
+
115
+ # Create a new BlockParameterNode node
116
+ def BlockParameterNode(name, name_loc, operator_loc, location = Location())
117
+ BlockParameterNode.new(name, name_loc, operator_loc, location)
118
+ end
119
+
120
+ # Create a new BlockParametersNode node
121
+ def BlockParametersNode(parameters, locals, opening_loc, closing_loc, location = Location())
122
+ BlockParametersNode.new(parameters, locals, opening_loc, closing_loc, location)
123
+ end
124
+
125
+ # Create a new BreakNode node
126
+ def BreakNode(arguments, keyword_loc, location = Location())
127
+ BreakNode.new(arguments, keyword_loc, location)
128
+ end
129
+
130
+ # Create a new CallAndWriteNode node
131
+ def CallAndWriteNode(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, flags, read_name, write_name, operator_loc, value, location = Location())
132
+ CallAndWriteNode.new(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, flags, read_name, write_name, operator_loc, value, location)
133
+ end
134
+
135
+ # Create a new CallNode node
136
+ def CallNode(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, block, flags, name, location = Location())
137
+ CallNode.new(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, block, flags, name, location)
138
+ end
139
+
140
+ # Create a new CallOperatorWriteNode node
141
+ def CallOperatorWriteNode(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, flags, read_name, write_name, operator, operator_loc, value, location = Location())
142
+ CallOperatorWriteNode.new(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, flags, read_name, write_name, operator, operator_loc, value, location)
143
+ end
144
+
145
+ # Create a new CallOrWriteNode node
146
+ def CallOrWriteNode(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, flags, read_name, write_name, operator_loc, value, location = Location())
147
+ CallOrWriteNode.new(receiver, call_operator_loc, message_loc, opening_loc, arguments, closing_loc, flags, read_name, write_name, operator_loc, value, location)
148
+ end
149
+
150
+ # Create a new CapturePatternNode node
151
+ def CapturePatternNode(value, target, operator_loc, location = Location())
152
+ CapturePatternNode.new(value, target, operator_loc, location)
153
+ end
154
+
155
+ # Create a new CaseNode node
156
+ def CaseNode(predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, location = Location())
157
+ CaseNode.new(predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, location)
158
+ end
159
+
160
+ # Create a new ClassNode node
161
+ def ClassNode(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, location = Location())
162
+ ClassNode.new(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, location)
163
+ end
164
+
165
+ # Create a new ClassVariableAndWriteNode node
166
+ def ClassVariableAndWriteNode(name, name_loc, operator_loc, value, location = Location())
167
+ ClassVariableAndWriteNode.new(name, name_loc, operator_loc, value, location)
168
+ end
169
+
170
+ # Create a new ClassVariableOperatorWriteNode node
171
+ def ClassVariableOperatorWriteNode(name, name_loc, operator_loc, value, operator, location = Location())
172
+ ClassVariableOperatorWriteNode.new(name, name_loc, operator_loc, value, operator, location)
173
+ end
174
+
175
+ # Create a new ClassVariableOrWriteNode node
176
+ def ClassVariableOrWriteNode(name, name_loc, operator_loc, value, location = Location())
177
+ ClassVariableOrWriteNode.new(name, name_loc, operator_loc, value, location)
178
+ end
179
+
180
+ # Create a new ClassVariableReadNode node
181
+ def ClassVariableReadNode(name, location = Location())
182
+ ClassVariableReadNode.new(name, location)
183
+ end
184
+
185
+ # Create a new ClassVariableTargetNode node
186
+ def ClassVariableTargetNode(name, location = Location())
187
+ ClassVariableTargetNode.new(name, location)
188
+ end
189
+
190
+ # Create a new ClassVariableWriteNode node
191
+ def ClassVariableWriteNode(name, name_loc, value, operator_loc, location = Location())
192
+ ClassVariableWriteNode.new(name, name_loc, value, operator_loc, location)
193
+ end
194
+
195
+ # Create a new ConstantAndWriteNode node
196
+ def ConstantAndWriteNode(name, name_loc, operator_loc, value, location = Location())
197
+ ConstantAndWriteNode.new(name, name_loc, operator_loc, value, location)
198
+ end
199
+
200
+ # Create a new ConstantOperatorWriteNode node
201
+ def ConstantOperatorWriteNode(name, name_loc, operator_loc, value, operator, location = Location())
202
+ ConstantOperatorWriteNode.new(name, name_loc, operator_loc, value, operator, location)
203
+ end
204
+
205
+ # Create a new ConstantOrWriteNode node
206
+ def ConstantOrWriteNode(name, name_loc, operator_loc, value, location = Location())
207
+ ConstantOrWriteNode.new(name, name_loc, operator_loc, value, location)
208
+ end
209
+
210
+ # Create a new ConstantPathAndWriteNode node
211
+ def ConstantPathAndWriteNode(target, operator_loc, value, location = Location())
212
+ ConstantPathAndWriteNode.new(target, operator_loc, value, location)
213
+ end
214
+
215
+ # Create a new ConstantPathNode node
216
+ def ConstantPathNode(parent, child, delimiter_loc, location = Location())
217
+ ConstantPathNode.new(parent, child, delimiter_loc, location)
218
+ end
219
+
220
+ # Create a new ConstantPathOperatorWriteNode node
221
+ def ConstantPathOperatorWriteNode(target, operator_loc, value, operator, location = Location())
222
+ ConstantPathOperatorWriteNode.new(target, operator_loc, value, operator, location)
223
+ end
224
+
225
+ # Create a new ConstantPathOrWriteNode node
226
+ def ConstantPathOrWriteNode(target, operator_loc, value, location = Location())
227
+ ConstantPathOrWriteNode.new(target, operator_loc, value, location)
228
+ end
229
+
230
+ # Create a new ConstantPathTargetNode node
231
+ def ConstantPathTargetNode(parent, child, delimiter_loc, location = Location())
232
+ ConstantPathTargetNode.new(parent, child, delimiter_loc, location)
233
+ end
234
+
235
+ # Create a new ConstantPathWriteNode node
236
+ def ConstantPathWriteNode(target, operator_loc, value, location = Location())
237
+ ConstantPathWriteNode.new(target, operator_loc, value, location)
238
+ end
239
+
240
+ # Create a new ConstantReadNode node
241
+ def ConstantReadNode(name, location = Location())
242
+ ConstantReadNode.new(name, location)
243
+ end
244
+
245
+ # Create a new ConstantTargetNode node
246
+ def ConstantTargetNode(name, location = Location())
247
+ ConstantTargetNode.new(name, location)
248
+ end
249
+
250
+ # Create a new ConstantWriteNode node
251
+ def ConstantWriteNode(name, name_loc, value, operator_loc, location = Location())
252
+ ConstantWriteNode.new(name, name_loc, value, operator_loc, location)
253
+ end
254
+
255
+ # Create a new DefNode node
256
+ def DefNode(name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location = Location())
257
+ DefNode.new(name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location)
258
+ end
259
+
260
+ # Create a new DefinedNode node
261
+ def DefinedNode(lparen_loc, value, rparen_loc, keyword_loc, location = Location())
262
+ DefinedNode.new(lparen_loc, value, rparen_loc, keyword_loc, location)
263
+ end
264
+
265
+ # Create a new ElseNode node
266
+ def ElseNode(else_keyword_loc, statements, end_keyword_loc, location = Location())
267
+ ElseNode.new(else_keyword_loc, statements, end_keyword_loc, location)
268
+ end
269
+
270
+ # Create a new EmbeddedStatementsNode node
271
+ def EmbeddedStatementsNode(opening_loc, statements, closing_loc, location = Location())
272
+ EmbeddedStatementsNode.new(opening_loc, statements, closing_loc, location)
273
+ end
274
+
275
+ # Create a new EmbeddedVariableNode node
276
+ def EmbeddedVariableNode(operator_loc, variable, location = Location())
277
+ EmbeddedVariableNode.new(operator_loc, variable, location)
278
+ end
279
+
280
+ # Create a new EnsureNode node
281
+ def EnsureNode(ensure_keyword_loc, statements, end_keyword_loc, location = Location())
282
+ EnsureNode.new(ensure_keyword_loc, statements, end_keyword_loc, location)
283
+ end
284
+
285
+ # Create a new FalseNode node
286
+ def FalseNode(location = Location())
287
+ FalseNode.new(location)
288
+ end
289
+
290
+ # Create a new FindPatternNode node
291
+ def FindPatternNode(constant, left, requireds, right, opening_loc, closing_loc, location = Location())
292
+ FindPatternNode.new(constant, left, requireds, right, opening_loc, closing_loc, location)
293
+ end
294
+
295
+ # Create a new FlipFlopNode node
296
+ def FlipFlopNode(left, right, operator_loc, flags, location = Location())
297
+ FlipFlopNode.new(left, right, operator_loc, flags, location)
298
+ end
299
+
300
+ # Create a new FloatNode node
301
+ def FloatNode(location = Location())
302
+ FloatNode.new(location)
303
+ end
304
+
305
+ # Create a new ForNode node
306
+ def ForNode(index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc, location = Location())
307
+ ForNode.new(index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc, location)
308
+ end
309
+
310
+ # Create a new ForwardingArgumentsNode node
311
+ def ForwardingArgumentsNode(location = Location())
312
+ ForwardingArgumentsNode.new(location)
313
+ end
314
+
315
+ # Create a new ForwardingParameterNode node
316
+ def ForwardingParameterNode(location = Location())
317
+ ForwardingParameterNode.new(location)
318
+ end
319
+
320
+ # Create a new ForwardingSuperNode node
321
+ def ForwardingSuperNode(block, location = Location())
322
+ ForwardingSuperNode.new(block, location)
323
+ end
324
+
325
+ # Create a new GlobalVariableAndWriteNode node
326
+ def GlobalVariableAndWriteNode(name, name_loc, operator_loc, value, location = Location())
327
+ GlobalVariableAndWriteNode.new(name, name_loc, operator_loc, value, location)
328
+ end
329
+
330
+ # Create a new GlobalVariableOperatorWriteNode node
331
+ def GlobalVariableOperatorWriteNode(name, name_loc, operator_loc, value, operator, location = Location())
332
+ GlobalVariableOperatorWriteNode.new(name, name_loc, operator_loc, value, operator, location)
333
+ end
334
+
335
+ # Create a new GlobalVariableOrWriteNode node
336
+ def GlobalVariableOrWriteNode(name, name_loc, operator_loc, value, location = Location())
337
+ GlobalVariableOrWriteNode.new(name, name_loc, operator_loc, value, location)
338
+ end
339
+
340
+ # Create a new GlobalVariableReadNode node
341
+ def GlobalVariableReadNode(name, location = Location())
342
+ GlobalVariableReadNode.new(name, location)
343
+ end
344
+
345
+ # Create a new GlobalVariableTargetNode node
346
+ def GlobalVariableTargetNode(name, location = Location())
347
+ GlobalVariableTargetNode.new(name, location)
348
+ end
349
+
350
+ # Create a new GlobalVariableWriteNode node
351
+ def GlobalVariableWriteNode(name, name_loc, value, operator_loc, location = Location())
352
+ GlobalVariableWriteNode.new(name, name_loc, value, operator_loc, location)
353
+ end
354
+
355
+ # Create a new HashNode node
356
+ def HashNode(opening_loc, elements, closing_loc, location = Location())
357
+ HashNode.new(opening_loc, elements, closing_loc, location)
358
+ end
359
+
360
+ # Create a new HashPatternNode node
361
+ def HashPatternNode(constant, assocs, kwrest, opening_loc, closing_loc, location = Location())
362
+ HashPatternNode.new(constant, assocs, kwrest, opening_loc, closing_loc, location)
363
+ end
364
+
365
+ # Create a new IfNode node
366
+ def IfNode(if_keyword_loc, predicate, statements, consequent, end_keyword_loc, location = Location())
367
+ IfNode.new(if_keyword_loc, predicate, statements, consequent, end_keyword_loc, location)
368
+ end
369
+
370
+ # Create a new ImaginaryNode node
371
+ def ImaginaryNode(numeric, location = Location())
372
+ ImaginaryNode.new(numeric, location)
373
+ end
374
+
375
+ # Create a new ImplicitNode node
376
+ def ImplicitNode(value, location = Location())
377
+ ImplicitNode.new(value, location)
378
+ end
379
+
380
+ # Create a new InNode node
381
+ def InNode(pattern, statements, in_loc, then_loc, location = Location())
382
+ InNode.new(pattern, statements, in_loc, then_loc, location)
383
+ end
384
+
385
+ # Create a new InstanceVariableAndWriteNode node
386
+ def InstanceVariableAndWriteNode(name, name_loc, operator_loc, value, location = Location())
387
+ InstanceVariableAndWriteNode.new(name, name_loc, operator_loc, value, location)
388
+ end
389
+
390
+ # Create a new InstanceVariableOperatorWriteNode node
391
+ def InstanceVariableOperatorWriteNode(name, name_loc, operator_loc, value, operator, location = Location())
392
+ InstanceVariableOperatorWriteNode.new(name, name_loc, operator_loc, value, operator, location)
393
+ end
394
+
395
+ # Create a new InstanceVariableOrWriteNode node
396
+ def InstanceVariableOrWriteNode(name, name_loc, operator_loc, value, location = Location())
397
+ InstanceVariableOrWriteNode.new(name, name_loc, operator_loc, value, location)
398
+ end
399
+
400
+ # Create a new InstanceVariableReadNode node
401
+ def InstanceVariableReadNode(name, location = Location())
402
+ InstanceVariableReadNode.new(name, location)
403
+ end
404
+
405
+ # Create a new InstanceVariableTargetNode node
406
+ def InstanceVariableTargetNode(name, location = Location())
407
+ InstanceVariableTargetNode.new(name, location)
408
+ end
409
+
410
+ # Create a new InstanceVariableWriteNode node
411
+ def InstanceVariableWriteNode(name, name_loc, value, operator_loc, location = Location())
412
+ InstanceVariableWriteNode.new(name, name_loc, value, operator_loc, location)
413
+ end
414
+
415
+ # Create a new IntegerNode node
416
+ def IntegerNode(flags, location = Location())
417
+ IntegerNode.new(flags, location)
418
+ end
419
+
420
+ # Create a new InterpolatedMatchLastLineNode node
421
+ def InterpolatedMatchLastLineNode(opening_loc, parts, closing_loc, flags, location = Location())
422
+ InterpolatedMatchLastLineNode.new(opening_loc, parts, closing_loc, flags, location)
423
+ end
424
+
425
+ # Create a new InterpolatedRegularExpressionNode node
426
+ def InterpolatedRegularExpressionNode(opening_loc, parts, closing_loc, flags, location = Location())
427
+ InterpolatedRegularExpressionNode.new(opening_loc, parts, closing_loc, flags, location)
428
+ end
429
+
430
+ # Create a new InterpolatedStringNode node
431
+ def InterpolatedStringNode(opening_loc, parts, closing_loc, location = Location())
432
+ InterpolatedStringNode.new(opening_loc, parts, closing_loc, location)
433
+ end
434
+
435
+ # Create a new InterpolatedSymbolNode node
436
+ def InterpolatedSymbolNode(opening_loc, parts, closing_loc, location = Location())
437
+ InterpolatedSymbolNode.new(opening_loc, parts, closing_loc, location)
438
+ end
439
+
440
+ # Create a new InterpolatedXStringNode node
441
+ def InterpolatedXStringNode(opening_loc, parts, closing_loc, location = Location())
442
+ InterpolatedXStringNode.new(opening_loc, parts, closing_loc, location)
443
+ end
444
+
445
+ # Create a new KeywordHashNode node
446
+ def KeywordHashNode(elements, location = Location())
447
+ KeywordHashNode.new(elements, location)
448
+ end
449
+
450
+ # Create a new KeywordParameterNode node
451
+ def KeywordParameterNode(name, name_loc, value, location = Location())
452
+ KeywordParameterNode.new(name, name_loc, value, location)
453
+ end
454
+
455
+ # Create a new KeywordRestParameterNode node
456
+ def KeywordRestParameterNode(name, name_loc, operator_loc, location = Location())
457
+ KeywordRestParameterNode.new(name, name_loc, operator_loc, location)
458
+ end
459
+
460
+ # Create a new LambdaNode node
461
+ def LambdaNode(locals, operator_loc, opening_loc, closing_loc, parameters, body, location = Location())
462
+ LambdaNode.new(locals, operator_loc, opening_loc, closing_loc, parameters, body, location)
463
+ end
464
+
465
+ # Create a new LocalVariableAndWriteNode node
466
+ def LocalVariableAndWriteNode(name_loc, operator_loc, value, name, depth, location = Location())
467
+ LocalVariableAndWriteNode.new(name_loc, operator_loc, value, name, depth, location)
468
+ end
469
+
470
+ # Create a new LocalVariableOperatorWriteNode node
471
+ def LocalVariableOperatorWriteNode(name_loc, operator_loc, value, name, operator, depth, location = Location())
472
+ LocalVariableOperatorWriteNode.new(name_loc, operator_loc, value, name, operator, depth, location)
473
+ end
474
+
475
+ # Create a new LocalVariableOrWriteNode node
476
+ def LocalVariableOrWriteNode(name_loc, operator_loc, value, name, depth, location = Location())
477
+ LocalVariableOrWriteNode.new(name_loc, operator_loc, value, name, depth, location)
478
+ end
479
+
480
+ # Create a new LocalVariableReadNode node
481
+ def LocalVariableReadNode(name, depth, location = Location())
482
+ LocalVariableReadNode.new(name, depth, location)
483
+ end
484
+
485
+ # Create a new LocalVariableTargetNode node
486
+ def LocalVariableTargetNode(name, depth, location = Location())
487
+ LocalVariableTargetNode.new(name, depth, location)
488
+ end
489
+
490
+ # Create a new LocalVariableWriteNode node
491
+ def LocalVariableWriteNode(name, depth, name_loc, value, operator_loc, location = Location())
492
+ LocalVariableWriteNode.new(name, depth, name_loc, value, operator_loc, location)
493
+ end
494
+
495
+ # Create a new MatchLastLineNode node
496
+ def MatchLastLineNode(opening_loc, content_loc, closing_loc, unescaped, flags, location = Location())
497
+ MatchLastLineNode.new(opening_loc, content_loc, closing_loc, unescaped, flags, location)
498
+ end
499
+
500
+ # Create a new MatchPredicateNode node
501
+ def MatchPredicateNode(value, pattern, operator_loc, location = Location())
502
+ MatchPredicateNode.new(value, pattern, operator_loc, location)
503
+ end
504
+
505
+ # Create a new MatchRequiredNode node
506
+ def MatchRequiredNode(value, pattern, operator_loc, location = Location())
507
+ MatchRequiredNode.new(value, pattern, operator_loc, location)
508
+ end
509
+
510
+ # Create a new MatchWriteNode node
511
+ def MatchWriteNode(call, locals, location = Location())
512
+ MatchWriteNode.new(call, locals, location)
513
+ end
514
+
515
+ # Create a new MissingNode node
516
+ def MissingNode(location = Location())
517
+ MissingNode.new(location)
518
+ end
519
+
520
+ # Create a new ModuleNode node
521
+ def ModuleNode(locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, location = Location())
522
+ ModuleNode.new(locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, location)
523
+ end
524
+
525
+ # Create a new MultiTargetNode node
526
+ def MultiTargetNode(targets, lparen_loc, rparen_loc, location = Location())
527
+ MultiTargetNode.new(targets, lparen_loc, rparen_loc, location)
528
+ end
529
+
530
+ # Create a new MultiWriteNode node
531
+ def MultiWriteNode(targets, lparen_loc, rparen_loc, operator_loc, value, location = Location())
532
+ MultiWriteNode.new(targets, lparen_loc, rparen_loc, operator_loc, value, location)
533
+ end
534
+
535
+ # Create a new NextNode node
536
+ def NextNode(arguments, keyword_loc, location = Location())
537
+ NextNode.new(arguments, keyword_loc, location)
538
+ end
539
+
540
+ # Create a new NilNode node
541
+ def NilNode(location = Location())
542
+ NilNode.new(location)
543
+ end
544
+
545
+ # Create a new NoKeywordsParameterNode node
546
+ def NoKeywordsParameterNode(operator_loc, keyword_loc, location = Location())
547
+ NoKeywordsParameterNode.new(operator_loc, keyword_loc, location)
548
+ end
549
+
550
+ # Create a new NumberedReferenceReadNode node
551
+ def NumberedReferenceReadNode(number, location = Location())
552
+ NumberedReferenceReadNode.new(number, location)
553
+ end
554
+
555
+ # Create a new OptionalParameterNode node
556
+ def OptionalParameterNode(name, name_loc, operator_loc, value, location = Location())
557
+ OptionalParameterNode.new(name, name_loc, operator_loc, value, location)
558
+ end
559
+
560
+ # Create a new OrNode node
561
+ def OrNode(left, right, operator_loc, location = Location())
562
+ OrNode.new(left, right, operator_loc, location)
563
+ end
564
+
565
+ # Create a new ParametersNode node
566
+ def ParametersNode(requireds, optionals, rest, posts, keywords, keyword_rest, block, location = Location())
567
+ ParametersNode.new(requireds, optionals, rest, posts, keywords, keyword_rest, block, location)
568
+ end
569
+
570
+ # Create a new ParenthesesNode node
571
+ def ParenthesesNode(body, opening_loc, closing_loc, location = Location())
572
+ ParenthesesNode.new(body, opening_loc, closing_loc, location)
573
+ end
574
+
575
+ # Create a new PinnedExpressionNode node
576
+ def PinnedExpressionNode(expression, operator_loc, lparen_loc, rparen_loc, location = Location())
577
+ PinnedExpressionNode.new(expression, operator_loc, lparen_loc, rparen_loc, location)
578
+ end
579
+
580
+ # Create a new PinnedVariableNode node
581
+ def PinnedVariableNode(variable, operator_loc, location = Location())
582
+ PinnedVariableNode.new(variable, operator_loc, location)
583
+ end
584
+
585
+ # Create a new PostExecutionNode node
586
+ def PostExecutionNode(statements, keyword_loc, opening_loc, closing_loc, location = Location())
587
+ PostExecutionNode.new(statements, keyword_loc, opening_loc, closing_loc, location)
588
+ end
589
+
590
+ # Create a new PreExecutionNode node
591
+ def PreExecutionNode(statements, keyword_loc, opening_loc, closing_loc, location = Location())
592
+ PreExecutionNode.new(statements, keyword_loc, opening_loc, closing_loc, location)
593
+ end
594
+
595
+ # Create a new ProgramNode node
596
+ def ProgramNode(locals, statements, location = Location())
597
+ ProgramNode.new(locals, statements, location)
598
+ end
599
+
600
+ # Create a new RangeNode node
601
+ def RangeNode(left, right, operator_loc, flags, location = Location())
602
+ RangeNode.new(left, right, operator_loc, flags, location)
603
+ end
604
+
605
+ # Create a new RationalNode node
606
+ def RationalNode(numeric, location = Location())
607
+ RationalNode.new(numeric, location)
608
+ end
609
+
610
+ # Create a new RedoNode node
611
+ def RedoNode(location = Location())
612
+ RedoNode.new(location)
613
+ end
614
+
615
+ # Create a new RegularExpressionNode node
616
+ def RegularExpressionNode(opening_loc, content_loc, closing_loc, unescaped, flags, location = Location())
617
+ RegularExpressionNode.new(opening_loc, content_loc, closing_loc, unescaped, flags, location)
618
+ end
619
+
620
+ # Create a new RequiredDestructuredParameterNode node
621
+ def RequiredDestructuredParameterNode(parameters, opening_loc, closing_loc, location = Location())
622
+ RequiredDestructuredParameterNode.new(parameters, opening_loc, closing_loc, location)
623
+ end
624
+
625
+ # Create a new RequiredParameterNode node
626
+ def RequiredParameterNode(name, location = Location())
627
+ RequiredParameterNode.new(name, location)
628
+ end
629
+
630
+ # Create a new RescueModifierNode node
631
+ def RescueModifierNode(expression, keyword_loc, rescue_expression, location = Location())
632
+ RescueModifierNode.new(expression, keyword_loc, rescue_expression, location)
633
+ end
634
+
635
+ # Create a new RescueNode node
636
+ def RescueNode(keyword_loc, exceptions, operator_loc, reference, statements, consequent, location = Location())
637
+ RescueNode.new(keyword_loc, exceptions, operator_loc, reference, statements, consequent, location)
638
+ end
639
+
640
+ # Create a new RestParameterNode node
641
+ def RestParameterNode(name, name_loc, operator_loc, location = Location())
642
+ RestParameterNode.new(name, name_loc, operator_loc, location)
643
+ end
644
+
645
+ # Create a new RetryNode node
646
+ def RetryNode(location = Location())
647
+ RetryNode.new(location)
648
+ end
649
+
650
+ # Create a new ReturnNode node
651
+ def ReturnNode(keyword_loc, arguments, location = Location())
652
+ ReturnNode.new(keyword_loc, arguments, location)
653
+ end
654
+
655
+ # Create a new SelfNode node
656
+ def SelfNode(location = Location())
657
+ SelfNode.new(location)
658
+ end
659
+
660
+ # Create a new SingletonClassNode node
661
+ def SingletonClassNode(locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, location = Location())
662
+ SingletonClassNode.new(locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, location)
663
+ end
664
+
665
+ # Create a new SourceEncodingNode node
666
+ def SourceEncodingNode(location = Location())
667
+ SourceEncodingNode.new(location)
668
+ end
669
+
670
+ # Create a new SourceFileNode node
671
+ def SourceFileNode(filepath, location = Location())
672
+ SourceFileNode.new(filepath, location)
673
+ end
674
+
675
+ # Create a new SourceLineNode node
676
+ def SourceLineNode(location = Location())
677
+ SourceLineNode.new(location)
678
+ end
679
+
680
+ # Create a new SplatNode node
681
+ def SplatNode(operator_loc, expression, location = Location())
682
+ SplatNode.new(operator_loc, expression, location)
683
+ end
684
+
685
+ # Create a new StatementsNode node
686
+ def StatementsNode(body, location = Location())
687
+ StatementsNode.new(body, location)
688
+ end
689
+
690
+ # Create a new StringConcatNode node
691
+ def StringConcatNode(left, right, location = Location())
692
+ StringConcatNode.new(left, right, location)
693
+ end
694
+
695
+ # Create a new StringNode node
696
+ def StringNode(flags, opening_loc, content_loc, closing_loc, unescaped, location = Location())
697
+ StringNode.new(flags, opening_loc, content_loc, closing_loc, unescaped, location)
698
+ end
699
+
700
+ # Create a new SuperNode node
701
+ def SuperNode(keyword_loc, lparen_loc, arguments, rparen_loc, block, location = Location())
702
+ SuperNode.new(keyword_loc, lparen_loc, arguments, rparen_loc, block, location)
703
+ end
704
+
705
+ # Create a new SymbolNode node
706
+ def SymbolNode(opening_loc, value_loc, closing_loc, unescaped, location = Location())
707
+ SymbolNode.new(opening_loc, value_loc, closing_loc, unescaped, location)
708
+ end
709
+
710
+ # Create a new TrueNode node
711
+ def TrueNode(location = Location())
712
+ TrueNode.new(location)
713
+ end
714
+
715
+ # Create a new UndefNode node
716
+ def UndefNode(names, keyword_loc, location = Location())
717
+ UndefNode.new(names, keyword_loc, location)
718
+ end
719
+
720
+ # Create a new UnlessNode node
721
+ def UnlessNode(keyword_loc, predicate, statements, consequent, end_keyword_loc, location = Location())
722
+ UnlessNode.new(keyword_loc, predicate, statements, consequent, end_keyword_loc, location)
723
+ end
724
+
725
+ # Create a new UntilNode node
726
+ def UntilNode(keyword_loc, closing_loc, predicate, statements, flags, location = Location())
727
+ UntilNode.new(keyword_loc, closing_loc, predicate, statements, flags, location)
728
+ end
729
+
730
+ # Create a new WhenNode node
731
+ def WhenNode(keyword_loc, conditions, statements, location = Location())
732
+ WhenNode.new(keyword_loc, conditions, statements, location)
733
+ end
734
+
735
+ # Create a new WhileNode node
736
+ def WhileNode(keyword_loc, closing_loc, predicate, statements, flags, location = Location())
737
+ WhileNode.new(keyword_loc, closing_loc, predicate, statements, flags, location)
738
+ end
739
+
740
+ # Create a new XStringNode node
741
+ def XStringNode(opening_loc, content_loc, closing_loc, unescaped, location = Location())
742
+ XStringNode.new(opening_loc, content_loc, closing_loc, unescaped, location)
743
+ end
744
+
745
+ # Create a new YieldNode node
746
+ def YieldNode(keyword_loc, lparen_loc, arguments, rparen_loc, location = Location())
747
+ YieldNode.new(keyword_loc, lparen_loc, arguments, rparen_loc, location)
748
+ end
749
+ end
750
+ end