yarp 0.11.0 → 0.12.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -1
- data/config.yml +105 -6
- data/ext/yarp/api_node.c +200 -34
- data/ext/yarp/extension.c +8 -1
- data/ext/yarp/extension.h +1 -1
- data/include/yarp/ast.h +246 -293
- data/include/yarp/diagnostic.h +7 -2
- data/include/yarp/enc/yp_encoding.h +1 -1
- data/include/yarp/parser.h +44 -16
- data/include/yarp/util/yp_char.h +21 -5
- data/include/yarp/version.h +2 -2
- data/lib/yarp/mutation_visitor.rb +28 -3
- data/lib/yarp/node.rb +3507 -85
- data/lib/yarp/serialize.rb +146 -136
- data/lib/yarp.rb +57 -42
- data/src/diagnostic.c +6 -1
- data/src/enc/yp_unicode.c +5 -5
- data/src/node.c +87 -8
- data/src/prettyprint.c +85 -21
- data/src/serialize.c +59 -19
- data/src/util/yp_char.c +57 -9
- data/src/util/yp_constant_pool.c +69 -18
- data/src/yarp.c +1528 -1018
- data/yarp.gemspec +1 -1
- metadata +3 -3
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
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
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
|
-
//
|
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:
|
517
|
-
typedef struct
|
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
|
-
}
|
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 <<
|
1951
|
-
YP_CALL_NODE_FLAGS_VARIABLE_CALL = 1 <<
|
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 <<
|
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 <<
|
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 <<
|
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
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
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
|