yarp 0.9.0 → 0.11.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -1
  3. data/CONTRIBUTING.md +7 -0
  4. data/Makefile +5 -1
  5. data/config.yml +308 -166
  6. data/docs/configuration.md +0 -1
  7. data/docs/encoding.md +5 -5
  8. data/docs/mapping.md +91 -91
  9. data/docs/serialization.md +25 -22
  10. data/ext/yarp/api_node.c +1210 -483
  11. data/ext/yarp/extension.c +22 -8
  12. data/ext/yarp/extension.h +2 -2
  13. data/include/yarp/ast.h +692 -183
  14. data/include/yarp/defines.h +2 -1
  15. data/include/yarp/diagnostic.h +200 -3
  16. data/include/yarp/enc/yp_encoding.h +10 -10
  17. data/include/yarp/node.h +0 -4
  18. data/include/yarp/parser.h +19 -19
  19. data/include/yarp/regexp.h +1 -1
  20. data/include/yarp/unescape.h +4 -4
  21. data/include/yarp/util/yp_buffer.h +3 -0
  22. data/include/yarp/util/yp_char.h +16 -16
  23. data/include/yarp/util/yp_constant_pool.h +12 -5
  24. data/include/yarp/util/yp_newline_list.h +5 -5
  25. data/include/yarp/util/yp_string.h +4 -4
  26. data/include/yarp/util/yp_string_list.h +0 -3
  27. data/include/yarp/util/yp_strpbrk.h +1 -1
  28. data/include/yarp/version.h +2 -2
  29. data/include/yarp.h +5 -4
  30. data/lib/yarp/desugar_visitor.rb +59 -122
  31. data/lib/yarp/mutation_visitor.rb +22 -12
  32. data/lib/yarp/node.rb +3081 -501
  33. data/lib/yarp/parse_result/comments.rb +172 -0
  34. data/lib/yarp/parse_result/newlines.rb +60 -0
  35. data/lib/yarp/pattern.rb +239 -0
  36. data/lib/yarp/serialize.rb +152 -129
  37. data/lib/yarp.rb +109 -49
  38. data/src/diagnostic.c +254 -2
  39. data/src/enc/yp_big5.c +15 -42
  40. data/src/enc/yp_euc_jp.c +16 -43
  41. data/src/enc/yp_gbk.c +19 -46
  42. data/src/enc/yp_shift_jis.c +16 -43
  43. data/src/enc/yp_tables.c +36 -38
  44. data/src/enc/yp_unicode.c +20 -25
  45. data/src/enc/yp_windows_31j.c +16 -43
  46. data/src/node.c +1871 -1466
  47. data/src/prettyprint.c +463 -230
  48. data/src/regexp.c +21 -21
  49. data/src/serialize.c +352 -184
  50. data/src/unescape.c +152 -122
  51. data/src/util/yp_buffer.c +7 -2
  52. data/src/util/yp_char.c +35 -40
  53. data/src/util/yp_constant_pool.c +45 -12
  54. data/src/util/yp_memchr.c +1 -1
  55. data/src/util/yp_newline_list.c +10 -5
  56. data/src/util/yp_string.c +22 -20
  57. data/src/util/yp_string_list.c +4 -7
  58. data/src/util/yp_strncasecmp.c +3 -6
  59. data/src/util/yp_strpbrk.c +8 -8
  60. data/src/yarp.c +1288 -1021
  61. data/yarp.gemspec +4 -1
  62. metadata +6 -3
data/include/yarp/ast.h CHANGED
@@ -188,23 +188,17 @@ typedef enum yp_token_type {
188
188
  // type and location information.
189
189
  typedef struct {
190
190
  yp_token_type_t type;
191
- const char *start;
192
- const char *end;
191
+ const uint8_t *start;
192
+ const uint8_t *end;
193
193
  } yp_token_t;
194
194
 
195
195
  // This represents a range of bytes in the source string to which a node or
196
196
  // token corresponds.
197
197
  typedef struct {
198
- const char *start;
199
- const char *end;
198
+ const uint8_t *start;
199
+ const uint8_t *end;
200
200
  } yp_location_t;
201
201
 
202
- typedef struct {
203
- yp_location_t *locations;
204
- size_t size;
205
- size_t capacity;
206
- } yp_location_list_t;
207
-
208
202
  struct yp_node;
209
203
 
210
204
  typedef struct yp_node_list {
@@ -214,143 +208,284 @@ typedef struct yp_node_list {
214
208
  } yp_node_list_t;
215
209
 
216
210
  enum yp_node_type {
217
- YP_NODE_ALIAS_NODE = 1,
218
- YP_NODE_ALTERNATION_PATTERN_NODE = 2,
219
- YP_NODE_AND_NODE = 3,
220
- YP_NODE_ARGUMENTS_NODE = 4,
221
- YP_NODE_ARRAY_NODE = 5,
222
- YP_NODE_ARRAY_PATTERN_NODE = 6,
223
- YP_NODE_ASSOC_NODE = 7,
224
- YP_NODE_ASSOC_SPLAT_NODE = 8,
225
- YP_NODE_BACK_REFERENCE_READ_NODE = 9,
226
- YP_NODE_BEGIN_NODE = 10,
227
- YP_NODE_BLOCK_ARGUMENT_NODE = 11,
228
- YP_NODE_BLOCK_NODE = 12,
229
- YP_NODE_BLOCK_PARAMETER_NODE = 13,
230
- YP_NODE_BLOCK_PARAMETERS_NODE = 14,
231
- YP_NODE_BREAK_NODE = 15,
232
- YP_NODE_CALL_NODE = 16,
233
- YP_NODE_CALL_OPERATOR_AND_WRITE_NODE = 17,
234
- YP_NODE_CALL_OPERATOR_OR_WRITE_NODE = 18,
235
- YP_NODE_CALL_OPERATOR_WRITE_NODE = 19,
236
- YP_NODE_CAPTURE_PATTERN_NODE = 20,
237
- YP_NODE_CASE_NODE = 21,
238
- YP_NODE_CLASS_NODE = 22,
239
- YP_NODE_CLASS_VARIABLE_AND_WRITE_NODE = 23,
240
- YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 24,
241
- YP_NODE_CLASS_VARIABLE_OR_WRITE_NODE = 25,
242
- YP_NODE_CLASS_VARIABLE_READ_NODE = 26,
243
- YP_NODE_CLASS_VARIABLE_TARGET_NODE = 27,
244
- YP_NODE_CLASS_VARIABLE_WRITE_NODE = 28,
245
- YP_NODE_CONSTANT_AND_WRITE_NODE = 29,
246
- YP_NODE_CONSTANT_OPERATOR_WRITE_NODE = 30,
247
- YP_NODE_CONSTANT_OR_WRITE_NODE = 31,
248
- YP_NODE_CONSTANT_PATH_AND_WRITE_NODE = 32,
249
- YP_NODE_CONSTANT_PATH_NODE = 33,
250
- YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE = 34,
251
- YP_NODE_CONSTANT_PATH_OR_WRITE_NODE = 35,
252
- YP_NODE_CONSTANT_PATH_TARGET_NODE = 36,
253
- YP_NODE_CONSTANT_PATH_WRITE_NODE = 37,
254
- YP_NODE_CONSTANT_READ_NODE = 38,
255
- YP_NODE_CONSTANT_TARGET_NODE = 39,
256
- YP_NODE_CONSTANT_WRITE_NODE = 40,
257
- YP_NODE_DEF_NODE = 41,
258
- YP_NODE_DEFINED_NODE = 42,
259
- YP_NODE_ELSE_NODE = 43,
260
- YP_NODE_EMBEDDED_STATEMENTS_NODE = 44,
261
- YP_NODE_EMBEDDED_VARIABLE_NODE = 45,
262
- YP_NODE_ENSURE_NODE = 46,
263
- YP_NODE_FALSE_NODE = 47,
264
- YP_NODE_FIND_PATTERN_NODE = 48,
265
- YP_NODE_FLIP_FLOP_NODE = 49,
266
- YP_NODE_FLOAT_NODE = 50,
267
- YP_NODE_FOR_NODE = 51,
268
- YP_NODE_FORWARDING_ARGUMENTS_NODE = 52,
269
- YP_NODE_FORWARDING_PARAMETER_NODE = 53,
270
- YP_NODE_FORWARDING_SUPER_NODE = 54,
271
- YP_NODE_GLOBAL_VARIABLE_AND_WRITE_NODE = 55,
272
- YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 56,
273
- YP_NODE_GLOBAL_VARIABLE_OR_WRITE_NODE = 57,
274
- YP_NODE_GLOBAL_VARIABLE_READ_NODE = 58,
275
- YP_NODE_GLOBAL_VARIABLE_TARGET_NODE = 59,
276
- YP_NODE_GLOBAL_VARIABLE_WRITE_NODE = 60,
277
- YP_NODE_HASH_NODE = 61,
278
- YP_NODE_HASH_PATTERN_NODE = 62,
279
- YP_NODE_IF_NODE = 63,
280
- YP_NODE_IMAGINARY_NODE = 64,
281
- YP_NODE_IN_NODE = 65,
282
- YP_NODE_INSTANCE_VARIABLE_AND_WRITE_NODE = 66,
283
- YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 67,
284
- YP_NODE_INSTANCE_VARIABLE_OR_WRITE_NODE = 68,
285
- YP_NODE_INSTANCE_VARIABLE_READ_NODE = 69,
286
- YP_NODE_INSTANCE_VARIABLE_TARGET_NODE = 70,
287
- YP_NODE_INSTANCE_VARIABLE_WRITE_NODE = 71,
288
- YP_NODE_INTEGER_NODE = 72,
289
- YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE = 73,
290
- YP_NODE_INTERPOLATED_STRING_NODE = 74,
291
- YP_NODE_INTERPOLATED_SYMBOL_NODE = 75,
292
- YP_NODE_INTERPOLATED_X_STRING_NODE = 76,
293
- YP_NODE_KEYWORD_HASH_NODE = 77,
294
- YP_NODE_KEYWORD_PARAMETER_NODE = 78,
295
- YP_NODE_KEYWORD_REST_PARAMETER_NODE = 79,
296
- YP_NODE_LAMBDA_NODE = 80,
297
- YP_NODE_LOCAL_VARIABLE_AND_WRITE_NODE = 81,
298
- YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 82,
299
- YP_NODE_LOCAL_VARIABLE_OR_WRITE_NODE = 83,
300
- YP_NODE_LOCAL_VARIABLE_READ_NODE = 84,
301
- YP_NODE_LOCAL_VARIABLE_TARGET_NODE = 85,
302
- YP_NODE_LOCAL_VARIABLE_WRITE_NODE = 86,
303
- YP_NODE_MATCH_PREDICATE_NODE = 87,
304
- YP_NODE_MATCH_REQUIRED_NODE = 88,
305
- YP_NODE_MISSING_NODE = 89,
306
- YP_NODE_MODULE_NODE = 90,
307
- YP_NODE_MULTI_WRITE_NODE = 91,
308
- YP_NODE_NEXT_NODE = 92,
309
- YP_NODE_NIL_NODE = 93,
310
- YP_NODE_NO_KEYWORDS_PARAMETER_NODE = 94,
311
- YP_NODE_NUMBERED_REFERENCE_READ_NODE = 95,
312
- YP_NODE_OPTIONAL_PARAMETER_NODE = 96,
313
- YP_NODE_OR_NODE = 97,
314
- YP_NODE_PARAMETERS_NODE = 98,
315
- YP_NODE_PARENTHESES_NODE = 99,
316
- YP_NODE_PINNED_EXPRESSION_NODE = 100,
317
- YP_NODE_PINNED_VARIABLE_NODE = 101,
318
- YP_NODE_POST_EXECUTION_NODE = 102,
319
- YP_NODE_PRE_EXECUTION_NODE = 103,
320
- YP_NODE_PROGRAM_NODE = 104,
321
- YP_NODE_RANGE_NODE = 105,
322
- YP_NODE_RATIONAL_NODE = 106,
323
- YP_NODE_REDO_NODE = 107,
324
- YP_NODE_REGULAR_EXPRESSION_NODE = 108,
325
- YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 109,
326
- YP_NODE_REQUIRED_PARAMETER_NODE = 110,
327
- YP_NODE_RESCUE_MODIFIER_NODE = 111,
328
- YP_NODE_RESCUE_NODE = 112,
329
- YP_NODE_REST_PARAMETER_NODE = 113,
330
- YP_NODE_RETRY_NODE = 114,
331
- YP_NODE_RETURN_NODE = 115,
332
- YP_NODE_SELF_NODE = 116,
333
- YP_NODE_SINGLETON_CLASS_NODE = 117,
334
- YP_NODE_SOURCE_ENCODING_NODE = 118,
335
- YP_NODE_SOURCE_FILE_NODE = 119,
336
- YP_NODE_SOURCE_LINE_NODE = 120,
337
- YP_NODE_SPLAT_NODE = 121,
338
- YP_NODE_STATEMENTS_NODE = 122,
339
- YP_NODE_STRING_CONCAT_NODE = 123,
340
- YP_NODE_STRING_NODE = 124,
341
- YP_NODE_SUPER_NODE = 125,
342
- YP_NODE_SYMBOL_NODE = 126,
343
- YP_NODE_TRUE_NODE = 127,
344
- YP_NODE_UNDEF_NODE = 128,
345
- YP_NODE_UNLESS_NODE = 129,
346
- YP_NODE_UNTIL_NODE = 130,
347
- YP_NODE_WHEN_NODE = 131,
348
- YP_NODE_WHILE_NODE = 132,
349
- YP_NODE_X_STRING_NODE = 133,
350
- YP_NODE_YIELD_NODE = 134,
351
- YP_NODE_SCOPE_NODE
211
+ YP_ALIAS_NODE = 1,
212
+ YP_ALTERNATION_PATTERN_NODE = 2,
213
+ YP_AND_NODE = 3,
214
+ YP_ARGUMENTS_NODE = 4,
215
+ YP_ARRAY_NODE = 5,
216
+ YP_ARRAY_PATTERN_NODE = 6,
217
+ YP_ASSOC_NODE = 7,
218
+ YP_ASSOC_SPLAT_NODE = 8,
219
+ YP_BACK_REFERENCE_READ_NODE = 9,
220
+ YP_BEGIN_NODE = 10,
221
+ YP_BLOCK_ARGUMENT_NODE = 11,
222
+ YP_BLOCK_LOCAL_VARIABLE_NODE = 12,
223
+ YP_BLOCK_NODE = 13,
224
+ YP_BLOCK_PARAMETER_NODE = 14,
225
+ YP_BLOCK_PARAMETERS_NODE = 15,
226
+ YP_BREAK_NODE = 16,
227
+ YP_CALL_AND_WRITE_NODE = 17,
228
+ YP_CALL_NODE = 18,
229
+ YP_CALL_OPERATOR_WRITE_NODE = 19,
230
+ YP_CALL_OR_WRITE_NODE = 20,
231
+ YP_CAPTURE_PATTERN_NODE = 21,
232
+ YP_CASE_NODE = 22,
233
+ YP_CLASS_NODE = 23,
234
+ YP_CLASS_VARIABLE_AND_WRITE_NODE = 24,
235
+ YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 25,
236
+ YP_CLASS_VARIABLE_OR_WRITE_NODE = 26,
237
+ YP_CLASS_VARIABLE_READ_NODE = 27,
238
+ YP_CLASS_VARIABLE_TARGET_NODE = 28,
239
+ YP_CLASS_VARIABLE_WRITE_NODE = 29,
240
+ YP_CONSTANT_AND_WRITE_NODE = 30,
241
+ YP_CONSTANT_OPERATOR_WRITE_NODE = 31,
242
+ YP_CONSTANT_OR_WRITE_NODE = 32,
243
+ YP_CONSTANT_PATH_AND_WRITE_NODE = 33,
244
+ YP_CONSTANT_PATH_NODE = 34,
245
+ YP_CONSTANT_PATH_OPERATOR_WRITE_NODE = 35,
246
+ YP_CONSTANT_PATH_OR_WRITE_NODE = 36,
247
+ YP_CONSTANT_PATH_TARGET_NODE = 37,
248
+ YP_CONSTANT_PATH_WRITE_NODE = 38,
249
+ YP_CONSTANT_READ_NODE = 39,
250
+ YP_CONSTANT_TARGET_NODE = 40,
251
+ YP_CONSTANT_WRITE_NODE = 41,
252
+ YP_DEF_NODE = 42,
253
+ YP_DEFINED_NODE = 43,
254
+ YP_ELSE_NODE = 44,
255
+ YP_EMBEDDED_STATEMENTS_NODE = 45,
256
+ YP_EMBEDDED_VARIABLE_NODE = 46,
257
+ YP_ENSURE_NODE = 47,
258
+ YP_FALSE_NODE = 48,
259
+ YP_FIND_PATTERN_NODE = 49,
260
+ YP_FLIP_FLOP_NODE = 50,
261
+ YP_FLOAT_NODE = 51,
262
+ YP_FOR_NODE = 52,
263
+ YP_FORWARDING_ARGUMENTS_NODE = 53,
264
+ YP_FORWARDING_PARAMETER_NODE = 54,
265
+ YP_FORWARDING_SUPER_NODE = 55,
266
+ YP_GLOBAL_VARIABLE_AND_WRITE_NODE = 56,
267
+ YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 57,
268
+ YP_GLOBAL_VARIABLE_OR_WRITE_NODE = 58,
269
+ YP_GLOBAL_VARIABLE_READ_NODE = 59,
270
+ YP_GLOBAL_VARIABLE_TARGET_NODE = 60,
271
+ YP_GLOBAL_VARIABLE_WRITE_NODE = 61,
272
+ YP_HASH_NODE = 62,
273
+ YP_HASH_PATTERN_NODE = 63,
274
+ YP_IF_NODE = 64,
275
+ YP_IMAGINARY_NODE = 65,
276
+ YP_IN_NODE = 66,
277
+ YP_INSTANCE_VARIABLE_AND_WRITE_NODE = 67,
278
+ YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 68,
279
+ YP_INSTANCE_VARIABLE_OR_WRITE_NODE = 69,
280
+ YP_INSTANCE_VARIABLE_READ_NODE = 70,
281
+ YP_INSTANCE_VARIABLE_TARGET_NODE = 71,
282
+ YP_INSTANCE_VARIABLE_WRITE_NODE = 72,
283
+ YP_INTEGER_NODE = 73,
284
+ YP_INTERPOLATED_REGULAR_EXPRESSION_NODE = 74,
285
+ YP_INTERPOLATED_STRING_NODE = 75,
286
+ YP_INTERPOLATED_SYMBOL_NODE = 76,
287
+ YP_INTERPOLATED_X_STRING_NODE = 77,
288
+ YP_KEYWORD_HASH_NODE = 78,
289
+ YP_KEYWORD_PARAMETER_NODE = 79,
290
+ YP_KEYWORD_REST_PARAMETER_NODE = 80,
291
+ YP_LAMBDA_NODE = 81,
292
+ YP_LOCAL_VARIABLE_AND_WRITE_NODE = 82,
293
+ YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 83,
294
+ YP_LOCAL_VARIABLE_OR_WRITE_NODE = 84,
295
+ YP_LOCAL_VARIABLE_READ_NODE = 85,
296
+ YP_LOCAL_VARIABLE_TARGET_NODE = 86,
297
+ YP_LOCAL_VARIABLE_WRITE_NODE = 87,
298
+ YP_MATCH_PREDICATE_NODE = 88,
299
+ YP_MATCH_REQUIRED_NODE = 89,
300
+ YP_MISSING_NODE = 90,
301
+ YP_MODULE_NODE = 91,
302
+ YP_MULTI_TARGET_NODE = 92,
303
+ YP_MULTI_WRITE_NODE = 93,
304
+ YP_NEXT_NODE = 94,
305
+ YP_NIL_NODE = 95,
306
+ YP_NO_KEYWORDS_PARAMETER_NODE = 96,
307
+ YP_NUMBERED_REFERENCE_READ_NODE = 97,
308
+ YP_OPTIONAL_PARAMETER_NODE = 98,
309
+ YP_OR_NODE = 99,
310
+ YP_PARAMETERS_NODE = 100,
311
+ YP_PARENTHESES_NODE = 101,
312
+ YP_PINNED_EXPRESSION_NODE = 102,
313
+ YP_PINNED_VARIABLE_NODE = 103,
314
+ YP_POST_EXECUTION_NODE = 104,
315
+ YP_PRE_EXECUTION_NODE = 105,
316
+ YP_PROGRAM_NODE = 106,
317
+ YP_RANGE_NODE = 107,
318
+ YP_RATIONAL_NODE = 108,
319
+ YP_REDO_NODE = 109,
320
+ YP_REGULAR_EXPRESSION_NODE = 110,
321
+ YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 111,
322
+ YP_REQUIRED_PARAMETER_NODE = 112,
323
+ YP_RESCUE_MODIFIER_NODE = 113,
324
+ YP_RESCUE_NODE = 114,
325
+ YP_REST_PARAMETER_NODE = 115,
326
+ YP_RETRY_NODE = 116,
327
+ YP_RETURN_NODE = 117,
328
+ YP_SELF_NODE = 118,
329
+ YP_SINGLETON_CLASS_NODE = 119,
330
+ YP_SOURCE_ENCODING_NODE = 120,
331
+ YP_SOURCE_FILE_NODE = 121,
332
+ YP_SOURCE_LINE_NODE = 122,
333
+ YP_SPLAT_NODE = 123,
334
+ YP_STATEMENTS_NODE = 124,
335
+ YP_STRING_CONCAT_NODE = 125,
336
+ YP_STRING_NODE = 126,
337
+ YP_SUPER_NODE = 127,
338
+ YP_SYMBOL_NODE = 128,
339
+ YP_TRUE_NODE = 129,
340
+ YP_UNDEF_NODE = 130,
341
+ YP_UNLESS_NODE = 131,
342
+ YP_UNTIL_NODE = 132,
343
+ YP_WHEN_NODE = 133,
344
+ YP_WHILE_NODE = 134,
345
+ YP_X_STRING_NODE = 135,
346
+ YP_YIELD_NODE = 136,
347
+ YP_SCOPE_NODE
352
348
  };
353
349
 
350
+ // Deprecated aliases
351
+ #define YP_NODE_SCOPE_NODE YP_SCOPE_NODE
352
+ #define YP_NODE_ALIAS_NODE YP_ALIAS_NODE
353
+ #define YP_NODE_ALTERNATION_PATTERN_NODE YP_ALTERNATION_PATTERN_NODE
354
+ #define YP_NODE_AND_NODE YP_AND_NODE
355
+ #define YP_NODE_ARGUMENTS_NODE YP_ARGUMENTS_NODE
356
+ #define YP_NODE_ARRAY_NODE YP_ARRAY_NODE
357
+ #define YP_NODE_ARRAY_PATTERN_NODE YP_ARRAY_PATTERN_NODE
358
+ #define YP_NODE_ASSOC_NODE YP_ASSOC_NODE
359
+ #define YP_NODE_ASSOC_SPLAT_NODE YP_ASSOC_SPLAT_NODE
360
+ #define YP_NODE_BACK_REFERENCE_READ_NODE YP_BACK_REFERENCE_READ_NODE
361
+ #define YP_NODE_BEGIN_NODE YP_BEGIN_NODE
362
+ #define YP_NODE_BLOCK_ARGUMENT_NODE YP_BLOCK_ARGUMENT_NODE
363
+ #define YP_NODE_BLOCK_LOCAL_VARIABLE_NODE YP_BLOCK_LOCAL_VARIABLE_NODE
364
+ #define YP_NODE_BLOCK_NODE YP_BLOCK_NODE
365
+ #define YP_NODE_BLOCK_PARAMETER_NODE YP_BLOCK_PARAMETER_NODE
366
+ #define YP_NODE_BLOCK_PARAMETERS_NODE YP_BLOCK_PARAMETERS_NODE
367
+ #define YP_NODE_BREAK_NODE YP_BREAK_NODE
368
+ #define YP_NODE_CALL_AND_WRITE_NODE YP_CALL_AND_WRITE_NODE
369
+ #define YP_NODE_CALL_NODE YP_CALL_NODE
370
+ #define YP_NODE_CALL_OPERATOR_WRITE_NODE YP_CALL_OPERATOR_WRITE_NODE
371
+ #define YP_NODE_CALL_OR_WRITE_NODE YP_CALL_OR_WRITE_NODE
372
+ #define YP_NODE_CAPTURE_PATTERN_NODE YP_CAPTURE_PATTERN_NODE
373
+ #define YP_NODE_CASE_NODE YP_CASE_NODE
374
+ #define YP_NODE_CLASS_NODE YP_CLASS_NODE
375
+ #define YP_NODE_CLASS_VARIABLE_AND_WRITE_NODE YP_CLASS_VARIABLE_AND_WRITE_NODE
376
+ #define YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE
377
+ #define YP_NODE_CLASS_VARIABLE_OR_WRITE_NODE YP_CLASS_VARIABLE_OR_WRITE_NODE
378
+ #define YP_NODE_CLASS_VARIABLE_READ_NODE YP_CLASS_VARIABLE_READ_NODE
379
+ #define YP_NODE_CLASS_VARIABLE_TARGET_NODE YP_CLASS_VARIABLE_TARGET_NODE
380
+ #define YP_NODE_CLASS_VARIABLE_WRITE_NODE YP_CLASS_VARIABLE_WRITE_NODE
381
+ #define YP_NODE_CONSTANT_AND_WRITE_NODE YP_CONSTANT_AND_WRITE_NODE
382
+ #define YP_NODE_CONSTANT_OPERATOR_WRITE_NODE YP_CONSTANT_OPERATOR_WRITE_NODE
383
+ #define YP_NODE_CONSTANT_OR_WRITE_NODE YP_CONSTANT_OR_WRITE_NODE
384
+ #define YP_NODE_CONSTANT_PATH_AND_WRITE_NODE YP_CONSTANT_PATH_AND_WRITE_NODE
385
+ #define YP_NODE_CONSTANT_PATH_NODE YP_CONSTANT_PATH_NODE
386
+ #define YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE YP_CONSTANT_PATH_OPERATOR_WRITE_NODE
387
+ #define YP_NODE_CONSTANT_PATH_OR_WRITE_NODE YP_CONSTANT_PATH_OR_WRITE_NODE
388
+ #define YP_NODE_CONSTANT_PATH_TARGET_NODE YP_CONSTANT_PATH_TARGET_NODE
389
+ #define YP_NODE_CONSTANT_PATH_WRITE_NODE YP_CONSTANT_PATH_WRITE_NODE
390
+ #define YP_NODE_CONSTANT_READ_NODE YP_CONSTANT_READ_NODE
391
+ #define YP_NODE_CONSTANT_TARGET_NODE YP_CONSTANT_TARGET_NODE
392
+ #define YP_NODE_CONSTANT_WRITE_NODE YP_CONSTANT_WRITE_NODE
393
+ #define YP_NODE_DEF_NODE YP_DEF_NODE
394
+ #define YP_NODE_DEFINED_NODE YP_DEFINED_NODE
395
+ #define YP_NODE_ELSE_NODE YP_ELSE_NODE
396
+ #define YP_NODE_EMBEDDED_STATEMENTS_NODE YP_EMBEDDED_STATEMENTS_NODE
397
+ #define YP_NODE_EMBEDDED_VARIABLE_NODE YP_EMBEDDED_VARIABLE_NODE
398
+ #define YP_NODE_ENSURE_NODE YP_ENSURE_NODE
399
+ #define YP_NODE_FALSE_NODE YP_FALSE_NODE
400
+ #define YP_NODE_FIND_PATTERN_NODE YP_FIND_PATTERN_NODE
401
+ #define YP_NODE_FLIP_FLOP_NODE YP_FLIP_FLOP_NODE
402
+ #define YP_NODE_FLOAT_NODE YP_FLOAT_NODE
403
+ #define YP_NODE_FOR_NODE YP_FOR_NODE
404
+ #define YP_NODE_FORWARDING_ARGUMENTS_NODE YP_FORWARDING_ARGUMENTS_NODE
405
+ #define YP_NODE_FORWARDING_PARAMETER_NODE YP_FORWARDING_PARAMETER_NODE
406
+ #define YP_NODE_FORWARDING_SUPER_NODE YP_FORWARDING_SUPER_NODE
407
+ #define YP_NODE_GLOBAL_VARIABLE_AND_WRITE_NODE YP_GLOBAL_VARIABLE_AND_WRITE_NODE
408
+ #define YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
409
+ #define YP_NODE_GLOBAL_VARIABLE_OR_WRITE_NODE YP_GLOBAL_VARIABLE_OR_WRITE_NODE
410
+ #define YP_NODE_GLOBAL_VARIABLE_READ_NODE YP_GLOBAL_VARIABLE_READ_NODE
411
+ #define YP_NODE_GLOBAL_VARIABLE_TARGET_NODE YP_GLOBAL_VARIABLE_TARGET_NODE
412
+ #define YP_NODE_GLOBAL_VARIABLE_WRITE_NODE YP_GLOBAL_VARIABLE_WRITE_NODE
413
+ #define YP_NODE_HASH_NODE YP_HASH_NODE
414
+ #define YP_NODE_HASH_PATTERN_NODE YP_HASH_PATTERN_NODE
415
+ #define YP_NODE_IF_NODE YP_IF_NODE
416
+ #define YP_NODE_IMAGINARY_NODE YP_IMAGINARY_NODE
417
+ #define YP_NODE_IN_NODE YP_IN_NODE
418
+ #define YP_NODE_INSTANCE_VARIABLE_AND_WRITE_NODE YP_INSTANCE_VARIABLE_AND_WRITE_NODE
419
+ #define YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
420
+ #define YP_NODE_INSTANCE_VARIABLE_OR_WRITE_NODE YP_INSTANCE_VARIABLE_OR_WRITE_NODE
421
+ #define YP_NODE_INSTANCE_VARIABLE_READ_NODE YP_INSTANCE_VARIABLE_READ_NODE
422
+ #define YP_NODE_INSTANCE_VARIABLE_TARGET_NODE YP_INSTANCE_VARIABLE_TARGET_NODE
423
+ #define YP_NODE_INSTANCE_VARIABLE_WRITE_NODE YP_INSTANCE_VARIABLE_WRITE_NODE
424
+ #define YP_NODE_INTEGER_NODE YP_INTEGER_NODE
425
+ #define YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE YP_INTERPOLATED_REGULAR_EXPRESSION_NODE
426
+ #define YP_NODE_INTERPOLATED_STRING_NODE YP_INTERPOLATED_STRING_NODE
427
+ #define YP_NODE_INTERPOLATED_SYMBOL_NODE YP_INTERPOLATED_SYMBOL_NODE
428
+ #define YP_NODE_INTERPOLATED_X_STRING_NODE YP_INTERPOLATED_X_STRING_NODE
429
+ #define YP_NODE_KEYWORD_HASH_NODE YP_KEYWORD_HASH_NODE
430
+ #define YP_NODE_KEYWORD_PARAMETER_NODE YP_KEYWORD_PARAMETER_NODE
431
+ #define YP_NODE_KEYWORD_REST_PARAMETER_NODE YP_KEYWORD_REST_PARAMETER_NODE
432
+ #define YP_NODE_LAMBDA_NODE YP_LAMBDA_NODE
433
+ #define YP_NODE_LOCAL_VARIABLE_AND_WRITE_NODE YP_LOCAL_VARIABLE_AND_WRITE_NODE
434
+ #define YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
435
+ #define YP_NODE_LOCAL_VARIABLE_OR_WRITE_NODE YP_LOCAL_VARIABLE_OR_WRITE_NODE
436
+ #define YP_NODE_LOCAL_VARIABLE_READ_NODE YP_LOCAL_VARIABLE_READ_NODE
437
+ #define YP_NODE_LOCAL_VARIABLE_TARGET_NODE YP_LOCAL_VARIABLE_TARGET_NODE
438
+ #define YP_NODE_LOCAL_VARIABLE_WRITE_NODE YP_LOCAL_VARIABLE_WRITE_NODE
439
+ #define YP_NODE_MATCH_PREDICATE_NODE YP_MATCH_PREDICATE_NODE
440
+ #define YP_NODE_MATCH_REQUIRED_NODE YP_MATCH_REQUIRED_NODE
441
+ #define YP_NODE_MISSING_NODE YP_MISSING_NODE
442
+ #define YP_NODE_MODULE_NODE YP_MODULE_NODE
443
+ #define YP_NODE_MULTI_TARGET_NODE YP_MULTI_TARGET_NODE
444
+ #define YP_NODE_MULTI_WRITE_NODE YP_MULTI_WRITE_NODE
445
+ #define YP_NODE_NEXT_NODE YP_NEXT_NODE
446
+ #define YP_NODE_NIL_NODE YP_NIL_NODE
447
+ #define YP_NODE_NO_KEYWORDS_PARAMETER_NODE YP_NO_KEYWORDS_PARAMETER_NODE
448
+ #define YP_NODE_NUMBERED_REFERENCE_READ_NODE YP_NUMBERED_REFERENCE_READ_NODE
449
+ #define YP_NODE_OPTIONAL_PARAMETER_NODE YP_OPTIONAL_PARAMETER_NODE
450
+ #define YP_NODE_OR_NODE YP_OR_NODE
451
+ #define YP_NODE_PARAMETERS_NODE YP_PARAMETERS_NODE
452
+ #define YP_NODE_PARENTHESES_NODE YP_PARENTHESES_NODE
453
+ #define YP_NODE_PINNED_EXPRESSION_NODE YP_PINNED_EXPRESSION_NODE
454
+ #define YP_NODE_PINNED_VARIABLE_NODE YP_PINNED_VARIABLE_NODE
455
+ #define YP_NODE_POST_EXECUTION_NODE YP_POST_EXECUTION_NODE
456
+ #define YP_NODE_PRE_EXECUTION_NODE YP_PRE_EXECUTION_NODE
457
+ #define YP_NODE_PROGRAM_NODE YP_PROGRAM_NODE
458
+ #define YP_NODE_RANGE_NODE YP_RANGE_NODE
459
+ #define YP_NODE_RATIONAL_NODE YP_RATIONAL_NODE
460
+ #define YP_NODE_REDO_NODE YP_REDO_NODE
461
+ #define YP_NODE_REGULAR_EXPRESSION_NODE YP_REGULAR_EXPRESSION_NODE
462
+ #define YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE
463
+ #define YP_NODE_REQUIRED_PARAMETER_NODE YP_REQUIRED_PARAMETER_NODE
464
+ #define YP_NODE_RESCUE_MODIFIER_NODE YP_RESCUE_MODIFIER_NODE
465
+ #define YP_NODE_RESCUE_NODE YP_RESCUE_NODE
466
+ #define YP_NODE_REST_PARAMETER_NODE YP_REST_PARAMETER_NODE
467
+ #define YP_NODE_RETRY_NODE YP_RETRY_NODE
468
+ #define YP_NODE_RETURN_NODE YP_RETURN_NODE
469
+ #define YP_NODE_SELF_NODE YP_SELF_NODE
470
+ #define YP_NODE_SINGLETON_CLASS_NODE YP_SINGLETON_CLASS_NODE
471
+ #define YP_NODE_SOURCE_ENCODING_NODE YP_SOURCE_ENCODING_NODE
472
+ #define YP_NODE_SOURCE_FILE_NODE YP_SOURCE_FILE_NODE
473
+ #define YP_NODE_SOURCE_LINE_NODE YP_SOURCE_LINE_NODE
474
+ #define YP_NODE_SPLAT_NODE YP_SPLAT_NODE
475
+ #define YP_NODE_STATEMENTS_NODE YP_STATEMENTS_NODE
476
+ #define YP_NODE_STRING_CONCAT_NODE YP_STRING_CONCAT_NODE
477
+ #define YP_NODE_STRING_NODE YP_STRING_NODE
478
+ #define YP_NODE_SUPER_NODE YP_SUPER_NODE
479
+ #define YP_NODE_SYMBOL_NODE YP_SYMBOL_NODE
480
+ #define YP_NODE_TRUE_NODE YP_TRUE_NODE
481
+ #define YP_NODE_UNDEF_NODE YP_UNDEF_NODE
482
+ #define YP_NODE_UNLESS_NODE YP_UNLESS_NODE
483
+ #define YP_NODE_UNTIL_NODE YP_UNTIL_NODE
484
+ #define YP_NODE_WHEN_NODE YP_WHEN_NODE
485
+ #define YP_NODE_WHILE_NODE YP_WHILE_NODE
486
+ #define YP_NODE_X_STRING_NODE YP_X_STRING_NODE
487
+ #define YP_NODE_YIELD_NODE YP_YIELD_NODE
488
+
354
489
  typedef uint16_t yp_node_type_t;
355
490
  typedef uint16_t yp_node_flags_t;
356
491
 
@@ -368,8 +503,7 @@ typedef struct yp_node {
368
503
  // existed in the original grammar and ripper, but it's not a 1:1 mapping.
369
504
  yp_node_type_t type;
370
505
 
371
- // This represents any flags on the node. Currently, this is only a newline
372
- // flag
506
+ // This represents any flags on the node
373
507
  yp_node_flags_t flags;
374
508
 
375
509
  // This is the location of the node in the source. It's a range of bytes
@@ -378,6 +512,8 @@ typedef struct yp_node {
378
512
  } yp_node_t;
379
513
 
380
514
  // AliasNode
515
+ //
516
+ // Type: YP_ALIAS_NODE
381
517
  typedef struct yp_alias_node {
382
518
  yp_node_t base;
383
519
  struct yp_node *new_name;
@@ -386,6 +522,8 @@ typedef struct yp_alias_node {
386
522
  } yp_alias_node_t;
387
523
 
388
524
  // AlternationPatternNode
525
+ //
526
+ // Type: YP_ALTERNATION_PATTERN_NODE
389
527
  typedef struct yp_alternation_pattern_node {
390
528
  yp_node_t base;
391
529
  struct yp_node *left;
@@ -394,6 +532,8 @@ typedef struct yp_alternation_pattern_node {
394
532
  } yp_alternation_pattern_node_t;
395
533
 
396
534
  // AndNode
535
+ //
536
+ // Type: YP_AND_NODE
397
537
  typedef struct yp_and_node {
398
538
  yp_node_t base;
399
539
  struct yp_node *left;
@@ -402,12 +542,16 @@ typedef struct yp_and_node {
402
542
  } yp_and_node_t;
403
543
 
404
544
  // ArgumentsNode
545
+ //
546
+ // Type: YP_ARGUMENTS_NODE
405
547
  typedef struct yp_arguments_node {
406
548
  yp_node_t base;
407
549
  struct yp_node_list arguments;
408
550
  } yp_arguments_node_t;
409
551
 
410
552
  // ArrayNode
553
+ //
554
+ // Type: YP_ARRAY_NODE
411
555
  typedef struct yp_array_node {
412
556
  yp_node_t base;
413
557
  struct yp_node_list elements;
@@ -416,6 +560,8 @@ typedef struct yp_array_node {
416
560
  } yp_array_node_t;
417
561
 
418
562
  // ArrayPatternNode
563
+ //
564
+ // Type: YP_ARRAY_PATTERN_NODE
419
565
  typedef struct yp_array_pattern_node {
420
566
  yp_node_t base;
421
567
  struct yp_node *constant;
@@ -427,6 +573,8 @@ typedef struct yp_array_pattern_node {
427
573
  } yp_array_pattern_node_t;
428
574
 
429
575
  // AssocNode
576
+ //
577
+ // Type: YP_ASSOC_NODE
430
578
  typedef struct yp_assoc_node {
431
579
  yp_node_t base;
432
580
  struct yp_node *key;
@@ -435,6 +583,8 @@ typedef struct yp_assoc_node {
435
583
  } yp_assoc_node_t;
436
584
 
437
585
  // AssocSplatNode
586
+ //
587
+ // Type: YP_ASSOC_SPLAT_NODE
438
588
  typedef struct yp_assoc_splat_node {
439
589
  yp_node_t base;
440
590
  struct yp_node *value;
@@ -442,11 +592,15 @@ typedef struct yp_assoc_splat_node {
442
592
  } yp_assoc_splat_node_t;
443
593
 
444
594
  // BackReferenceReadNode
595
+ //
596
+ // Type: YP_BACK_REFERENCE_READ_NODE
445
597
  typedef struct yp_back_reference_read_node {
446
598
  yp_node_t base;
447
599
  } yp_back_reference_read_node_t;
448
600
 
449
601
  // BeginNode
602
+ //
603
+ // Type: YP_BEGIN_NODE
450
604
  typedef struct yp_begin_node {
451
605
  yp_node_t base;
452
606
  yp_location_t begin_keyword_loc;
@@ -458,13 +612,25 @@ typedef struct yp_begin_node {
458
612
  } yp_begin_node_t;
459
613
 
460
614
  // BlockArgumentNode
615
+ //
616
+ // Type: YP_BLOCK_ARGUMENT_NODE
461
617
  typedef struct yp_block_argument_node {
462
618
  yp_node_t base;
463
619
  struct yp_node *expression;
464
620
  yp_location_t operator_loc;
465
621
  } yp_block_argument_node_t;
466
622
 
623
+ // BlockLocalVariableNode
624
+ //
625
+ // Type: YP_BLOCK_LOCAL_VARIABLE_NODE
626
+ typedef struct yp_block_local_variable_node {
627
+ yp_node_t base;
628
+ yp_constant_id_t name;
629
+ } yp_block_local_variable_node_t;
630
+
467
631
  // BlockNode
632
+ //
633
+ // Type: YP_BLOCK_NODE
468
634
  typedef struct yp_block_node {
469
635
  yp_node_t base;
470
636
  yp_constant_id_list_t locals;
@@ -475,33 +641,65 @@ typedef struct yp_block_node {
475
641
  } yp_block_node_t;
476
642
 
477
643
  // BlockParameterNode
644
+ //
645
+ // Type: YP_BLOCK_PARAMETER_NODE
478
646
  typedef struct yp_block_parameter_node {
479
647
  yp_node_t base;
648
+ yp_constant_id_t name;
480
649
  yp_location_t name_loc;
481
650
  yp_location_t operator_loc;
482
651
  } yp_block_parameter_node_t;
483
652
 
484
653
  // BlockParametersNode
654
+ //
655
+ // Type: YP_BLOCK_PARAMETERS_NODE
485
656
  typedef struct yp_block_parameters_node {
486
657
  yp_node_t base;
487
658
  struct yp_parameters_node *parameters;
488
- yp_location_list_t locals;
659
+ struct yp_node_list locals;
489
660
  yp_location_t opening_loc;
490
661
  yp_location_t closing_loc;
491
662
  } yp_block_parameters_node_t;
492
663
 
493
664
  // BreakNode
665
+ //
666
+ // Type: YP_BREAK_NODE
494
667
  typedef struct yp_break_node {
495
668
  yp_node_t base;
496
669
  struct yp_arguments_node *arguments;
497
670
  yp_location_t keyword_loc;
498
671
  } yp_break_node_t;
499
672
 
673
+ // CallAndWriteNode
674
+ //
675
+ // Type: YP_CALL_AND_WRITE_NODE
676
+ // Flags:
677
+ // YP_CALL_NODE_FLAGS_SAFE_NAVIGATION
678
+ // YP_CALL_NODE_FLAGS_VARIABLE_CALL
679
+ typedef struct yp_call_and_write_node {
680
+ yp_node_t base;
681
+ struct yp_node *receiver;
682
+ yp_location_t call_operator_loc;
683
+ yp_location_t message_loc;
684
+ yp_location_t opening_loc;
685
+ struct yp_arguments_node *arguments;
686
+ yp_location_t closing_loc;
687
+ yp_string_t read_name;
688
+ yp_string_t write_name;
689
+ yp_location_t operator_loc;
690
+ struct yp_node *value;
691
+ } yp_call_and_write_node_t;
692
+
500
693
  // CallNode
694
+ //
695
+ // Type: YP_CALL_NODE
696
+ // Flags:
697
+ // YP_CALL_NODE_FLAGS_SAFE_NAVIGATION
698
+ // YP_CALL_NODE_FLAGS_VARIABLE_CALL
501
699
  typedef struct yp_call_node {
502
700
  yp_node_t base;
503
701
  struct yp_node *receiver;
504
- yp_location_t operator_loc;
702
+ yp_location_t call_operator_loc;
505
703
  yp_location_t message_loc;
506
704
  yp_location_t opening_loc;
507
705
  struct yp_arguments_node *arguments;
@@ -510,32 +708,50 @@ typedef struct yp_call_node {
510
708
  yp_string_t name;
511
709
  } yp_call_node_t;
512
710
 
513
- // CallOperatorAndWriteNode
514
- typedef struct yp_call_operator_and_write_node {
711
+ // CallOperatorWriteNode
712
+ //
713
+ // Type: YP_CALL_OPERATOR_WRITE_NODE
714
+ // Flags:
715
+ // YP_CALL_NODE_FLAGS_SAFE_NAVIGATION
716
+ // YP_CALL_NODE_FLAGS_VARIABLE_CALL
717
+ typedef struct yp_call_operator_write_node {
515
718
  yp_node_t base;
516
- struct yp_call_node *target;
719
+ struct yp_node *receiver;
720
+ yp_location_t call_operator_loc;
721
+ yp_location_t message_loc;
722
+ yp_location_t opening_loc;
723
+ struct yp_arguments_node *arguments;
724
+ yp_location_t closing_loc;
725
+ yp_string_t read_name;
726
+ yp_string_t write_name;
727
+ yp_constant_id_t operator;
517
728
  yp_location_t operator_loc;
518
729
  struct yp_node *value;
519
- } yp_call_operator_and_write_node_t;
520
-
521
- // CallOperatorOrWriteNode
522
- typedef struct yp_call_operator_or_write_node {
523
- yp_node_t base;
524
- struct yp_call_node *target;
525
- struct yp_node *value;
526
- yp_location_t operator_loc;
527
- } yp_call_operator_or_write_node_t;
730
+ } yp_call_operator_write_node_t;
528
731
 
529
- // CallOperatorWriteNode
530
- typedef struct yp_call_operator_write_node {
732
+ // CallOrWriteNode
733
+ //
734
+ // Type: YP_CALL_OR_WRITE_NODE
735
+ // Flags:
736
+ // YP_CALL_NODE_FLAGS_SAFE_NAVIGATION
737
+ // YP_CALL_NODE_FLAGS_VARIABLE_CALL
738
+ typedef struct yp_call_or_write_node {
531
739
  yp_node_t base;
532
- struct yp_call_node *target;
740
+ struct yp_node *receiver;
741
+ yp_location_t call_operator_loc;
742
+ yp_location_t message_loc;
743
+ yp_location_t opening_loc;
744
+ struct yp_arguments_node *arguments;
745
+ yp_location_t closing_loc;
746
+ yp_string_t read_name;
747
+ yp_string_t write_name;
533
748
  yp_location_t operator_loc;
534
749
  struct yp_node *value;
535
- yp_constant_id_t operator_id;
536
- } yp_call_operator_write_node_t;
750
+ } yp_call_or_write_node_t;
537
751
 
538
752
  // CapturePatternNode
753
+ //
754
+ // Type: YP_CAPTURE_PATTERN_NODE
539
755
  typedef struct yp_capture_pattern_node {
540
756
  yp_node_t base;
541
757
  struct yp_node *value;
@@ -544,6 +760,8 @@ typedef struct yp_capture_pattern_node {
544
760
  } yp_capture_pattern_node_t;
545
761
 
546
762
  // CaseNode
763
+ //
764
+ // Type: YP_CASE_NODE
547
765
  typedef struct yp_case_node {
548
766
  yp_node_t base;
549
767
  struct yp_node *predicate;
@@ -554,6 +772,8 @@ typedef struct yp_case_node {
554
772
  } yp_case_node_t;
555
773
 
556
774
  // ClassNode
775
+ //
776
+ // Type: YP_CLASS_NODE
557
777
  typedef struct yp_class_node {
558
778
  yp_node_t base;
559
779
  yp_constant_id_list_t locals;
@@ -563,20 +783,26 @@ typedef struct yp_class_node {
563
783
  struct yp_node *superclass;
564
784
  struct yp_node *body;
565
785
  yp_location_t end_keyword_loc;
566
- yp_string_t name;
786
+ yp_constant_id_t name;
567
787
  } yp_class_node_t;
568
788
 
569
789
  // ClassVariableAndWriteNode
790
+ //
791
+ // Type: YP_CLASS_VARIABLE_AND_WRITE_NODE
570
792
  typedef struct yp_class_variable_and_write_node {
571
793
  yp_node_t base;
794
+ yp_constant_id_t name;
572
795
  yp_location_t name_loc;
573
796
  yp_location_t operator_loc;
574
797
  struct yp_node *value;
575
798
  } yp_class_variable_and_write_node_t;
576
799
 
577
800
  // ClassVariableOperatorWriteNode
801
+ //
802
+ // Type: YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE
578
803
  typedef struct yp_class_variable_operator_write_node {
579
804
  yp_node_t base;
805
+ yp_constant_id_t name;
580
806
  yp_location_t name_loc;
581
807
  yp_location_t operator_loc;
582
808
  struct yp_node *value;
@@ -584,42 +810,60 @@ typedef struct yp_class_variable_operator_write_node {
584
810
  } yp_class_variable_operator_write_node_t;
585
811
 
586
812
  // ClassVariableOrWriteNode
813
+ //
814
+ // Type: YP_CLASS_VARIABLE_OR_WRITE_NODE
587
815
  typedef struct yp_class_variable_or_write_node {
588
816
  yp_node_t base;
817
+ yp_constant_id_t name;
589
818
  yp_location_t name_loc;
590
819
  yp_location_t operator_loc;
591
820
  struct yp_node *value;
592
821
  } yp_class_variable_or_write_node_t;
593
822
 
594
823
  // ClassVariableReadNode
824
+ //
825
+ // Type: YP_CLASS_VARIABLE_READ_NODE
595
826
  typedef struct yp_class_variable_read_node {
596
827
  yp_node_t base;
828
+ yp_constant_id_t name;
597
829
  } yp_class_variable_read_node_t;
598
830
 
599
831
  // ClassVariableTargetNode
832
+ //
833
+ // Type: YP_CLASS_VARIABLE_TARGET_NODE
600
834
  typedef struct yp_class_variable_target_node {
601
835
  yp_node_t base;
836
+ yp_constant_id_t name;
602
837
  } yp_class_variable_target_node_t;
603
838
 
604
839
  // ClassVariableWriteNode
840
+ //
841
+ // Type: YP_CLASS_VARIABLE_WRITE_NODE
605
842
  typedef struct yp_class_variable_write_node {
606
843
  yp_node_t base;
844
+ yp_constant_id_t name;
607
845
  yp_location_t name_loc;
608
846
  struct yp_node *value;
609
847
  yp_location_t operator_loc;
610
848
  } yp_class_variable_write_node_t;
611
849
 
612
850
  // ConstantAndWriteNode
851
+ //
852
+ // Type: YP_CONSTANT_AND_WRITE_NODE
613
853
  typedef struct yp_constant_and_write_node {
614
854
  yp_node_t base;
855
+ yp_constant_id_t name;
615
856
  yp_location_t name_loc;
616
857
  yp_location_t operator_loc;
617
858
  struct yp_node *value;
618
859
  } yp_constant_and_write_node_t;
619
860
 
620
861
  // ConstantOperatorWriteNode
862
+ //
863
+ // Type: YP_CONSTANT_OPERATOR_WRITE_NODE
621
864
  typedef struct yp_constant_operator_write_node {
622
865
  yp_node_t base;
866
+ yp_constant_id_t name;
623
867
  yp_location_t name_loc;
624
868
  yp_location_t operator_loc;
625
869
  struct yp_node *value;
@@ -627,14 +871,19 @@ typedef struct yp_constant_operator_write_node {
627
871
  } yp_constant_operator_write_node_t;
628
872
 
629
873
  // ConstantOrWriteNode
874
+ //
875
+ // Type: YP_CONSTANT_OR_WRITE_NODE
630
876
  typedef struct yp_constant_or_write_node {
631
877
  yp_node_t base;
878
+ yp_constant_id_t name;
632
879
  yp_location_t name_loc;
633
880
  yp_location_t operator_loc;
634
881
  struct yp_node *value;
635
882
  } yp_constant_or_write_node_t;
636
883
 
637
884
  // ConstantPathAndWriteNode
885
+ //
886
+ // Type: YP_CONSTANT_PATH_AND_WRITE_NODE
638
887
  typedef struct yp_constant_path_and_write_node {
639
888
  yp_node_t base;
640
889
  struct yp_constant_path_node *target;
@@ -643,6 +892,8 @@ typedef struct yp_constant_path_and_write_node {
643
892
  } yp_constant_path_and_write_node_t;
644
893
 
645
894
  // ConstantPathNode
895
+ //
896
+ // Type: YP_CONSTANT_PATH_NODE
646
897
  typedef struct yp_constant_path_node {
647
898
  yp_node_t base;
648
899
  struct yp_node *parent;
@@ -651,6 +902,8 @@ typedef struct yp_constant_path_node {
651
902
  } yp_constant_path_node_t;
652
903
 
653
904
  // ConstantPathOperatorWriteNode
905
+ //
906
+ // Type: YP_CONSTANT_PATH_OPERATOR_WRITE_NODE
654
907
  typedef struct yp_constant_path_operator_write_node {
655
908
  yp_node_t base;
656
909
  struct yp_constant_path_node *target;
@@ -660,6 +913,8 @@ typedef struct yp_constant_path_operator_write_node {
660
913
  } yp_constant_path_operator_write_node_t;
661
914
 
662
915
  // ConstantPathOrWriteNode
916
+ //
917
+ // Type: YP_CONSTANT_PATH_OR_WRITE_NODE
663
918
  typedef struct yp_constant_path_or_write_node {
664
919
  yp_node_t base;
665
920
  struct yp_constant_path_node *target;
@@ -668,6 +923,8 @@ typedef struct yp_constant_path_or_write_node {
668
923
  } yp_constant_path_or_write_node_t;
669
924
 
670
925
  // ConstantPathTargetNode
926
+ //
927
+ // Type: YP_CONSTANT_PATH_TARGET_NODE
671
928
  typedef struct yp_constant_path_target_node {
672
929
  yp_node_t base;
673
930
  struct yp_node *parent;
@@ -676,6 +933,8 @@ typedef struct yp_constant_path_target_node {
676
933
  } yp_constant_path_target_node_t;
677
934
 
678
935
  // ConstantPathWriteNode
936
+ //
937
+ // Type: YP_CONSTANT_PATH_WRITE_NODE
679
938
  typedef struct yp_constant_path_write_node {
680
939
  yp_node_t base;
681
940
  struct yp_constant_path_node *target;
@@ -684,26 +943,38 @@ typedef struct yp_constant_path_write_node {
684
943
  } yp_constant_path_write_node_t;
685
944
 
686
945
  // ConstantReadNode
946
+ //
947
+ // Type: YP_CONSTANT_READ_NODE
687
948
  typedef struct yp_constant_read_node {
688
949
  yp_node_t base;
950
+ yp_constant_id_t name;
689
951
  } yp_constant_read_node_t;
690
952
 
691
953
  // ConstantTargetNode
954
+ //
955
+ // Type: YP_CONSTANT_TARGET_NODE
692
956
  typedef struct yp_constant_target_node {
693
957
  yp_node_t base;
958
+ yp_constant_id_t name;
694
959
  } yp_constant_target_node_t;
695
960
 
696
961
  // ConstantWriteNode
962
+ //
963
+ // Type: YP_CONSTANT_WRITE_NODE
697
964
  typedef struct yp_constant_write_node {
698
965
  yp_node_t base;
966
+ yp_constant_id_t name;
699
967
  yp_location_t name_loc;
700
968
  struct yp_node *value;
701
969
  yp_location_t operator_loc;
702
970
  } yp_constant_write_node_t;
703
971
 
704
972
  // DefNode
973
+ //
974
+ // Type: YP_DEF_NODE
705
975
  typedef struct yp_def_node {
706
976
  yp_node_t base;
977
+ yp_constant_id_t name;
707
978
  yp_location_t name_loc;
708
979
  struct yp_node *receiver;
709
980
  struct yp_parameters_node *parameters;
@@ -718,6 +989,8 @@ typedef struct yp_def_node {
718
989
  } yp_def_node_t;
719
990
 
720
991
  // DefinedNode
992
+ //
993
+ // Type: YP_DEFINED_NODE
721
994
  typedef struct yp_defined_node {
722
995
  yp_node_t base;
723
996
  yp_location_t lparen_loc;
@@ -727,6 +1000,8 @@ typedef struct yp_defined_node {
727
1000
  } yp_defined_node_t;
728
1001
 
729
1002
  // ElseNode
1003
+ //
1004
+ // Type: YP_ELSE_NODE
730
1005
  typedef struct yp_else_node {
731
1006
  yp_node_t base;
732
1007
  yp_location_t else_keyword_loc;
@@ -735,6 +1010,8 @@ typedef struct yp_else_node {
735
1010
  } yp_else_node_t;
736
1011
 
737
1012
  // EmbeddedStatementsNode
1013
+ //
1014
+ // Type: YP_EMBEDDED_STATEMENTS_NODE
738
1015
  typedef struct yp_embedded_statements_node {
739
1016
  yp_node_t base;
740
1017
  yp_location_t opening_loc;
@@ -743,6 +1020,8 @@ typedef struct yp_embedded_statements_node {
743
1020
  } yp_embedded_statements_node_t;
744
1021
 
745
1022
  // EmbeddedVariableNode
1023
+ //
1024
+ // Type: YP_EMBEDDED_VARIABLE_NODE
746
1025
  typedef struct yp_embedded_variable_node {
747
1026
  yp_node_t base;
748
1027
  yp_location_t operator_loc;
@@ -750,6 +1029,8 @@ typedef struct yp_embedded_variable_node {
750
1029
  } yp_embedded_variable_node_t;
751
1030
 
752
1031
  // EnsureNode
1032
+ //
1033
+ // Type: YP_ENSURE_NODE
753
1034
  typedef struct yp_ensure_node {
754
1035
  yp_node_t base;
755
1036
  yp_location_t ensure_keyword_loc;
@@ -758,11 +1039,15 @@ typedef struct yp_ensure_node {
758
1039
  } yp_ensure_node_t;
759
1040
 
760
1041
  // FalseNode
1042
+ //
1043
+ // Type: YP_FALSE_NODE
761
1044
  typedef struct yp_false_node {
762
1045
  yp_node_t base;
763
1046
  } yp_false_node_t;
764
1047
 
765
1048
  // FindPatternNode
1049
+ //
1050
+ // Type: YP_FIND_PATTERN_NODE
766
1051
  typedef struct yp_find_pattern_node {
767
1052
  yp_node_t base;
768
1053
  struct yp_node *constant;
@@ -774,6 +1059,10 @@ typedef struct yp_find_pattern_node {
774
1059
  } yp_find_pattern_node_t;
775
1060
 
776
1061
  // FlipFlopNode
1062
+ //
1063
+ // Type: YP_FLIP_FLOP_NODE
1064
+ // Flags:
1065
+ // YP_RANGE_FLAGS_EXCLUDE_END
777
1066
  typedef struct yp_flip_flop_node {
778
1067
  yp_node_t base;
779
1068
  struct yp_node *left;
@@ -782,11 +1071,15 @@ typedef struct yp_flip_flop_node {
782
1071
  } yp_flip_flop_node_t;
783
1072
 
784
1073
  // FloatNode
1074
+ //
1075
+ // Type: YP_FLOAT_NODE
785
1076
  typedef struct yp_float_node {
786
1077
  yp_node_t base;
787
1078
  } yp_float_node_t;
788
1079
 
789
1080
  // ForNode
1081
+ //
1082
+ // Type: YP_FOR_NODE
790
1083
  typedef struct yp_for_node {
791
1084
  yp_node_t base;
792
1085
  struct yp_node *index;
@@ -799,32 +1092,44 @@ typedef struct yp_for_node {
799
1092
  } yp_for_node_t;
800
1093
 
801
1094
  // ForwardingArgumentsNode
1095
+ //
1096
+ // Type: YP_FORWARDING_ARGUMENTS_NODE
802
1097
  typedef struct yp_forwarding_arguments_node {
803
1098
  yp_node_t base;
804
1099
  } yp_forwarding_arguments_node_t;
805
1100
 
806
1101
  // ForwardingParameterNode
1102
+ //
1103
+ // Type: YP_FORWARDING_PARAMETER_NODE
807
1104
  typedef struct yp_forwarding_parameter_node {
808
1105
  yp_node_t base;
809
1106
  } yp_forwarding_parameter_node_t;
810
1107
 
811
1108
  // ForwardingSuperNode
1109
+ //
1110
+ // Type: YP_FORWARDING_SUPER_NODE
812
1111
  typedef struct yp_forwarding_super_node {
813
1112
  yp_node_t base;
814
1113
  struct yp_block_node *block;
815
1114
  } yp_forwarding_super_node_t;
816
1115
 
817
1116
  // GlobalVariableAndWriteNode
1117
+ //
1118
+ // Type: YP_GLOBAL_VARIABLE_AND_WRITE_NODE
818
1119
  typedef struct yp_global_variable_and_write_node {
819
1120
  yp_node_t base;
1121
+ yp_constant_id_t name;
820
1122
  yp_location_t name_loc;
821
1123
  yp_location_t operator_loc;
822
1124
  struct yp_node *value;
823
1125
  } yp_global_variable_and_write_node_t;
824
1126
 
825
1127
  // GlobalVariableOperatorWriteNode
1128
+ //
1129
+ // Type: YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
826
1130
  typedef struct yp_global_variable_operator_write_node {
827
1131
  yp_node_t base;
1132
+ yp_constant_id_t name;
828
1133
  yp_location_t name_loc;
829
1134
  yp_location_t operator_loc;
830
1135
  struct yp_node *value;
@@ -832,32 +1137,46 @@ typedef struct yp_global_variable_operator_write_node {
832
1137
  } yp_global_variable_operator_write_node_t;
833
1138
 
834
1139
  // GlobalVariableOrWriteNode
1140
+ //
1141
+ // Type: YP_GLOBAL_VARIABLE_OR_WRITE_NODE
835
1142
  typedef struct yp_global_variable_or_write_node {
836
1143
  yp_node_t base;
1144
+ yp_constant_id_t name;
837
1145
  yp_location_t name_loc;
838
1146
  yp_location_t operator_loc;
839
1147
  struct yp_node *value;
840
1148
  } yp_global_variable_or_write_node_t;
841
1149
 
842
1150
  // GlobalVariableReadNode
1151
+ //
1152
+ // Type: YP_GLOBAL_VARIABLE_READ_NODE
843
1153
  typedef struct yp_global_variable_read_node {
844
1154
  yp_node_t base;
1155
+ yp_constant_id_t name;
845
1156
  } yp_global_variable_read_node_t;
846
1157
 
847
1158
  // GlobalVariableTargetNode
1159
+ //
1160
+ // Type: YP_GLOBAL_VARIABLE_TARGET_NODE
848
1161
  typedef struct yp_global_variable_target_node {
849
1162
  yp_node_t base;
1163
+ yp_constant_id_t name;
850
1164
  } yp_global_variable_target_node_t;
851
1165
 
852
1166
  // GlobalVariableWriteNode
1167
+ //
1168
+ // Type: YP_GLOBAL_VARIABLE_WRITE_NODE
853
1169
  typedef struct yp_global_variable_write_node {
854
1170
  yp_node_t base;
1171
+ yp_constant_id_t name;
855
1172
  yp_location_t name_loc;
856
- yp_location_t operator_loc;
857
1173
  struct yp_node *value;
1174
+ yp_location_t operator_loc;
858
1175
  } yp_global_variable_write_node_t;
859
1176
 
860
1177
  // HashNode
1178
+ //
1179
+ // Type: YP_HASH_NODE
861
1180
  typedef struct yp_hash_node {
862
1181
  yp_node_t base;
863
1182
  yp_location_t opening_loc;
@@ -866,6 +1185,8 @@ typedef struct yp_hash_node {
866
1185
  } yp_hash_node_t;
867
1186
 
868
1187
  // HashPatternNode
1188
+ //
1189
+ // Type: YP_HASH_PATTERN_NODE
869
1190
  typedef struct yp_hash_pattern_node {
870
1191
  yp_node_t base;
871
1192
  struct yp_node *constant;
@@ -876,6 +1197,8 @@ typedef struct yp_hash_pattern_node {
876
1197
  } yp_hash_pattern_node_t;
877
1198
 
878
1199
  // IfNode
1200
+ //
1201
+ // Type: YP_IF_NODE
879
1202
  typedef struct yp_if_node {
880
1203
  yp_node_t base;
881
1204
  yp_location_t if_keyword_loc;
@@ -886,12 +1209,16 @@ typedef struct yp_if_node {
886
1209
  } yp_if_node_t;
887
1210
 
888
1211
  // ImaginaryNode
1212
+ //
1213
+ // Type: YP_IMAGINARY_NODE
889
1214
  typedef struct yp_imaginary_node {
890
1215
  yp_node_t base;
891
1216
  struct yp_node *numeric;
892
1217
  } yp_imaginary_node_t;
893
1218
 
894
1219
  // InNode
1220
+ //
1221
+ // Type: YP_IN_NODE
895
1222
  typedef struct yp_in_node {
896
1223
  yp_node_t base;
897
1224
  struct yp_node *pattern;
@@ -901,16 +1228,22 @@ typedef struct yp_in_node {
901
1228
  } yp_in_node_t;
902
1229
 
903
1230
  // InstanceVariableAndWriteNode
1231
+ //
1232
+ // Type: YP_INSTANCE_VARIABLE_AND_WRITE_NODE
904
1233
  typedef struct yp_instance_variable_and_write_node {
905
1234
  yp_node_t base;
1235
+ yp_constant_id_t name;
906
1236
  yp_location_t name_loc;
907
1237
  yp_location_t operator_loc;
908
1238
  struct yp_node *value;
909
1239
  } yp_instance_variable_and_write_node_t;
910
1240
 
911
1241
  // InstanceVariableOperatorWriteNode
1242
+ //
1243
+ // Type: YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
912
1244
  typedef struct yp_instance_variable_operator_write_node {
913
1245
  yp_node_t base;
1246
+ yp_constant_id_t name;
914
1247
  yp_location_t name_loc;
915
1248
  yp_location_t operator_loc;
916
1249
  struct yp_node *value;
@@ -918,37 +1251,62 @@ typedef struct yp_instance_variable_operator_write_node {
918
1251
  } yp_instance_variable_operator_write_node_t;
919
1252
 
920
1253
  // InstanceVariableOrWriteNode
1254
+ //
1255
+ // Type: YP_INSTANCE_VARIABLE_OR_WRITE_NODE
921
1256
  typedef struct yp_instance_variable_or_write_node {
922
1257
  yp_node_t base;
1258
+ yp_constant_id_t name;
923
1259
  yp_location_t name_loc;
924
1260
  yp_location_t operator_loc;
925
1261
  struct yp_node *value;
926
1262
  } yp_instance_variable_or_write_node_t;
927
1263
 
928
1264
  // InstanceVariableReadNode
1265
+ //
1266
+ // Type: YP_INSTANCE_VARIABLE_READ_NODE
929
1267
  typedef struct yp_instance_variable_read_node {
930
1268
  yp_node_t base;
1269
+ yp_constant_id_t name;
931
1270
  } yp_instance_variable_read_node_t;
932
1271
 
933
1272
  // InstanceVariableTargetNode
1273
+ //
1274
+ // Type: YP_INSTANCE_VARIABLE_TARGET_NODE
934
1275
  typedef struct yp_instance_variable_target_node {
935
1276
  yp_node_t base;
1277
+ yp_constant_id_t name;
936
1278
  } yp_instance_variable_target_node_t;
937
1279
 
938
1280
  // InstanceVariableWriteNode
1281
+ //
1282
+ // Type: YP_INSTANCE_VARIABLE_WRITE_NODE
939
1283
  typedef struct yp_instance_variable_write_node {
940
1284
  yp_node_t base;
1285
+ yp_constant_id_t name;
941
1286
  yp_location_t name_loc;
942
1287
  struct yp_node *value;
943
1288
  yp_location_t operator_loc;
944
1289
  } yp_instance_variable_write_node_t;
945
1290
 
946
1291
  // IntegerNode
1292
+ //
1293
+ // Type: YP_INTEGER_NODE
947
1294
  typedef struct yp_integer_node {
948
1295
  yp_node_t base;
949
1296
  } yp_integer_node_t;
950
1297
 
951
1298
  // InterpolatedRegularExpressionNode
1299
+ //
1300
+ // Type: YP_INTERPOLATED_REGULAR_EXPRESSION_NODE
1301
+ // Flags:
1302
+ // YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1303
+ // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1304
+ // YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
1305
+ // YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
1306
+ // YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1307
+ // YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1308
+ // YP_REGULAR_EXPRESSION_FLAGS_UTF_8
1309
+ // YP_REGULAR_EXPRESSION_FLAGS_ONCE
952
1310
  typedef struct yp_interpolated_regular_expression_node {
953
1311
  yp_node_t base;
954
1312
  yp_location_t opening_loc;
@@ -957,6 +1315,8 @@ typedef struct yp_interpolated_regular_expression_node {
957
1315
  } yp_interpolated_regular_expression_node_t;
958
1316
 
959
1317
  // InterpolatedStringNode
1318
+ //
1319
+ // Type: YP_INTERPOLATED_STRING_NODE
960
1320
  typedef struct yp_interpolated_string_node {
961
1321
  yp_node_t base;
962
1322
  yp_location_t opening_loc;
@@ -965,6 +1325,8 @@ typedef struct yp_interpolated_string_node {
965
1325
  } yp_interpolated_string_node_t;
966
1326
 
967
1327
  // InterpolatedSymbolNode
1328
+ //
1329
+ // Type: YP_INTERPOLATED_SYMBOL_NODE
968
1330
  typedef struct yp_interpolated_symbol_node {
969
1331
  yp_node_t base;
970
1332
  yp_location_t opening_loc;
@@ -973,6 +1335,8 @@ typedef struct yp_interpolated_symbol_node {
973
1335
  } yp_interpolated_symbol_node_t;
974
1336
 
975
1337
  // InterpolatedXStringNode
1338
+ //
1339
+ // Type: YP_INTERPOLATED_X_STRING_NODE
976
1340
  typedef struct yp_interpolated_x_string_node {
977
1341
  yp_node_t base;
978
1342
  yp_location_t opening_loc;
@@ -981,26 +1345,36 @@ typedef struct yp_interpolated_x_string_node {
981
1345
  } yp_interpolated_x_string_node_t;
982
1346
 
983
1347
  // KeywordHashNode
1348
+ //
1349
+ // Type: YP_KEYWORD_HASH_NODE
984
1350
  typedef struct yp_keyword_hash_node {
985
1351
  yp_node_t base;
986
1352
  struct yp_node_list elements;
987
1353
  } yp_keyword_hash_node_t;
988
1354
 
989
1355
  // KeywordParameterNode
1356
+ //
1357
+ // Type: YP_KEYWORD_PARAMETER_NODE
990
1358
  typedef struct yp_keyword_parameter_node {
991
1359
  yp_node_t base;
1360
+ yp_constant_id_t name;
992
1361
  yp_location_t name_loc;
993
1362
  struct yp_node *value;
994
1363
  } yp_keyword_parameter_node_t;
995
1364
 
996
1365
  // KeywordRestParameterNode
1366
+ //
1367
+ // Type: YP_KEYWORD_REST_PARAMETER_NODE
997
1368
  typedef struct yp_keyword_rest_parameter_node {
998
1369
  yp_node_t base;
999
- yp_location_t operator_loc;
1370
+ yp_constant_id_t name;
1000
1371
  yp_location_t name_loc;
1372
+ yp_location_t operator_loc;
1001
1373
  } yp_keyword_rest_parameter_node_t;
1002
1374
 
1003
1375
  // LambdaNode
1376
+ //
1377
+ // Type: YP_LAMBDA_NODE
1004
1378
  typedef struct yp_lambda_node {
1005
1379
  yp_node_t base;
1006
1380
  yp_constant_id_list_t locals;
@@ -1012,61 +1386,75 @@ typedef struct yp_lambda_node {
1012
1386
  } yp_lambda_node_t;
1013
1387
 
1014
1388
  // LocalVariableAndWriteNode
1389
+ //
1390
+ // Type: YP_LOCAL_VARIABLE_AND_WRITE_NODE
1015
1391
  typedef struct yp_local_variable_and_write_node {
1016
1392
  yp_node_t base;
1017
1393
  yp_location_t name_loc;
1018
1394
  yp_location_t operator_loc;
1019
1395
  struct yp_node *value;
1020
- yp_constant_id_t constant_id;
1396
+ yp_constant_id_t name;
1021
1397
  uint32_t depth;
1022
1398
  } yp_local_variable_and_write_node_t;
1023
1399
 
1024
1400
  // LocalVariableOperatorWriteNode
1401
+ //
1402
+ // Type: YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
1025
1403
  typedef struct yp_local_variable_operator_write_node {
1026
1404
  yp_node_t base;
1027
1405
  yp_location_t name_loc;
1028
1406
  yp_location_t operator_loc;
1029
1407
  struct yp_node *value;
1030
- yp_constant_id_t constant_id;
1031
- yp_constant_id_t operator_id;
1408
+ yp_constant_id_t name;
1409
+ yp_constant_id_t operator;
1032
1410
  uint32_t depth;
1033
1411
  } yp_local_variable_operator_write_node_t;
1034
1412
 
1035
1413
  // LocalVariableOrWriteNode
1414
+ //
1415
+ // Type: YP_LOCAL_VARIABLE_OR_WRITE_NODE
1036
1416
  typedef struct yp_local_variable_or_write_node {
1037
1417
  yp_node_t base;
1038
1418
  yp_location_t name_loc;
1039
1419
  yp_location_t operator_loc;
1040
1420
  struct yp_node *value;
1041
- yp_constant_id_t constant_id;
1421
+ yp_constant_id_t name;
1042
1422
  uint32_t depth;
1043
1423
  } yp_local_variable_or_write_node_t;
1044
1424
 
1045
1425
  // LocalVariableReadNode
1426
+ //
1427
+ // Type: YP_LOCAL_VARIABLE_READ_NODE
1046
1428
  typedef struct yp_local_variable_read_node {
1047
1429
  yp_node_t base;
1048
- yp_constant_id_t constant_id;
1430
+ yp_constant_id_t name;
1049
1431
  uint32_t depth;
1050
1432
  } yp_local_variable_read_node_t;
1051
1433
 
1052
1434
  // LocalVariableTargetNode
1435
+ //
1436
+ // Type: YP_LOCAL_VARIABLE_TARGET_NODE
1053
1437
  typedef struct yp_local_variable_target_node {
1054
1438
  yp_node_t base;
1055
- yp_constant_id_t constant_id;
1439
+ yp_constant_id_t name;
1056
1440
  uint32_t depth;
1057
1441
  } yp_local_variable_target_node_t;
1058
1442
 
1059
1443
  // LocalVariableWriteNode
1444
+ //
1445
+ // Type: YP_LOCAL_VARIABLE_WRITE_NODE
1060
1446
  typedef struct yp_local_variable_write_node {
1061
1447
  yp_node_t base;
1062
- yp_constant_id_t constant_id;
1448
+ yp_constant_id_t name;
1063
1449
  uint32_t depth;
1064
- struct yp_node *value;
1065
1450
  yp_location_t name_loc;
1451
+ struct yp_node *value;
1066
1452
  yp_location_t operator_loc;
1067
1453
  } yp_local_variable_write_node_t;
1068
1454
 
1069
1455
  // MatchPredicateNode
1456
+ //
1457
+ // Type: YP_MATCH_PREDICATE_NODE
1070
1458
  typedef struct yp_match_predicate_node {
1071
1459
  yp_node_t base;
1072
1460
  struct yp_node *value;
@@ -1075,6 +1463,8 @@ typedef struct yp_match_predicate_node {
1075
1463
  } yp_match_predicate_node_t;
1076
1464
 
1077
1465
  // MatchRequiredNode
1466
+ //
1467
+ // Type: YP_MATCH_REQUIRED_NODE
1078
1468
  typedef struct yp_match_required_node {
1079
1469
  yp_node_t base;
1080
1470
  struct yp_node *value;
@@ -1083,11 +1473,15 @@ typedef struct yp_match_required_node {
1083
1473
  } yp_match_required_node_t;
1084
1474
 
1085
1475
  // MissingNode
1476
+ //
1477
+ // Type: YP_MISSING_NODE
1086
1478
  typedef struct yp_missing_node {
1087
1479
  yp_node_t base;
1088
1480
  } yp_missing_node_t;
1089
1481
 
1090
1482
  // ModuleNode
1483
+ //
1484
+ // Type: YP_MODULE_NODE
1091
1485
  typedef struct yp_module_node {
1092
1486
  yp_node_t base;
1093
1487
  yp_constant_id_list_t locals;
@@ -1095,20 +1489,34 @@ typedef struct yp_module_node {
1095
1489
  struct yp_node *constant_path;
1096
1490
  struct yp_node *body;
1097
1491
  yp_location_t end_keyword_loc;
1098
- yp_string_t name;
1492
+ yp_constant_id_t name;
1099
1493
  } yp_module_node_t;
1100
1494
 
1495
+ // MultiTargetNode
1496
+ //
1497
+ // Type: YP_MULTI_TARGET_NODE
1498
+ typedef struct yp_multi_target_node {
1499
+ yp_node_t base;
1500
+ struct yp_node_list targets;
1501
+ yp_location_t lparen_loc;
1502
+ yp_location_t rparen_loc;
1503
+ } yp_multi_target_node_t;
1504
+
1101
1505
  // MultiWriteNode
1506
+ //
1507
+ // Type: YP_MULTI_WRITE_NODE
1102
1508
  typedef struct yp_multi_write_node {
1103
1509
  yp_node_t base;
1104
1510
  struct yp_node_list targets;
1105
- yp_location_t operator_loc;
1106
- struct yp_node *value;
1107
1511
  yp_location_t lparen_loc;
1108
1512
  yp_location_t rparen_loc;
1513
+ yp_location_t operator_loc;
1514
+ struct yp_node *value;
1109
1515
  } yp_multi_write_node_t;
1110
1516
 
1111
1517
  // NextNode
1518
+ //
1519
+ // Type: YP_NEXT_NODE
1112
1520
  typedef struct yp_next_node {
1113
1521
  yp_node_t base;
1114
1522
  struct yp_arguments_node *arguments;
@@ -1116,11 +1524,15 @@ typedef struct yp_next_node {
1116
1524
  } yp_next_node_t;
1117
1525
 
1118
1526
  // NilNode
1527
+ //
1528
+ // Type: YP_NIL_NODE
1119
1529
  typedef struct yp_nil_node {
1120
1530
  yp_node_t base;
1121
1531
  } yp_nil_node_t;
1122
1532
 
1123
1533
  // NoKeywordsParameterNode
1534
+ //
1535
+ // Type: YP_NO_KEYWORDS_PARAMETER_NODE
1124
1536
  typedef struct yp_no_keywords_parameter_node {
1125
1537
  yp_node_t base;
1126
1538
  yp_location_t operator_loc;
@@ -1128,20 +1540,27 @@ typedef struct yp_no_keywords_parameter_node {
1128
1540
  } yp_no_keywords_parameter_node_t;
1129
1541
 
1130
1542
  // NumberedReferenceReadNode
1543
+ //
1544
+ // Type: YP_NUMBERED_REFERENCE_READ_NODE
1131
1545
  typedef struct yp_numbered_reference_read_node {
1132
1546
  yp_node_t base;
1547
+ uint32_t number;
1133
1548
  } yp_numbered_reference_read_node_t;
1134
1549
 
1135
1550
  // OptionalParameterNode
1551
+ //
1552
+ // Type: YP_OPTIONAL_PARAMETER_NODE
1136
1553
  typedef struct yp_optional_parameter_node {
1137
1554
  yp_node_t base;
1138
- yp_constant_id_t constant_id;
1555
+ yp_constant_id_t name;
1139
1556
  yp_location_t name_loc;
1140
1557
  yp_location_t operator_loc;
1141
1558
  struct yp_node *value;
1142
1559
  } yp_optional_parameter_node_t;
1143
1560
 
1144
1561
  // OrNode
1562
+ //
1563
+ // Type: YP_OR_NODE
1145
1564
  typedef struct yp_or_node {
1146
1565
  yp_node_t base;
1147
1566
  struct yp_node *left;
@@ -1150,6 +1569,8 @@ typedef struct yp_or_node {
1150
1569
  } yp_or_node_t;
1151
1570
 
1152
1571
  // ParametersNode
1572
+ //
1573
+ // Type: YP_PARAMETERS_NODE
1153
1574
  typedef struct yp_parameters_node {
1154
1575
  yp_node_t base;
1155
1576
  struct yp_node_list requireds;
@@ -1162,6 +1583,8 @@ typedef struct yp_parameters_node {
1162
1583
  } yp_parameters_node_t;
1163
1584
 
1164
1585
  // ParenthesesNode
1586
+ //
1587
+ // Type: YP_PARENTHESES_NODE
1165
1588
  typedef struct yp_parentheses_node {
1166
1589
  yp_node_t base;
1167
1590
  struct yp_node *body;
@@ -1170,6 +1593,8 @@ typedef struct yp_parentheses_node {
1170
1593
  } yp_parentheses_node_t;
1171
1594
 
1172
1595
  // PinnedExpressionNode
1596
+ //
1597
+ // Type: YP_PINNED_EXPRESSION_NODE
1173
1598
  typedef struct yp_pinned_expression_node {
1174
1599
  yp_node_t base;
1175
1600
  struct yp_node *expression;
@@ -1179,6 +1604,8 @@ typedef struct yp_pinned_expression_node {
1179
1604
  } yp_pinned_expression_node_t;
1180
1605
 
1181
1606
  // PinnedVariableNode
1607
+ //
1608
+ // Type: YP_PINNED_VARIABLE_NODE
1182
1609
  typedef struct yp_pinned_variable_node {
1183
1610
  yp_node_t base;
1184
1611
  struct yp_node *variable;
@@ -1186,6 +1613,8 @@ typedef struct yp_pinned_variable_node {
1186
1613
  } yp_pinned_variable_node_t;
1187
1614
 
1188
1615
  // PostExecutionNode
1616
+ //
1617
+ // Type: YP_POST_EXECUTION_NODE
1189
1618
  typedef struct yp_post_execution_node {
1190
1619
  yp_node_t base;
1191
1620
  struct yp_statements_node *statements;
@@ -1195,6 +1624,8 @@ typedef struct yp_post_execution_node {
1195
1624
  } yp_post_execution_node_t;
1196
1625
 
1197
1626
  // PreExecutionNode
1627
+ //
1628
+ // Type: YP_PRE_EXECUTION_NODE
1198
1629
  typedef struct yp_pre_execution_node {
1199
1630
  yp_node_t base;
1200
1631
  struct yp_statements_node *statements;
@@ -1204,6 +1635,8 @@ typedef struct yp_pre_execution_node {
1204
1635
  } yp_pre_execution_node_t;
1205
1636
 
1206
1637
  // ProgramNode
1638
+ //
1639
+ // Type: YP_PROGRAM_NODE
1207
1640
  typedef struct yp_program_node {
1208
1641
  yp_node_t base;
1209
1642
  yp_constant_id_list_t locals;
@@ -1211,6 +1644,10 @@ typedef struct yp_program_node {
1211
1644
  } yp_program_node_t;
1212
1645
 
1213
1646
  // RangeNode
1647
+ //
1648
+ // Type: YP_RANGE_NODE
1649
+ // Flags:
1650
+ // YP_RANGE_FLAGS_EXCLUDE_END
1214
1651
  typedef struct yp_range_node {
1215
1652
  yp_node_t base;
1216
1653
  struct yp_node *left;
@@ -1219,17 +1656,32 @@ typedef struct yp_range_node {
1219
1656
  } yp_range_node_t;
1220
1657
 
1221
1658
  // RationalNode
1659
+ //
1660
+ // Type: YP_RATIONAL_NODE
1222
1661
  typedef struct yp_rational_node {
1223
1662
  yp_node_t base;
1224
1663
  struct yp_node *numeric;
1225
1664
  } yp_rational_node_t;
1226
1665
 
1227
1666
  // RedoNode
1667
+ //
1668
+ // Type: YP_REDO_NODE
1228
1669
  typedef struct yp_redo_node {
1229
1670
  yp_node_t base;
1230
1671
  } yp_redo_node_t;
1231
1672
 
1232
1673
  // RegularExpressionNode
1674
+ //
1675
+ // Type: YP_REGULAR_EXPRESSION_NODE
1676
+ // Flags:
1677
+ // YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1678
+ // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1679
+ // YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
1680
+ // YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
1681
+ // YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1682
+ // YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1683
+ // YP_REGULAR_EXPRESSION_FLAGS_UTF_8
1684
+ // YP_REGULAR_EXPRESSION_FLAGS_ONCE
1233
1685
  typedef struct yp_regular_expression_node {
1234
1686
  yp_node_t base;
1235
1687
  yp_location_t opening_loc;
@@ -1239,6 +1691,8 @@ typedef struct yp_regular_expression_node {
1239
1691
  } yp_regular_expression_node_t;
1240
1692
 
1241
1693
  // RequiredDestructuredParameterNode
1694
+ //
1695
+ // Type: YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE
1242
1696
  typedef struct yp_required_destructured_parameter_node {
1243
1697
  yp_node_t base;
1244
1698
  struct yp_node_list parameters;
@@ -1247,12 +1701,16 @@ typedef struct yp_required_destructured_parameter_node {
1247
1701
  } yp_required_destructured_parameter_node_t;
1248
1702
 
1249
1703
  // RequiredParameterNode
1704
+ //
1705
+ // Type: YP_REQUIRED_PARAMETER_NODE
1250
1706
  typedef struct yp_required_parameter_node {
1251
1707
  yp_node_t base;
1252
- yp_constant_id_t constant_id;
1708
+ yp_constant_id_t name;
1253
1709
  } yp_required_parameter_node_t;
1254
1710
 
1255
1711
  // RescueModifierNode
1712
+ //
1713
+ // Type: YP_RESCUE_MODIFIER_NODE
1256
1714
  typedef struct yp_rescue_modifier_node {
1257
1715
  yp_node_t base;
1258
1716
  struct yp_node *expression;
@@ -1261,6 +1719,8 @@ typedef struct yp_rescue_modifier_node {
1261
1719
  } yp_rescue_modifier_node_t;
1262
1720
 
1263
1721
  // RescueNode
1722
+ //
1723
+ // Type: YP_RESCUE_NODE
1264
1724
  typedef struct yp_rescue_node {
1265
1725
  yp_node_t base;
1266
1726
  yp_location_t keyword_loc;
@@ -1272,18 +1732,25 @@ typedef struct yp_rescue_node {
1272
1732
  } yp_rescue_node_t;
1273
1733
 
1274
1734
  // RestParameterNode
1735
+ //
1736
+ // Type: YP_REST_PARAMETER_NODE
1275
1737
  typedef struct yp_rest_parameter_node {
1276
1738
  yp_node_t base;
1277
- yp_location_t operator_loc;
1739
+ yp_constant_id_t name;
1278
1740
  yp_location_t name_loc;
1741
+ yp_location_t operator_loc;
1279
1742
  } yp_rest_parameter_node_t;
1280
1743
 
1281
1744
  // RetryNode
1745
+ //
1746
+ // Type: YP_RETRY_NODE
1282
1747
  typedef struct yp_retry_node {
1283
1748
  yp_node_t base;
1284
1749
  } yp_retry_node_t;
1285
1750
 
1286
1751
  // ReturnNode
1752
+ //
1753
+ // Type: YP_RETURN_NODE
1287
1754
  typedef struct yp_return_node {
1288
1755
  yp_node_t base;
1289
1756
  yp_location_t keyword_loc;
@@ -1291,11 +1758,15 @@ typedef struct yp_return_node {
1291
1758
  } yp_return_node_t;
1292
1759
 
1293
1760
  // SelfNode
1761
+ //
1762
+ // Type: YP_SELF_NODE
1294
1763
  typedef struct yp_self_node {
1295
1764
  yp_node_t base;
1296
1765
  } yp_self_node_t;
1297
1766
 
1298
1767
  // SingletonClassNode
1768
+ //
1769
+ // Type: YP_SINGLETON_CLASS_NODE
1299
1770
  typedef struct yp_singleton_class_node {
1300
1771
  yp_node_t base;
1301
1772
  yp_constant_id_list_t locals;
@@ -1307,22 +1778,30 @@ typedef struct yp_singleton_class_node {
1307
1778
  } yp_singleton_class_node_t;
1308
1779
 
1309
1780
  // SourceEncodingNode
1781
+ //
1782
+ // Type: YP_SOURCE_ENCODING_NODE
1310
1783
  typedef struct yp_source_encoding_node {
1311
1784
  yp_node_t base;
1312
1785
  } yp_source_encoding_node_t;
1313
1786
 
1314
1787
  // SourceFileNode
1788
+ //
1789
+ // Type: YP_SOURCE_FILE_NODE
1315
1790
  typedef struct yp_source_file_node {
1316
1791
  yp_node_t base;
1317
1792
  yp_string_t filepath;
1318
1793
  } yp_source_file_node_t;
1319
1794
 
1320
1795
  // SourceLineNode
1796
+ //
1797
+ // Type: YP_SOURCE_LINE_NODE
1321
1798
  typedef struct yp_source_line_node {
1322
1799
  yp_node_t base;
1323
1800
  } yp_source_line_node_t;
1324
1801
 
1325
1802
  // SplatNode
1803
+ //
1804
+ // Type: YP_SPLAT_NODE
1326
1805
  typedef struct yp_splat_node {
1327
1806
  yp_node_t base;
1328
1807
  yp_location_t operator_loc;
@@ -1330,12 +1809,16 @@ typedef struct yp_splat_node {
1330
1809
  } yp_splat_node_t;
1331
1810
 
1332
1811
  // StatementsNode
1812
+ //
1813
+ // Type: YP_STATEMENTS_NODE
1333
1814
  typedef struct yp_statements_node {
1334
1815
  yp_node_t base;
1335
1816
  struct yp_node_list body;
1336
1817
  } yp_statements_node_t;
1337
1818
 
1338
1819
  // StringConcatNode
1820
+ //
1821
+ // Type: YP_STRING_CONCAT_NODE
1339
1822
  typedef struct yp_string_concat_node {
1340
1823
  yp_node_t base;
1341
1824
  struct yp_node *left;
@@ -1343,6 +1826,8 @@ typedef struct yp_string_concat_node {
1343
1826
  } yp_string_concat_node_t;
1344
1827
 
1345
1828
  // StringNode
1829
+ //
1830
+ // Type: YP_STRING_NODE
1346
1831
  typedef struct yp_string_node {
1347
1832
  yp_node_t base;
1348
1833
  yp_location_t opening_loc;
@@ -1352,6 +1837,8 @@ typedef struct yp_string_node {
1352
1837
  } yp_string_node_t;
1353
1838
 
1354
1839
  // SuperNode
1840
+ //
1841
+ // Type: YP_SUPER_NODE
1355
1842
  typedef struct yp_super_node {
1356
1843
  yp_node_t base;
1357
1844
  yp_location_t keyword_loc;
@@ -1362,6 +1849,8 @@ typedef struct yp_super_node {
1362
1849
  } yp_super_node_t;
1363
1850
 
1364
1851
  // SymbolNode
1852
+ //
1853
+ // Type: YP_SYMBOL_NODE
1365
1854
  typedef struct yp_symbol_node {
1366
1855
  yp_node_t base;
1367
1856
  yp_location_t opening_loc;
@@ -1371,11 +1860,15 @@ typedef struct yp_symbol_node {
1371
1860
  } yp_symbol_node_t;
1372
1861
 
1373
1862
  // TrueNode
1863
+ //
1864
+ // Type: YP_TRUE_NODE
1374
1865
  typedef struct yp_true_node {
1375
1866
  yp_node_t base;
1376
1867
  } yp_true_node_t;
1377
1868
 
1378
1869
  // UndefNode
1870
+ //
1871
+ // Type: YP_UNDEF_NODE
1379
1872
  typedef struct yp_undef_node {
1380
1873
  yp_node_t base;
1381
1874
  struct yp_node_list names;
@@ -1383,6 +1876,8 @@ typedef struct yp_undef_node {
1383
1876
  } yp_undef_node_t;
1384
1877
 
1385
1878
  // UnlessNode
1879
+ //
1880
+ // Type: YP_UNLESS_NODE
1386
1881
  typedef struct yp_unless_node {
1387
1882
  yp_node_t base;
1388
1883
  yp_location_t keyword_loc;
@@ -1393,6 +1888,10 @@ typedef struct yp_unless_node {
1393
1888
  } yp_unless_node_t;
1394
1889
 
1395
1890
  // UntilNode
1891
+ //
1892
+ // Type: YP_UNTIL_NODE
1893
+ // Flags:
1894
+ // YP_LOOP_FLAGS_BEGIN_MODIFIER
1396
1895
  typedef struct yp_until_node {
1397
1896
  yp_node_t base;
1398
1897
  yp_location_t keyword_loc;
@@ -1402,6 +1901,8 @@ typedef struct yp_until_node {
1402
1901
  } yp_until_node_t;
1403
1902
 
1404
1903
  // WhenNode
1904
+ //
1905
+ // Type: YP_WHEN_NODE
1405
1906
  typedef struct yp_when_node {
1406
1907
  yp_node_t base;
1407
1908
  yp_location_t keyword_loc;
@@ -1410,6 +1911,10 @@ typedef struct yp_when_node {
1410
1911
  } yp_when_node_t;
1411
1912
 
1412
1913
  // WhileNode
1914
+ //
1915
+ // Type: YP_WHILE_NODE
1916
+ // Flags:
1917
+ // YP_LOOP_FLAGS_BEGIN_MODIFIER
1413
1918
  typedef struct yp_while_node {
1414
1919
  yp_node_t base;
1415
1920
  yp_location_t keyword_loc;
@@ -1419,6 +1924,8 @@ typedef struct yp_while_node {
1419
1924
  } yp_while_node_t;
1420
1925
 
1421
1926
  // XStringNode
1927
+ //
1928
+ // Type: YP_X_STRING_NODE
1422
1929
  typedef struct yp_x_string_node {
1423
1930
  yp_node_t base;
1424
1931
  yp_location_t opening_loc;
@@ -1428,6 +1935,8 @@ typedef struct yp_x_string_node {
1428
1935
  } yp_x_string_node_t;
1429
1936
 
1430
1937
  // YieldNode
1938
+ //
1939
+ // Type: YP_YIELD_NODE
1431
1940
  typedef struct yp_yield_node {
1432
1941
  yp_node_t base;
1433
1942
  yp_location_t keyword_loc;