12typedef int pm_json_unused_t;
14#ifndef PRISM_EXCLUDE_JSON
16#include "prism/internal/buffer.h"
17#include "prism/internal/constant_pool.h"
18#include "prism/internal/integer.h"
19#include "prism/internal/parser.h"
25 const pm_constant_t *constant = pm_constant_pool_id_to_constant(&parser->constant_pool, constant_id);
26 pm_buffer_append_byte(buffer,
'"');
27 pm_buffer_append_source(buffer, constant->start, constant->length, PM_BUFFER_ESCAPING_JSON);
28 pm_buffer_append_byte(buffer,
'"');
33 pm_buffer_append_format(buffer,
"{\"start\":%" PRIu32
",\"length\":%" PRIu32
"}", location->
start, location->
length);
41 switch (PM_NODE_TYPE(node)) {
42 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
43 pm_buffer_append_string(buffer,
"{\"type\":\"AliasGlobalVariableNode\",\"location\":", 45);
49 pm_buffer_append_byte(buffer,
',');
50 pm_buffer_append_string(buffer,
"\"new_name\":", 11);
54 pm_buffer_append_byte(buffer,
',');
55 pm_buffer_append_string(buffer,
"\"old_name\":", 11);
59 pm_buffer_append_byte(buffer,
',');
60 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
63 pm_buffer_append_byte(buffer,
'}');
66 case PM_ALIAS_METHOD_NODE: {
67 pm_buffer_append_string(buffer,
"{\"type\":\"AliasMethodNode\",\"location\":", 37);
73 pm_buffer_append_byte(buffer,
',');
74 pm_buffer_append_string(buffer,
"\"new_name\":", 11);
78 pm_buffer_append_byte(buffer,
',');
79 pm_buffer_append_string(buffer,
"\"old_name\":", 11);
83 pm_buffer_append_byte(buffer,
',');
84 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
87 pm_buffer_append_byte(buffer,
'}');
90 case PM_ALTERNATION_PATTERN_NODE: {
91 pm_buffer_append_string(buffer,
"{\"type\":\"AlternationPatternNode\",\"location\":", 44);
97 pm_buffer_append_byte(buffer,
',');
98 pm_buffer_append_string(buffer,
"\"left\":", 7);
102 pm_buffer_append_byte(buffer,
',');
103 pm_buffer_append_string(buffer,
"\"right\":", 8);
107 pm_buffer_append_byte(buffer,
',');
108 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
111 pm_buffer_append_byte(buffer,
'}');
115 pm_buffer_append_string(buffer,
"{\"type\":\"AndNode\",\"location\":", 29);
121 pm_buffer_append_byte(buffer,
',');
122 pm_buffer_append_string(buffer,
"\"left\":", 7);
123 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
126 pm_buffer_append_byte(buffer,
',');
127 pm_buffer_append_string(buffer,
"\"right\":", 8);
131 pm_buffer_append_byte(buffer,
',');
132 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
135 pm_buffer_append_byte(buffer,
'}');
138 case PM_ARGUMENTS_NODE: {
139 pm_buffer_append_string(buffer,
"{\"type\":\"ArgumentsNode\",\"location\":", 35);
145 pm_buffer_append_byte(buffer,
',');
146 pm_buffer_append_string(buffer,
"\"flags\":", 8);
148 pm_buffer_append_byte(buffer,
'[');
149 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING)) {
150 if (flags != 0) pm_buffer_append_byte(buffer,
',');
151 pm_buffer_append_string(buffer,
"\"CONTAINS_FORWARDING\"", 21);
154 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS)) {
155 if (flags != 0) pm_buffer_append_byte(buffer,
',');
156 pm_buffer_append_string(buffer,
"\"CONTAINS_KEYWORDS\"", 19);
159 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT)) {
160 if (flags != 0) pm_buffer_append_byte(buffer,
',');
161 pm_buffer_append_string(buffer,
"\"CONTAINS_KEYWORD_SPLAT\"", 24);
164 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT)) {
165 if (flags != 0) pm_buffer_append_byte(buffer,
',');
166 pm_buffer_append_string(buffer,
"\"CONTAINS_SPLAT\"", 16);
169 if (PM_NODE_FLAG_P(cast, PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS)) {
170 if (flags != 0) pm_buffer_append_byte(buffer,
',');
171 pm_buffer_append_string(buffer,
"\"CONTAINS_MULTIPLE_SPLATS\"", 26);
174 pm_buffer_append_byte(buffer,
']');
177 pm_buffer_append_byte(buffer,
',');
178 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
180 pm_buffer_append_byte(buffer,
'[');
182 for (
size_t index = 0; index < arguments->
size; index++) {
183 if (index != 0) pm_buffer_append_byte(buffer,
',');
184 pm_dump_json(buffer, parser, arguments->
nodes[index]);
186 pm_buffer_append_byte(buffer,
']');
188 pm_buffer_append_byte(buffer,
'}');
191 case PM_ARRAY_NODE: {
192 pm_buffer_append_string(buffer,
"{\"type\":\"ArrayNode\",\"location\":", 31);
198 pm_buffer_append_byte(buffer,
',');
199 pm_buffer_append_string(buffer,
"\"flags\":", 8);
201 pm_buffer_append_byte(buffer,
'[');
202 if (PM_NODE_FLAG_P(cast, PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT)) {
203 if (flags != 0) pm_buffer_append_byte(buffer,
',');
204 pm_buffer_append_string(buffer,
"\"CONTAINS_SPLAT\"", 16);
207 pm_buffer_append_byte(buffer,
']');
210 pm_buffer_append_byte(buffer,
',');
211 pm_buffer_append_string(buffer,
"\"elements\":", 11);
213 pm_buffer_append_byte(buffer,
'[');
215 for (
size_t index = 0; index < elements->
size; index++) {
216 if (index != 0) pm_buffer_append_byte(buffer,
',');
217 pm_dump_json(buffer, parser, elements->
nodes[index]);
219 pm_buffer_append_byte(buffer,
']');
222 pm_buffer_append_byte(buffer,
',');
223 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
227 pm_buffer_append_string(buffer,
"null", 4);
231 pm_buffer_append_byte(buffer,
',');
232 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
236 pm_buffer_append_string(buffer,
"null", 4);
239 pm_buffer_append_byte(buffer,
'}');
242 case PM_ARRAY_PATTERN_NODE: {
243 pm_buffer_append_string(buffer,
"{\"type\":\"ArrayPatternNode\",\"location\":", 38);
249 pm_buffer_append_byte(buffer,
',');
250 pm_buffer_append_string(buffer,
"\"constant\":", 11);
254 pm_buffer_append_string(buffer,
"null", 4);
258 pm_buffer_append_byte(buffer,
',');
259 pm_buffer_append_string(buffer,
"\"requireds\":", 12);
261 pm_buffer_append_byte(buffer,
'[');
263 for (
size_t index = 0; index < requireds->
size; index++) {
264 if (index != 0) pm_buffer_append_byte(buffer,
',');
265 pm_dump_json(buffer, parser, requireds->
nodes[index]);
267 pm_buffer_append_byte(buffer,
']');
270 pm_buffer_append_byte(buffer,
',');
271 pm_buffer_append_string(buffer,
"\"rest\":", 7);
272 if (cast->
rest != NULL) {
273 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
275 pm_buffer_append_string(buffer,
"null", 4);
279 pm_buffer_append_byte(buffer,
',');
280 pm_buffer_append_string(buffer,
"\"posts\":", 8);
282 pm_buffer_append_byte(buffer,
'[');
284 for (
size_t index = 0; index < posts->
size; index++) {
285 if (index != 0) pm_buffer_append_byte(buffer,
',');
286 pm_dump_json(buffer, parser, posts->
nodes[index]);
288 pm_buffer_append_byte(buffer,
']');
291 pm_buffer_append_byte(buffer,
',');
292 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
296 pm_buffer_append_string(buffer,
"null", 4);
300 pm_buffer_append_byte(buffer,
',');
301 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
305 pm_buffer_append_string(buffer,
"null", 4);
308 pm_buffer_append_byte(buffer,
'}');
311 case PM_ASSOC_NODE: {
312 pm_buffer_append_string(buffer,
"{\"type\":\"AssocNode\",\"location\":", 31);
318 pm_buffer_append_byte(buffer,
',');
319 pm_buffer_append_string(buffer,
"\"key\":", 6);
320 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
key);
323 pm_buffer_append_byte(buffer,
',');
324 pm_buffer_append_string(buffer,
"\"value\":", 8);
328 pm_buffer_append_byte(buffer,
',');
329 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
333 pm_buffer_append_string(buffer,
"null", 4);
336 pm_buffer_append_byte(buffer,
'}');
339 case PM_ASSOC_SPLAT_NODE: {
340 pm_buffer_append_string(buffer,
"{\"type\":\"AssocSplatNode\",\"location\":", 36);
346 pm_buffer_append_byte(buffer,
',');
347 pm_buffer_append_string(buffer,
"\"value\":", 8);
348 if (cast->
value != NULL) {
351 pm_buffer_append_string(buffer,
"null", 4);
355 pm_buffer_append_byte(buffer,
',');
356 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
359 pm_buffer_append_byte(buffer,
'}');
362 case PM_BACK_REFERENCE_READ_NODE: {
363 pm_buffer_append_string(buffer,
"{\"type\":\"BackReferenceReadNode\",\"location\":", 43);
369 pm_buffer_append_byte(buffer,
',');
370 pm_buffer_append_string(buffer,
"\"name\":", 7);
371 pm_dump_json_constant(buffer, parser, cast->
name);
373 pm_buffer_append_byte(buffer,
'}');
376 case PM_BEGIN_NODE: {
377 pm_buffer_append_string(buffer,
"{\"type\":\"BeginNode\",\"location\":", 31);
383 pm_buffer_append_byte(buffer,
',');
384 pm_buffer_append_string(buffer,
"\"begin_keyword_loc\":", 20);
388 pm_buffer_append_string(buffer,
"null", 4);
392 pm_buffer_append_byte(buffer,
',');
393 pm_buffer_append_string(buffer,
"\"statements\":", 13);
397 pm_buffer_append_string(buffer,
"null", 4);
401 pm_buffer_append_byte(buffer,
',');
402 pm_buffer_append_string(buffer,
"\"rescue_clause\":", 16);
406 pm_buffer_append_string(buffer,
"null", 4);
410 pm_buffer_append_byte(buffer,
',');
411 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
415 pm_buffer_append_string(buffer,
"null", 4);
419 pm_buffer_append_byte(buffer,
',');
420 pm_buffer_append_string(buffer,
"\"ensure_clause\":", 16);
424 pm_buffer_append_string(buffer,
"null", 4);
428 pm_buffer_append_byte(buffer,
',');
429 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
433 pm_buffer_append_string(buffer,
"null", 4);
436 pm_buffer_append_byte(buffer,
'}');
439 case PM_BLOCK_ARGUMENT_NODE: {
440 pm_buffer_append_string(buffer,
"{\"type\":\"BlockArgumentNode\",\"location\":", 39);
446 pm_buffer_append_byte(buffer,
',');
447 pm_buffer_append_string(buffer,
"\"expression\":", 13);
451 pm_buffer_append_string(buffer,
"null", 4);
455 pm_buffer_append_byte(buffer,
',');
456 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
459 pm_buffer_append_byte(buffer,
'}');
462 case PM_BLOCK_LOCAL_VARIABLE_NODE: {
463 pm_buffer_append_string(buffer,
"{\"type\":\"BlockLocalVariableNode\",\"location\":", 44);
469 pm_buffer_append_byte(buffer,
',');
470 pm_buffer_append_string(buffer,
"\"flags\":", 8);
472 pm_buffer_append_byte(buffer,
'[');
473 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
474 if (flags != 0) pm_buffer_append_byte(buffer,
',');
475 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
478 pm_buffer_append_byte(buffer,
']');
481 pm_buffer_append_byte(buffer,
',');
482 pm_buffer_append_string(buffer,
"\"name\":", 7);
483 pm_dump_json_constant(buffer, parser, cast->
name);
485 pm_buffer_append_byte(buffer,
'}');
488 case PM_BLOCK_NODE: {
489 pm_buffer_append_string(buffer,
"{\"type\":\"BlockNode\",\"location\":", 31);
495 pm_buffer_append_byte(buffer,
',');
496 pm_buffer_append_string(buffer,
"\"locals\":", 9);
498 pm_buffer_append_byte(buffer,
'[');
500 for (
size_t index = 0; index < locals->
size; index++) {
501 if (index != 0) pm_buffer_append_byte(buffer,
',');
502 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
504 pm_buffer_append_byte(buffer,
']');
507 pm_buffer_append_byte(buffer,
',');
508 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
512 pm_buffer_append_string(buffer,
"null", 4);
516 pm_buffer_append_byte(buffer,
',');
517 pm_buffer_append_string(buffer,
"\"body\":", 7);
518 if (cast->
body != NULL) {
519 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
521 pm_buffer_append_string(buffer,
"null", 4);
525 pm_buffer_append_byte(buffer,
',');
526 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
530 pm_buffer_append_byte(buffer,
',');
531 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
534 pm_buffer_append_byte(buffer,
'}');
537 case PM_BLOCK_PARAMETER_NODE: {
538 pm_buffer_append_string(buffer,
"{\"type\":\"BlockParameterNode\",\"location\":", 40);
544 pm_buffer_append_byte(buffer,
',');
545 pm_buffer_append_string(buffer,
"\"flags\":", 8);
547 pm_buffer_append_byte(buffer,
'[');
548 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
549 if (flags != 0) pm_buffer_append_byte(buffer,
',');
550 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
553 pm_buffer_append_byte(buffer,
']');
556 pm_buffer_append_byte(buffer,
',');
557 pm_buffer_append_string(buffer,
"\"name\":", 7);
558 if (cast->
name != PM_CONSTANT_ID_UNSET) {
559 pm_dump_json_constant(buffer, parser, cast->
name);
561 pm_buffer_append_string(buffer,
"null", 4);
565 pm_buffer_append_byte(buffer,
',');
566 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
568 pm_dump_json_location(buffer, &cast->
name_loc);
570 pm_buffer_append_string(buffer,
"null", 4);
574 pm_buffer_append_byte(buffer,
',');
575 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
578 pm_buffer_append_byte(buffer,
'}');
581 case PM_BLOCK_PARAMETERS_NODE: {
582 pm_buffer_append_string(buffer,
"{\"type\":\"BlockParametersNode\",\"location\":", 41);
588 pm_buffer_append_byte(buffer,
',');
589 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
593 pm_buffer_append_string(buffer,
"null", 4);
597 pm_buffer_append_byte(buffer,
',');
598 pm_buffer_append_string(buffer,
"\"locals\":", 9);
600 pm_buffer_append_byte(buffer,
'[');
602 for (
size_t index = 0; index < locals->
size; index++) {
603 if (index != 0) pm_buffer_append_byte(buffer,
',');
604 pm_dump_json(buffer, parser, locals->
nodes[index]);
606 pm_buffer_append_byte(buffer,
']');
609 pm_buffer_append_byte(buffer,
',');
610 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
614 pm_buffer_append_string(buffer,
"null", 4);
618 pm_buffer_append_byte(buffer,
',');
619 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
623 pm_buffer_append_string(buffer,
"null", 4);
626 pm_buffer_append_byte(buffer,
'}');
629 case PM_BREAK_NODE: {
630 pm_buffer_append_string(buffer,
"{\"type\":\"BreakNode\",\"location\":", 31);
636 pm_buffer_append_byte(buffer,
',');
637 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
641 pm_buffer_append_string(buffer,
"null", 4);
645 pm_buffer_append_byte(buffer,
',');
646 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
649 pm_buffer_append_byte(buffer,
'}');
652 case PM_CALL_AND_WRITE_NODE: {
653 pm_buffer_append_string(buffer,
"{\"type\":\"CallAndWriteNode\",\"location\":", 38);
659 pm_buffer_append_byte(buffer,
',');
660 pm_buffer_append_string(buffer,
"\"flags\":", 8);
662 pm_buffer_append_byte(buffer,
'[');
663 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
664 if (flags != 0) pm_buffer_append_byte(buffer,
',');
665 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
668 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
669 if (flags != 0) pm_buffer_append_byte(buffer,
',');
670 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
673 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
674 if (flags != 0) pm_buffer_append_byte(buffer,
',');
675 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
678 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
679 if (flags != 0) pm_buffer_append_byte(buffer,
',');
680 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
683 pm_buffer_append_byte(buffer,
']');
686 pm_buffer_append_byte(buffer,
',');
687 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
691 pm_buffer_append_string(buffer,
"null", 4);
695 pm_buffer_append_byte(buffer,
',');
696 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
700 pm_buffer_append_string(buffer,
"null", 4);
704 pm_buffer_append_byte(buffer,
',');
705 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
709 pm_buffer_append_string(buffer,
"null", 4);
713 pm_buffer_append_byte(buffer,
',');
714 pm_buffer_append_string(buffer,
"\"read_name\":", 12);
715 pm_dump_json_constant(buffer, parser, cast->
read_name);
718 pm_buffer_append_byte(buffer,
',');
719 pm_buffer_append_string(buffer,
"\"write_name\":", 13);
720 pm_dump_json_constant(buffer, parser, cast->
write_name);
723 pm_buffer_append_byte(buffer,
',');
724 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
728 pm_buffer_append_byte(buffer,
',');
729 pm_buffer_append_string(buffer,
"\"value\":", 8);
732 pm_buffer_append_byte(buffer,
'}');
736 pm_buffer_append_string(buffer,
"{\"type\":\"CallNode\",\"location\":", 30);
742 pm_buffer_append_byte(buffer,
',');
743 pm_buffer_append_string(buffer,
"\"flags\":", 8);
745 pm_buffer_append_byte(buffer,
'[');
746 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
747 if (flags != 0) pm_buffer_append_byte(buffer,
',');
748 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
751 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
752 if (flags != 0) pm_buffer_append_byte(buffer,
',');
753 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
756 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
757 if (flags != 0) pm_buffer_append_byte(buffer,
',');
758 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
761 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
762 if (flags != 0) pm_buffer_append_byte(buffer,
',');
763 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
766 pm_buffer_append_byte(buffer,
']');
769 pm_buffer_append_byte(buffer,
',');
770 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
774 pm_buffer_append_string(buffer,
"null", 4);
778 pm_buffer_append_byte(buffer,
',');
779 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
783 pm_buffer_append_string(buffer,
"null", 4);
787 pm_buffer_append_byte(buffer,
',');
788 pm_buffer_append_string(buffer,
"\"name\":", 7);
789 pm_dump_json_constant(buffer, parser, cast->
name);
792 pm_buffer_append_byte(buffer,
',');
793 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
797 pm_buffer_append_string(buffer,
"null", 4);
801 pm_buffer_append_byte(buffer,
',');
802 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
806 pm_buffer_append_string(buffer,
"null", 4);
810 pm_buffer_append_byte(buffer,
',');
811 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
815 pm_buffer_append_string(buffer,
"null", 4);
819 pm_buffer_append_byte(buffer,
',');
820 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
824 pm_buffer_append_string(buffer,
"null", 4);
828 pm_buffer_append_byte(buffer,
',');
829 pm_buffer_append_string(buffer,
"\"equal_loc\":", 12);
831 pm_dump_json_location(buffer, &cast->
equal_loc);
833 pm_buffer_append_string(buffer,
"null", 4);
837 pm_buffer_append_byte(buffer,
',');
838 pm_buffer_append_string(buffer,
"\"block\":", 8);
839 if (cast->
block != NULL) {
842 pm_buffer_append_string(buffer,
"null", 4);
845 pm_buffer_append_byte(buffer,
'}');
848 case PM_CALL_OPERATOR_WRITE_NODE: {
849 pm_buffer_append_string(buffer,
"{\"type\":\"CallOperatorWriteNode\",\"location\":", 43);
855 pm_buffer_append_byte(buffer,
',');
856 pm_buffer_append_string(buffer,
"\"flags\":", 8);
858 pm_buffer_append_byte(buffer,
'[');
859 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
860 if (flags != 0) pm_buffer_append_byte(buffer,
',');
861 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
864 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
865 if (flags != 0) pm_buffer_append_byte(buffer,
',');
866 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
869 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
870 if (flags != 0) pm_buffer_append_byte(buffer,
',');
871 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
874 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
875 if (flags != 0) pm_buffer_append_byte(buffer,
',');
876 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
879 pm_buffer_append_byte(buffer,
']');
882 pm_buffer_append_byte(buffer,
',');
883 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
887 pm_buffer_append_string(buffer,
"null", 4);
891 pm_buffer_append_byte(buffer,
',');
892 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
896 pm_buffer_append_string(buffer,
"null", 4);
900 pm_buffer_append_byte(buffer,
',');
901 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
905 pm_buffer_append_string(buffer,
"null", 4);
909 pm_buffer_append_byte(buffer,
',');
910 pm_buffer_append_string(buffer,
"\"read_name\":", 12);
911 pm_dump_json_constant(buffer, parser, cast->
read_name);
914 pm_buffer_append_byte(buffer,
',');
915 pm_buffer_append_string(buffer,
"\"write_name\":", 13);
916 pm_dump_json_constant(buffer, parser, cast->
write_name);
919 pm_buffer_append_byte(buffer,
',');
920 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
924 pm_buffer_append_byte(buffer,
',');
925 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
929 pm_buffer_append_byte(buffer,
',');
930 pm_buffer_append_string(buffer,
"\"value\":", 8);
933 pm_buffer_append_byte(buffer,
'}');
936 case PM_CALL_OR_WRITE_NODE: {
937 pm_buffer_append_string(buffer,
"{\"type\":\"CallOrWriteNode\",\"location\":", 37);
943 pm_buffer_append_byte(buffer,
',');
944 pm_buffer_append_string(buffer,
"\"flags\":", 8);
946 pm_buffer_append_byte(buffer,
'[');
947 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
948 if (flags != 0) pm_buffer_append_byte(buffer,
',');
949 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
952 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
953 if (flags != 0) pm_buffer_append_byte(buffer,
',');
954 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
957 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
958 if (flags != 0) pm_buffer_append_byte(buffer,
',');
959 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
962 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
963 if (flags != 0) pm_buffer_append_byte(buffer,
',');
964 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
967 pm_buffer_append_byte(buffer,
']');
970 pm_buffer_append_byte(buffer,
',');
971 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
975 pm_buffer_append_string(buffer,
"null", 4);
979 pm_buffer_append_byte(buffer,
',');
980 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
984 pm_buffer_append_string(buffer,
"null", 4);
988 pm_buffer_append_byte(buffer,
',');
989 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
993 pm_buffer_append_string(buffer,
"null", 4);
997 pm_buffer_append_byte(buffer,
',');
998 pm_buffer_append_string(buffer,
"\"read_name\":", 12);
999 pm_dump_json_constant(buffer, parser, cast->
read_name);
1002 pm_buffer_append_byte(buffer,
',');
1003 pm_buffer_append_string(buffer,
"\"write_name\":", 13);
1004 pm_dump_json_constant(buffer, parser, cast->
write_name);
1007 pm_buffer_append_byte(buffer,
',');
1008 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1012 pm_buffer_append_byte(buffer,
',');
1013 pm_buffer_append_string(buffer,
"\"value\":", 8);
1016 pm_buffer_append_byte(buffer,
'}');
1019 case PM_CALL_TARGET_NODE: {
1020 pm_buffer_append_string(buffer,
"{\"type\":\"CallTargetNode\",\"location\":", 36);
1026 pm_buffer_append_byte(buffer,
',');
1027 pm_buffer_append_string(buffer,
"\"flags\":", 8);
1029 pm_buffer_append_byte(buffer,
'[');
1030 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
1031 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1032 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
1035 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
1036 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1037 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
1040 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
1041 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1042 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
1045 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
1046 if (flags != 0) pm_buffer_append_byte(buffer,
',');
1047 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
1050 pm_buffer_append_byte(buffer,
']');
1053 pm_buffer_append_byte(buffer,
',');
1054 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
1058 pm_buffer_append_byte(buffer,
',');
1059 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
1063 pm_buffer_append_byte(buffer,
',');
1064 pm_buffer_append_string(buffer,
"\"name\":", 7);
1065 pm_dump_json_constant(buffer, parser, cast->
name);
1068 pm_buffer_append_byte(buffer,
',');
1069 pm_buffer_append_string(buffer,
"\"message_loc\":", 14);
1070 pm_dump_json_location(buffer, &cast->
message_loc);
1072 pm_buffer_append_byte(buffer,
'}');
1075 case PM_CAPTURE_PATTERN_NODE: {
1076 pm_buffer_append_string(buffer,
"{\"type\":\"CapturePatternNode\",\"location\":", 40);
1082 pm_buffer_append_byte(buffer,
',');
1083 pm_buffer_append_string(buffer,
"\"value\":", 8);
1087 pm_buffer_append_byte(buffer,
',');
1088 pm_buffer_append_string(buffer,
"\"target\":", 9);
1092 pm_buffer_append_byte(buffer,
',');
1093 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1096 pm_buffer_append_byte(buffer,
'}');
1099 case PM_CASE_MATCH_NODE: {
1100 pm_buffer_append_string(buffer,
"{\"type\":\"CaseMatchNode\",\"location\":", 35);
1106 pm_buffer_append_byte(buffer,
',');
1107 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
1111 pm_buffer_append_string(buffer,
"null", 4);
1115 pm_buffer_append_byte(buffer,
',');
1116 pm_buffer_append_string(buffer,
"\"conditions\":", 13);
1118 pm_buffer_append_byte(buffer,
'[');
1120 for (
size_t index = 0; index < conditions->
size; index++) {
1121 if (index != 0) pm_buffer_append_byte(buffer,
',');
1122 pm_dump_json(buffer, parser, conditions->
nodes[index]);
1124 pm_buffer_append_byte(buffer,
']');
1127 pm_buffer_append_byte(buffer,
',');
1128 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
1132 pm_buffer_append_string(buffer,
"null", 4);
1136 pm_buffer_append_byte(buffer,
',');
1137 pm_buffer_append_string(buffer,
"\"case_keyword_loc\":", 19);
1141 pm_buffer_append_byte(buffer,
',');
1142 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1145 pm_buffer_append_byte(buffer,
'}');
1148 case PM_CASE_NODE: {
1149 pm_buffer_append_string(buffer,
"{\"type\":\"CaseNode\",\"location\":", 30);
1155 pm_buffer_append_byte(buffer,
',');
1156 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
1160 pm_buffer_append_string(buffer,
"null", 4);
1164 pm_buffer_append_byte(buffer,
',');
1165 pm_buffer_append_string(buffer,
"\"conditions\":", 13);
1167 pm_buffer_append_byte(buffer,
'[');
1169 for (
size_t index = 0; index < conditions->
size; index++) {
1170 if (index != 0) pm_buffer_append_byte(buffer,
',');
1171 pm_dump_json(buffer, parser, conditions->
nodes[index]);
1173 pm_buffer_append_byte(buffer,
']');
1176 pm_buffer_append_byte(buffer,
',');
1177 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
1181 pm_buffer_append_string(buffer,
"null", 4);
1185 pm_buffer_append_byte(buffer,
',');
1186 pm_buffer_append_string(buffer,
"\"case_keyword_loc\":", 19);
1190 pm_buffer_append_byte(buffer,
',');
1191 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1194 pm_buffer_append_byte(buffer,
'}');
1197 case PM_CLASS_NODE: {
1198 pm_buffer_append_string(buffer,
"{\"type\":\"ClassNode\",\"location\":", 31);
1204 pm_buffer_append_byte(buffer,
',');
1205 pm_buffer_append_string(buffer,
"\"locals\":", 9);
1207 pm_buffer_append_byte(buffer,
'[');
1209 for (
size_t index = 0; index < locals->
size; index++) {
1210 if (index != 0) pm_buffer_append_byte(buffer,
',');
1211 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
1213 pm_buffer_append_byte(buffer,
']');
1216 pm_buffer_append_byte(buffer,
',');
1217 pm_buffer_append_string(buffer,
"\"class_keyword_loc\":", 20);
1221 pm_buffer_append_byte(buffer,
',');
1222 pm_buffer_append_string(buffer,
"\"constant_path\":", 16);
1226 pm_buffer_append_byte(buffer,
',');
1227 pm_buffer_append_string(buffer,
"\"inheritance_operator_loc\":", 27);
1231 pm_buffer_append_string(buffer,
"null", 4);
1235 pm_buffer_append_byte(buffer,
',');
1236 pm_buffer_append_string(buffer,
"\"superclass\":", 13);
1240 pm_buffer_append_string(buffer,
"null", 4);
1244 pm_buffer_append_byte(buffer,
',');
1245 pm_buffer_append_string(buffer,
"\"body\":", 7);
1246 if (cast->
body != NULL) {
1247 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
1249 pm_buffer_append_string(buffer,
"null", 4);
1253 pm_buffer_append_byte(buffer,
',');
1254 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1258 pm_buffer_append_byte(buffer,
',');
1259 pm_buffer_append_string(buffer,
"\"name\":", 7);
1260 pm_dump_json_constant(buffer, parser, cast->
name);
1262 pm_buffer_append_byte(buffer,
'}');
1265 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
1266 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableAndWriteNode\",\"location\":", 47);
1272 pm_buffer_append_byte(buffer,
',');
1273 pm_buffer_append_string(buffer,
"\"name\":", 7);
1274 pm_dump_json_constant(buffer, parser, cast->
name);
1277 pm_buffer_append_byte(buffer,
',');
1278 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1279 pm_dump_json_location(buffer, &cast->
name_loc);
1282 pm_buffer_append_byte(buffer,
',');
1283 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1287 pm_buffer_append_byte(buffer,
',');
1288 pm_buffer_append_string(buffer,
"\"value\":", 8);
1291 pm_buffer_append_byte(buffer,
'}');
1294 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
1295 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableOperatorWriteNode\",\"location\":", 52);
1301 pm_buffer_append_byte(buffer,
',');
1302 pm_buffer_append_string(buffer,
"\"name\":", 7);
1303 pm_dump_json_constant(buffer, parser, cast->
name);
1306 pm_buffer_append_byte(buffer,
',');
1307 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1308 pm_dump_json_location(buffer, &cast->
name_loc);
1311 pm_buffer_append_byte(buffer,
',');
1312 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
1316 pm_buffer_append_byte(buffer,
',');
1317 pm_buffer_append_string(buffer,
"\"value\":", 8);
1321 pm_buffer_append_byte(buffer,
',');
1322 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
1325 pm_buffer_append_byte(buffer,
'}');
1328 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
1329 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableOrWriteNode\",\"location\":", 46);
1335 pm_buffer_append_byte(buffer,
',');
1336 pm_buffer_append_string(buffer,
"\"name\":", 7);
1337 pm_dump_json_constant(buffer, parser, cast->
name);
1340 pm_buffer_append_byte(buffer,
',');
1341 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1342 pm_dump_json_location(buffer, &cast->
name_loc);
1345 pm_buffer_append_byte(buffer,
',');
1346 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1350 pm_buffer_append_byte(buffer,
',');
1351 pm_buffer_append_string(buffer,
"\"value\":", 8);
1354 pm_buffer_append_byte(buffer,
'}');
1357 case PM_CLASS_VARIABLE_READ_NODE: {
1358 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableReadNode\",\"location\":", 43);
1364 pm_buffer_append_byte(buffer,
',');
1365 pm_buffer_append_string(buffer,
"\"name\":", 7);
1366 pm_dump_json_constant(buffer, parser, cast->
name);
1368 pm_buffer_append_byte(buffer,
'}');
1371 case PM_CLASS_VARIABLE_TARGET_NODE: {
1372 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableTargetNode\",\"location\":", 45);
1378 pm_buffer_append_byte(buffer,
',');
1379 pm_buffer_append_string(buffer,
"\"name\":", 7);
1380 pm_dump_json_constant(buffer, parser, cast->
name);
1382 pm_buffer_append_byte(buffer,
'}');
1385 case PM_CLASS_VARIABLE_WRITE_NODE: {
1386 pm_buffer_append_string(buffer,
"{\"type\":\"ClassVariableWriteNode\",\"location\":", 44);
1392 pm_buffer_append_byte(buffer,
',');
1393 pm_buffer_append_string(buffer,
"\"name\":", 7);
1394 pm_dump_json_constant(buffer, parser, cast->
name);
1397 pm_buffer_append_byte(buffer,
',');
1398 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1399 pm_dump_json_location(buffer, &cast->
name_loc);
1402 pm_buffer_append_byte(buffer,
',');
1403 pm_buffer_append_string(buffer,
"\"value\":", 8);
1407 pm_buffer_append_byte(buffer,
',');
1408 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1411 pm_buffer_append_byte(buffer,
'}');
1414 case PM_CONSTANT_AND_WRITE_NODE: {
1415 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantAndWriteNode\",\"location\":", 42);
1421 pm_buffer_append_byte(buffer,
',');
1422 pm_buffer_append_string(buffer,
"\"name\":", 7);
1423 pm_dump_json_constant(buffer, parser, cast->
name);
1426 pm_buffer_append_byte(buffer,
',');
1427 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1428 pm_dump_json_location(buffer, &cast->
name_loc);
1431 pm_buffer_append_byte(buffer,
',');
1432 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1436 pm_buffer_append_byte(buffer,
',');
1437 pm_buffer_append_string(buffer,
"\"value\":", 8);
1440 pm_buffer_append_byte(buffer,
'}');
1443 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
1444 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantOperatorWriteNode\",\"location\":", 47);
1450 pm_buffer_append_byte(buffer,
',');
1451 pm_buffer_append_string(buffer,
"\"name\":", 7);
1452 pm_dump_json_constant(buffer, parser, cast->
name);
1455 pm_buffer_append_byte(buffer,
',');
1456 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1457 pm_dump_json_location(buffer, &cast->
name_loc);
1460 pm_buffer_append_byte(buffer,
',');
1461 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
1465 pm_buffer_append_byte(buffer,
',');
1466 pm_buffer_append_string(buffer,
"\"value\":", 8);
1470 pm_buffer_append_byte(buffer,
',');
1471 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
1474 pm_buffer_append_byte(buffer,
'}');
1477 case PM_CONSTANT_OR_WRITE_NODE: {
1478 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantOrWriteNode\",\"location\":", 41);
1484 pm_buffer_append_byte(buffer,
',');
1485 pm_buffer_append_string(buffer,
"\"name\":", 7);
1486 pm_dump_json_constant(buffer, parser, cast->
name);
1489 pm_buffer_append_byte(buffer,
',');
1490 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1491 pm_dump_json_location(buffer, &cast->
name_loc);
1494 pm_buffer_append_byte(buffer,
',');
1495 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1499 pm_buffer_append_byte(buffer,
',');
1500 pm_buffer_append_string(buffer,
"\"value\":", 8);
1503 pm_buffer_append_byte(buffer,
'}');
1506 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
1507 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathAndWriteNode\",\"location\":", 46);
1513 pm_buffer_append_byte(buffer,
',');
1514 pm_buffer_append_string(buffer,
"\"target\":", 9);
1518 pm_buffer_append_byte(buffer,
',');
1519 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1523 pm_buffer_append_byte(buffer,
',');
1524 pm_buffer_append_string(buffer,
"\"value\":", 8);
1527 pm_buffer_append_byte(buffer,
'}');
1530 case PM_CONSTANT_PATH_NODE: {
1531 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathNode\",\"location\":", 38);
1537 pm_buffer_append_byte(buffer,
',');
1538 pm_buffer_append_string(buffer,
"\"parent\":", 9);
1539 if (cast->
parent != NULL) {
1542 pm_buffer_append_string(buffer,
"null", 4);
1546 pm_buffer_append_byte(buffer,
',');
1547 pm_buffer_append_string(buffer,
"\"name\":", 7);
1548 if (cast->
name != PM_CONSTANT_ID_UNSET) {
1549 pm_dump_json_constant(buffer, parser, cast->
name);
1551 pm_buffer_append_string(buffer,
"null", 4);
1555 pm_buffer_append_byte(buffer,
',');
1556 pm_buffer_append_string(buffer,
"\"delimiter_loc\":", 16);
1560 pm_buffer_append_byte(buffer,
',');
1561 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1562 pm_dump_json_location(buffer, &cast->
name_loc);
1564 pm_buffer_append_byte(buffer,
'}');
1567 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
1568 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathOperatorWriteNode\",\"location\":", 51);
1574 pm_buffer_append_byte(buffer,
',');
1575 pm_buffer_append_string(buffer,
"\"target\":", 9);
1579 pm_buffer_append_byte(buffer,
',');
1580 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
1584 pm_buffer_append_byte(buffer,
',');
1585 pm_buffer_append_string(buffer,
"\"value\":", 8);
1589 pm_buffer_append_byte(buffer,
',');
1590 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
1593 pm_buffer_append_byte(buffer,
'}');
1596 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
1597 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathOrWriteNode\",\"location\":", 45);
1603 pm_buffer_append_byte(buffer,
',');
1604 pm_buffer_append_string(buffer,
"\"target\":", 9);
1608 pm_buffer_append_byte(buffer,
',');
1609 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1613 pm_buffer_append_byte(buffer,
',');
1614 pm_buffer_append_string(buffer,
"\"value\":", 8);
1617 pm_buffer_append_byte(buffer,
'}');
1620 case PM_CONSTANT_PATH_TARGET_NODE: {
1621 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathTargetNode\",\"location\":", 44);
1627 pm_buffer_append_byte(buffer,
',');
1628 pm_buffer_append_string(buffer,
"\"parent\":", 9);
1629 if (cast->
parent != NULL) {
1632 pm_buffer_append_string(buffer,
"null", 4);
1636 pm_buffer_append_byte(buffer,
',');
1637 pm_buffer_append_string(buffer,
"\"name\":", 7);
1638 if (cast->
name != PM_CONSTANT_ID_UNSET) {
1639 pm_dump_json_constant(buffer, parser, cast->
name);
1641 pm_buffer_append_string(buffer,
"null", 4);
1645 pm_buffer_append_byte(buffer,
',');
1646 pm_buffer_append_string(buffer,
"\"delimiter_loc\":", 16);
1650 pm_buffer_append_byte(buffer,
',');
1651 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1652 pm_dump_json_location(buffer, &cast->
name_loc);
1654 pm_buffer_append_byte(buffer,
'}');
1657 case PM_CONSTANT_PATH_WRITE_NODE: {
1658 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantPathWriteNode\",\"location\":", 43);
1664 pm_buffer_append_byte(buffer,
',');
1665 pm_buffer_append_string(buffer,
"\"target\":", 9);
1669 pm_buffer_append_byte(buffer,
',');
1670 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1674 pm_buffer_append_byte(buffer,
',');
1675 pm_buffer_append_string(buffer,
"\"value\":", 8);
1678 pm_buffer_append_byte(buffer,
'}');
1681 case PM_CONSTANT_READ_NODE: {
1682 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantReadNode\",\"location\":", 38);
1688 pm_buffer_append_byte(buffer,
',');
1689 pm_buffer_append_string(buffer,
"\"name\":", 7);
1690 pm_dump_json_constant(buffer, parser, cast->
name);
1692 pm_buffer_append_byte(buffer,
'}');
1695 case PM_CONSTANT_TARGET_NODE: {
1696 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantTargetNode\",\"location\":", 40);
1702 pm_buffer_append_byte(buffer,
',');
1703 pm_buffer_append_string(buffer,
"\"name\":", 7);
1704 pm_dump_json_constant(buffer, parser, cast->
name);
1706 pm_buffer_append_byte(buffer,
'}');
1709 case PM_CONSTANT_WRITE_NODE: {
1710 pm_buffer_append_string(buffer,
"{\"type\":\"ConstantWriteNode\",\"location\":", 39);
1716 pm_buffer_append_byte(buffer,
',');
1717 pm_buffer_append_string(buffer,
"\"name\":", 7);
1718 pm_dump_json_constant(buffer, parser, cast->
name);
1721 pm_buffer_append_byte(buffer,
',');
1722 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1723 pm_dump_json_location(buffer, &cast->
name_loc);
1726 pm_buffer_append_byte(buffer,
',');
1727 pm_buffer_append_string(buffer,
"\"value\":", 8);
1731 pm_buffer_append_byte(buffer,
',');
1732 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1735 pm_buffer_append_byte(buffer,
'}');
1739 pm_buffer_append_string(buffer,
"{\"type\":\"DefNode\",\"location\":", 29);
1745 pm_buffer_append_byte(buffer,
',');
1746 pm_buffer_append_string(buffer,
"\"name\":", 7);
1747 pm_dump_json_constant(buffer, parser, cast->
name);
1750 pm_buffer_append_byte(buffer,
',');
1751 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
1752 pm_dump_json_location(buffer, &cast->
name_loc);
1755 pm_buffer_append_byte(buffer,
',');
1756 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
1760 pm_buffer_append_string(buffer,
"null", 4);
1764 pm_buffer_append_byte(buffer,
',');
1765 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
1769 pm_buffer_append_string(buffer,
"null", 4);
1773 pm_buffer_append_byte(buffer,
',');
1774 pm_buffer_append_string(buffer,
"\"body\":", 7);
1775 if (cast->
body != NULL) {
1776 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
1778 pm_buffer_append_string(buffer,
"null", 4);
1782 pm_buffer_append_byte(buffer,
',');
1783 pm_buffer_append_string(buffer,
"\"locals\":", 9);
1785 pm_buffer_append_byte(buffer,
'[');
1787 for (
size_t index = 0; index < locals->
size; index++) {
1788 if (index != 0) pm_buffer_append_byte(buffer,
',');
1789 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
1791 pm_buffer_append_byte(buffer,
']');
1794 pm_buffer_append_byte(buffer,
',');
1795 pm_buffer_append_string(buffer,
"\"def_keyword_loc\":", 18);
1799 pm_buffer_append_byte(buffer,
',');
1800 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1804 pm_buffer_append_string(buffer,
"null", 4);
1808 pm_buffer_append_byte(buffer,
',');
1809 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
1811 pm_dump_json_location(buffer, &cast->
lparen_loc);
1813 pm_buffer_append_string(buffer,
"null", 4);
1817 pm_buffer_append_byte(buffer,
',');
1818 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
1820 pm_dump_json_location(buffer, &cast->
rparen_loc);
1822 pm_buffer_append_string(buffer,
"null", 4);
1826 pm_buffer_append_byte(buffer,
',');
1827 pm_buffer_append_string(buffer,
"\"equal_loc\":", 12);
1829 pm_dump_json_location(buffer, &cast->
equal_loc);
1831 pm_buffer_append_string(buffer,
"null", 4);
1835 pm_buffer_append_byte(buffer,
',');
1836 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1840 pm_buffer_append_string(buffer,
"null", 4);
1843 pm_buffer_append_byte(buffer,
'}');
1846 case PM_DEFINED_NODE: {
1847 pm_buffer_append_string(buffer,
"{\"type\":\"DefinedNode\",\"location\":", 33);
1853 pm_buffer_append_byte(buffer,
',');
1854 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
1856 pm_dump_json_location(buffer, &cast->
lparen_loc);
1858 pm_buffer_append_string(buffer,
"null", 4);
1862 pm_buffer_append_byte(buffer,
',');
1863 pm_buffer_append_string(buffer,
"\"value\":", 8);
1867 pm_buffer_append_byte(buffer,
',');
1868 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
1870 pm_dump_json_location(buffer, &cast->
rparen_loc);
1872 pm_buffer_append_string(buffer,
"null", 4);
1876 pm_buffer_append_byte(buffer,
',');
1877 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
1878 pm_dump_json_location(buffer, &cast->
keyword_loc);
1880 pm_buffer_append_byte(buffer,
'}');
1883 case PM_ELSE_NODE: {
1884 pm_buffer_append_string(buffer,
"{\"type\":\"ElseNode\",\"location\":", 30);
1890 pm_buffer_append_byte(buffer,
',');
1891 pm_buffer_append_string(buffer,
"\"else_keyword_loc\":", 19);
1895 pm_buffer_append_byte(buffer,
',');
1896 pm_buffer_append_string(buffer,
"\"statements\":", 13);
1900 pm_buffer_append_string(buffer,
"null", 4);
1904 pm_buffer_append_byte(buffer,
',');
1905 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1909 pm_buffer_append_string(buffer,
"null", 4);
1912 pm_buffer_append_byte(buffer,
'}');
1915 case PM_EMBEDDED_STATEMENTS_NODE: {
1916 pm_buffer_append_string(buffer,
"{\"type\":\"EmbeddedStatementsNode\",\"location\":", 44);
1922 pm_buffer_append_byte(buffer,
',');
1923 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
1924 pm_dump_json_location(buffer, &cast->
opening_loc);
1927 pm_buffer_append_byte(buffer,
',');
1928 pm_buffer_append_string(buffer,
"\"statements\":", 13);
1932 pm_buffer_append_string(buffer,
"null", 4);
1936 pm_buffer_append_byte(buffer,
',');
1937 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
1938 pm_dump_json_location(buffer, &cast->
closing_loc);
1940 pm_buffer_append_byte(buffer,
'}');
1943 case PM_EMBEDDED_VARIABLE_NODE: {
1944 pm_buffer_append_string(buffer,
"{\"type\":\"EmbeddedVariableNode\",\"location\":", 42);
1950 pm_buffer_append_byte(buffer,
',');
1951 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
1955 pm_buffer_append_byte(buffer,
',');
1956 pm_buffer_append_string(buffer,
"\"variable\":", 11);
1959 pm_buffer_append_byte(buffer,
'}');
1962 case PM_ENSURE_NODE: {
1963 pm_buffer_append_string(buffer,
"{\"type\":\"EnsureNode\",\"location\":", 32);
1969 pm_buffer_append_byte(buffer,
',');
1970 pm_buffer_append_string(buffer,
"\"ensure_keyword_loc\":", 21);
1974 pm_buffer_append_byte(buffer,
',');
1975 pm_buffer_append_string(buffer,
"\"statements\":", 13);
1979 pm_buffer_append_string(buffer,
"null", 4);
1983 pm_buffer_append_byte(buffer,
',');
1984 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
1987 pm_buffer_append_byte(buffer,
'}');
1990 case PM_ERROR_RECOVERY_NODE: {
1991 pm_buffer_append_string(buffer,
"{\"type\":\"ErrorRecoveryNode\",\"location\":", 39);
1997 pm_buffer_append_byte(buffer,
',');
1998 pm_buffer_append_string(buffer,
"\"unexpected\":", 13);
2002 pm_buffer_append_string(buffer,
"null", 4);
2005 pm_buffer_append_byte(buffer,
'}');
2008 case PM_FALSE_NODE: {
2009 pm_buffer_append_string(buffer,
"{\"type\":\"FalseNode\",\"location\":", 31);
2014 pm_buffer_append_byte(buffer,
'}');
2017 case PM_FIND_PATTERN_NODE: {
2018 pm_buffer_append_string(buffer,
"{\"type\":\"FindPatternNode\",\"location\":", 37);
2024 pm_buffer_append_byte(buffer,
',');
2025 pm_buffer_append_string(buffer,
"\"constant\":", 11);
2029 pm_buffer_append_string(buffer,
"null", 4);
2033 pm_buffer_append_byte(buffer,
',');
2034 pm_buffer_append_string(buffer,
"\"left\":", 7);
2035 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
2038 pm_buffer_append_byte(buffer,
',');
2039 pm_buffer_append_string(buffer,
"\"requireds\":", 12);
2041 pm_buffer_append_byte(buffer,
'[');
2043 for (
size_t index = 0; index < requireds->
size; index++) {
2044 if (index != 0) pm_buffer_append_byte(buffer,
',');
2045 pm_dump_json(buffer, parser, requireds->
nodes[index]);
2047 pm_buffer_append_byte(buffer,
']');
2050 pm_buffer_append_byte(buffer,
',');
2051 pm_buffer_append_string(buffer,
"\"right\":", 8);
2055 pm_buffer_append_byte(buffer,
',');
2056 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2058 pm_dump_json_location(buffer, &cast->
opening_loc);
2060 pm_buffer_append_string(buffer,
"null", 4);
2064 pm_buffer_append_byte(buffer,
',');
2065 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2067 pm_dump_json_location(buffer, &cast->
closing_loc);
2069 pm_buffer_append_string(buffer,
"null", 4);
2072 pm_buffer_append_byte(buffer,
'}');
2075 case PM_FLIP_FLOP_NODE: {
2076 pm_buffer_append_string(buffer,
"{\"type\":\"FlipFlopNode\",\"location\":", 34);
2082 pm_buffer_append_byte(buffer,
',');
2083 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2085 pm_buffer_append_byte(buffer,
'[');
2086 if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
2087 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2088 pm_buffer_append_string(buffer,
"\"EXCLUDE_END\"", 13);
2091 pm_buffer_append_byte(buffer,
']');
2094 pm_buffer_append_byte(buffer,
',');
2095 pm_buffer_append_string(buffer,
"\"left\":", 7);
2096 if (cast->
left != NULL) {
2097 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
2099 pm_buffer_append_string(buffer,
"null", 4);
2103 pm_buffer_append_byte(buffer,
',');
2104 pm_buffer_append_string(buffer,
"\"right\":", 8);
2105 if (cast->
right != NULL) {
2108 pm_buffer_append_string(buffer,
"null", 4);
2112 pm_buffer_append_byte(buffer,
',');
2113 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2116 pm_buffer_append_byte(buffer,
'}');
2119 case PM_FLOAT_NODE: {
2120 pm_buffer_append_string(buffer,
"{\"type\":\"FloatNode\",\"location\":", 31);
2126 pm_buffer_append_byte(buffer,
',');
2127 pm_buffer_append_string(buffer,
"\"value\":", 8);
2128 pm_buffer_append_format(buffer,
"%f", cast->
value);
2130 pm_buffer_append_byte(buffer,
'}');
2134 pm_buffer_append_string(buffer,
"{\"type\":\"ForNode\",\"location\":", 29);
2140 pm_buffer_append_byte(buffer,
',');
2141 pm_buffer_append_string(buffer,
"\"index\":", 8);
2145 pm_buffer_append_byte(buffer,
',');
2146 pm_buffer_append_string(buffer,
"\"collection\":", 13);
2150 pm_buffer_append_byte(buffer,
',');
2151 pm_buffer_append_string(buffer,
"\"statements\":", 13);
2155 pm_buffer_append_string(buffer,
"null", 4);
2159 pm_buffer_append_byte(buffer,
',');
2160 pm_buffer_append_string(buffer,
"\"for_keyword_loc\":", 18);
2164 pm_buffer_append_byte(buffer,
',');
2165 pm_buffer_append_string(buffer,
"\"in_keyword_loc\":", 17);
2169 pm_buffer_append_byte(buffer,
',');
2170 pm_buffer_append_string(buffer,
"\"do_keyword_loc\":", 17);
2174 pm_buffer_append_string(buffer,
"null", 4);
2178 pm_buffer_append_byte(buffer,
',');
2179 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
2182 pm_buffer_append_byte(buffer,
'}');
2185 case PM_FORWARDING_ARGUMENTS_NODE: {
2186 pm_buffer_append_string(buffer,
"{\"type\":\"ForwardingArgumentsNode\",\"location\":", 45);
2191 pm_buffer_append_byte(buffer,
'}');
2194 case PM_FORWARDING_PARAMETER_NODE: {
2195 pm_buffer_append_string(buffer,
"{\"type\":\"ForwardingParameterNode\",\"location\":", 45);
2200 pm_buffer_append_byte(buffer,
'}');
2203 case PM_FORWARDING_SUPER_NODE: {
2204 pm_buffer_append_string(buffer,
"{\"type\":\"ForwardingSuperNode\",\"location\":", 41);
2210 pm_buffer_append_byte(buffer,
',');
2211 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
2212 pm_dump_json_location(buffer, &cast->
keyword_loc);
2215 pm_buffer_append_byte(buffer,
',');
2216 pm_buffer_append_string(buffer,
"\"block\":", 8);
2217 if (cast->
block != NULL) {
2220 pm_buffer_append_string(buffer,
"null", 4);
2223 pm_buffer_append_byte(buffer,
'}');
2226 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
2227 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableAndWriteNode\",\"location\":", 48);
2233 pm_buffer_append_byte(buffer,
',');
2234 pm_buffer_append_string(buffer,
"\"name\":", 7);
2235 pm_dump_json_constant(buffer, parser, cast->
name);
2238 pm_buffer_append_byte(buffer,
',');
2239 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2240 pm_dump_json_location(buffer, &cast->
name_loc);
2243 pm_buffer_append_byte(buffer,
',');
2244 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2248 pm_buffer_append_byte(buffer,
',');
2249 pm_buffer_append_string(buffer,
"\"value\":", 8);
2252 pm_buffer_append_byte(buffer,
'}');
2255 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
2256 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableOperatorWriteNode\",\"location\":", 53);
2262 pm_buffer_append_byte(buffer,
',');
2263 pm_buffer_append_string(buffer,
"\"name\":", 7);
2264 pm_dump_json_constant(buffer, parser, cast->
name);
2267 pm_buffer_append_byte(buffer,
',');
2268 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2269 pm_dump_json_location(buffer, &cast->
name_loc);
2272 pm_buffer_append_byte(buffer,
',');
2273 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
2277 pm_buffer_append_byte(buffer,
',');
2278 pm_buffer_append_string(buffer,
"\"value\":", 8);
2282 pm_buffer_append_byte(buffer,
',');
2283 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
2286 pm_buffer_append_byte(buffer,
'}');
2289 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
2290 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableOrWriteNode\",\"location\":", 47);
2296 pm_buffer_append_byte(buffer,
',');
2297 pm_buffer_append_string(buffer,
"\"name\":", 7);
2298 pm_dump_json_constant(buffer, parser, cast->
name);
2301 pm_buffer_append_byte(buffer,
',');
2302 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2303 pm_dump_json_location(buffer, &cast->
name_loc);
2306 pm_buffer_append_byte(buffer,
',');
2307 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2311 pm_buffer_append_byte(buffer,
',');
2312 pm_buffer_append_string(buffer,
"\"value\":", 8);
2315 pm_buffer_append_byte(buffer,
'}');
2318 case PM_GLOBAL_VARIABLE_READ_NODE: {
2319 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableReadNode\",\"location\":", 44);
2325 pm_buffer_append_byte(buffer,
',');
2326 pm_buffer_append_string(buffer,
"\"name\":", 7);
2327 pm_dump_json_constant(buffer, parser, cast->
name);
2329 pm_buffer_append_byte(buffer,
'}');
2332 case PM_GLOBAL_VARIABLE_TARGET_NODE: {
2333 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableTargetNode\",\"location\":", 46);
2339 pm_buffer_append_byte(buffer,
',');
2340 pm_buffer_append_string(buffer,
"\"name\":", 7);
2341 pm_dump_json_constant(buffer, parser, cast->
name);
2343 pm_buffer_append_byte(buffer,
'}');
2346 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
2347 pm_buffer_append_string(buffer,
"{\"type\":\"GlobalVariableWriteNode\",\"location\":", 45);
2353 pm_buffer_append_byte(buffer,
',');
2354 pm_buffer_append_string(buffer,
"\"name\":", 7);
2355 pm_dump_json_constant(buffer, parser, cast->
name);
2358 pm_buffer_append_byte(buffer,
',');
2359 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2360 pm_dump_json_location(buffer, &cast->
name_loc);
2363 pm_buffer_append_byte(buffer,
',');
2364 pm_buffer_append_string(buffer,
"\"value\":", 8);
2368 pm_buffer_append_byte(buffer,
',');
2369 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2372 pm_buffer_append_byte(buffer,
'}');
2375 case PM_HASH_NODE: {
2376 pm_buffer_append_string(buffer,
"{\"type\":\"HashNode\",\"location\":", 30);
2382 pm_buffer_append_byte(buffer,
',');
2383 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2384 pm_dump_json_location(buffer, &cast->
opening_loc);
2387 pm_buffer_append_byte(buffer,
',');
2388 pm_buffer_append_string(buffer,
"\"elements\":", 11);
2390 pm_buffer_append_byte(buffer,
'[');
2392 for (
size_t index = 0; index < elements->
size; index++) {
2393 if (index != 0) pm_buffer_append_byte(buffer,
',');
2394 pm_dump_json(buffer, parser, elements->
nodes[index]);
2396 pm_buffer_append_byte(buffer,
']');
2399 pm_buffer_append_byte(buffer,
',');
2400 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2401 pm_dump_json_location(buffer, &cast->
closing_loc);
2403 pm_buffer_append_byte(buffer,
'}');
2406 case PM_HASH_PATTERN_NODE: {
2407 pm_buffer_append_string(buffer,
"{\"type\":\"HashPatternNode\",\"location\":", 37);
2413 pm_buffer_append_byte(buffer,
',');
2414 pm_buffer_append_string(buffer,
"\"constant\":", 11);
2418 pm_buffer_append_string(buffer,
"null", 4);
2422 pm_buffer_append_byte(buffer,
',');
2423 pm_buffer_append_string(buffer,
"\"elements\":", 11);
2425 pm_buffer_append_byte(buffer,
'[');
2427 for (
size_t index = 0; index < elements->
size; index++) {
2428 if (index != 0) pm_buffer_append_byte(buffer,
',');
2429 pm_dump_json(buffer, parser, elements->
nodes[index]);
2431 pm_buffer_append_byte(buffer,
']');
2434 pm_buffer_append_byte(buffer,
',');
2435 pm_buffer_append_string(buffer,
"\"rest\":", 7);
2436 if (cast->
rest != NULL) {
2437 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
2439 pm_buffer_append_string(buffer,
"null", 4);
2443 pm_buffer_append_byte(buffer,
',');
2444 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2446 pm_dump_json_location(buffer, &cast->
opening_loc);
2448 pm_buffer_append_string(buffer,
"null", 4);
2452 pm_buffer_append_byte(buffer,
',');
2453 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2455 pm_dump_json_location(buffer, &cast->
closing_loc);
2457 pm_buffer_append_string(buffer,
"null", 4);
2460 pm_buffer_append_byte(buffer,
'}');
2464 pm_buffer_append_string(buffer,
"{\"type\":\"IfNode\",\"location\":", 28);
2470 pm_buffer_append_byte(buffer,
',');
2471 pm_buffer_append_string(buffer,
"\"if_keyword_loc\":", 17);
2475 pm_buffer_append_string(buffer,
"null", 4);
2479 pm_buffer_append_byte(buffer,
',');
2480 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
2484 pm_buffer_append_byte(buffer,
',');
2485 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
2489 pm_buffer_append_string(buffer,
"null", 4);
2493 pm_buffer_append_byte(buffer,
',');
2494 pm_buffer_append_string(buffer,
"\"statements\":", 13);
2498 pm_buffer_append_string(buffer,
"null", 4);
2502 pm_buffer_append_byte(buffer,
',');
2503 pm_buffer_append_string(buffer,
"\"subsequent\":", 13);
2507 pm_buffer_append_string(buffer,
"null", 4);
2511 pm_buffer_append_byte(buffer,
',');
2512 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
2516 pm_buffer_append_string(buffer,
"null", 4);
2519 pm_buffer_append_byte(buffer,
'}');
2522 case PM_IMAGINARY_NODE: {
2523 pm_buffer_append_string(buffer,
"{\"type\":\"ImaginaryNode\",\"location\":", 35);
2529 pm_buffer_append_byte(buffer,
',');
2530 pm_buffer_append_string(buffer,
"\"numeric\":", 10);
2533 pm_buffer_append_byte(buffer,
'}');
2536 case PM_IMPLICIT_NODE: {
2537 pm_buffer_append_string(buffer,
"{\"type\":\"ImplicitNode\",\"location\":", 34);
2543 pm_buffer_append_byte(buffer,
',');
2544 pm_buffer_append_string(buffer,
"\"value\":", 8);
2547 pm_buffer_append_byte(buffer,
'}');
2550 case PM_IMPLICIT_REST_NODE: {
2551 pm_buffer_append_string(buffer,
"{\"type\":\"ImplicitRestNode\",\"location\":", 38);
2556 pm_buffer_append_byte(buffer,
'}');
2560 pm_buffer_append_string(buffer,
"{\"type\":\"InNode\",\"location\":", 28);
2566 pm_buffer_append_byte(buffer,
',');
2567 pm_buffer_append_string(buffer,
"\"pattern\":", 10);
2571 pm_buffer_append_byte(buffer,
',');
2572 pm_buffer_append_string(buffer,
"\"statements\":", 13);
2576 pm_buffer_append_string(buffer,
"null", 4);
2580 pm_buffer_append_byte(buffer,
',');
2581 pm_buffer_append_string(buffer,
"\"in_keyword_loc\":", 17);
2585 pm_buffer_append_byte(buffer,
',');
2586 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
2590 pm_buffer_append_string(buffer,
"null", 4);
2593 pm_buffer_append_byte(buffer,
'}');
2596 case PM_INDEX_AND_WRITE_NODE: {
2597 pm_buffer_append_string(buffer,
"{\"type\":\"IndexAndWriteNode\",\"location\":", 39);
2603 pm_buffer_append_byte(buffer,
',');
2604 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2606 pm_buffer_append_byte(buffer,
'[');
2607 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2608 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2609 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2612 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2613 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2614 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2617 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2618 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2619 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2622 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2623 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2624 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2627 pm_buffer_append_byte(buffer,
']');
2630 pm_buffer_append_byte(buffer,
',');
2631 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2635 pm_buffer_append_string(buffer,
"null", 4);
2639 pm_buffer_append_byte(buffer,
',');
2640 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
2644 pm_buffer_append_string(buffer,
"null", 4);
2648 pm_buffer_append_byte(buffer,
',');
2649 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2650 pm_dump_json_location(buffer, &cast->
opening_loc);
2653 pm_buffer_append_byte(buffer,
',');
2654 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2658 pm_buffer_append_string(buffer,
"null", 4);
2662 pm_buffer_append_byte(buffer,
',');
2663 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2664 pm_dump_json_location(buffer, &cast->
closing_loc);
2667 pm_buffer_append_byte(buffer,
',');
2668 pm_buffer_append_string(buffer,
"\"block\":", 8);
2669 if (cast->
block != NULL) {
2672 pm_buffer_append_string(buffer,
"null", 4);
2676 pm_buffer_append_byte(buffer,
',');
2677 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2681 pm_buffer_append_byte(buffer,
',');
2682 pm_buffer_append_string(buffer,
"\"value\":", 8);
2685 pm_buffer_append_byte(buffer,
'}');
2688 case PM_INDEX_OPERATOR_WRITE_NODE: {
2689 pm_buffer_append_string(buffer,
"{\"type\":\"IndexOperatorWriteNode\",\"location\":", 44);
2695 pm_buffer_append_byte(buffer,
',');
2696 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2698 pm_buffer_append_byte(buffer,
'[');
2699 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2700 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2701 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2704 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2705 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2706 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2709 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2710 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2711 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2714 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2715 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2716 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2719 pm_buffer_append_byte(buffer,
']');
2722 pm_buffer_append_byte(buffer,
',');
2723 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2727 pm_buffer_append_string(buffer,
"null", 4);
2731 pm_buffer_append_byte(buffer,
',');
2732 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
2736 pm_buffer_append_string(buffer,
"null", 4);
2740 pm_buffer_append_byte(buffer,
',');
2741 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2742 pm_dump_json_location(buffer, &cast->
opening_loc);
2745 pm_buffer_append_byte(buffer,
',');
2746 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2750 pm_buffer_append_string(buffer,
"null", 4);
2754 pm_buffer_append_byte(buffer,
',');
2755 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2756 pm_dump_json_location(buffer, &cast->
closing_loc);
2759 pm_buffer_append_byte(buffer,
',');
2760 pm_buffer_append_string(buffer,
"\"block\":", 8);
2761 if (cast->
block != NULL) {
2764 pm_buffer_append_string(buffer,
"null", 4);
2768 pm_buffer_append_byte(buffer,
',');
2769 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
2773 pm_buffer_append_byte(buffer,
',');
2774 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
2778 pm_buffer_append_byte(buffer,
',');
2779 pm_buffer_append_string(buffer,
"\"value\":", 8);
2782 pm_buffer_append_byte(buffer,
'}');
2785 case PM_INDEX_OR_WRITE_NODE: {
2786 pm_buffer_append_string(buffer,
"{\"type\":\"IndexOrWriteNode\",\"location\":", 38);
2792 pm_buffer_append_byte(buffer,
',');
2793 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2795 pm_buffer_append_byte(buffer,
'[');
2796 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2797 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2798 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2801 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2802 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2803 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2806 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2807 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2808 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2811 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2812 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2813 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2816 pm_buffer_append_byte(buffer,
']');
2819 pm_buffer_append_byte(buffer,
',');
2820 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2824 pm_buffer_append_string(buffer,
"null", 4);
2828 pm_buffer_append_byte(buffer,
',');
2829 pm_buffer_append_string(buffer,
"\"call_operator_loc\":", 20);
2833 pm_buffer_append_string(buffer,
"null", 4);
2837 pm_buffer_append_byte(buffer,
',');
2838 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2839 pm_dump_json_location(buffer, &cast->
opening_loc);
2842 pm_buffer_append_byte(buffer,
',');
2843 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2847 pm_buffer_append_string(buffer,
"null", 4);
2851 pm_buffer_append_byte(buffer,
',');
2852 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2853 pm_dump_json_location(buffer, &cast->
closing_loc);
2856 pm_buffer_append_byte(buffer,
',');
2857 pm_buffer_append_string(buffer,
"\"block\":", 8);
2858 if (cast->
block != NULL) {
2861 pm_buffer_append_string(buffer,
"null", 4);
2865 pm_buffer_append_byte(buffer,
',');
2866 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2870 pm_buffer_append_byte(buffer,
',');
2871 pm_buffer_append_string(buffer,
"\"value\":", 8);
2874 pm_buffer_append_byte(buffer,
'}');
2877 case PM_INDEX_TARGET_NODE: {
2878 pm_buffer_append_string(buffer,
"{\"type\":\"IndexTargetNode\",\"location\":", 37);
2884 pm_buffer_append_byte(buffer,
',');
2885 pm_buffer_append_string(buffer,
"\"flags\":", 8);
2887 pm_buffer_append_byte(buffer,
'[');
2888 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION)) {
2889 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2890 pm_buffer_append_string(buffer,
"\"SAFE_NAVIGATION\"", 17);
2893 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_VARIABLE_CALL)) {
2894 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2895 pm_buffer_append_string(buffer,
"\"VARIABLE_CALL\"", 15);
2898 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE)) {
2899 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2900 pm_buffer_append_string(buffer,
"\"ATTRIBUTE_WRITE\"", 17);
2903 if (PM_NODE_FLAG_P(cast, PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY)) {
2904 if (flags != 0) pm_buffer_append_byte(buffer,
',');
2905 pm_buffer_append_string(buffer,
"\"IGNORE_VISIBILITY\"", 19);
2908 pm_buffer_append_byte(buffer,
']');
2911 pm_buffer_append_byte(buffer,
',');
2912 pm_buffer_append_string(buffer,
"\"receiver\":", 11);
2916 pm_buffer_append_byte(buffer,
',');
2917 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
2918 pm_dump_json_location(buffer, &cast->
opening_loc);
2921 pm_buffer_append_byte(buffer,
',');
2922 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
2926 pm_buffer_append_string(buffer,
"null", 4);
2930 pm_buffer_append_byte(buffer,
',');
2931 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
2932 pm_dump_json_location(buffer, &cast->
closing_loc);
2935 pm_buffer_append_byte(buffer,
',');
2936 pm_buffer_append_string(buffer,
"\"block\":", 8);
2937 if (cast->
block != NULL) {
2940 pm_buffer_append_string(buffer,
"null", 4);
2943 pm_buffer_append_byte(buffer,
'}');
2946 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
2947 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableAndWriteNode\",\"location\":", 50);
2953 pm_buffer_append_byte(buffer,
',');
2954 pm_buffer_append_string(buffer,
"\"name\":", 7);
2955 pm_dump_json_constant(buffer, parser, cast->
name);
2958 pm_buffer_append_byte(buffer,
',');
2959 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2960 pm_dump_json_location(buffer, &cast->
name_loc);
2963 pm_buffer_append_byte(buffer,
',');
2964 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
2968 pm_buffer_append_byte(buffer,
',');
2969 pm_buffer_append_string(buffer,
"\"value\":", 8);
2972 pm_buffer_append_byte(buffer,
'}');
2975 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
2976 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableOperatorWriteNode\",\"location\":", 55);
2982 pm_buffer_append_byte(buffer,
',');
2983 pm_buffer_append_string(buffer,
"\"name\":", 7);
2984 pm_dump_json_constant(buffer, parser, cast->
name);
2987 pm_buffer_append_byte(buffer,
',');
2988 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
2989 pm_dump_json_location(buffer, &cast->
name_loc);
2992 pm_buffer_append_byte(buffer,
',');
2993 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
2997 pm_buffer_append_byte(buffer,
',');
2998 pm_buffer_append_string(buffer,
"\"value\":", 8);
3002 pm_buffer_append_byte(buffer,
',');
3003 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
3006 pm_buffer_append_byte(buffer,
'}');
3009 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
3010 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableOrWriteNode\",\"location\":", 49);
3016 pm_buffer_append_byte(buffer,
',');
3017 pm_buffer_append_string(buffer,
"\"name\":", 7);
3018 pm_dump_json_constant(buffer, parser, cast->
name);
3021 pm_buffer_append_byte(buffer,
',');
3022 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3023 pm_dump_json_location(buffer, &cast->
name_loc);
3026 pm_buffer_append_byte(buffer,
',');
3027 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3031 pm_buffer_append_byte(buffer,
',');
3032 pm_buffer_append_string(buffer,
"\"value\":", 8);
3035 pm_buffer_append_byte(buffer,
'}');
3038 case PM_INSTANCE_VARIABLE_READ_NODE: {
3039 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableReadNode\",\"location\":", 46);
3045 pm_buffer_append_byte(buffer,
',');
3046 pm_buffer_append_string(buffer,
"\"name\":", 7);
3047 pm_dump_json_constant(buffer, parser, cast->
name);
3049 pm_buffer_append_byte(buffer,
'}');
3052 case PM_INSTANCE_VARIABLE_TARGET_NODE: {
3053 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableTargetNode\",\"location\":", 48);
3059 pm_buffer_append_byte(buffer,
',');
3060 pm_buffer_append_string(buffer,
"\"name\":", 7);
3061 pm_dump_json_constant(buffer, parser, cast->
name);
3063 pm_buffer_append_byte(buffer,
'}');
3066 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
3067 pm_buffer_append_string(buffer,
"{\"type\":\"InstanceVariableWriteNode\",\"location\":", 47);
3073 pm_buffer_append_byte(buffer,
',');
3074 pm_buffer_append_string(buffer,
"\"name\":", 7);
3075 pm_dump_json_constant(buffer, parser, cast->
name);
3078 pm_buffer_append_byte(buffer,
',');
3079 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3080 pm_dump_json_location(buffer, &cast->
name_loc);
3083 pm_buffer_append_byte(buffer,
',');
3084 pm_buffer_append_string(buffer,
"\"value\":", 8);
3088 pm_buffer_append_byte(buffer,
',');
3089 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3092 pm_buffer_append_byte(buffer,
'}');
3095 case PM_INTEGER_NODE: {
3096 pm_buffer_append_string(buffer,
"{\"type\":\"IntegerNode\",\"location\":", 33);
3102 pm_buffer_append_byte(buffer,
',');
3103 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3105 pm_buffer_append_byte(buffer,
'[');
3106 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
3107 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3108 pm_buffer_append_string(buffer,
"\"BINARY\"", 8);
3111 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
3112 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3113 pm_buffer_append_string(buffer,
"\"DECIMAL\"", 9);
3116 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
3117 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3118 pm_buffer_append_string(buffer,
"\"OCTAL\"", 7);
3121 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
3122 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3123 pm_buffer_append_string(buffer,
"\"HEXADECIMAL\"", 13);
3126 pm_buffer_append_byte(buffer,
']');
3129 pm_buffer_append_byte(buffer,
',');
3130 pm_buffer_append_string(buffer,
"\"value\":", 8);
3131 pm_integer_string(buffer, &cast->
value);
3133 pm_buffer_append_byte(buffer,
'}');
3136 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
3137 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedMatchLastLineNode\",\"location\":", 51);
3143 pm_buffer_append_byte(buffer,
',');
3144 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3146 pm_buffer_append_byte(buffer,
'[');
3147 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
3148 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3149 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
3152 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
3153 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3154 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
3157 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
3158 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3159 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
3162 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
3163 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3164 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
3167 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
3168 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3169 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
3172 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
3173 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3174 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
3177 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
3178 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3179 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
3182 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
3183 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3184 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
3187 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
3188 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3189 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
3192 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
3193 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3194 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
3197 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
3198 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3199 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
3202 pm_buffer_append_byte(buffer,
']');
3205 pm_buffer_append_byte(buffer,
',');
3206 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3207 pm_dump_json_location(buffer, &cast->
opening_loc);
3210 pm_buffer_append_byte(buffer,
',');
3211 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3213 pm_buffer_append_byte(buffer,
'[');
3215 for (
size_t index = 0; index < parts->
size; index++) {
3216 if (index != 0) pm_buffer_append_byte(buffer,
',');
3217 pm_dump_json(buffer, parser, parts->
nodes[index]);
3219 pm_buffer_append_byte(buffer,
']');
3222 pm_buffer_append_byte(buffer,
',');
3223 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3224 pm_dump_json_location(buffer, &cast->
closing_loc);
3226 pm_buffer_append_byte(buffer,
'}');
3229 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
3230 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedRegularExpressionNode\",\"location\":", 55);
3236 pm_buffer_append_byte(buffer,
',');
3237 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3239 pm_buffer_append_byte(buffer,
'[');
3240 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
3241 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3242 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
3245 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
3246 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3247 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
3250 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
3251 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3252 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
3255 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
3256 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3257 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
3260 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
3261 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3262 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
3265 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
3266 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3267 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
3270 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
3271 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3272 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
3275 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
3276 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3277 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
3280 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
3281 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3282 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
3285 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
3286 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3287 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
3290 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
3291 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3292 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
3295 pm_buffer_append_byte(buffer,
']');
3298 pm_buffer_append_byte(buffer,
',');
3299 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3300 pm_dump_json_location(buffer, &cast->
opening_loc);
3303 pm_buffer_append_byte(buffer,
',');
3304 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3306 pm_buffer_append_byte(buffer,
'[');
3308 for (
size_t index = 0; index < parts->
size; index++) {
3309 if (index != 0) pm_buffer_append_byte(buffer,
',');
3310 pm_dump_json(buffer, parser, parts->
nodes[index]);
3312 pm_buffer_append_byte(buffer,
']');
3315 pm_buffer_append_byte(buffer,
',');
3316 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3317 pm_dump_json_location(buffer, &cast->
closing_loc);
3319 pm_buffer_append_byte(buffer,
'}');
3322 case PM_INTERPOLATED_STRING_NODE: {
3323 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedStringNode\",\"location\":", 44);
3329 pm_buffer_append_byte(buffer,
',');
3330 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3332 pm_buffer_append_byte(buffer,
'[');
3333 if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN)) {
3334 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3335 pm_buffer_append_string(buffer,
"\"FROZEN\"", 8);
3338 if (PM_NODE_FLAG_P(cast, PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE)) {
3339 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3340 pm_buffer_append_string(buffer,
"\"MUTABLE\"", 9);
3343 pm_buffer_append_byte(buffer,
']');
3346 pm_buffer_append_byte(buffer,
',');
3347 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3349 pm_dump_json_location(buffer, &cast->
opening_loc);
3351 pm_buffer_append_string(buffer,
"null", 4);
3355 pm_buffer_append_byte(buffer,
',');
3356 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3358 pm_buffer_append_byte(buffer,
'[');
3360 for (
size_t index = 0; index < parts->
size; index++) {
3361 if (index != 0) pm_buffer_append_byte(buffer,
',');
3362 pm_dump_json(buffer, parser, parts->
nodes[index]);
3364 pm_buffer_append_byte(buffer,
']');
3367 pm_buffer_append_byte(buffer,
',');
3368 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3370 pm_dump_json_location(buffer, &cast->
closing_loc);
3372 pm_buffer_append_string(buffer,
"null", 4);
3375 pm_buffer_append_byte(buffer,
'}');
3378 case PM_INTERPOLATED_SYMBOL_NODE: {
3379 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedSymbolNode\",\"location\":", 44);
3385 pm_buffer_append_byte(buffer,
',');
3386 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3388 pm_dump_json_location(buffer, &cast->
opening_loc);
3390 pm_buffer_append_string(buffer,
"null", 4);
3394 pm_buffer_append_byte(buffer,
',');
3395 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3397 pm_buffer_append_byte(buffer,
'[');
3399 for (
size_t index = 0; index < parts->
size; index++) {
3400 if (index != 0) pm_buffer_append_byte(buffer,
',');
3401 pm_dump_json(buffer, parser, parts->
nodes[index]);
3403 pm_buffer_append_byte(buffer,
']');
3406 pm_buffer_append_byte(buffer,
',');
3407 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3409 pm_dump_json_location(buffer, &cast->
closing_loc);
3411 pm_buffer_append_string(buffer,
"null", 4);
3414 pm_buffer_append_byte(buffer,
'}');
3417 case PM_INTERPOLATED_X_STRING_NODE: {
3418 pm_buffer_append_string(buffer,
"{\"type\":\"InterpolatedXStringNode\",\"location\":", 45);
3424 pm_buffer_append_byte(buffer,
',');
3425 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3426 pm_dump_json_location(buffer, &cast->
opening_loc);
3429 pm_buffer_append_byte(buffer,
',');
3430 pm_buffer_append_string(buffer,
"\"parts\":", 8);
3432 pm_buffer_append_byte(buffer,
'[');
3434 for (
size_t index = 0; index < parts->
size; index++) {
3435 if (index != 0) pm_buffer_append_byte(buffer,
',');
3436 pm_dump_json(buffer, parser, parts->
nodes[index]);
3438 pm_buffer_append_byte(buffer,
']');
3441 pm_buffer_append_byte(buffer,
',');
3442 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3443 pm_dump_json_location(buffer, &cast->
closing_loc);
3445 pm_buffer_append_byte(buffer,
'}');
3448 case PM_IT_LOCAL_VARIABLE_READ_NODE: {
3449 pm_buffer_append_string(buffer,
"{\"type\":\"ItLocalVariableReadNode\",\"location\":", 45);
3454 pm_buffer_append_byte(buffer,
'}');
3457 case PM_IT_PARAMETERS_NODE: {
3458 pm_buffer_append_string(buffer,
"{\"type\":\"ItParametersNode\",\"location\":", 38);
3463 pm_buffer_append_byte(buffer,
'}');
3466 case PM_KEYWORD_HASH_NODE: {
3467 pm_buffer_append_string(buffer,
"{\"type\":\"KeywordHashNode\",\"location\":", 37);
3473 pm_buffer_append_byte(buffer,
',');
3474 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3476 pm_buffer_append_byte(buffer,
'[');
3477 if (PM_NODE_FLAG_P(cast, PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS)) {
3478 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3479 pm_buffer_append_string(buffer,
"\"SYMBOL_KEYS\"", 13);
3482 pm_buffer_append_byte(buffer,
']');
3485 pm_buffer_append_byte(buffer,
',');
3486 pm_buffer_append_string(buffer,
"\"elements\":", 11);
3488 pm_buffer_append_byte(buffer,
'[');
3490 for (
size_t index = 0; index < elements->
size; index++) {
3491 if (index != 0) pm_buffer_append_byte(buffer,
',');
3492 pm_dump_json(buffer, parser, elements->
nodes[index]);
3494 pm_buffer_append_byte(buffer,
']');
3496 pm_buffer_append_byte(buffer,
'}');
3499 case PM_KEYWORD_REST_PARAMETER_NODE: {
3500 pm_buffer_append_string(buffer,
"{\"type\":\"KeywordRestParameterNode\",\"location\":", 46);
3506 pm_buffer_append_byte(buffer,
',');
3507 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3509 pm_buffer_append_byte(buffer,
'[');
3510 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
3511 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3512 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
3515 pm_buffer_append_byte(buffer,
']');
3518 pm_buffer_append_byte(buffer,
',');
3519 pm_buffer_append_string(buffer,
"\"name\":", 7);
3520 if (cast->
name != PM_CONSTANT_ID_UNSET) {
3521 pm_dump_json_constant(buffer, parser, cast->
name);
3523 pm_buffer_append_string(buffer,
"null", 4);
3527 pm_buffer_append_byte(buffer,
',');
3528 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3530 pm_dump_json_location(buffer, &cast->
name_loc);
3532 pm_buffer_append_string(buffer,
"null", 4);
3536 pm_buffer_append_byte(buffer,
',');
3537 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3540 pm_buffer_append_byte(buffer,
'}');
3543 case PM_LAMBDA_NODE: {
3544 pm_buffer_append_string(buffer,
"{\"type\":\"LambdaNode\",\"location\":", 32);
3550 pm_buffer_append_byte(buffer,
',');
3551 pm_buffer_append_string(buffer,
"\"locals\":", 9);
3553 pm_buffer_append_byte(buffer,
'[');
3555 for (
size_t index = 0; index < locals->
size; index++) {
3556 if (index != 0) pm_buffer_append_byte(buffer,
',');
3557 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
3559 pm_buffer_append_byte(buffer,
']');
3562 pm_buffer_append_byte(buffer,
',');
3563 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3567 pm_buffer_append_byte(buffer,
',');
3568 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3569 pm_dump_json_location(buffer, &cast->
opening_loc);
3572 pm_buffer_append_byte(buffer,
',');
3573 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3574 pm_dump_json_location(buffer, &cast->
closing_loc);
3577 pm_buffer_append_byte(buffer,
',');
3578 pm_buffer_append_string(buffer,
"\"parameters\":", 13);
3582 pm_buffer_append_string(buffer,
"null", 4);
3586 pm_buffer_append_byte(buffer,
',');
3587 pm_buffer_append_string(buffer,
"\"body\":", 7);
3588 if (cast->
body != NULL) {
3589 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
3591 pm_buffer_append_string(buffer,
"null", 4);
3594 pm_buffer_append_byte(buffer,
'}');
3597 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
3598 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableAndWriteNode\",\"location\":", 47);
3604 pm_buffer_append_byte(buffer,
',');
3605 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3606 pm_dump_json_location(buffer, &cast->
name_loc);
3609 pm_buffer_append_byte(buffer,
',');
3610 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3614 pm_buffer_append_byte(buffer,
',');
3615 pm_buffer_append_string(buffer,
"\"value\":", 8);
3619 pm_buffer_append_byte(buffer,
',');
3620 pm_buffer_append_string(buffer,
"\"name\":", 7);
3621 pm_dump_json_constant(buffer, parser, cast->
name);
3624 pm_buffer_append_byte(buffer,
',');
3625 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3626 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
depth);
3628 pm_buffer_append_byte(buffer,
'}');
3631 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
3632 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableOperatorWriteNode\",\"location\":", 52);
3638 pm_buffer_append_byte(buffer,
',');
3639 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3640 pm_dump_json_location(buffer, &cast->
name_loc);
3643 pm_buffer_append_byte(buffer,
',');
3644 pm_buffer_append_string(buffer,
"\"binary_operator_loc\":", 22);
3648 pm_buffer_append_byte(buffer,
',');
3649 pm_buffer_append_string(buffer,
"\"value\":", 8);
3653 pm_buffer_append_byte(buffer,
',');
3654 pm_buffer_append_string(buffer,
"\"name\":", 7);
3655 pm_dump_json_constant(buffer, parser, cast->
name);
3658 pm_buffer_append_byte(buffer,
',');
3659 pm_buffer_append_string(buffer,
"\"binary_operator\":", 18);
3663 pm_buffer_append_byte(buffer,
',');
3664 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3665 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
depth);
3667 pm_buffer_append_byte(buffer,
'}');
3670 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
3671 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableOrWriteNode\",\"location\":", 46);
3677 pm_buffer_append_byte(buffer,
',');
3678 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3679 pm_dump_json_location(buffer, &cast->
name_loc);
3682 pm_buffer_append_byte(buffer,
',');
3683 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3687 pm_buffer_append_byte(buffer,
',');
3688 pm_buffer_append_string(buffer,
"\"value\":", 8);
3692 pm_buffer_append_byte(buffer,
',');
3693 pm_buffer_append_string(buffer,
"\"name\":", 7);
3694 pm_dump_json_constant(buffer, parser, cast->
name);
3697 pm_buffer_append_byte(buffer,
',');
3698 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3699 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
depth);
3701 pm_buffer_append_byte(buffer,
'}');
3704 case PM_LOCAL_VARIABLE_READ_NODE: {
3705 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableReadNode\",\"location\":", 43);
3711 pm_buffer_append_byte(buffer,
',');
3712 pm_buffer_append_string(buffer,
"\"name\":", 7);
3713 pm_dump_json_constant(buffer, parser, cast->
name);
3716 pm_buffer_append_byte(buffer,
',');
3717 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3718 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
depth);
3720 pm_buffer_append_byte(buffer,
'}');
3723 case PM_LOCAL_VARIABLE_TARGET_NODE: {
3724 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableTargetNode\",\"location\":", 45);
3730 pm_buffer_append_byte(buffer,
',');
3731 pm_buffer_append_string(buffer,
"\"name\":", 7);
3732 pm_dump_json_constant(buffer, parser, cast->
name);
3735 pm_buffer_append_byte(buffer,
',');
3736 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3737 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
depth);
3739 pm_buffer_append_byte(buffer,
'}');
3742 case PM_LOCAL_VARIABLE_WRITE_NODE: {
3743 pm_buffer_append_string(buffer,
"{\"type\":\"LocalVariableWriteNode\",\"location\":", 44);
3749 pm_buffer_append_byte(buffer,
',');
3750 pm_buffer_append_string(buffer,
"\"name\":", 7);
3751 pm_dump_json_constant(buffer, parser, cast->
name);
3754 pm_buffer_append_byte(buffer,
',');
3755 pm_buffer_append_string(buffer,
"\"depth\":", 8);
3756 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
depth);
3759 pm_buffer_append_byte(buffer,
',');
3760 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
3761 pm_dump_json_location(buffer, &cast->
name_loc);
3764 pm_buffer_append_byte(buffer,
',');
3765 pm_buffer_append_string(buffer,
"\"value\":", 8);
3769 pm_buffer_append_byte(buffer,
',');
3770 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3773 pm_buffer_append_byte(buffer,
'}');
3776 case PM_MATCH_LAST_LINE_NODE: {
3777 pm_buffer_append_string(buffer,
"{\"type\":\"MatchLastLineNode\",\"location\":", 39);
3783 pm_buffer_append_byte(buffer,
',');
3784 pm_buffer_append_string(buffer,
"\"flags\":", 8);
3786 pm_buffer_append_byte(buffer,
'[');
3787 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
3788 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3789 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
3792 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
3793 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3794 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
3797 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
3798 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3799 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
3802 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
3803 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3804 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
3807 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
3808 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3809 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
3812 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
3813 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3814 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
3817 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
3818 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3819 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
3822 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
3823 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3824 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
3827 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
3828 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3829 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
3832 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
3833 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3834 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
3837 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
3838 if (flags != 0) pm_buffer_append_byte(buffer,
',');
3839 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
3842 pm_buffer_append_byte(buffer,
']');
3845 pm_buffer_append_byte(buffer,
',');
3846 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
3847 pm_dump_json_location(buffer, &cast->
opening_loc);
3850 pm_buffer_append_byte(buffer,
',');
3851 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
3852 pm_dump_json_location(buffer, &cast->
content_loc);
3855 pm_buffer_append_byte(buffer,
',');
3856 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
3857 pm_dump_json_location(buffer, &cast->
closing_loc);
3860 pm_buffer_append_byte(buffer,
',');
3861 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
3863 pm_buffer_append_byte(buffer,
'"');
3864 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
3865 pm_buffer_append_byte(buffer,
'"');
3867 pm_buffer_append_byte(buffer,
'}');
3870 case PM_MATCH_PREDICATE_NODE: {
3871 pm_buffer_append_string(buffer,
"{\"type\":\"MatchPredicateNode\",\"location\":", 40);
3877 pm_buffer_append_byte(buffer,
',');
3878 pm_buffer_append_string(buffer,
"\"value\":", 8);
3882 pm_buffer_append_byte(buffer,
',');
3883 pm_buffer_append_string(buffer,
"\"pattern\":", 10);
3887 pm_buffer_append_byte(buffer,
',');
3888 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
3889 pm_dump_json_location(buffer, &cast->
keyword_loc);
3891 pm_buffer_append_byte(buffer,
'}');
3894 case PM_MATCH_REQUIRED_NODE: {
3895 pm_buffer_append_string(buffer,
"{\"type\":\"MatchRequiredNode\",\"location\":", 39);
3901 pm_buffer_append_byte(buffer,
',');
3902 pm_buffer_append_string(buffer,
"\"value\":", 8);
3906 pm_buffer_append_byte(buffer,
',');
3907 pm_buffer_append_string(buffer,
"\"pattern\":", 10);
3911 pm_buffer_append_byte(buffer,
',');
3912 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
3915 pm_buffer_append_byte(buffer,
'}');
3918 case PM_MATCH_WRITE_NODE: {
3919 pm_buffer_append_string(buffer,
"{\"type\":\"MatchWriteNode\",\"location\":", 36);
3925 pm_buffer_append_byte(buffer,
',');
3926 pm_buffer_append_string(buffer,
"\"call\":", 7);
3927 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
call);
3930 pm_buffer_append_byte(buffer,
',');
3931 pm_buffer_append_string(buffer,
"\"targets\":", 10);
3933 pm_buffer_append_byte(buffer,
'[');
3935 for (
size_t index = 0; index < targets->
size; index++) {
3936 if (index != 0) pm_buffer_append_byte(buffer,
',');
3937 pm_dump_json(buffer, parser, targets->
nodes[index]);
3939 pm_buffer_append_byte(buffer,
']');
3941 pm_buffer_append_byte(buffer,
'}');
3944 case PM_MODULE_NODE: {
3945 pm_buffer_append_string(buffer,
"{\"type\":\"ModuleNode\",\"location\":", 32);
3951 pm_buffer_append_byte(buffer,
',');
3952 pm_buffer_append_string(buffer,
"\"locals\":", 9);
3954 pm_buffer_append_byte(buffer,
'[');
3956 for (
size_t index = 0; index < locals->
size; index++) {
3957 if (index != 0) pm_buffer_append_byte(buffer,
',');
3958 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
3960 pm_buffer_append_byte(buffer,
']');
3963 pm_buffer_append_byte(buffer,
',');
3964 pm_buffer_append_string(buffer,
"\"module_keyword_loc\":", 21);
3968 pm_buffer_append_byte(buffer,
',');
3969 pm_buffer_append_string(buffer,
"\"constant_path\":", 16);
3973 pm_buffer_append_byte(buffer,
',');
3974 pm_buffer_append_string(buffer,
"\"body\":", 7);
3975 if (cast->
body != NULL) {
3976 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
3978 pm_buffer_append_string(buffer,
"null", 4);
3982 pm_buffer_append_byte(buffer,
',');
3983 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
3987 pm_buffer_append_byte(buffer,
',');
3988 pm_buffer_append_string(buffer,
"\"name\":", 7);
3989 pm_dump_json_constant(buffer, parser, cast->
name);
3991 pm_buffer_append_byte(buffer,
'}');
3994 case PM_MULTI_TARGET_NODE: {
3995 pm_buffer_append_string(buffer,
"{\"type\":\"MultiTargetNode\",\"location\":", 37);
4001 pm_buffer_append_byte(buffer,
',');
4002 pm_buffer_append_string(buffer,
"\"lefts\":", 8);
4004 pm_buffer_append_byte(buffer,
'[');
4006 for (
size_t index = 0; index < lefts->
size; index++) {
4007 if (index != 0) pm_buffer_append_byte(buffer,
',');
4008 pm_dump_json(buffer, parser, lefts->
nodes[index]);
4010 pm_buffer_append_byte(buffer,
']');
4013 pm_buffer_append_byte(buffer,
',');
4014 pm_buffer_append_string(buffer,
"\"rest\":", 7);
4015 if (cast->
rest != NULL) {
4016 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
4018 pm_buffer_append_string(buffer,
"null", 4);
4022 pm_buffer_append_byte(buffer,
',');
4023 pm_buffer_append_string(buffer,
"\"rights\":", 9);
4025 pm_buffer_append_byte(buffer,
'[');
4027 for (
size_t index = 0; index < rights->
size; index++) {
4028 if (index != 0) pm_buffer_append_byte(buffer,
',');
4029 pm_dump_json(buffer, parser, rights->
nodes[index]);
4031 pm_buffer_append_byte(buffer,
']');
4034 pm_buffer_append_byte(buffer,
',');
4035 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
4037 pm_dump_json_location(buffer, &cast->
lparen_loc);
4039 pm_buffer_append_string(buffer,
"null", 4);
4043 pm_buffer_append_byte(buffer,
',');
4044 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
4046 pm_dump_json_location(buffer, &cast->
rparen_loc);
4048 pm_buffer_append_string(buffer,
"null", 4);
4051 pm_buffer_append_byte(buffer,
'}');
4054 case PM_MULTI_WRITE_NODE: {
4055 pm_buffer_append_string(buffer,
"{\"type\":\"MultiWriteNode\",\"location\":", 36);
4061 pm_buffer_append_byte(buffer,
',');
4062 pm_buffer_append_string(buffer,
"\"lefts\":", 8);
4064 pm_buffer_append_byte(buffer,
'[');
4066 for (
size_t index = 0; index < lefts->
size; index++) {
4067 if (index != 0) pm_buffer_append_byte(buffer,
',');
4068 pm_dump_json(buffer, parser, lefts->
nodes[index]);
4070 pm_buffer_append_byte(buffer,
']');
4073 pm_buffer_append_byte(buffer,
',');
4074 pm_buffer_append_string(buffer,
"\"rest\":", 7);
4075 if (cast->
rest != NULL) {
4076 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
4078 pm_buffer_append_string(buffer,
"null", 4);
4082 pm_buffer_append_byte(buffer,
',');
4083 pm_buffer_append_string(buffer,
"\"rights\":", 9);
4085 pm_buffer_append_byte(buffer,
'[');
4087 for (
size_t index = 0; index < rights->
size; index++) {
4088 if (index != 0) pm_buffer_append_byte(buffer,
',');
4089 pm_dump_json(buffer, parser, rights->
nodes[index]);
4091 pm_buffer_append_byte(buffer,
']');
4094 pm_buffer_append_byte(buffer,
',');
4095 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
4097 pm_dump_json_location(buffer, &cast->
lparen_loc);
4099 pm_buffer_append_string(buffer,
"null", 4);
4103 pm_buffer_append_byte(buffer,
',');
4104 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
4106 pm_dump_json_location(buffer, &cast->
rparen_loc);
4108 pm_buffer_append_string(buffer,
"null", 4);
4112 pm_buffer_append_byte(buffer,
',');
4113 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4117 pm_buffer_append_byte(buffer,
',');
4118 pm_buffer_append_string(buffer,
"\"value\":", 8);
4121 pm_buffer_append_byte(buffer,
'}');
4124 case PM_NEXT_NODE: {
4125 pm_buffer_append_string(buffer,
"{\"type\":\"NextNode\",\"location\":", 30);
4131 pm_buffer_append_byte(buffer,
',');
4132 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
4136 pm_buffer_append_string(buffer,
"null", 4);
4140 pm_buffer_append_byte(buffer,
',');
4141 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4142 pm_dump_json_location(buffer, &cast->
keyword_loc);
4144 pm_buffer_append_byte(buffer,
'}');
4148 pm_buffer_append_string(buffer,
"{\"type\":\"NilNode\",\"location\":", 29);
4153 pm_buffer_append_byte(buffer,
'}');
4156 case PM_NO_BLOCK_PARAMETER_NODE: {
4157 pm_buffer_append_string(buffer,
"{\"type\":\"NoBlockParameterNode\",\"location\":", 42);
4163 pm_buffer_append_byte(buffer,
',');
4164 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4168 pm_buffer_append_byte(buffer,
',');
4169 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4170 pm_dump_json_location(buffer, &cast->
keyword_loc);
4172 pm_buffer_append_byte(buffer,
'}');
4175 case PM_NO_KEYWORDS_PARAMETER_NODE: {
4176 pm_buffer_append_string(buffer,
"{\"type\":\"NoKeywordsParameterNode\",\"location\":", 45);
4182 pm_buffer_append_byte(buffer,
',');
4183 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4187 pm_buffer_append_byte(buffer,
',');
4188 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4189 pm_dump_json_location(buffer, &cast->
keyword_loc);
4191 pm_buffer_append_byte(buffer,
'}');
4194 case PM_NUMBERED_PARAMETERS_NODE: {
4195 pm_buffer_append_string(buffer,
"{\"type\":\"NumberedParametersNode\",\"location\":", 44);
4201 pm_buffer_append_byte(buffer,
',');
4202 pm_buffer_append_string(buffer,
"\"maximum\":", 10);
4203 pm_buffer_append_format(buffer,
"%" PRIu8, cast->
maximum);
4205 pm_buffer_append_byte(buffer,
'}');
4208 case PM_NUMBERED_REFERENCE_READ_NODE: {
4209 pm_buffer_append_string(buffer,
"{\"type\":\"NumberedReferenceReadNode\",\"location\":", 47);
4215 pm_buffer_append_byte(buffer,
',');
4216 pm_buffer_append_string(buffer,
"\"number\":", 9);
4217 pm_buffer_append_format(buffer,
"%" PRIu32, cast->
number);
4219 pm_buffer_append_byte(buffer,
'}');
4222 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
4223 pm_buffer_append_string(buffer,
"{\"type\":\"OptionalKeywordParameterNode\",\"location\":", 50);
4229 pm_buffer_append_byte(buffer,
',');
4230 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4232 pm_buffer_append_byte(buffer,
'[');
4233 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4234 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4235 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4238 pm_buffer_append_byte(buffer,
']');
4241 pm_buffer_append_byte(buffer,
',');
4242 pm_buffer_append_string(buffer,
"\"name\":", 7);
4243 pm_dump_json_constant(buffer, parser, cast->
name);
4246 pm_buffer_append_byte(buffer,
',');
4247 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4248 pm_dump_json_location(buffer, &cast->
name_loc);
4251 pm_buffer_append_byte(buffer,
',');
4252 pm_buffer_append_string(buffer,
"\"value\":", 8);
4255 pm_buffer_append_byte(buffer,
'}');
4258 case PM_OPTIONAL_PARAMETER_NODE: {
4259 pm_buffer_append_string(buffer,
"{\"type\":\"OptionalParameterNode\",\"location\":", 43);
4265 pm_buffer_append_byte(buffer,
',');
4266 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4268 pm_buffer_append_byte(buffer,
'[');
4269 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4270 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4271 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4274 pm_buffer_append_byte(buffer,
']');
4277 pm_buffer_append_byte(buffer,
',');
4278 pm_buffer_append_string(buffer,
"\"name\":", 7);
4279 pm_dump_json_constant(buffer, parser, cast->
name);
4282 pm_buffer_append_byte(buffer,
',');
4283 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4284 pm_dump_json_location(buffer, &cast->
name_loc);
4287 pm_buffer_append_byte(buffer,
',');
4288 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4292 pm_buffer_append_byte(buffer,
',');
4293 pm_buffer_append_string(buffer,
"\"value\":", 8);
4296 pm_buffer_append_byte(buffer,
'}');
4300 pm_buffer_append_string(buffer,
"{\"type\":\"OrNode\",\"location\":", 28);
4306 pm_buffer_append_byte(buffer,
',');
4307 pm_buffer_append_string(buffer,
"\"left\":", 7);
4308 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
4311 pm_buffer_append_byte(buffer,
',');
4312 pm_buffer_append_string(buffer,
"\"right\":", 8);
4316 pm_buffer_append_byte(buffer,
',');
4317 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4320 pm_buffer_append_byte(buffer,
'}');
4323 case PM_PARAMETERS_NODE: {
4324 pm_buffer_append_string(buffer,
"{\"type\":\"ParametersNode\",\"location\":", 36);
4330 pm_buffer_append_byte(buffer,
',');
4331 pm_buffer_append_string(buffer,
"\"requireds\":", 12);
4333 pm_buffer_append_byte(buffer,
'[');
4335 for (
size_t index = 0; index < requireds->
size; index++) {
4336 if (index != 0) pm_buffer_append_byte(buffer,
',');
4337 pm_dump_json(buffer, parser, requireds->
nodes[index]);
4339 pm_buffer_append_byte(buffer,
']');
4342 pm_buffer_append_byte(buffer,
',');
4343 pm_buffer_append_string(buffer,
"\"optionals\":", 12);
4345 pm_buffer_append_byte(buffer,
'[');
4347 for (
size_t index = 0; index < optionals->
size; index++) {
4348 if (index != 0) pm_buffer_append_byte(buffer,
',');
4349 pm_dump_json(buffer, parser, optionals->
nodes[index]);
4351 pm_buffer_append_byte(buffer,
']');
4354 pm_buffer_append_byte(buffer,
',');
4355 pm_buffer_append_string(buffer,
"\"rest\":", 7);
4356 if (cast->
rest != NULL) {
4357 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
rest);
4359 pm_buffer_append_string(buffer,
"null", 4);
4363 pm_buffer_append_byte(buffer,
',');
4364 pm_buffer_append_string(buffer,
"\"posts\":", 8);
4366 pm_buffer_append_byte(buffer,
'[');
4368 for (
size_t index = 0; index < posts->
size; index++) {
4369 if (index != 0) pm_buffer_append_byte(buffer,
',');
4370 pm_dump_json(buffer, parser, posts->
nodes[index]);
4372 pm_buffer_append_byte(buffer,
']');
4375 pm_buffer_append_byte(buffer,
',');
4376 pm_buffer_append_string(buffer,
"\"keywords\":", 11);
4378 pm_buffer_append_byte(buffer,
'[');
4380 for (
size_t index = 0; index < keywords->
size; index++) {
4381 if (index != 0) pm_buffer_append_byte(buffer,
',');
4382 pm_dump_json(buffer, parser, keywords->
nodes[index]);
4384 pm_buffer_append_byte(buffer,
']');
4387 pm_buffer_append_byte(buffer,
',');
4388 pm_buffer_append_string(buffer,
"\"keyword_rest\":", 15);
4392 pm_buffer_append_string(buffer,
"null", 4);
4396 pm_buffer_append_byte(buffer,
',');
4397 pm_buffer_append_string(buffer,
"\"block\":", 8);
4398 if (cast->
block != NULL) {
4401 pm_buffer_append_string(buffer,
"null", 4);
4404 pm_buffer_append_byte(buffer,
'}');
4407 case PM_PARENTHESES_NODE: {
4408 pm_buffer_append_string(buffer,
"{\"type\":\"ParenthesesNode\",\"location\":", 37);
4414 pm_buffer_append_byte(buffer,
',');
4415 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4417 pm_buffer_append_byte(buffer,
'[');
4418 if (PM_NODE_FLAG_P(cast, PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS)) {
4419 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4420 pm_buffer_append_string(buffer,
"\"MULTIPLE_STATEMENTS\"", 21);
4423 pm_buffer_append_byte(buffer,
']');
4426 pm_buffer_append_byte(buffer,
',');
4427 pm_buffer_append_string(buffer,
"\"body\":", 7);
4428 if (cast->
body != NULL) {
4429 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
4431 pm_buffer_append_string(buffer,
"null", 4);
4435 pm_buffer_append_byte(buffer,
',');
4436 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4437 pm_dump_json_location(buffer, &cast->
opening_loc);
4440 pm_buffer_append_byte(buffer,
',');
4441 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4442 pm_dump_json_location(buffer, &cast->
closing_loc);
4444 pm_buffer_append_byte(buffer,
'}');
4447 case PM_PINNED_EXPRESSION_NODE: {
4448 pm_buffer_append_string(buffer,
"{\"type\":\"PinnedExpressionNode\",\"location\":", 42);
4454 pm_buffer_append_byte(buffer,
',');
4455 pm_buffer_append_string(buffer,
"\"expression\":", 13);
4459 pm_buffer_append_byte(buffer,
',');
4460 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4464 pm_buffer_append_byte(buffer,
',');
4465 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
4466 pm_dump_json_location(buffer, &cast->
lparen_loc);
4469 pm_buffer_append_byte(buffer,
',');
4470 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
4471 pm_dump_json_location(buffer, &cast->
rparen_loc);
4473 pm_buffer_append_byte(buffer,
'}');
4476 case PM_PINNED_VARIABLE_NODE: {
4477 pm_buffer_append_string(buffer,
"{\"type\":\"PinnedVariableNode\",\"location\":", 40);
4483 pm_buffer_append_byte(buffer,
',');
4484 pm_buffer_append_string(buffer,
"\"variable\":", 11);
4488 pm_buffer_append_byte(buffer,
',');
4489 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4492 pm_buffer_append_byte(buffer,
'}');
4495 case PM_POST_EXECUTION_NODE: {
4496 pm_buffer_append_string(buffer,
"{\"type\":\"PostExecutionNode\",\"location\":", 39);
4502 pm_buffer_append_byte(buffer,
',');
4503 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4507 pm_buffer_append_string(buffer,
"null", 4);
4511 pm_buffer_append_byte(buffer,
',');
4512 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4513 pm_dump_json_location(buffer, &cast->
keyword_loc);
4516 pm_buffer_append_byte(buffer,
',');
4517 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4518 pm_dump_json_location(buffer, &cast->
opening_loc);
4521 pm_buffer_append_byte(buffer,
',');
4522 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4523 pm_dump_json_location(buffer, &cast->
closing_loc);
4525 pm_buffer_append_byte(buffer,
'}');
4528 case PM_PRE_EXECUTION_NODE: {
4529 pm_buffer_append_string(buffer,
"{\"type\":\"PreExecutionNode\",\"location\":", 38);
4535 pm_buffer_append_byte(buffer,
',');
4536 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4540 pm_buffer_append_string(buffer,
"null", 4);
4544 pm_buffer_append_byte(buffer,
',');
4545 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4546 pm_dump_json_location(buffer, &cast->
keyword_loc);
4549 pm_buffer_append_byte(buffer,
',');
4550 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4551 pm_dump_json_location(buffer, &cast->
opening_loc);
4554 pm_buffer_append_byte(buffer,
',');
4555 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4556 pm_dump_json_location(buffer, &cast->
closing_loc);
4558 pm_buffer_append_byte(buffer,
'}');
4561 case PM_PROGRAM_NODE: {
4562 pm_buffer_append_string(buffer,
"{\"type\":\"ProgramNode\",\"location\":", 33);
4568 pm_buffer_append_byte(buffer,
',');
4569 pm_buffer_append_string(buffer,
"\"locals\":", 9);
4571 pm_buffer_append_byte(buffer,
'[');
4573 for (
size_t index = 0; index < locals->
size; index++) {
4574 if (index != 0) pm_buffer_append_byte(buffer,
',');
4575 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
4577 pm_buffer_append_byte(buffer,
']');
4580 pm_buffer_append_byte(buffer,
',');
4581 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4584 pm_buffer_append_byte(buffer,
'}');
4587 case PM_RANGE_NODE: {
4588 pm_buffer_append_string(buffer,
"{\"type\":\"RangeNode\",\"location\":", 31);
4594 pm_buffer_append_byte(buffer,
',');
4595 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4597 pm_buffer_append_byte(buffer,
'[');
4598 if (PM_NODE_FLAG_P(cast, PM_RANGE_FLAGS_EXCLUDE_END)) {
4599 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4600 pm_buffer_append_string(buffer,
"\"EXCLUDE_END\"", 13);
4603 pm_buffer_append_byte(buffer,
']');
4606 pm_buffer_append_byte(buffer,
',');
4607 pm_buffer_append_string(buffer,
"\"left\":", 7);
4608 if (cast->
left != NULL) {
4609 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
left);
4611 pm_buffer_append_string(buffer,
"null", 4);
4615 pm_buffer_append_byte(buffer,
',');
4616 pm_buffer_append_string(buffer,
"\"right\":", 8);
4617 if (cast->
right != NULL) {
4620 pm_buffer_append_string(buffer,
"null", 4);
4624 pm_buffer_append_byte(buffer,
',');
4625 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4628 pm_buffer_append_byte(buffer,
'}');
4631 case PM_RATIONAL_NODE: {
4632 pm_buffer_append_string(buffer,
"{\"type\":\"RationalNode\",\"location\":", 34);
4638 pm_buffer_append_byte(buffer,
',');
4639 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4641 pm_buffer_append_byte(buffer,
'[');
4642 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_BINARY)) {
4643 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4644 pm_buffer_append_string(buffer,
"\"BINARY\"", 8);
4647 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_DECIMAL)) {
4648 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4649 pm_buffer_append_string(buffer,
"\"DECIMAL\"", 9);
4652 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_OCTAL)) {
4653 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4654 pm_buffer_append_string(buffer,
"\"OCTAL\"", 7);
4657 if (PM_NODE_FLAG_P(cast, PM_INTEGER_BASE_FLAGS_HEXADECIMAL)) {
4658 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4659 pm_buffer_append_string(buffer,
"\"HEXADECIMAL\"", 13);
4662 pm_buffer_append_byte(buffer,
']');
4665 pm_buffer_append_byte(buffer,
',');
4666 pm_buffer_append_string(buffer,
"\"numerator\":", 12);
4667 pm_integer_string(buffer, &cast->
numerator);
4670 pm_buffer_append_byte(buffer,
',');
4671 pm_buffer_append_string(buffer,
"\"denominator\":", 14);
4674 pm_buffer_append_byte(buffer,
'}');
4677 case PM_REDO_NODE: {
4678 pm_buffer_append_string(buffer,
"{\"type\":\"RedoNode\",\"location\":", 30);
4683 pm_buffer_append_byte(buffer,
'}');
4686 case PM_REGULAR_EXPRESSION_NODE: {
4687 pm_buffer_append_string(buffer,
"{\"type\":\"RegularExpressionNode\",\"location\":", 43);
4693 pm_buffer_append_byte(buffer,
',');
4694 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4696 pm_buffer_append_byte(buffer,
'[');
4697 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE)) {
4698 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4699 pm_buffer_append_string(buffer,
"\"IGNORE_CASE\"", 13);
4702 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EXTENDED)) {
4703 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4704 pm_buffer_append_string(buffer,
"\"EXTENDED\"", 10);
4707 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE)) {
4708 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4709 pm_buffer_append_string(buffer,
"\"MULTI_LINE\"", 12);
4712 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ONCE)) {
4713 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4714 pm_buffer_append_string(buffer,
"\"ONCE\"", 6);
4717 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_EUC_JP)) {
4718 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4719 pm_buffer_append_string(buffer,
"\"EUC_JP\"", 8);
4722 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT)) {
4723 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4724 pm_buffer_append_string(buffer,
"\"ASCII_8BIT\"", 12);
4727 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J)) {
4728 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4729 pm_buffer_append_string(buffer,
"\"WINDOWS_31J\"", 13);
4732 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_UTF_8)) {
4733 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4734 pm_buffer_append_string(buffer,
"\"UTF_8\"", 7);
4737 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING)) {
4738 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4739 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
4742 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING)) {
4743 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4744 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
4747 if (PM_NODE_FLAG_P(cast, PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING)) {
4748 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4749 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
4752 pm_buffer_append_byte(buffer,
']');
4755 pm_buffer_append_byte(buffer,
',');
4756 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
4757 pm_dump_json_location(buffer, &cast->
opening_loc);
4760 pm_buffer_append_byte(buffer,
',');
4761 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
4762 pm_dump_json_location(buffer, &cast->
content_loc);
4765 pm_buffer_append_byte(buffer,
',');
4766 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
4767 pm_dump_json_location(buffer, &cast->
closing_loc);
4770 pm_buffer_append_byte(buffer,
',');
4771 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
4773 pm_buffer_append_byte(buffer,
'"');
4774 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
4775 pm_buffer_append_byte(buffer,
'"');
4777 pm_buffer_append_byte(buffer,
'}');
4780 case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
4781 pm_buffer_append_string(buffer,
"{\"type\":\"RequiredKeywordParameterNode\",\"location\":", 50);
4787 pm_buffer_append_byte(buffer,
',');
4788 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4790 pm_buffer_append_byte(buffer,
'[');
4791 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4792 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4793 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4796 pm_buffer_append_byte(buffer,
']');
4799 pm_buffer_append_byte(buffer,
',');
4800 pm_buffer_append_string(buffer,
"\"name\":", 7);
4801 pm_dump_json_constant(buffer, parser, cast->
name);
4804 pm_buffer_append_byte(buffer,
',');
4805 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4806 pm_dump_json_location(buffer, &cast->
name_loc);
4808 pm_buffer_append_byte(buffer,
'}');
4811 case PM_REQUIRED_PARAMETER_NODE: {
4812 pm_buffer_append_string(buffer,
"{\"type\":\"RequiredParameterNode\",\"location\":", 43);
4818 pm_buffer_append_byte(buffer,
',');
4819 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4821 pm_buffer_append_byte(buffer,
'[');
4822 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4823 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4824 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4827 pm_buffer_append_byte(buffer,
']');
4830 pm_buffer_append_byte(buffer,
',');
4831 pm_buffer_append_string(buffer,
"\"name\":", 7);
4832 pm_dump_json_constant(buffer, parser, cast->
name);
4834 pm_buffer_append_byte(buffer,
'}');
4837 case PM_RESCUE_MODIFIER_NODE: {
4838 pm_buffer_append_string(buffer,
"{\"type\":\"RescueModifierNode\",\"location\":", 40);
4844 pm_buffer_append_byte(buffer,
',');
4845 pm_buffer_append_string(buffer,
"\"expression\":", 13);
4849 pm_buffer_append_byte(buffer,
',');
4850 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4851 pm_dump_json_location(buffer, &cast->
keyword_loc);
4854 pm_buffer_append_byte(buffer,
',');
4855 pm_buffer_append_string(buffer,
"\"rescue_expression\":", 20);
4858 pm_buffer_append_byte(buffer,
'}');
4861 case PM_RESCUE_NODE: {
4862 pm_buffer_append_string(buffer,
"{\"type\":\"RescueNode\",\"location\":", 32);
4868 pm_buffer_append_byte(buffer,
',');
4869 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4870 pm_dump_json_location(buffer, &cast->
keyword_loc);
4873 pm_buffer_append_byte(buffer,
',');
4874 pm_buffer_append_string(buffer,
"\"exceptions\":", 13);
4876 pm_buffer_append_byte(buffer,
'[');
4878 for (
size_t index = 0; index < exceptions->
size; index++) {
4879 if (index != 0) pm_buffer_append_byte(buffer,
',');
4880 pm_dump_json(buffer, parser, exceptions->
nodes[index]);
4882 pm_buffer_append_byte(buffer,
']');
4885 pm_buffer_append_byte(buffer,
',');
4886 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4890 pm_buffer_append_string(buffer,
"null", 4);
4894 pm_buffer_append_byte(buffer,
',');
4895 pm_buffer_append_string(buffer,
"\"reference\":", 12);
4899 pm_buffer_append_string(buffer,
"null", 4);
4903 pm_buffer_append_byte(buffer,
',');
4904 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
4908 pm_buffer_append_string(buffer,
"null", 4);
4912 pm_buffer_append_byte(buffer,
',');
4913 pm_buffer_append_string(buffer,
"\"statements\":", 13);
4917 pm_buffer_append_string(buffer,
"null", 4);
4921 pm_buffer_append_byte(buffer,
',');
4922 pm_buffer_append_string(buffer,
"\"subsequent\":", 13);
4926 pm_buffer_append_string(buffer,
"null", 4);
4929 pm_buffer_append_byte(buffer,
'}');
4932 case PM_REST_PARAMETER_NODE: {
4933 pm_buffer_append_string(buffer,
"{\"type\":\"RestParameterNode\",\"location\":", 39);
4939 pm_buffer_append_byte(buffer,
',');
4940 pm_buffer_append_string(buffer,
"\"flags\":", 8);
4942 pm_buffer_append_byte(buffer,
'[');
4943 if (PM_NODE_FLAG_P(cast, PM_PARAMETER_FLAGS_REPEATED_PARAMETER)) {
4944 if (flags != 0) pm_buffer_append_byte(buffer,
',');
4945 pm_buffer_append_string(buffer,
"\"REPEATED_PARAMETER\"", 20);
4948 pm_buffer_append_byte(buffer,
']');
4951 pm_buffer_append_byte(buffer,
',');
4952 pm_buffer_append_string(buffer,
"\"name\":", 7);
4953 if (cast->
name != PM_CONSTANT_ID_UNSET) {
4954 pm_dump_json_constant(buffer, parser, cast->
name);
4956 pm_buffer_append_string(buffer,
"null", 4);
4960 pm_buffer_append_byte(buffer,
',');
4961 pm_buffer_append_string(buffer,
"\"name_loc\":", 11);
4963 pm_dump_json_location(buffer, &cast->
name_loc);
4965 pm_buffer_append_string(buffer,
"null", 4);
4969 pm_buffer_append_byte(buffer,
',');
4970 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
4973 pm_buffer_append_byte(buffer,
'}');
4976 case PM_RETRY_NODE: {
4977 pm_buffer_append_string(buffer,
"{\"type\":\"RetryNode\",\"location\":", 31);
4982 pm_buffer_append_byte(buffer,
'}');
4985 case PM_RETURN_NODE: {
4986 pm_buffer_append_string(buffer,
"{\"type\":\"ReturnNode\",\"location\":", 32);
4992 pm_buffer_append_byte(buffer,
',');
4993 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
4994 pm_dump_json_location(buffer, &cast->
keyword_loc);
4997 pm_buffer_append_byte(buffer,
',');
4998 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
5002 pm_buffer_append_string(buffer,
"null", 4);
5005 pm_buffer_append_byte(buffer,
'}');
5008 case PM_SELF_NODE: {
5009 pm_buffer_append_string(buffer,
"{\"type\":\"SelfNode\",\"location\":", 30);
5014 pm_buffer_append_byte(buffer,
'}');
5017 case PM_SHAREABLE_CONSTANT_NODE: {
5018 pm_buffer_append_string(buffer,
"{\"type\":\"ShareableConstantNode\",\"location\":", 43);
5024 pm_buffer_append_byte(buffer,
',');
5025 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5027 pm_buffer_append_byte(buffer,
'[');
5028 if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL)) {
5029 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5030 pm_buffer_append_string(buffer,
"\"LITERAL\"", 9);
5033 if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING)) {
5034 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5035 pm_buffer_append_string(buffer,
"\"EXPERIMENTAL_EVERYTHING\"", 25);
5038 if (PM_NODE_FLAG_P(cast, PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY)) {
5039 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5040 pm_buffer_append_string(buffer,
"\"EXPERIMENTAL_COPY\"", 19);
5043 pm_buffer_append_byte(buffer,
']');
5046 pm_buffer_append_byte(buffer,
',');
5047 pm_buffer_append_string(buffer,
"\"write\":", 8);
5050 pm_buffer_append_byte(buffer,
'}');
5053 case PM_SINGLETON_CLASS_NODE: {
5054 pm_buffer_append_string(buffer,
"{\"type\":\"SingletonClassNode\",\"location\":", 40);
5060 pm_buffer_append_byte(buffer,
',');
5061 pm_buffer_append_string(buffer,
"\"locals\":", 9);
5063 pm_buffer_append_byte(buffer,
'[');
5065 for (
size_t index = 0; index < locals->
size; index++) {
5066 if (index != 0) pm_buffer_append_byte(buffer,
',');
5067 pm_dump_json_constant(buffer, parser, locals->
ids[index]);
5069 pm_buffer_append_byte(buffer,
']');
5072 pm_buffer_append_byte(buffer,
',');
5073 pm_buffer_append_string(buffer,
"\"class_keyword_loc\":", 20);
5077 pm_buffer_append_byte(buffer,
',');
5078 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
5082 pm_buffer_append_byte(buffer,
',');
5083 pm_buffer_append_string(buffer,
"\"expression\":", 13);
5087 pm_buffer_append_byte(buffer,
',');
5088 pm_buffer_append_string(buffer,
"\"body\":", 7);
5089 if (cast->
body != NULL) {
5090 pm_dump_json(buffer, parser, (
const pm_node_t *) cast->
body);
5092 pm_buffer_append_string(buffer,
"null", 4);
5096 pm_buffer_append_byte(buffer,
',');
5097 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5100 pm_buffer_append_byte(buffer,
'}');
5103 case PM_SOURCE_ENCODING_NODE: {
5104 pm_buffer_append_string(buffer,
"{\"type\":\"SourceEncodingNode\",\"location\":", 40);
5109 pm_buffer_append_byte(buffer,
'}');
5112 case PM_SOURCE_FILE_NODE: {
5113 pm_buffer_append_string(buffer,
"{\"type\":\"SourceFileNode\",\"location\":", 36);
5119 pm_buffer_append_byte(buffer,
',');
5120 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5122 pm_buffer_append_byte(buffer,
'[');
5123 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
5124 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5125 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5128 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_BINARY_ENCODING)) {
5129 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5130 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5133 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FROZEN)) {
5134 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5135 pm_buffer_append_string(buffer,
"\"FROZEN\"", 8);
5138 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_MUTABLE)) {
5139 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5140 pm_buffer_append_string(buffer,
"\"MUTABLE\"", 9);
5143 pm_buffer_append_byte(buffer,
']');
5146 pm_buffer_append_byte(buffer,
',');
5147 pm_buffer_append_string(buffer,
"\"filepath\":", 11);
5149 pm_buffer_append_byte(buffer,
'"');
5150 pm_buffer_append_source(buffer, pm_string_source(filepath), pm_string_length(filepath), PM_BUFFER_ESCAPING_JSON);
5151 pm_buffer_append_byte(buffer,
'"');
5153 pm_buffer_append_byte(buffer,
'}');
5156 case PM_SOURCE_LINE_NODE: {
5157 pm_buffer_append_string(buffer,
"{\"type\":\"SourceLineNode\",\"location\":", 36);
5162 pm_buffer_append_byte(buffer,
'}');
5165 case PM_SPLAT_NODE: {
5166 pm_buffer_append_string(buffer,
"{\"type\":\"SplatNode\",\"location\":", 31);
5172 pm_buffer_append_byte(buffer,
',');
5173 pm_buffer_append_string(buffer,
"\"operator_loc\":", 15);
5177 pm_buffer_append_byte(buffer,
',');
5178 pm_buffer_append_string(buffer,
"\"expression\":", 13);
5182 pm_buffer_append_string(buffer,
"null", 4);
5185 pm_buffer_append_byte(buffer,
'}');
5188 case PM_STATEMENTS_NODE: {
5189 pm_buffer_append_string(buffer,
"{\"type\":\"StatementsNode\",\"location\":", 36);
5195 pm_buffer_append_byte(buffer,
',');
5196 pm_buffer_append_string(buffer,
"\"body\":", 7);
5198 pm_buffer_append_byte(buffer,
'[');
5200 for (
size_t index = 0; index < body->
size; index++) {
5201 if (index != 0) pm_buffer_append_byte(buffer,
',');
5202 pm_dump_json(buffer, parser, body->
nodes[index]);
5204 pm_buffer_append_byte(buffer,
']');
5206 pm_buffer_append_byte(buffer,
'}');
5209 case PM_STRING_NODE: {
5210 pm_buffer_append_string(buffer,
"{\"type\":\"StringNode\",\"location\":", 32);
5216 pm_buffer_append_byte(buffer,
',');
5217 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5219 pm_buffer_append_byte(buffer,
'[');
5220 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_UTF8_ENCODING)) {
5221 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5222 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5225 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FORCED_BINARY_ENCODING)) {
5226 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5227 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5230 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_FROZEN)) {
5231 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5232 pm_buffer_append_string(buffer,
"\"FROZEN\"", 8);
5235 if (PM_NODE_FLAG_P(cast, PM_STRING_FLAGS_MUTABLE)) {
5236 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5237 pm_buffer_append_string(buffer,
"\"MUTABLE\"", 9);
5240 pm_buffer_append_byte(buffer,
']');
5243 pm_buffer_append_byte(buffer,
',');
5244 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
5246 pm_dump_json_location(buffer, &cast->
opening_loc);
5248 pm_buffer_append_string(buffer,
"null", 4);
5252 pm_buffer_append_byte(buffer,
',');
5253 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
5254 pm_dump_json_location(buffer, &cast->
content_loc);
5257 pm_buffer_append_byte(buffer,
',');
5258 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
5260 pm_dump_json_location(buffer, &cast->
closing_loc);
5262 pm_buffer_append_string(buffer,
"null", 4);
5266 pm_buffer_append_byte(buffer,
',');
5267 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
5269 pm_buffer_append_byte(buffer,
'"');
5270 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
5271 pm_buffer_append_byte(buffer,
'"');
5273 pm_buffer_append_byte(buffer,
'}');
5276 case PM_SUPER_NODE: {
5277 pm_buffer_append_string(buffer,
"{\"type\":\"SuperNode\",\"location\":", 31);
5283 pm_buffer_append_byte(buffer,
',');
5284 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
5285 pm_dump_json_location(buffer, &cast->
keyword_loc);
5288 pm_buffer_append_byte(buffer,
',');
5289 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
5291 pm_dump_json_location(buffer, &cast->
lparen_loc);
5293 pm_buffer_append_string(buffer,
"null", 4);
5297 pm_buffer_append_byte(buffer,
',');
5298 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
5302 pm_buffer_append_string(buffer,
"null", 4);
5306 pm_buffer_append_byte(buffer,
',');
5307 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
5309 pm_dump_json_location(buffer, &cast->
rparen_loc);
5311 pm_buffer_append_string(buffer,
"null", 4);
5315 pm_buffer_append_byte(buffer,
',');
5316 pm_buffer_append_string(buffer,
"\"block\":", 8);
5317 if (cast->
block != NULL) {
5320 pm_buffer_append_string(buffer,
"null", 4);
5323 pm_buffer_append_byte(buffer,
'}');
5326 case PM_SYMBOL_NODE: {
5327 pm_buffer_append_string(buffer,
"{\"type\":\"SymbolNode\",\"location\":", 32);
5333 pm_buffer_append_byte(buffer,
',');
5334 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5336 pm_buffer_append_byte(buffer,
'[');
5337 if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING)) {
5338 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5339 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5342 if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING)) {
5343 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5344 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5347 if (PM_NODE_FLAG_P(cast, PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING)) {
5348 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5349 pm_buffer_append_string(buffer,
"\"FORCED_US_ASCII_ENCODING\"", 26);
5352 pm_buffer_append_byte(buffer,
']');
5355 pm_buffer_append_byte(buffer,
',');
5356 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
5358 pm_dump_json_location(buffer, &cast->
opening_loc);
5360 pm_buffer_append_string(buffer,
"null", 4);
5364 pm_buffer_append_byte(buffer,
',');
5365 pm_buffer_append_string(buffer,
"\"value_loc\":", 12);
5367 pm_dump_json_location(buffer, &cast->
value_loc);
5369 pm_buffer_append_string(buffer,
"null", 4);
5373 pm_buffer_append_byte(buffer,
',');
5374 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
5376 pm_dump_json_location(buffer, &cast->
closing_loc);
5378 pm_buffer_append_string(buffer,
"null", 4);
5382 pm_buffer_append_byte(buffer,
',');
5383 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
5385 pm_buffer_append_byte(buffer,
'"');
5386 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
5387 pm_buffer_append_byte(buffer,
'"');
5389 pm_buffer_append_byte(buffer,
'}');
5392 case PM_TRUE_NODE: {
5393 pm_buffer_append_string(buffer,
"{\"type\":\"TrueNode\",\"location\":", 30);
5398 pm_buffer_append_byte(buffer,
'}');
5401 case PM_UNDEF_NODE: {
5402 pm_buffer_append_string(buffer,
"{\"type\":\"UndefNode\",\"location\":", 31);
5408 pm_buffer_append_byte(buffer,
',');
5409 pm_buffer_append_string(buffer,
"\"names\":", 8);
5411 pm_buffer_append_byte(buffer,
'[');
5413 for (
size_t index = 0; index < names->
size; index++) {
5414 if (index != 0) pm_buffer_append_byte(buffer,
',');
5415 pm_dump_json(buffer, parser, names->
nodes[index]);
5417 pm_buffer_append_byte(buffer,
']');
5420 pm_buffer_append_byte(buffer,
',');
5421 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
5422 pm_dump_json_location(buffer, &cast->
keyword_loc);
5424 pm_buffer_append_byte(buffer,
'}');
5427 case PM_UNLESS_NODE: {
5428 pm_buffer_append_string(buffer,
"{\"type\":\"UnlessNode\",\"location\":", 32);
5434 pm_buffer_append_byte(buffer,
',');
5435 pm_buffer_append_string(buffer,
"\"unless_keyword_loc\":", 21);
5439 pm_buffer_append_byte(buffer,
',');
5440 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
5444 pm_buffer_append_byte(buffer,
',');
5445 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
5449 pm_buffer_append_string(buffer,
"null", 4);
5453 pm_buffer_append_byte(buffer,
',');
5454 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5458 pm_buffer_append_string(buffer,
"null", 4);
5462 pm_buffer_append_byte(buffer,
',');
5463 pm_buffer_append_string(buffer,
"\"else_clause\":", 14);
5467 pm_buffer_append_string(buffer,
"null", 4);
5471 pm_buffer_append_byte(buffer,
',');
5472 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5476 pm_buffer_append_string(buffer,
"null", 4);
5479 pm_buffer_append_byte(buffer,
'}');
5482 case PM_UNTIL_NODE: {
5483 pm_buffer_append_string(buffer,
"{\"type\":\"UntilNode\",\"location\":", 31);
5489 pm_buffer_append_byte(buffer,
',');
5490 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5492 pm_buffer_append_byte(buffer,
'[');
5493 if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
5494 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5495 pm_buffer_append_string(buffer,
"\"BEGIN_MODIFIER\"", 16);
5498 pm_buffer_append_byte(buffer,
']');
5501 pm_buffer_append_byte(buffer,
',');
5502 pm_buffer_append_string(buffer,
"\"until_keyword_loc\":", 20);
5506 pm_buffer_append_byte(buffer,
',');
5507 pm_buffer_append_string(buffer,
"\"do_keyword_loc\":", 17);
5511 pm_buffer_append_string(buffer,
"null", 4);
5515 pm_buffer_append_byte(buffer,
',');
5516 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5520 pm_buffer_append_string(buffer,
"null", 4);
5524 pm_buffer_append_byte(buffer,
',');
5525 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
5529 pm_buffer_append_byte(buffer,
',');
5530 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5534 pm_buffer_append_string(buffer,
"null", 4);
5537 pm_buffer_append_byte(buffer,
'}');
5540 case PM_WHEN_NODE: {
5541 pm_buffer_append_string(buffer,
"{\"type\":\"WhenNode\",\"location\":", 30);
5547 pm_buffer_append_byte(buffer,
',');
5548 pm_buffer_append_string(buffer,
"\"when_keyword_loc\":", 19);
5552 pm_buffer_append_byte(buffer,
',');
5553 pm_buffer_append_string(buffer,
"\"conditions\":", 13);
5555 pm_buffer_append_byte(buffer,
'[');
5557 for (
size_t index = 0; index < conditions->
size; index++) {
5558 if (index != 0) pm_buffer_append_byte(buffer,
',');
5559 pm_dump_json(buffer, parser, conditions->
nodes[index]);
5561 pm_buffer_append_byte(buffer,
']');
5564 pm_buffer_append_byte(buffer,
',');
5565 pm_buffer_append_string(buffer,
"\"then_keyword_loc\":", 19);
5569 pm_buffer_append_string(buffer,
"null", 4);
5573 pm_buffer_append_byte(buffer,
',');
5574 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5578 pm_buffer_append_string(buffer,
"null", 4);
5581 pm_buffer_append_byte(buffer,
'}');
5584 case PM_WHILE_NODE: {
5585 pm_buffer_append_string(buffer,
"{\"type\":\"WhileNode\",\"location\":", 31);
5591 pm_buffer_append_byte(buffer,
',');
5592 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5594 pm_buffer_append_byte(buffer,
'[');
5595 if (PM_NODE_FLAG_P(cast, PM_LOOP_FLAGS_BEGIN_MODIFIER)) {
5596 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5597 pm_buffer_append_string(buffer,
"\"BEGIN_MODIFIER\"", 16);
5600 pm_buffer_append_byte(buffer,
']');
5603 pm_buffer_append_byte(buffer,
',');
5604 pm_buffer_append_string(buffer,
"\"while_keyword_loc\":", 20);
5608 pm_buffer_append_byte(buffer,
',');
5609 pm_buffer_append_string(buffer,
"\"do_keyword_loc\":", 17);
5613 pm_buffer_append_string(buffer,
"null", 4);
5617 pm_buffer_append_byte(buffer,
',');
5618 pm_buffer_append_string(buffer,
"\"end_keyword_loc\":", 18);
5622 pm_buffer_append_string(buffer,
"null", 4);
5626 pm_buffer_append_byte(buffer,
',');
5627 pm_buffer_append_string(buffer,
"\"predicate\":", 12);
5631 pm_buffer_append_byte(buffer,
',');
5632 pm_buffer_append_string(buffer,
"\"statements\":", 13);
5636 pm_buffer_append_string(buffer,
"null", 4);
5639 pm_buffer_append_byte(buffer,
'}');
5642 case PM_X_STRING_NODE: {
5643 pm_buffer_append_string(buffer,
"{\"type\":\"XStringNode\",\"location\":", 33);
5649 pm_buffer_append_byte(buffer,
',');
5650 pm_buffer_append_string(buffer,
"\"flags\":", 8);
5652 pm_buffer_append_byte(buffer,
'[');
5653 if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING)) {
5654 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5655 pm_buffer_append_string(buffer,
"\"FORCED_UTF8_ENCODING\"", 22);
5658 if (PM_NODE_FLAG_P(cast, PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING)) {
5659 if (flags != 0) pm_buffer_append_byte(buffer,
',');
5660 pm_buffer_append_string(buffer,
"\"FORCED_BINARY_ENCODING\"", 24);
5663 pm_buffer_append_byte(buffer,
']');
5666 pm_buffer_append_byte(buffer,
',');
5667 pm_buffer_append_string(buffer,
"\"opening_loc\":", 14);
5668 pm_dump_json_location(buffer, &cast->
opening_loc);
5671 pm_buffer_append_byte(buffer,
',');
5672 pm_buffer_append_string(buffer,
"\"content_loc\":", 14);
5673 pm_dump_json_location(buffer, &cast->
content_loc);
5676 pm_buffer_append_byte(buffer,
',');
5677 pm_buffer_append_string(buffer,
"\"closing_loc\":", 14);
5678 pm_dump_json_location(buffer, &cast->
closing_loc);
5681 pm_buffer_append_byte(buffer,
',');
5682 pm_buffer_append_string(buffer,
"\"unescaped\":", 12);
5684 pm_buffer_append_byte(buffer,
'"');
5685 pm_buffer_append_source(buffer, pm_string_source(unescaped), pm_string_length(unescaped), PM_BUFFER_ESCAPING_JSON);
5686 pm_buffer_append_byte(buffer,
'"');
5688 pm_buffer_append_byte(buffer,
'}');
5691 case PM_YIELD_NODE: {
5692 pm_buffer_append_string(buffer,
"{\"type\":\"YieldNode\",\"location\":", 31);
5698 pm_buffer_append_byte(buffer,
',');
5699 pm_buffer_append_string(buffer,
"\"keyword_loc\":", 14);
5700 pm_dump_json_location(buffer, &cast->
keyword_loc);
5703 pm_buffer_append_byte(buffer,
',');
5704 pm_buffer_append_string(buffer,
"\"lparen_loc\":", 13);
5706 pm_dump_json_location(buffer, &cast->
lparen_loc);
5708 pm_buffer_append_string(buffer,
"null", 4);
5712 pm_buffer_append_byte(buffer,
',');
5713 pm_buffer_append_string(buffer,
"\"arguments\":", 12);
5717 pm_buffer_append_string(buffer,
"null", 4);
5721 pm_buffer_append_byte(buffer,
',');
5722 pm_buffer_append_string(buffer,
"\"rparen_loc\":", 13);
5724 pm_dump_json_location(buffer, &cast->
rparen_loc);
5726 pm_buffer_append_string(buffer,
"null", 4);
5729 pm_buffer_append_byte(buffer,
'}');
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
PM_NODE_ALIGNAS struct pm_node * new_name
AliasGlobalVariableNode::new_name.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * old_name
AliasGlobalVariableNode::old_name.
PM_NODE_ALIGNAS struct pm_node * old_name
AliasMethodNode::old_name.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * new_name
AliasMethodNode::new_name.
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * left
AlternationPatternNode::left.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * right
AlternationPatternNode::right.
PM_NODE_ALIGNAS struct pm_node * left
AndNode::left.
PM_NODE_ALIGNAS struct pm_node * right
AndNode::right.
pm_location_t operator_loc
AndNode::operator_loc.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
struct pm_node_list arguments
ArgumentsNode::arguments.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
ArrayNode::closing_loc.
struct pm_node_list elements
ArrayNode::elements.
pm_location_t opening_loc
ArrayNode::opening_loc.
struct pm_node_list requireds
ArrayPatternNode::requireds.
PM_NODE_ALIGNAS struct pm_node * rest
ArrayPatternNode::rest.
PM_NODE_ALIGNAS struct pm_node * constant
ArrayPatternNode::constant.
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
struct pm_node_list posts
ArrayPatternNode::posts.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
AssocNode::value.
PM_NODE_ALIGNAS struct pm_node * key
AssocNode::key.
pm_location_t operator_loc
AssocNode::operator_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
AssocSplatNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
AssocSplatNode::value.
pm_constant_id_t name
BackReferenceReadNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
BeginNode::else_clause.
PM_NODE_ALIGNAS struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
PM_NODE_ALIGNAS struct pm_statements_node * statements
BeginNode::statements.
PM_NODE_ALIGNAS struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
pm_node_t base
The embedded base node.
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * expression
BlockArgumentNode::expression.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
BlockLocalVariableNode::name.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
BlockNode::closing_loc.
PM_NODE_ALIGNAS struct pm_node * parameters
BlockNode::parameters.
pm_location_t opening_loc
BlockNode::opening_loc.
pm_constant_id_list_t locals
BlockNode::locals.
PM_NODE_ALIGNAS struct pm_node * body
BlockNode::body.
pm_location_t operator_loc
BlockParameterNode::operator_loc.
pm_location_t name_loc
BlockParameterNode::name_loc.
pm_constant_id_t name
BlockParameterNode::name.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
struct pm_node_list locals
BlockParametersNode::locals.
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
BlockParametersNode::parameters.
pm_location_t closing_loc
BlockParametersNode::closing_loc.
pm_location_t opening_loc
BlockParametersNode::opening_loc.
pm_location_t keyword_loc
BreakNode::keyword_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
BreakNode::arguments.
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
CallAndWriteNode::receiver.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
CallAndWriteNode::value.
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
pm_location_t message_loc
CallAndWriteNode::message_loc.
pm_constant_id_t read_name
CallAndWriteNode::read_name.
pm_constant_id_t write_name
CallAndWriteNode::write_name.
pm_location_t opening_loc
CallNode::opening_loc.
pm_location_t closing_loc
CallNode::closing_loc.
pm_constant_id_t name
CallNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
CallNode::arguments.
pm_location_t equal_loc
CallNode::equal_loc.
pm_location_t call_operator_loc
CallNode::call_operator_loc.
pm_location_t message_loc
CallNode::message_loc.
PM_NODE_ALIGNAS struct pm_node * block
CallNode::block.
PM_NODE_ALIGNAS struct pm_node * receiver
CallNode::receiver.
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
CallOperatorWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_node * value
CallOperatorWriteNode::value.
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
CallOrWriteNode::receiver.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
CallOrWriteNode::value.
pm_constant_id_t write_name
CallOrWriteNode::write_name.
pm_constant_id_t read_name
CallOrWriteNode::read_name.
pm_location_t message_loc
CallOrWriteNode::message_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
CallTargetNode::name.
PM_NODE_ALIGNAS struct pm_node * receiver
CallTargetNode::receiver.
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
pm_location_t message_loc
CallTargetNode::message_loc.
pm_location_t operator_loc
CapturePatternNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
CapturePatternNode::value.
PM_NODE_ALIGNAS struct pm_local_variable_target_node * target
CapturePatternNode::target.
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
struct pm_node_list conditions
CaseMatchNode::conditions.
pm_node_t base
The embedded base node.
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
CaseMatchNode::predicate.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
CaseMatchNode::else_clause.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
CaseNode::else_clause.
struct pm_node_list conditions
CaseNode::conditions.
PM_NODE_ALIGNAS struct pm_node * predicate
CaseNode::predicate.
pm_node_t base
The embedded base node.
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
pm_constant_id_list_t locals
ClassNode::locals.
PM_NODE_ALIGNAS struct pm_node * superclass
ClassNode::superclass.
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
pm_constant_id_t name
ClassNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * constant_path
ClassNode::constant_path.
PM_NODE_ALIGNAS struct pm_node * body
ClassNode::body.
ClassVariableAndWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableAndWriteNode::value.
pm_constant_id_t name
ClassVariableAndWriteNode::name.
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
pm_node_t base
The embedded base node.
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
ClassVariableOperatorWriteNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOperatorWriteNode::value.
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
ClassVariableOrWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOrWriteNode::value.
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableOrWriteNode::name.
pm_node_t base
The embedded base node.
pm_constant_id_t name
ClassVariableReadNode::name.
pm_node_t base
The embedded base node.
pm_constant_id_t name
ClassVariableTargetNode::name.
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableWriteNode::value.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableWriteNode::name.
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantAndWriteNode::value.
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
pm_constant_id_t name
ConstantAndWriteNode::name.
pm_node_t base
The embedded base node.
size_t size
The number of constant ids in the list.
pm_constant_id_t * ids
The constant ids in the list.
ConstantOperatorWriteNode.
pm_constant_id_t name
ConstantOperatorWriteNode::name.
pm_location_t name_loc
ConstantOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ConstantOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ConstantOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantOperatorWriteNode::value.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantOrWriteNode::value.
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
pm_constant_id_t name
ConstantOrWriteNode::name.
pm_node_t base
The embedded base node.
ConstantPathAndWriteNode.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathAndWriteNode::value.
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathNode::parent.
pm_location_t name_loc
ConstantPathNode::name_loc.
pm_constant_id_t name
ConstantPathNode::name.
ConstantPathOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
pm_node_t base
The embedded base node.
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOperatorWriteNode::value.
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOrWriteNode::value.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
pm_node_t base
The embedded base node.
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
pm_constant_id_t name
ConstantPathTargetNode::name.
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathTargetNode::parent.
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathWriteNode::value.
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathWriteNode::target.
pm_node_t base
The embedded base node.
pm_constant_id_t name
ConstantReadNode::name.
pm_node_t base
The embedded base node.
pm_constant_id_t name
ConstantTargetNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantWriteNode::value.
pm_constant_id_t name
ConstantWriteNode::name.
pm_location_t name_loc
ConstantWriteNode::name_loc.
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
pm_constant_id_t name
DefNode::name.
pm_location_t name_loc
DefNode::name_loc.
pm_location_t rparen_loc
DefNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
DefNode::parameters.
pm_location_t equal_loc
DefNode::equal_loc.
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t lparen_loc
DefNode::lparen_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
DefNode::receiver.
PM_NODE_ALIGNAS struct pm_node * body
DefNode::body.
pm_location_t operator_loc
DefNode::operator_loc.
pm_constant_id_list_t locals
DefNode::locals.
PM_NODE_ALIGNAS struct pm_node * value
DefinedNode::value.
pm_location_t lparen_loc
DefinedNode::lparen_loc.
pm_node_t base
The embedded base node.
pm_location_t rparen_loc
DefinedNode::rparen_loc.
pm_location_t keyword_loc
DefinedNode::keyword_loc.
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ElseNode::statements.
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * variable
EmbeddedVariableNode::variable.
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
EnsureNode::statements.
pm_node_t base
The embedded base node.
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * unexpected
ErrorRecoveryNode::unexpected.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_splat_node * left
FindPatternNode::left.
PM_NODE_ALIGNAS struct pm_splat_node * right
FindPatternNode::right.
pm_location_t opening_loc
FindPatternNode::opening_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * constant
FindPatternNode::constant.
struct pm_node_list requireds
FindPatternNode::requireds.
pm_location_t closing_loc
FindPatternNode::closing_loc.
PM_NODE_ALIGNAS struct pm_node * left
FlipFlopNode::left.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
FlipFlopNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * right
FlipFlopNode::right.
double value
FloatNode::value.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * index
ForNode::index.
PM_NODE_ALIGNAS struct pm_node * collection
ForNode::collection.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ForNode::statements.
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_block_node * block
ForwardingSuperNode::block.
pm_location_t keyword_loc
ForwardingSuperNode::keyword_loc.
GlobalVariableAndWriteNode.
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableAndWriteNode::value.
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
GlobalVariableOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOperatorWriteNode::value.
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
pm_node_t base
The embedded base node.
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
GlobalVariableOrWriteNode.
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOrWriteNode::value.
pm_node_t base
The embedded base node.
pm_constant_id_t name
GlobalVariableReadNode::name.
GlobalVariableTargetNode.
pm_constant_id_t name
GlobalVariableTargetNode::name.
pm_node_t base
The embedded base node.
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
pm_constant_id_t name
GlobalVariableWriteNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableWriteNode::value.
struct pm_node_list elements
HashNode::elements.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
HashNode::closing_loc.
pm_location_t opening_loc
HashNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * constant
HashPatternNode::constant.
struct pm_node_list elements
HashPatternNode::elements.
pm_location_t opening_loc
HashPatternNode::opening_loc.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
HashPatternNode::closing_loc.
PM_NODE_ALIGNAS struct pm_node * rest
HashPatternNode::rest.
PM_NODE_ALIGNAS struct pm_node * predicate
IfNode::predicate.
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
IfNode::statements.
pm_node_t base
The embedded base node.
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * subsequent
IfNode::subsequent.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * numeric
ImaginaryNode::numeric.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ImplicitNode::value.
pm_node_t base
The embedded base node.
pm_location_t in_keyword_loc
InNode::in_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * pattern
InNode::pattern.
PM_NODE_ALIGNAS struct pm_statements_node * statements
InNode::statements.
pm_location_t then_keyword_loc
InNode::then_keyword_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexAndWriteNode::block.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexAndWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_node * value
IndexAndWriteNode::value.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexOperatorWriteNode::receiver.
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
IndexOperatorWriteNode::value.
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
PM_NODE_ALIGNAS struct pm_node * value
IndexOrWriteNode::value.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexOrWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexOrWriteNode::block.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexTargetNode::arguments.
pm_location_t closing_loc
IndexTargetNode::closing_loc.
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexTargetNode::block.
pm_location_t opening_loc
IndexTargetNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexTargetNode::receiver.
InstanceVariableAndWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableAndWriteNode::value.
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
InstanceVariableOperatorWriteNode.
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOperatorWriteNode::value.
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
pm_node_t base
The embedded base node.
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
InstanceVariableOrWriteNode.
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
pm_node_t base
The embedded base node.
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOrWriteNode::value.
InstanceVariableReadNode.
pm_constant_id_t name
InstanceVariableReadNode::name.
pm_node_t base
The embedded base node.
InstanceVariableTargetNode.
pm_constant_id_t name
InstanceVariableTargetNode::name.
pm_node_t base
The embedded base node.
InstanceVariableWriteNode.
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableWriteNode::value.
pm_constant_id_t name
InstanceVariableWriteNode::name.
pm_node_t base
The embedded base node.
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
pm_integer_t value
IntegerNode::value.
pm_node_t base
The embedded base node.
InterpolatedMatchLastLineNode.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
InterpolatedRegularExpressionNode.
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
struct pm_node_list parts
InterpolatedStringNode::parts.
struct pm_node_list parts
InterpolatedSymbolNode::parts.
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
pm_node_t base
The embedded base node.
struct pm_node_list parts
InterpolatedXStringNode::parts.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
struct pm_node_list elements
KeywordHashNode::elements.
KeywordRestParameterNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
KeywordRestParameterNode::name.
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
pm_location_t closing_loc
LambdaNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
LambdaNode::opening_loc.
pm_location_t operator_loc
LambdaNode::operator_loc.
pm_constant_id_list_t locals
LambdaNode::locals.
PM_NODE_ALIGNAS struct pm_node * body
LambdaNode::body.
PM_NODE_ALIGNAS struct pm_node * parameters
LambdaNode::parameters.
LocalVariableAndWriteNode.
pm_constant_id_t name
LocalVariableAndWriteNode::name.
pm_node_t base
The embedded base node.
uint32_t depth
LocalVariableAndWriteNode::depth.
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableAndWriteNode::value.
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
LocalVariableOperatorWriteNode.
uint32_t depth
LocalVariableOperatorWriteNode::depth.
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
pm_node_t base
The embedded base node.
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOperatorWriteNode::value.
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
LocalVariableOrWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOrWriteNode::value.
uint32_t depth
LocalVariableOrWriteNode::depth.
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
LocalVariableOrWriteNode::name.
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
uint32_t depth
LocalVariableReadNode::depth.
pm_constant_id_t name
LocalVariableReadNode::name.
pm_node_t base
The embedded base node.
uint32_t depth
LocalVariableTargetNode::depth.
pm_constant_id_t name
LocalVariableTargetNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableWriteNode::value.
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
pm_node_t base
The embedded base node.
uint32_t depth
LocalVariableWriteNode::depth.
pm_constant_id_t name
LocalVariableWriteNode::name.
This struct represents a slice in the source code, defined by an offset and a length.
uint32_t start
The offset of the location from the start of the source.
uint32_t length
The length of the location.
pm_location_t content_loc
MatchLastLineNode::content_loc.
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
pm_string_t unescaped
MatchLastLineNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
MatchPredicateNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * pattern
MatchPredicateNode::pattern.
PM_NODE_ALIGNAS struct pm_node * value
MatchPredicateNode::value.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * pattern
MatchRequiredNode::pattern.
PM_NODE_ALIGNAS struct pm_node * value
MatchRequiredNode::value.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_call_node * call
MatchWriteNode::call.
struct pm_node_list targets
MatchWriteNode::targets.
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * constant_path
ModuleNode::constant_path.
PM_NODE_ALIGNAS struct pm_node * body
ModuleNode::body.
pm_constant_id_list_t locals
ModuleNode::locals.
pm_node_t base
The embedded base node.
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
pm_constant_id_t name
ModuleNode::name.
PM_NODE_ALIGNAS struct pm_node * rest
MultiTargetNode::rest.
pm_node_t base
The embedded base node.
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
struct pm_node_list lefts
MultiTargetNode::lefts.
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
struct pm_node_list rights
MultiTargetNode::rights.
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_node * rest
MultiWriteNode::rest.
struct pm_node_list rights
MultiWriteNode::rights.
pm_location_t operator_loc
MultiWriteNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
MultiWriteNode::value.
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
struct pm_node_list lefts
MultiWriteNode::lefts.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
NextNode::arguments.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
NextNode::keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
NoBlockParameterNode::keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
NoBlockParameterNode::operator_loc.
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
pm_node_t base
The embedded base node.
A list of nodes in the source, most often used for lists of children.
size_t size
The number of nodes in the list.
struct pm_node ** nodes
The nodes in the list.
This is the base structure that represents a node in the syntax tree.
pm_location_t location
This is the location of the node in the source.
pm_node_t base
The embedded base node.
uint8_t maximum
NumberedParametersNode::maximum.
NumberedReferenceReadNode.
pm_node_t base
The embedded base node.
uint32_t number
NumberedReferenceReadNode::number.
OptionalKeywordParameterNode.
pm_node_t base
The embedded base node.
pm_constant_id_t name
OptionalKeywordParameterNode::name.
PM_NODE_ALIGNAS struct pm_node * value
OptionalKeywordParameterNode::value.
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
pm_location_t name_loc
OptionalParameterNode::name_loc.
pm_constant_id_t name
OptionalParameterNode::name.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * value
OptionalParameterNode::value.
PM_NODE_ALIGNAS struct pm_node * right
OrNode::right.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * left
OrNode::left.
pm_location_t operator_loc
OrNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * block
ParametersNode::block.
struct pm_node_list requireds
ParametersNode::requireds.
struct pm_node_list optionals
ParametersNode::optionals.
struct pm_node_list posts
ParametersNode::posts.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * rest
ParametersNode::rest.
struct pm_node_list keywords
ParametersNode::keywords.
PM_NODE_ALIGNAS struct pm_node * keyword_rest
ParametersNode::keyword_rest.
pm_location_t closing_loc
ParenthesesNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
ParenthesesNode::opening_loc.
PM_NODE_ALIGNAS struct pm_node * body
ParenthesesNode::body.
pm_node_t base
The embedded base node.
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
PM_NODE_ALIGNAS struct pm_node * expression
PinnedExpressionNode::expression.
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * variable
PinnedVariableNode::variable.
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
pm_location_t closing_loc
PostExecutionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_location_t opening_loc
PostExecutionNode::opening_loc.
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
PostExecutionNode::statements.
pm_location_t closing_loc
PreExecutionNode::closing_loc.
pm_location_t opening_loc
PreExecutionNode::opening_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
PreExecutionNode::statements.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ProgramNode::statements.
pm_constant_id_list_t locals
ProgramNode::locals.
pm_location_t operator_loc
RangeNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * right
RangeNode::right.
PM_NODE_ALIGNAS struct pm_node * left
RangeNode::left.
pm_node_t base
The embedded base node.
pm_integer_t denominator
RationalNode::denominator.
pm_integer_t numerator
RationalNode::numerator.
pm_node_t base
The embedded base node.
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
pm_node_t base
The embedded base node.
pm_string_t unescaped
RegularExpressionNode::unescaped.
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
pm_location_t content_loc
RegularExpressionNode::content_loc.
RequiredKeywordParameterNode.
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
pm_node_t base
The embedded base node.
pm_constant_id_t name
RequiredKeywordParameterNode::name.
pm_constant_id_t name
RequiredParameterNode::name.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * expression
RescueModifierNode::expression.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
PM_NODE_ALIGNAS struct pm_statements_node * statements
RescueNode::statements.
PM_NODE_ALIGNAS struct pm_rescue_node * subsequent
RescueNode::subsequent.
pm_location_t keyword_loc
RescueNode::keyword_loc.
PM_NODE_ALIGNAS struct pm_node * reference
RescueNode::reference.
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
pm_location_t operator_loc
RescueNode::operator_loc.
struct pm_node_list exceptions
RescueNode::exceptions.
pm_node_t base
The embedded base node.
pm_constant_id_t name
RestParameterNode::name.
pm_location_t name_loc
RestParameterNode::name_loc.
pm_node_t base
The embedded base node.
pm_location_t operator_loc
RestParameterNode::operator_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
ReturnNode::arguments.
pm_location_t keyword_loc
ReturnNode::keyword_loc.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * write
ShareableConstantNode::write.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * body
SingletonClassNode::body.
pm_node_t base
The embedded base node.
pm_constant_id_list_t locals
SingletonClassNode::locals.
pm_location_t operator_loc
SingletonClassNode::operator_loc.
PM_NODE_ALIGNAS struct pm_node * expression
SingletonClassNode::expression.
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
pm_node_t base
The embedded base node.
pm_string_t filepath
SourceFileNode::filepath.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * expression
SplatNode::expression.
pm_location_t operator_loc
SplatNode::operator_loc.
struct pm_node_list body
StatementsNode::body.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_string_t unescaped
StringNode::unescaped.
pm_location_t content_loc
StringNode::content_loc.
pm_location_t closing_loc
StringNode::closing_loc.
pm_location_t opening_loc
StringNode::opening_loc.
A generic string type that can have various ownership semantics.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
SuperNode::arguments.
pm_location_t lparen_loc
SuperNode::lparen_loc.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
SuperNode::keyword_loc.
pm_location_t rparen_loc
SuperNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_node * block
SuperNode::block.
pm_location_t opening_loc
SymbolNode::opening_loc.
pm_location_t value_loc
SymbolNode::value_loc.
pm_location_t closing_loc
SymbolNode::closing_loc.
pm_string_t unescaped
SymbolNode::unescaped.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
UndefNode::keyword_loc.
struct pm_node_list names
UndefNode::names.
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
UnlessNode::predicate.
PM_NODE_ALIGNAS struct pm_statements_node * statements
UnlessNode::statements.
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
UnlessNode::else_clause.
pm_node_t base
The embedded base node.
pm_location_t unless_keyword_loc
UnlessNode::unless_keyword_loc.
pm_location_t end_keyword_loc
UntilNode::end_keyword_loc.
pm_location_t until_keyword_loc
UntilNode::until_keyword_loc.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
UntilNode::statements.
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
UntilNode::predicate.
pm_location_t when_keyword_loc
WhenNode::when_keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
PM_NODE_ALIGNAS struct pm_statements_node * statements
WhenNode::statements.
struct pm_node_list conditions
WhenNode::conditions.
PM_NODE_ALIGNAS struct pm_statements_node * statements
WhileNode::statements.
pm_location_t while_keyword_loc
WhileNode::while_keyword_loc.
pm_location_t end_keyword_loc
WhileNode::end_keyword_loc.
pm_node_t base
The embedded base node.
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
PM_NODE_ALIGNAS struct pm_node * predicate
WhileNode::predicate.
pm_location_t closing_loc
XStringNode::closing_loc.
pm_location_t opening_loc
XStringNode::opening_loc.
pm_location_t content_loc
XStringNode::content_loc.
pm_string_t unescaped
XStringNode::unescaped.
pm_node_t base
The embedded base node.
pm_location_t keyword_loc
YieldNode::keyword_loc.
pm_location_t lparen_loc
YieldNode::lparen_loc.
pm_node_t base
The embedded base node.
pm_location_t rparen_loc
YieldNode::rparen_loc.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
YieldNode::arguments.