yarp 0.11.0 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|