yarp 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
data/include/yarp/ast.h CHANGED
@@ -208,290 +208,157 @@ typedef struct yp_node_list {
208
208
  } yp_node_list_t;
209
209
 
210
210
  enum yp_node_type {
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,
211
+ YP_ALIAS_GLOBAL_VARIABLE_NODE = 1,
212
+ YP_ALIAS_METHOD_NODE = 2,
213
+ YP_ALTERNATION_PATTERN_NODE = 3,
214
+ YP_AND_NODE = 4,
215
+ YP_ARGUMENTS_NODE = 5,
216
+ YP_ARRAY_NODE = 6,
217
+ YP_ARRAY_PATTERN_NODE = 7,
218
+ YP_ASSOC_NODE = 8,
219
+ YP_ASSOC_SPLAT_NODE = 9,
220
+ YP_BACK_REFERENCE_READ_NODE = 10,
221
+ YP_BEGIN_NODE = 11,
222
+ YP_BLOCK_ARGUMENT_NODE = 12,
223
+ YP_BLOCK_LOCAL_VARIABLE_NODE = 13,
224
+ YP_BLOCK_NODE = 14,
225
+ YP_BLOCK_PARAMETER_NODE = 15,
226
+ YP_BLOCK_PARAMETERS_NODE = 16,
227
+ YP_BREAK_NODE = 17,
228
+ YP_CALL_AND_WRITE_NODE = 18,
229
+ YP_CALL_NODE = 19,
230
+ YP_CALL_OPERATOR_WRITE_NODE = 20,
231
+ YP_CALL_OR_WRITE_NODE = 21,
232
+ YP_CAPTURE_PATTERN_NODE = 22,
233
+ YP_CASE_NODE = 23,
234
+ YP_CLASS_NODE = 24,
235
+ YP_CLASS_VARIABLE_AND_WRITE_NODE = 25,
236
+ YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 26,
237
+ YP_CLASS_VARIABLE_OR_WRITE_NODE = 27,
238
+ YP_CLASS_VARIABLE_READ_NODE = 28,
239
+ YP_CLASS_VARIABLE_TARGET_NODE = 29,
240
+ YP_CLASS_VARIABLE_WRITE_NODE = 30,
241
+ YP_CONSTANT_AND_WRITE_NODE = 31,
242
+ YP_CONSTANT_OPERATOR_WRITE_NODE = 32,
243
+ YP_CONSTANT_OR_WRITE_NODE = 33,
244
+ YP_CONSTANT_PATH_AND_WRITE_NODE = 34,
245
+ YP_CONSTANT_PATH_NODE = 35,
246
+ YP_CONSTANT_PATH_OPERATOR_WRITE_NODE = 36,
247
+ YP_CONSTANT_PATH_OR_WRITE_NODE = 37,
248
+ YP_CONSTANT_PATH_TARGET_NODE = 38,
249
+ YP_CONSTANT_PATH_WRITE_NODE = 39,
250
+ YP_CONSTANT_READ_NODE = 40,
251
+ YP_CONSTANT_TARGET_NODE = 41,
252
+ YP_CONSTANT_WRITE_NODE = 42,
253
+ YP_DEF_NODE = 43,
254
+ YP_DEFINED_NODE = 44,
255
+ YP_ELSE_NODE = 45,
256
+ YP_EMBEDDED_STATEMENTS_NODE = 46,
257
+ YP_EMBEDDED_VARIABLE_NODE = 47,
258
+ YP_ENSURE_NODE = 48,
259
+ YP_FALSE_NODE = 49,
260
+ YP_FIND_PATTERN_NODE = 50,
261
+ YP_FLIP_FLOP_NODE = 51,
262
+ YP_FLOAT_NODE = 52,
263
+ YP_FOR_NODE = 53,
264
+ YP_FORWARDING_ARGUMENTS_NODE = 54,
265
+ YP_FORWARDING_PARAMETER_NODE = 55,
266
+ YP_FORWARDING_SUPER_NODE = 56,
267
+ YP_GLOBAL_VARIABLE_AND_WRITE_NODE = 57,
268
+ YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 58,
269
+ YP_GLOBAL_VARIABLE_OR_WRITE_NODE = 59,
270
+ YP_GLOBAL_VARIABLE_READ_NODE = 60,
271
+ YP_GLOBAL_VARIABLE_TARGET_NODE = 61,
272
+ YP_GLOBAL_VARIABLE_WRITE_NODE = 62,
273
+ YP_HASH_NODE = 63,
274
+ YP_HASH_PATTERN_NODE = 64,
275
+ YP_IF_NODE = 65,
276
+ YP_IMAGINARY_NODE = 66,
277
+ YP_IMPLICIT_NODE = 67,
278
+ YP_IN_NODE = 68,
279
+ YP_INSTANCE_VARIABLE_AND_WRITE_NODE = 69,
280
+ YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 70,
281
+ YP_INSTANCE_VARIABLE_OR_WRITE_NODE = 71,
282
+ YP_INSTANCE_VARIABLE_READ_NODE = 72,
283
+ YP_INSTANCE_VARIABLE_TARGET_NODE = 73,
284
+ YP_INSTANCE_VARIABLE_WRITE_NODE = 74,
285
+ YP_INTEGER_NODE = 75,
286
+ YP_INTERPOLATED_MATCH_LAST_LINE_NODE = 76,
287
+ YP_INTERPOLATED_REGULAR_EXPRESSION_NODE = 77,
288
+ YP_INTERPOLATED_STRING_NODE = 78,
289
+ YP_INTERPOLATED_SYMBOL_NODE = 79,
290
+ YP_INTERPOLATED_X_STRING_NODE = 80,
291
+ YP_KEYWORD_HASH_NODE = 81,
292
+ YP_KEYWORD_PARAMETER_NODE = 82,
293
+ YP_KEYWORD_REST_PARAMETER_NODE = 83,
294
+ YP_LAMBDA_NODE = 84,
295
+ YP_LOCAL_VARIABLE_AND_WRITE_NODE = 85,
296
+ YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 86,
297
+ YP_LOCAL_VARIABLE_OR_WRITE_NODE = 87,
298
+ YP_LOCAL_VARIABLE_READ_NODE = 88,
299
+ YP_LOCAL_VARIABLE_TARGET_NODE = 89,
300
+ YP_LOCAL_VARIABLE_WRITE_NODE = 90,
301
+ YP_MATCH_LAST_LINE_NODE = 91,
302
+ YP_MATCH_PREDICATE_NODE = 92,
303
+ YP_MATCH_REQUIRED_NODE = 93,
304
+ YP_MATCH_WRITE_NODE = 94,
305
+ YP_MISSING_NODE = 95,
306
+ YP_MODULE_NODE = 96,
307
+ YP_MULTI_TARGET_NODE = 97,
308
+ YP_MULTI_WRITE_NODE = 98,
309
+ YP_NEXT_NODE = 99,
310
+ YP_NIL_NODE = 100,
311
+ YP_NO_KEYWORDS_PARAMETER_NODE = 101,
312
+ YP_NUMBERED_REFERENCE_READ_NODE = 102,
313
+ YP_OPTIONAL_PARAMETER_NODE = 103,
314
+ YP_OR_NODE = 104,
315
+ YP_PARAMETERS_NODE = 105,
316
+ YP_PARENTHESES_NODE = 106,
317
+ YP_PINNED_EXPRESSION_NODE = 107,
318
+ YP_PINNED_VARIABLE_NODE = 108,
319
+ YP_POST_EXECUTION_NODE = 109,
320
+ YP_PRE_EXECUTION_NODE = 110,
321
+ YP_PROGRAM_NODE = 111,
322
+ YP_RANGE_NODE = 112,
323
+ YP_RATIONAL_NODE = 113,
324
+ YP_REDO_NODE = 114,
325
+ YP_REGULAR_EXPRESSION_NODE = 115,
326
+ YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 116,
327
+ YP_REQUIRED_PARAMETER_NODE = 117,
328
+ YP_RESCUE_MODIFIER_NODE = 118,
329
+ YP_RESCUE_NODE = 119,
330
+ YP_REST_PARAMETER_NODE = 120,
331
+ YP_RETRY_NODE = 121,
332
+ YP_RETURN_NODE = 122,
333
+ YP_SELF_NODE = 123,
334
+ YP_SINGLETON_CLASS_NODE = 124,
335
+ YP_SOURCE_ENCODING_NODE = 125,
336
+ YP_SOURCE_FILE_NODE = 126,
337
+ YP_SOURCE_LINE_NODE = 127,
338
+ YP_SPLAT_NODE = 128,
339
+ YP_STATEMENTS_NODE = 129,
340
+ YP_STRING_CONCAT_NODE = 130,
341
+ YP_STRING_NODE = 131,
342
+ YP_SUPER_NODE = 132,
343
+ YP_SYMBOL_NODE = 133,
344
+ YP_TRUE_NODE = 134,
345
+ YP_UNDEF_NODE = 135,
346
+ YP_UNLESS_NODE = 136,
347
+ YP_UNTIL_NODE = 137,
348
+ YP_WHEN_NODE = 138,
349
+ YP_WHILE_NODE = 139,
350
+ YP_X_STRING_NODE = 140,
351
+ YP_YIELD_NODE = 141,
347
352
  YP_SCOPE_NODE
348
353
  };
349
354
 
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
-
489
355
  typedef uint16_t yp_node_type_t;
490
356
  typedef uint16_t yp_node_flags_t;
491
357
 
492
358
  // We store the flags enum in every node in the tree. Some flags are common to
493
359
  // all nodes (the ones listed below). Others are specific to certain node types.
494
360
  static const yp_node_flags_t YP_NODE_FLAG_NEWLINE = 0x1;
361
+ static const yp_node_flags_t YP_NODE_FLAG_STATIC_LITERAL = 0x2;
495
362
 
496
363
  // For easy access, we define some macros to check node type
497
364
  #define YP_NODE_TYPE(node) ((enum yp_node_type)node->type)
@@ -511,15 +378,25 @@ typedef struct yp_node {
511
378
  yp_location_t location;
512
379
  } yp_node_t;
513
380
 
514
- // AliasNode
381
+ // AliasGlobalVariableNode
382
+ //
383
+ // Type: YP_ALIAS_GLOBAL_VARIABLE_NODE
384
+ typedef struct yp_alias_global_variable_node {
385
+ yp_node_t base;
386
+ struct yp_node *new_name;
387
+ struct yp_node *old_name;
388
+ yp_location_t keyword_loc;
389
+ } yp_alias_global_variable_node_t;
390
+
391
+ // AliasMethodNode
515
392
  //
516
- // Type: YP_ALIAS_NODE
517
- typedef struct yp_alias_node {
393
+ // Type: YP_ALIAS_METHOD_NODE
394
+ typedef struct yp_alias_method_node {
518
395
  yp_node_t base;
519
396
  struct yp_node *new_name;
520
397
  struct yp_node *old_name;
521
398
  yp_location_t keyword_loc;
522
- } yp_alias_node_t;
399
+ } yp_alias_method_node_t;
523
400
 
524
401
  // AlternationPatternNode
525
402
  //
@@ -1216,6 +1093,14 @@ typedef struct yp_imaginary_node {
1216
1093
  struct yp_node *numeric;
1217
1094
  } yp_imaginary_node_t;
1218
1095
 
1096
+ // ImplicitNode
1097
+ //
1098
+ // Type: YP_IMPLICIT_NODE
1099
+ typedef struct yp_implicit_node {
1100
+ yp_node_t base;
1101
+ struct yp_node *value;
1102
+ } yp_implicit_node_t;
1103
+
1219
1104
  // InNode
1220
1105
  //
1221
1106
  // Type: YP_IN_NODE
@@ -1291,17 +1176,41 @@ typedef struct yp_instance_variable_write_node {
1291
1176
  // IntegerNode
1292
1177
  //
1293
1178
  // Type: YP_INTEGER_NODE
1179
+ // Flags:
1180
+ // YP_INTEGER_BASE_FLAGS_BINARY
1181
+ // YP_INTEGER_BASE_FLAGS_OCTAL
1182
+ // YP_INTEGER_BASE_FLAGS_DECIMAL
1183
+ // YP_INTEGER_BASE_FLAGS_HEXADECIMAL
1294
1184
  typedef struct yp_integer_node {
1295
1185
  yp_node_t base;
1296
1186
  } yp_integer_node_t;
1297
1187
 
1188
+ // InterpolatedMatchLastLineNode
1189
+ //
1190
+ // Type: YP_INTERPOLATED_MATCH_LAST_LINE_NODE
1191
+ // Flags:
1192
+ // YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1193
+ // YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
1194
+ // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1195
+ // YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
1196
+ // YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1197
+ // YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1198
+ // YP_REGULAR_EXPRESSION_FLAGS_UTF_8
1199
+ // YP_REGULAR_EXPRESSION_FLAGS_ONCE
1200
+ typedef struct yp_interpolated_match_last_line_node {
1201
+ yp_node_t base;
1202
+ yp_location_t opening_loc;
1203
+ struct yp_node_list parts;
1204
+ yp_location_t closing_loc;
1205
+ } yp_interpolated_match_last_line_node_t;
1206
+
1298
1207
  // InterpolatedRegularExpressionNode
1299
1208
  //
1300
1209
  // Type: YP_INTERPOLATED_REGULAR_EXPRESSION_NODE
1301
1210
  // Flags:
1302
1211
  // YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1303
- // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1304
1212
  // YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
1213
+ // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1305
1214
  // YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
1306
1215
  // YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1307
1216
  // YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
@@ -1452,6 +1361,26 @@ typedef struct yp_local_variable_write_node {
1452
1361
  yp_location_t operator_loc;
1453
1362
  } yp_local_variable_write_node_t;
1454
1363
 
1364
+ // MatchLastLineNode
1365
+ //
1366
+ // Type: YP_MATCH_LAST_LINE_NODE
1367
+ // Flags:
1368
+ // YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1369
+ // YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
1370
+ // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1371
+ // YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
1372
+ // YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1373
+ // YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1374
+ // YP_REGULAR_EXPRESSION_FLAGS_UTF_8
1375
+ // YP_REGULAR_EXPRESSION_FLAGS_ONCE
1376
+ typedef struct yp_match_last_line_node {
1377
+ yp_node_t base;
1378
+ yp_location_t opening_loc;
1379
+ yp_location_t content_loc;
1380
+ yp_location_t closing_loc;
1381
+ yp_string_t unescaped;
1382
+ } yp_match_last_line_node_t;
1383
+
1455
1384
  // MatchPredicateNode
1456
1385
  //
1457
1386
  // Type: YP_MATCH_PREDICATE_NODE
@@ -1472,6 +1401,15 @@ typedef struct yp_match_required_node {
1472
1401
  yp_location_t operator_loc;
1473
1402
  } yp_match_required_node_t;
1474
1403
 
1404
+ // MatchWriteNode
1405
+ //
1406
+ // Type: YP_MATCH_WRITE_NODE
1407
+ typedef struct yp_match_write_node {
1408
+ yp_node_t base;
1409
+ struct yp_call_node *call;
1410
+ yp_constant_id_list_t locals;
1411
+ } yp_match_write_node_t;
1412
+
1475
1413
  // MissingNode
1476
1414
  //
1477
1415
  // Type: YP_MISSING_NODE
@@ -1575,8 +1513,8 @@ typedef struct yp_parameters_node {
1575
1513
  yp_node_t base;
1576
1514
  struct yp_node_list requireds;
1577
1515
  struct yp_node_list optionals;
1578
- struct yp_node_list posts;
1579
1516
  struct yp_rest_parameter_node *rest;
1517
+ struct yp_node_list posts;
1580
1518
  struct yp_node_list keywords;
1581
1519
  struct yp_node *keyword_rest;
1582
1520
  struct yp_block_parameter_node *block;
@@ -1675,8 +1613,8 @@ typedef struct yp_redo_node {
1675
1613
  // Type: YP_REGULAR_EXPRESSION_NODE
1676
1614
  // Flags:
1677
1615
  // YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1678
- // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1679
1616
  // YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
1617
+ // YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1680
1618
  // YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
1681
1619
  // YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1682
1620
  // YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
@@ -1828,6 +1766,8 @@ typedef struct yp_string_concat_node {
1828
1766
  // StringNode
1829
1767
  //
1830
1768
  // Type: YP_STRING_NODE
1769
+ // Flags:
1770
+ // YP_STRING_FLAGS_FROZEN
1831
1771
  typedef struct yp_string_node {
1832
1772
  yp_node_t base;
1833
1773
  yp_location_t opening_loc;
@@ -1947,30 +1887,43 @@ typedef struct yp_yield_node {
1947
1887
 
1948
1888
  // CallNodeFlags
1949
1889
  typedef enum {
1950
- YP_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1 << 1,
1951
- YP_CALL_NODE_FLAGS_VARIABLE_CALL = 1 << 2,
1890
+ YP_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1 << 2,
1891
+ YP_CALL_NODE_FLAGS_VARIABLE_CALL = 1 << 3,
1952
1892
  } yp_call_node_flags_t;
1953
1893
 
1894
+ // IntegerBaseFlags
1895
+ typedef enum {
1896
+ YP_INTEGER_BASE_FLAGS_BINARY = 1 << 2,
1897
+ YP_INTEGER_BASE_FLAGS_OCTAL = 1 << 3,
1898
+ YP_INTEGER_BASE_FLAGS_DECIMAL = 1 << 4,
1899
+ YP_INTEGER_BASE_FLAGS_HEXADECIMAL = 1 << 5,
1900
+ } yp_integer_base_flags_t;
1901
+
1954
1902
  // LoopFlags
1955
1903
  typedef enum {
1956
- YP_LOOP_FLAGS_BEGIN_MODIFIER = 1 << 1,
1904
+ YP_LOOP_FLAGS_BEGIN_MODIFIER = 1 << 2,
1957
1905
  } yp_loop_flags_t;
1958
1906
 
1959
1907
  // RangeFlags
1960
1908
  typedef enum {
1961
- YP_RANGE_FLAGS_EXCLUDE_END = 1 << 1,
1909
+ YP_RANGE_FLAGS_EXCLUDE_END = 1 << 2,
1962
1910
  } yp_range_flags_t;
1963
1911
 
1964
1912
  // RegularExpressionFlags
1965
1913
  typedef enum {
1966
- YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1 << 1,
1967
- YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 1 << 2,
1914
+ YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1 << 2,
1968
1915
  YP_REGULAR_EXPRESSION_FLAGS_EXTENDED = 1 << 3,
1969
- YP_REGULAR_EXPRESSION_FLAGS_EUC_JP = 1 << 4,
1970
- YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 1 << 5,
1971
- YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 1 << 6,
1972
- YP_REGULAR_EXPRESSION_FLAGS_UTF_8 = 1 << 7,
1973
- YP_REGULAR_EXPRESSION_FLAGS_ONCE = 1 << 8,
1916
+ YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 1 << 4,
1917
+ YP_REGULAR_EXPRESSION_FLAGS_EUC_JP = 1 << 5,
1918
+ YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 1 << 6,
1919
+ YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 1 << 7,
1920
+ YP_REGULAR_EXPRESSION_FLAGS_UTF_8 = 1 << 8,
1921
+ YP_REGULAR_EXPRESSION_FLAGS_ONCE = 1 << 9,
1974
1922
  } yp_regular_expression_flags_t;
1975
1923
 
1924
+ // StringFlags
1925
+ typedef enum {
1926
+ YP_STRING_FLAGS_FROZEN = 1 << 2,
1927
+ } yp_string_flags_t;
1928
+
1976
1929
  #endif // YARP_AST_H