yarp 0.6.0 → 0.8.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +55 -0
  3. data/CONTRIBUTING.md +4 -0
  4. data/{Makefile.in → Makefile} +5 -4
  5. data/README.md +6 -3
  6. data/config.yml +83 -274
  7. data/docs/build_system.md +4 -15
  8. data/docs/building.md +1 -5
  9. data/docs/encoding.md +1 -0
  10. data/docs/{extension.md → ruby_api.md} +6 -3
  11. data/docs/serialization.md +71 -24
  12. data/ext/yarp/api_node.c +173 -585
  13. data/ext/yarp/extconf.rb +15 -10
  14. data/ext/yarp/extension.c +4 -2
  15. data/ext/yarp/extension.h +1 -1
  16. data/include/yarp/ast.h +167 -306
  17. data/include/yarp/defines.h +5 -15
  18. data/include/yarp/enc/yp_encoding.h +1 -0
  19. data/include/yarp/unescape.h +1 -1
  20. data/include/yarp/util/yp_buffer.h +9 -0
  21. data/include/yarp/util/yp_constant_pool.h +3 -0
  22. data/include/yarp/util/yp_list.h +7 -7
  23. data/include/yarp/util/yp_newline_list.h +4 -0
  24. data/include/yarp/util/yp_state_stack.h +1 -1
  25. data/include/yarp/util/yp_string.h +5 -1
  26. data/include/yarp/version.h +2 -3
  27. data/include/yarp.h +4 -2
  28. data/lib/yarp/ffi.rb +226 -0
  29. data/lib/yarp/lex_compat.rb +16 -2
  30. data/lib/yarp/node.rb +594 -1437
  31. data/lib/yarp/ripper_compat.rb +3 -3
  32. data/lib/yarp/serialize.rb +312 -149
  33. data/lib/yarp.rb +167 -2
  34. data/src/enc/yp_unicode.c +9 -0
  35. data/src/node.c +92 -250
  36. data/src/prettyprint.c +81 -206
  37. data/src/serialize.c +124 -149
  38. data/src/unescape.c +29 -35
  39. data/src/util/yp_buffer.c +18 -0
  40. data/src/util/yp_list.c +7 -16
  41. data/src/util/yp_state_stack.c +0 -6
  42. data/src/util/yp_string.c +8 -17
  43. data/src/yarp.c +444 -717
  44. data/yarp.gemspec +5 -5
  45. metadata +6 -6
  46. data/config.h.in +0 -25
  47. data/configure +0 -4487
data/src/node.c CHANGED
@@ -98,6 +98,11 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
98
98
  yp_node_destroy(parser, (yp_node_t *)((yp_and_node_t *)node)->left);
99
99
  yp_node_destroy(parser, (yp_node_t *)((yp_and_node_t *)node)->right);
100
100
  break;
101
+ #line 81 "node.c.erb"
102
+ case YP_NODE_AND_WRITE_NODE:
103
+ yp_node_destroy(parser, (yp_node_t *)((yp_and_write_node_t *)node)->target);
104
+ yp_node_destroy(parser, (yp_node_t *)((yp_and_write_node_t *)node)->value);
105
+ break;
101
106
  #line 81 "node.c.erb"
102
107
  case YP_NODE_ARGUMENTS_NODE:
103
108
  yp_node_list_free(parser, &((yp_arguments_node_t *)node)->arguments);
@@ -160,8 +165,8 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
160
165
  if (((yp_block_node_t *)node)->parameters != NULL) {
161
166
  yp_node_destroy(parser, (yp_node_t *)((yp_block_node_t *)node)->parameters);
162
167
  }
163
- if (((yp_block_node_t *)node)->statements != NULL) {
164
- yp_node_destroy(parser, (yp_node_t *)((yp_block_node_t *)node)->statements);
168
+ if (((yp_block_node_t *)node)->body != NULL) {
169
+ yp_node_destroy(parser, (yp_node_t *)((yp_block_node_t *)node)->body);
165
170
  }
166
171
  break;
167
172
  #line 81 "node.c.erb"
@@ -230,22 +235,10 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
230
235
  if (((yp_class_node_t *)node)->superclass != NULL) {
231
236
  yp_node_destroy(parser, (yp_node_t *)((yp_class_node_t *)node)->superclass);
232
237
  }
233
- if (((yp_class_node_t *)node)->statements != NULL) {
234
- yp_node_destroy(parser, (yp_node_t *)((yp_class_node_t *)node)->statements);
238
+ if (((yp_class_node_t *)node)->body != NULL) {
239
+ yp_node_destroy(parser, (yp_node_t *)((yp_class_node_t *)node)->body);
235
240
  }
236
241
  break;
237
- #line 81 "node.c.erb"
238
- case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE:
239
- yp_node_destroy(parser, (yp_node_t *)((yp_class_variable_operator_and_write_node_t *)node)->value);
240
- break;
241
- #line 81 "node.c.erb"
242
- case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE:
243
- yp_node_destroy(parser, (yp_node_t *)((yp_class_variable_operator_or_write_node_t *)node)->value);
244
- break;
245
- #line 81 "node.c.erb"
246
- case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE:
247
- yp_node_destroy(parser, (yp_node_t *)((yp_class_variable_operator_write_node_t *)node)->value);
248
- break;
249
242
  #line 81 "node.c.erb"
250
243
  case YP_NODE_CLASS_VARIABLE_READ_NODE:
251
244
  break;
@@ -255,18 +248,6 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
255
248
  yp_node_destroy(parser, (yp_node_t *)((yp_class_variable_write_node_t *)node)->value);
256
249
  }
257
250
  break;
258
- #line 81 "node.c.erb"
259
- case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE:
260
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_operator_and_write_node_t *)node)->value);
261
- break;
262
- #line 81 "node.c.erb"
263
- case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE:
264
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_operator_or_write_node_t *)node)->value);
265
- break;
266
- #line 81 "node.c.erb"
267
- case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE:
268
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_operator_write_node_t *)node)->value);
269
- break;
270
251
  #line 81 "node.c.erb"
271
252
  case YP_NODE_CONSTANT_PATH_NODE:
272
253
  if (((yp_constant_path_node_t *)node)->parent != NULL) {
@@ -274,21 +255,6 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
274
255
  }
275
256
  yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_node_t *)node)->child);
276
257
  break;
277
- #line 81 "node.c.erb"
278
- case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE:
279
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_operator_and_write_node_t *)node)->target);
280
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_operator_and_write_node_t *)node)->value);
281
- break;
282
- #line 81 "node.c.erb"
283
- case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE:
284
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_operator_or_write_node_t *)node)->target);
285
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_operator_or_write_node_t *)node)->value);
286
- break;
287
- #line 81 "node.c.erb"
288
- case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE:
289
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->target);
290
- yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->value);
291
- break;
292
258
  #line 81 "node.c.erb"
293
259
  case YP_NODE_CONSTANT_PATH_WRITE_NODE:
294
260
  yp_node_destroy(parser, (yp_node_t *)((yp_constant_path_write_node_t *)node)->target);
@@ -313,8 +279,8 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
313
279
  if (((yp_def_node_t *)node)->parameters != NULL) {
314
280
  yp_node_destroy(parser, (yp_node_t *)((yp_def_node_t *)node)->parameters);
315
281
  }
316
- if (((yp_def_node_t *)node)->statements != NULL) {
317
- yp_node_destroy(parser, (yp_node_t *)((yp_def_node_t *)node)->statements);
282
+ if (((yp_def_node_t *)node)->body != NULL) {
283
+ yp_node_destroy(parser, (yp_node_t *)((yp_def_node_t *)node)->body);
318
284
  }
319
285
  yp_constant_id_list_free(&((yp_def_node_t *)node)->locals);
320
286
  break;
@@ -356,6 +322,15 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
356
322
  yp_node_list_free(parser, &((yp_find_pattern_node_t *)node)->requireds);
357
323
  yp_node_destroy(parser, (yp_node_t *)((yp_find_pattern_node_t *)node)->right);
358
324
  break;
325
+ #line 81 "node.c.erb"
326
+ case YP_NODE_FLIP_FLOP_NODE:
327
+ if (((yp_flip_flop_node_t *)node)->left != NULL) {
328
+ yp_node_destroy(parser, (yp_node_t *)((yp_flip_flop_node_t *)node)->left);
329
+ }
330
+ if (((yp_flip_flop_node_t *)node)->right != NULL) {
331
+ yp_node_destroy(parser, (yp_node_t *)((yp_flip_flop_node_t *)node)->right);
332
+ }
333
+ break;
359
334
  #line 81 "node.c.erb"
360
335
  case YP_NODE_FLOAT_NODE:
361
336
  break;
@@ -379,18 +354,6 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
379
354
  yp_node_destroy(parser, (yp_node_t *)((yp_forwarding_super_node_t *)node)->block);
380
355
  }
381
356
  break;
382
- #line 81 "node.c.erb"
383
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE:
384
- yp_node_destroy(parser, (yp_node_t *)((yp_global_variable_operator_and_write_node_t *)node)->value);
385
- break;
386
- #line 81 "node.c.erb"
387
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE:
388
- yp_node_destroy(parser, (yp_node_t *)((yp_global_variable_operator_or_write_node_t *)node)->value);
389
- break;
390
- #line 81 "node.c.erb"
391
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE:
392
- yp_node_destroy(parser, (yp_node_t *)((yp_global_variable_operator_write_node_t *)node)->value);
393
- break;
394
357
  #line 81 "node.c.erb"
395
358
  case YP_NODE_GLOBAL_VARIABLE_READ_NODE:
396
359
  break;
@@ -435,18 +398,6 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
435
398
  yp_node_destroy(parser, (yp_node_t *)((yp_in_node_t *)node)->statements);
436
399
  }
437
400
  break;
438
- #line 81 "node.c.erb"
439
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE:
440
- yp_node_destroy(parser, (yp_node_t *)((yp_instance_variable_operator_and_write_node_t *)node)->value);
441
- break;
442
- #line 81 "node.c.erb"
443
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE:
444
- yp_node_destroy(parser, (yp_node_t *)((yp_instance_variable_operator_or_write_node_t *)node)->value);
445
- break;
446
- #line 81 "node.c.erb"
447
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE:
448
- yp_node_destroy(parser, (yp_node_t *)((yp_instance_variable_operator_write_node_t *)node)->value);
449
- break;
450
401
  #line 81 "node.c.erb"
451
402
  case YP_NODE_INSTANCE_VARIABLE_READ_NODE:
452
403
  break;
@@ -494,22 +445,10 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
494
445
  if (((yp_lambda_node_t *)node)->parameters != NULL) {
495
446
  yp_node_destroy(parser, (yp_node_t *)((yp_lambda_node_t *)node)->parameters);
496
447
  }
497
- if (((yp_lambda_node_t *)node)->statements != NULL) {
498
- yp_node_destroy(parser, (yp_node_t *)((yp_lambda_node_t *)node)->statements);
448
+ if (((yp_lambda_node_t *)node)->body != NULL) {
449
+ yp_node_destroy(parser, (yp_node_t *)((yp_lambda_node_t *)node)->body);
499
450
  }
500
451
  break;
501
- #line 81 "node.c.erb"
502
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE:
503
- yp_node_destroy(parser, (yp_node_t *)((yp_local_variable_operator_and_write_node_t *)node)->value);
504
- break;
505
- #line 81 "node.c.erb"
506
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE:
507
- yp_node_destroy(parser, (yp_node_t *)((yp_local_variable_operator_or_write_node_t *)node)->value);
508
- break;
509
- #line 81 "node.c.erb"
510
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE:
511
- yp_node_destroy(parser, (yp_node_t *)((yp_local_variable_operator_write_node_t *)node)->value);
512
- break;
513
452
  #line 81 "node.c.erb"
514
453
  case YP_NODE_LOCAL_VARIABLE_READ_NODE:
515
454
  break;
@@ -536,8 +475,8 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
536
475
  case YP_NODE_MODULE_NODE:
537
476
  yp_constant_id_list_free(&((yp_module_node_t *)node)->locals);
538
477
  yp_node_destroy(parser, (yp_node_t *)((yp_module_node_t *)node)->constant_path);
539
- if (((yp_module_node_t *)node)->statements != NULL) {
540
- yp_node_destroy(parser, (yp_node_t *)((yp_module_node_t *)node)->statements);
478
+ if (((yp_module_node_t *)node)->body != NULL) {
479
+ yp_node_destroy(parser, (yp_node_t *)((yp_module_node_t *)node)->body);
541
480
  }
542
481
  break;
543
482
  #line 81 "node.c.erb"
@@ -562,6 +501,11 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
562
501
  #line 81 "node.c.erb"
563
502
  case YP_NODE_NUMBERED_REFERENCE_READ_NODE:
564
503
  break;
504
+ #line 81 "node.c.erb"
505
+ case YP_NODE_OPERATOR_WRITE_NODE:
506
+ yp_node_destroy(parser, (yp_node_t *)((yp_operator_write_node_t *)node)->target);
507
+ yp_node_destroy(parser, (yp_node_t *)((yp_operator_write_node_t *)node)->value);
508
+ break;
565
509
  #line 81 "node.c.erb"
566
510
  case YP_NODE_OPTIONAL_PARAMETER_NODE:
567
511
  yp_node_destroy(parser, (yp_node_t *)((yp_optional_parameter_node_t *)node)->value);
@@ -571,6 +515,11 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
571
515
  yp_node_destroy(parser, (yp_node_t *)((yp_or_node_t *)node)->left);
572
516
  yp_node_destroy(parser, (yp_node_t *)((yp_or_node_t *)node)->right);
573
517
  break;
518
+ #line 81 "node.c.erb"
519
+ case YP_NODE_OR_WRITE_NODE:
520
+ yp_node_destroy(parser, (yp_node_t *)((yp_or_write_node_t *)node)->target);
521
+ yp_node_destroy(parser, (yp_node_t *)((yp_or_write_node_t *)node)->value);
522
+ break;
574
523
  #line 81 "node.c.erb"
575
524
  case YP_NODE_PARAMETERS_NODE:
576
525
  yp_node_list_free(parser, &((yp_parameters_node_t *)node)->requireds);
@@ -589,8 +538,8 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
589
538
  break;
590
539
  #line 81 "node.c.erb"
591
540
  case YP_NODE_PARENTHESES_NODE:
592
- if (((yp_parentheses_node_t *)node)->statements != NULL) {
593
- yp_node_destroy(parser, (yp_node_t *)((yp_parentheses_node_t *)node)->statements);
541
+ if (((yp_parentheses_node_t *)node)->body != NULL) {
542
+ yp_node_destroy(parser, (yp_node_t *)((yp_parentheses_node_t *)node)->body);
594
543
  }
595
544
  break;
596
545
  #line 81 "node.c.erb"
@@ -682,8 +631,8 @@ yp_node_destroy(yp_parser_t *parser, yp_node_t *node) {
682
631
  case YP_NODE_SINGLETON_CLASS_NODE:
683
632
  yp_constant_id_list_free(&((yp_singleton_class_node_t *)node)->locals);
684
633
  yp_node_destroy(parser, (yp_node_t *)((yp_singleton_class_node_t *)node)->expression);
685
- if (((yp_singleton_class_node_t *)node)->statements != NULL) {
686
- yp_node_destroy(parser, (yp_node_t *)((yp_singleton_class_node_t *)node)->statements);
634
+ if (((yp_singleton_class_node_t *)node)->body != NULL) {
635
+ yp_node_destroy(parser, (yp_node_t *)((yp_singleton_class_node_t *)node)->body);
687
636
  }
688
637
  break;
689
638
  #line 81 "node.c.erb"
@@ -810,6 +759,13 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
810
759
  yp_node_memsize_node((yp_node_t *)((yp_and_node_t *)node)->right, memsize);
811
760
  break;
812
761
  }
762
+ #line 120 "node.c.erb"
763
+ case YP_NODE_AND_WRITE_NODE: {
764
+ memsize->memsize += sizeof(yp_and_write_node_t);
765
+ yp_node_memsize_node((yp_node_t *)((yp_and_write_node_t *)node)->target, memsize);
766
+ yp_node_memsize_node((yp_node_t *)((yp_and_write_node_t *)node)->value, memsize);
767
+ break;
768
+ }
813
769
  #line 120 "node.c.erb"
814
770
  case YP_NODE_ARGUMENTS_NODE: {
815
771
  memsize->memsize += sizeof(yp_arguments_node_t);
@@ -889,8 +845,8 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
889
845
  if (((yp_block_node_t *)node)->parameters != NULL) {
890
846
  yp_node_memsize_node((yp_node_t *)((yp_block_node_t *)node)->parameters, memsize);
891
847
  }
892
- if (((yp_block_node_t *)node)->statements != NULL) {
893
- yp_node_memsize_node((yp_node_t *)((yp_block_node_t *)node)->statements, memsize);
848
+ if (((yp_block_node_t *)node)->body != NULL) {
849
+ yp_node_memsize_node((yp_node_t *)((yp_block_node_t *)node)->body, memsize);
894
850
  }
895
851
  break;
896
852
  }
@@ -979,29 +935,11 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
979
935
  if (((yp_class_node_t *)node)->superclass != NULL) {
980
936
  yp_node_memsize_node((yp_node_t *)((yp_class_node_t *)node)->superclass, memsize);
981
937
  }
982
- if (((yp_class_node_t *)node)->statements != NULL) {
983
- yp_node_memsize_node((yp_node_t *)((yp_class_node_t *)node)->statements, memsize);
938
+ if (((yp_class_node_t *)node)->body != NULL) {
939
+ yp_node_memsize_node((yp_node_t *)((yp_class_node_t *)node)->body, memsize);
984
940
  }
985
941
  break;
986
942
  }
987
- #line 120 "node.c.erb"
988
- case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
989
- memsize->memsize += sizeof(yp_class_variable_operator_and_write_node_t);
990
- yp_node_memsize_node((yp_node_t *)((yp_class_variable_operator_and_write_node_t *)node)->value, memsize);
991
- break;
992
- }
993
- #line 120 "node.c.erb"
994
- case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
995
- memsize->memsize += sizeof(yp_class_variable_operator_or_write_node_t);
996
- yp_node_memsize_node((yp_node_t *)((yp_class_variable_operator_or_write_node_t *)node)->value, memsize);
997
- break;
998
- }
999
- #line 120 "node.c.erb"
1000
- case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
1001
- memsize->memsize += sizeof(yp_class_variable_operator_write_node_t);
1002
- yp_node_memsize_node((yp_node_t *)((yp_class_variable_operator_write_node_t *)node)->value, memsize);
1003
- break;
1004
- }
1005
943
  #line 120 "node.c.erb"
1006
944
  case YP_NODE_CLASS_VARIABLE_READ_NODE: {
1007
945
  memsize->memsize += sizeof(yp_class_variable_read_node_t);
@@ -1015,24 +953,6 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1015
953
  }
1016
954
  break;
1017
955
  }
1018
- #line 120 "node.c.erb"
1019
- case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
1020
- memsize->memsize += sizeof(yp_constant_operator_and_write_node_t);
1021
- yp_node_memsize_node((yp_node_t *)((yp_constant_operator_and_write_node_t *)node)->value, memsize);
1022
- break;
1023
- }
1024
- #line 120 "node.c.erb"
1025
- case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
1026
- memsize->memsize += sizeof(yp_constant_operator_or_write_node_t);
1027
- yp_node_memsize_node((yp_node_t *)((yp_constant_operator_or_write_node_t *)node)->value, memsize);
1028
- break;
1029
- }
1030
- #line 120 "node.c.erb"
1031
- case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
1032
- memsize->memsize += sizeof(yp_constant_operator_write_node_t);
1033
- yp_node_memsize_node((yp_node_t *)((yp_constant_operator_write_node_t *)node)->value, memsize);
1034
- break;
1035
- }
1036
956
  #line 120 "node.c.erb"
1037
957
  case YP_NODE_CONSTANT_PATH_NODE: {
1038
958
  memsize->memsize += sizeof(yp_constant_path_node_t);
@@ -1042,27 +962,6 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1042
962
  yp_node_memsize_node((yp_node_t *)((yp_constant_path_node_t *)node)->child, memsize);
1043
963
  break;
1044
964
  }
1045
- #line 120 "node.c.erb"
1046
- case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
1047
- memsize->memsize += sizeof(yp_constant_path_operator_and_write_node_t);
1048
- yp_node_memsize_node((yp_node_t *)((yp_constant_path_operator_and_write_node_t *)node)->target, memsize);
1049
- yp_node_memsize_node((yp_node_t *)((yp_constant_path_operator_and_write_node_t *)node)->value, memsize);
1050
- break;
1051
- }
1052
- #line 120 "node.c.erb"
1053
- case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
1054
- memsize->memsize += sizeof(yp_constant_path_operator_or_write_node_t);
1055
- yp_node_memsize_node((yp_node_t *)((yp_constant_path_operator_or_write_node_t *)node)->target, memsize);
1056
- yp_node_memsize_node((yp_node_t *)((yp_constant_path_operator_or_write_node_t *)node)->value, memsize);
1057
- break;
1058
- }
1059
- #line 120 "node.c.erb"
1060
- case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
1061
- memsize->memsize += sizeof(yp_constant_path_operator_write_node_t);
1062
- yp_node_memsize_node((yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->target, memsize);
1063
- yp_node_memsize_node((yp_node_t *)((yp_constant_path_operator_write_node_t *)node)->value, memsize);
1064
- break;
1065
- }
1066
965
  #line 120 "node.c.erb"
1067
966
  case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
1068
967
  memsize->memsize += sizeof(yp_constant_path_write_node_t);
@@ -1094,8 +993,8 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1094
993
  if (((yp_def_node_t *)node)->parameters != NULL) {
1095
994
  yp_node_memsize_node((yp_node_t *)((yp_def_node_t *)node)->parameters, memsize);
1096
995
  }
1097
- if (((yp_def_node_t *)node)->statements != NULL) {
1098
- yp_node_memsize_node((yp_node_t *)((yp_def_node_t *)node)->statements, memsize);
996
+ if (((yp_def_node_t *)node)->body != NULL) {
997
+ yp_node_memsize_node((yp_node_t *)((yp_def_node_t *)node)->body, memsize);
1099
998
  }
1100
999
  memsize->memsize += yp_constant_id_list_memsize(&((yp_def_node_t *)node)->locals);
1101
1000
  break;
@@ -1152,6 +1051,17 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1152
1051
  yp_node_memsize_node((yp_node_t *)((yp_find_pattern_node_t *)node)->right, memsize);
1153
1052
  break;
1154
1053
  }
1054
+ #line 120 "node.c.erb"
1055
+ case YP_NODE_FLIP_FLOP_NODE: {
1056
+ memsize->memsize += sizeof(yp_flip_flop_node_t);
1057
+ if (((yp_flip_flop_node_t *)node)->left != NULL) {
1058
+ yp_node_memsize_node((yp_node_t *)((yp_flip_flop_node_t *)node)->left, memsize);
1059
+ }
1060
+ if (((yp_flip_flop_node_t *)node)->right != NULL) {
1061
+ yp_node_memsize_node((yp_node_t *)((yp_flip_flop_node_t *)node)->right, memsize);
1062
+ }
1063
+ break;
1064
+ }
1155
1065
  #line 120 "node.c.erb"
1156
1066
  case YP_NODE_FLOAT_NODE: {
1157
1067
  memsize->memsize += sizeof(yp_float_node_t);
@@ -1185,24 +1095,6 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1185
1095
  }
1186
1096
  break;
1187
1097
  }
1188
- #line 120 "node.c.erb"
1189
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
1190
- memsize->memsize += sizeof(yp_global_variable_operator_and_write_node_t);
1191
- yp_node_memsize_node((yp_node_t *)((yp_global_variable_operator_and_write_node_t *)node)->value, memsize);
1192
- break;
1193
- }
1194
- #line 120 "node.c.erb"
1195
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
1196
- memsize->memsize += sizeof(yp_global_variable_operator_or_write_node_t);
1197
- yp_node_memsize_node((yp_node_t *)((yp_global_variable_operator_or_write_node_t *)node)->value, memsize);
1198
- break;
1199
- }
1200
- #line 120 "node.c.erb"
1201
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
1202
- memsize->memsize += sizeof(yp_global_variable_operator_write_node_t);
1203
- yp_node_memsize_node((yp_node_t *)((yp_global_variable_operator_write_node_t *)node)->value, memsize);
1204
- break;
1205
- }
1206
1098
  #line 120 "node.c.erb"
1207
1099
  case YP_NODE_GLOBAL_VARIABLE_READ_NODE: {
1208
1100
  memsize->memsize += sizeof(yp_global_variable_read_node_t);
@@ -1261,24 +1153,6 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1261
1153
  }
1262
1154
  break;
1263
1155
  }
1264
- #line 120 "node.c.erb"
1265
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
1266
- memsize->memsize += sizeof(yp_instance_variable_operator_and_write_node_t);
1267
- yp_node_memsize_node((yp_node_t *)((yp_instance_variable_operator_and_write_node_t *)node)->value, memsize);
1268
- break;
1269
- }
1270
- #line 120 "node.c.erb"
1271
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
1272
- memsize->memsize += sizeof(yp_instance_variable_operator_or_write_node_t);
1273
- yp_node_memsize_node((yp_node_t *)((yp_instance_variable_operator_or_write_node_t *)node)->value, memsize);
1274
- break;
1275
- }
1276
- #line 120 "node.c.erb"
1277
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
1278
- memsize->memsize += sizeof(yp_instance_variable_operator_write_node_t);
1279
- yp_node_memsize_node((yp_node_t *)((yp_instance_variable_operator_write_node_t *)node)->value, memsize);
1280
- break;
1281
- }
1282
1156
  #line 120 "node.c.erb"
1283
1157
  case YP_NODE_INSTANCE_VARIABLE_READ_NODE: {
1284
1158
  memsize->memsize += sizeof(yp_instance_variable_read_node_t);
@@ -1347,29 +1221,11 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1347
1221
  if (((yp_lambda_node_t *)node)->parameters != NULL) {
1348
1222
  yp_node_memsize_node((yp_node_t *)((yp_lambda_node_t *)node)->parameters, memsize);
1349
1223
  }
1350
- if (((yp_lambda_node_t *)node)->statements != NULL) {
1351
- yp_node_memsize_node((yp_node_t *)((yp_lambda_node_t *)node)->statements, memsize);
1224
+ if (((yp_lambda_node_t *)node)->body != NULL) {
1225
+ yp_node_memsize_node((yp_node_t *)((yp_lambda_node_t *)node)->body, memsize);
1352
1226
  }
1353
1227
  break;
1354
1228
  }
1355
- #line 120 "node.c.erb"
1356
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
1357
- memsize->memsize += sizeof(yp_local_variable_operator_and_write_node_t);
1358
- yp_node_memsize_node((yp_node_t *)((yp_local_variable_operator_and_write_node_t *)node)->value, memsize);
1359
- break;
1360
- }
1361
- #line 120 "node.c.erb"
1362
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
1363
- memsize->memsize += sizeof(yp_local_variable_operator_or_write_node_t);
1364
- yp_node_memsize_node((yp_node_t *)((yp_local_variable_operator_or_write_node_t *)node)->value, memsize);
1365
- break;
1366
- }
1367
- #line 120 "node.c.erb"
1368
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
1369
- memsize->memsize += sizeof(yp_local_variable_operator_write_node_t);
1370
- yp_node_memsize_node((yp_node_t *)((yp_local_variable_operator_write_node_t *)node)->value, memsize);
1371
- break;
1372
- }
1373
1229
  #line 120 "node.c.erb"
1374
1230
  case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
1375
1231
  memsize->memsize += sizeof(yp_local_variable_read_node_t);
@@ -1407,8 +1263,8 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1407
1263
  memsize->memsize += sizeof(yp_module_node_t);
1408
1264
  memsize->memsize += yp_constant_id_list_memsize(&((yp_module_node_t *)node)->locals);
1409
1265
  yp_node_memsize_node((yp_node_t *)((yp_module_node_t *)node)->constant_path, memsize);
1410
- if (((yp_module_node_t *)node)->statements != NULL) {
1411
- yp_node_memsize_node((yp_node_t *)((yp_module_node_t *)node)->statements, memsize);
1266
+ if (((yp_module_node_t *)node)->body != NULL) {
1267
+ yp_node_memsize_node((yp_node_t *)((yp_module_node_t *)node)->body, memsize);
1412
1268
  }
1413
1269
  break;
1414
1270
  }
@@ -1444,6 +1300,13 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1444
1300
  memsize->memsize += sizeof(yp_numbered_reference_read_node_t);
1445
1301
  break;
1446
1302
  }
1303
+ #line 120 "node.c.erb"
1304
+ case YP_NODE_OPERATOR_WRITE_NODE: {
1305
+ memsize->memsize += sizeof(yp_operator_write_node_t);
1306
+ yp_node_memsize_node((yp_node_t *)((yp_operator_write_node_t *)node)->target, memsize);
1307
+ yp_node_memsize_node((yp_node_t *)((yp_operator_write_node_t *)node)->value, memsize);
1308
+ break;
1309
+ }
1447
1310
  #line 120 "node.c.erb"
1448
1311
  case YP_NODE_OPTIONAL_PARAMETER_NODE: {
1449
1312
  memsize->memsize += sizeof(yp_optional_parameter_node_t);
@@ -1457,6 +1320,13 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1457
1320
  yp_node_memsize_node((yp_node_t *)((yp_or_node_t *)node)->right, memsize);
1458
1321
  break;
1459
1322
  }
1323
+ #line 120 "node.c.erb"
1324
+ case YP_NODE_OR_WRITE_NODE: {
1325
+ memsize->memsize += sizeof(yp_or_write_node_t);
1326
+ yp_node_memsize_node((yp_node_t *)((yp_or_write_node_t *)node)->target, memsize);
1327
+ yp_node_memsize_node((yp_node_t *)((yp_or_write_node_t *)node)->value, memsize);
1328
+ break;
1329
+ }
1460
1330
  #line 120 "node.c.erb"
1461
1331
  case YP_NODE_PARAMETERS_NODE: {
1462
1332
  memsize->memsize += sizeof(yp_parameters_node_t);
@@ -1478,8 +1348,8 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1478
1348
  #line 120 "node.c.erb"
1479
1349
  case YP_NODE_PARENTHESES_NODE: {
1480
1350
  memsize->memsize += sizeof(yp_parentheses_node_t);
1481
- if (((yp_parentheses_node_t *)node)->statements != NULL) {
1482
- yp_node_memsize_node((yp_node_t *)((yp_parentheses_node_t *)node)->statements, memsize);
1351
+ if (((yp_parentheses_node_t *)node)->body != NULL) {
1352
+ yp_node_memsize_node((yp_node_t *)((yp_parentheses_node_t *)node)->body, memsize);
1483
1353
  }
1484
1354
  break;
1485
1355
  }
@@ -1607,8 +1477,8 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
1607
1477
  memsize->memsize += sizeof(yp_singleton_class_node_t);
1608
1478
  memsize->memsize += yp_constant_id_list_memsize(&((yp_singleton_class_node_t *)node)->locals);
1609
1479
  yp_node_memsize_node((yp_node_t *)((yp_singleton_class_node_t *)node)->expression, memsize);
1610
- if (((yp_singleton_class_node_t *)node)->statements != NULL) {
1611
- yp_node_memsize_node((yp_node_t *)((yp_singleton_class_node_t *)node)->statements, memsize);
1480
+ if (((yp_singleton_class_node_t *)node)->body != NULL) {
1481
+ yp_node_memsize_node((yp_node_t *)((yp_singleton_class_node_t *)node)->body, memsize);
1612
1482
  }
1613
1483
  break;
1614
1484
  }
@@ -1758,6 +1628,8 @@ yp_node_type_to_str(yp_node_type_t node_type)
1758
1628
  return "YP_NODE_ALTERNATION_PATTERN_NODE";
1759
1629
  case YP_NODE_AND_NODE:
1760
1630
  return "YP_NODE_AND_NODE";
1631
+ case YP_NODE_AND_WRITE_NODE:
1632
+ return "YP_NODE_AND_WRITE_NODE";
1761
1633
  case YP_NODE_ARGUMENTS_NODE:
1762
1634
  return "YP_NODE_ARGUMENTS_NODE";
1763
1635
  case YP_NODE_ARRAY_NODE:
@@ -1796,30 +1668,12 @@ yp_node_type_to_str(yp_node_type_t node_type)
1796
1668
  return "YP_NODE_CASE_NODE";
1797
1669
  case YP_NODE_CLASS_NODE:
1798
1670
  return "YP_NODE_CLASS_NODE";
1799
- case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE:
1800
- return "YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE";
1801
- case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE:
1802
- return "YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE";
1803
- case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE:
1804
- return "YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE";
1805
1671
  case YP_NODE_CLASS_VARIABLE_READ_NODE:
1806
1672
  return "YP_NODE_CLASS_VARIABLE_READ_NODE";
1807
1673
  case YP_NODE_CLASS_VARIABLE_WRITE_NODE:
1808
1674
  return "YP_NODE_CLASS_VARIABLE_WRITE_NODE";
1809
- case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE:
1810
- return "YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE";
1811
- case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE:
1812
- return "YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE";
1813
- case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE:
1814
- return "YP_NODE_CONSTANT_OPERATOR_WRITE_NODE";
1815
1675
  case YP_NODE_CONSTANT_PATH_NODE:
1816
1676
  return "YP_NODE_CONSTANT_PATH_NODE";
1817
- case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE:
1818
- return "YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE";
1819
- case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE:
1820
- return "YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE";
1821
- case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE:
1822
- return "YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE";
1823
1677
  case YP_NODE_CONSTANT_PATH_WRITE_NODE:
1824
1678
  return "YP_NODE_CONSTANT_PATH_WRITE_NODE";
1825
1679
  case YP_NODE_CONSTANT_READ_NODE:
@@ -1842,6 +1696,8 @@ yp_node_type_to_str(yp_node_type_t node_type)
1842
1696
  return "YP_NODE_FALSE_NODE";
1843
1697
  case YP_NODE_FIND_PATTERN_NODE:
1844
1698
  return "YP_NODE_FIND_PATTERN_NODE";
1699
+ case YP_NODE_FLIP_FLOP_NODE:
1700
+ return "YP_NODE_FLIP_FLOP_NODE";
1845
1701
  case YP_NODE_FLOAT_NODE:
1846
1702
  return "YP_NODE_FLOAT_NODE";
1847
1703
  case YP_NODE_FOR_NODE:
@@ -1852,12 +1708,6 @@ yp_node_type_to_str(yp_node_type_t node_type)
1852
1708
  return "YP_NODE_FORWARDING_PARAMETER_NODE";
1853
1709
  case YP_NODE_FORWARDING_SUPER_NODE:
1854
1710
  return "YP_NODE_FORWARDING_SUPER_NODE";
1855
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE:
1856
- return "YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE";
1857
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE:
1858
- return "YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE";
1859
- case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE:
1860
- return "YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE";
1861
1711
  case YP_NODE_GLOBAL_VARIABLE_READ_NODE:
1862
1712
  return "YP_NODE_GLOBAL_VARIABLE_READ_NODE";
1863
1713
  case YP_NODE_GLOBAL_VARIABLE_WRITE_NODE:
@@ -1872,12 +1722,6 @@ yp_node_type_to_str(yp_node_type_t node_type)
1872
1722
  return "YP_NODE_IMAGINARY_NODE";
1873
1723
  case YP_NODE_IN_NODE:
1874
1724
  return "YP_NODE_IN_NODE";
1875
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE:
1876
- return "YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE";
1877
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE:
1878
- return "YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE";
1879
- case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE:
1880
- return "YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE";
1881
1725
  case YP_NODE_INSTANCE_VARIABLE_READ_NODE:
1882
1726
  return "YP_NODE_INSTANCE_VARIABLE_READ_NODE";
1883
1727
  case YP_NODE_INSTANCE_VARIABLE_WRITE_NODE:
@@ -1900,12 +1744,6 @@ yp_node_type_to_str(yp_node_type_t node_type)
1900
1744
  return "YP_NODE_KEYWORD_REST_PARAMETER_NODE";
1901
1745
  case YP_NODE_LAMBDA_NODE:
1902
1746
  return "YP_NODE_LAMBDA_NODE";
1903
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE:
1904
- return "YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE";
1905
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE:
1906
- return "YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE";
1907
- case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE:
1908
- return "YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE";
1909
1747
  case YP_NODE_LOCAL_VARIABLE_READ_NODE:
1910
1748
  return "YP_NODE_LOCAL_VARIABLE_READ_NODE";
1911
1749
  case YP_NODE_LOCAL_VARIABLE_WRITE_NODE:
@@ -1928,10 +1766,14 @@ yp_node_type_to_str(yp_node_type_t node_type)
1928
1766
  return "YP_NODE_NO_KEYWORDS_PARAMETER_NODE";
1929
1767
  case YP_NODE_NUMBERED_REFERENCE_READ_NODE:
1930
1768
  return "YP_NODE_NUMBERED_REFERENCE_READ_NODE";
1769
+ case YP_NODE_OPERATOR_WRITE_NODE:
1770
+ return "YP_NODE_OPERATOR_WRITE_NODE";
1931
1771
  case YP_NODE_OPTIONAL_PARAMETER_NODE:
1932
1772
  return "YP_NODE_OPTIONAL_PARAMETER_NODE";
1933
1773
  case YP_NODE_OR_NODE:
1934
1774
  return "YP_NODE_OR_NODE";
1775
+ case YP_NODE_OR_WRITE_NODE:
1776
+ return "YP_NODE_OR_WRITE_NODE";
1935
1777
  case YP_NODE_PARAMETERS_NODE:
1936
1778
  return "YP_NODE_PARAMETERS_NODE";
1937
1779
  case YP_NODE_PARENTHESES_NODE: