9#line 2 "prism/templates/src/node.c.erb"
10#include "prism/internal/node.h"
12#include "prism/internal/arena.h"
24 size_t requested_size = list->
size + size;
27 if (requested_size < list->size) abort();
30 if (requested_size <= list->capacity)
return;
36 while (requested_size > next_capacity) {
37 if (next_capacity == 0) abort();
59 pm_node_list_grow(arena, list, 1);
68 pm_node_list_grow(arena, list, 1);
70 list->
nodes[0] = node;
79 if (other->
size > 0) {
80 pm_node_list_grow(arena, list, other->
size);
90pm_node_type(pm_node_type_t node_type)
93 case PM_ALIAS_GLOBAL_VARIABLE_NODE:
94 return "PM_ALIAS_GLOBAL_VARIABLE_NODE";
95 case PM_ALIAS_METHOD_NODE:
96 return "PM_ALIAS_METHOD_NODE";
97 case PM_ALTERNATION_PATTERN_NODE:
98 return "PM_ALTERNATION_PATTERN_NODE";
100 return "PM_AND_NODE";
101 case PM_ARGUMENTS_NODE:
102 return "PM_ARGUMENTS_NODE";
104 return "PM_ARRAY_NODE";
105 case PM_ARRAY_PATTERN_NODE:
106 return "PM_ARRAY_PATTERN_NODE";
108 return "PM_ASSOC_NODE";
109 case PM_ASSOC_SPLAT_NODE:
110 return "PM_ASSOC_SPLAT_NODE";
111 case PM_BACK_REFERENCE_READ_NODE:
112 return "PM_BACK_REFERENCE_READ_NODE";
114 return "PM_BEGIN_NODE";
115 case PM_BLOCK_ARGUMENT_NODE:
116 return "PM_BLOCK_ARGUMENT_NODE";
117 case PM_BLOCK_LOCAL_VARIABLE_NODE:
118 return "PM_BLOCK_LOCAL_VARIABLE_NODE";
120 return "PM_BLOCK_NODE";
121 case PM_BLOCK_PARAMETER_NODE:
122 return "PM_BLOCK_PARAMETER_NODE";
123 case PM_BLOCK_PARAMETERS_NODE:
124 return "PM_BLOCK_PARAMETERS_NODE";
126 return "PM_BREAK_NODE";
127 case PM_CALL_AND_WRITE_NODE:
128 return "PM_CALL_AND_WRITE_NODE";
130 return "PM_CALL_NODE";
131 case PM_CALL_OPERATOR_WRITE_NODE:
132 return "PM_CALL_OPERATOR_WRITE_NODE";
133 case PM_CALL_OR_WRITE_NODE:
134 return "PM_CALL_OR_WRITE_NODE";
135 case PM_CALL_TARGET_NODE:
136 return "PM_CALL_TARGET_NODE";
137 case PM_CAPTURE_PATTERN_NODE:
138 return "PM_CAPTURE_PATTERN_NODE";
139 case PM_CASE_MATCH_NODE:
140 return "PM_CASE_MATCH_NODE";
142 return "PM_CASE_NODE";
144 return "PM_CLASS_NODE";
145 case PM_CLASS_VARIABLE_AND_WRITE_NODE:
146 return "PM_CLASS_VARIABLE_AND_WRITE_NODE";
147 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE:
148 return "PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE";
149 case PM_CLASS_VARIABLE_OR_WRITE_NODE:
150 return "PM_CLASS_VARIABLE_OR_WRITE_NODE";
151 case PM_CLASS_VARIABLE_READ_NODE:
152 return "PM_CLASS_VARIABLE_READ_NODE";
153 case PM_CLASS_VARIABLE_TARGET_NODE:
154 return "PM_CLASS_VARIABLE_TARGET_NODE";
155 case PM_CLASS_VARIABLE_WRITE_NODE:
156 return "PM_CLASS_VARIABLE_WRITE_NODE";
157 case PM_CONSTANT_AND_WRITE_NODE:
158 return "PM_CONSTANT_AND_WRITE_NODE";
159 case PM_CONSTANT_OPERATOR_WRITE_NODE:
160 return "PM_CONSTANT_OPERATOR_WRITE_NODE";
161 case PM_CONSTANT_OR_WRITE_NODE:
162 return "PM_CONSTANT_OR_WRITE_NODE";
163 case PM_CONSTANT_PATH_AND_WRITE_NODE:
164 return "PM_CONSTANT_PATH_AND_WRITE_NODE";
165 case PM_CONSTANT_PATH_NODE:
166 return "PM_CONSTANT_PATH_NODE";
167 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE:
168 return "PM_CONSTANT_PATH_OPERATOR_WRITE_NODE";
169 case PM_CONSTANT_PATH_OR_WRITE_NODE:
170 return "PM_CONSTANT_PATH_OR_WRITE_NODE";
171 case PM_CONSTANT_PATH_TARGET_NODE:
172 return "PM_CONSTANT_PATH_TARGET_NODE";
173 case PM_CONSTANT_PATH_WRITE_NODE:
174 return "PM_CONSTANT_PATH_WRITE_NODE";
175 case PM_CONSTANT_READ_NODE:
176 return "PM_CONSTANT_READ_NODE";
177 case PM_CONSTANT_TARGET_NODE:
178 return "PM_CONSTANT_TARGET_NODE";
179 case PM_CONSTANT_WRITE_NODE:
180 return "PM_CONSTANT_WRITE_NODE";
182 return "PM_DEF_NODE";
183 case PM_DEFINED_NODE:
184 return "PM_DEFINED_NODE";
186 return "PM_ELSE_NODE";
187 case PM_EMBEDDED_STATEMENTS_NODE:
188 return "PM_EMBEDDED_STATEMENTS_NODE";
189 case PM_EMBEDDED_VARIABLE_NODE:
190 return "PM_EMBEDDED_VARIABLE_NODE";
192 return "PM_ENSURE_NODE";
193 case PM_ERROR_RECOVERY_NODE:
194 return "PM_ERROR_RECOVERY_NODE";
196 return "PM_FALSE_NODE";
197 case PM_FIND_PATTERN_NODE:
198 return "PM_FIND_PATTERN_NODE";
199 case PM_FLIP_FLOP_NODE:
200 return "PM_FLIP_FLOP_NODE";
202 return "PM_FLOAT_NODE";
204 return "PM_FOR_NODE";
205 case PM_FORWARDING_ARGUMENTS_NODE:
206 return "PM_FORWARDING_ARGUMENTS_NODE";
207 case PM_FORWARDING_PARAMETER_NODE:
208 return "PM_FORWARDING_PARAMETER_NODE";
209 case PM_FORWARDING_SUPER_NODE:
210 return "PM_FORWARDING_SUPER_NODE";
211 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE:
212 return "PM_GLOBAL_VARIABLE_AND_WRITE_NODE";
213 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE:
214 return "PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE";
215 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE:
216 return "PM_GLOBAL_VARIABLE_OR_WRITE_NODE";
217 case PM_GLOBAL_VARIABLE_READ_NODE:
218 return "PM_GLOBAL_VARIABLE_READ_NODE";
219 case PM_GLOBAL_VARIABLE_TARGET_NODE:
220 return "PM_GLOBAL_VARIABLE_TARGET_NODE";
221 case PM_GLOBAL_VARIABLE_WRITE_NODE:
222 return "PM_GLOBAL_VARIABLE_WRITE_NODE";
224 return "PM_HASH_NODE";
225 case PM_HASH_PATTERN_NODE:
226 return "PM_HASH_PATTERN_NODE";
229 case PM_IMAGINARY_NODE:
230 return "PM_IMAGINARY_NODE";
231 case PM_IMPLICIT_NODE:
232 return "PM_IMPLICIT_NODE";
233 case PM_IMPLICIT_REST_NODE:
234 return "PM_IMPLICIT_REST_NODE";
237 case PM_INDEX_AND_WRITE_NODE:
238 return "PM_INDEX_AND_WRITE_NODE";
239 case PM_INDEX_OPERATOR_WRITE_NODE:
240 return "PM_INDEX_OPERATOR_WRITE_NODE";
241 case PM_INDEX_OR_WRITE_NODE:
242 return "PM_INDEX_OR_WRITE_NODE";
243 case PM_INDEX_TARGET_NODE:
244 return "PM_INDEX_TARGET_NODE";
245 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE:
246 return "PM_INSTANCE_VARIABLE_AND_WRITE_NODE";
247 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE:
248 return "PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE";
249 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE:
250 return "PM_INSTANCE_VARIABLE_OR_WRITE_NODE";
251 case PM_INSTANCE_VARIABLE_READ_NODE:
252 return "PM_INSTANCE_VARIABLE_READ_NODE";
253 case PM_INSTANCE_VARIABLE_TARGET_NODE:
254 return "PM_INSTANCE_VARIABLE_TARGET_NODE";
255 case PM_INSTANCE_VARIABLE_WRITE_NODE:
256 return "PM_INSTANCE_VARIABLE_WRITE_NODE";
257 case PM_INTEGER_NODE:
258 return "PM_INTEGER_NODE";
259 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE:
260 return "PM_INTERPOLATED_MATCH_LAST_LINE_NODE";
261 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE:
262 return "PM_INTERPOLATED_REGULAR_EXPRESSION_NODE";
263 case PM_INTERPOLATED_STRING_NODE:
264 return "PM_INTERPOLATED_STRING_NODE";
265 case PM_INTERPOLATED_SYMBOL_NODE:
266 return "PM_INTERPOLATED_SYMBOL_NODE";
267 case PM_INTERPOLATED_X_STRING_NODE:
268 return "PM_INTERPOLATED_X_STRING_NODE";
269 case PM_IT_LOCAL_VARIABLE_READ_NODE:
270 return "PM_IT_LOCAL_VARIABLE_READ_NODE";
271 case PM_IT_PARAMETERS_NODE:
272 return "PM_IT_PARAMETERS_NODE";
273 case PM_KEYWORD_HASH_NODE:
274 return "PM_KEYWORD_HASH_NODE";
275 case PM_KEYWORD_REST_PARAMETER_NODE:
276 return "PM_KEYWORD_REST_PARAMETER_NODE";
278 return "PM_LAMBDA_NODE";
279 case PM_LOCAL_VARIABLE_AND_WRITE_NODE:
280 return "PM_LOCAL_VARIABLE_AND_WRITE_NODE";
281 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE:
282 return "PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE";
283 case PM_LOCAL_VARIABLE_OR_WRITE_NODE:
284 return "PM_LOCAL_VARIABLE_OR_WRITE_NODE";
285 case PM_LOCAL_VARIABLE_READ_NODE:
286 return "PM_LOCAL_VARIABLE_READ_NODE";
287 case PM_LOCAL_VARIABLE_TARGET_NODE:
288 return "PM_LOCAL_VARIABLE_TARGET_NODE";
289 case PM_LOCAL_VARIABLE_WRITE_NODE:
290 return "PM_LOCAL_VARIABLE_WRITE_NODE";
291 case PM_MATCH_LAST_LINE_NODE:
292 return "PM_MATCH_LAST_LINE_NODE";
293 case PM_MATCH_PREDICATE_NODE:
294 return "PM_MATCH_PREDICATE_NODE";
295 case PM_MATCH_REQUIRED_NODE:
296 return "PM_MATCH_REQUIRED_NODE";
297 case PM_MATCH_WRITE_NODE:
298 return "PM_MATCH_WRITE_NODE";
300 return "PM_MODULE_NODE";
301 case PM_MULTI_TARGET_NODE:
302 return "PM_MULTI_TARGET_NODE";
303 case PM_MULTI_WRITE_NODE:
304 return "PM_MULTI_WRITE_NODE";
306 return "PM_NEXT_NODE";
308 return "PM_NIL_NODE";
309 case PM_NO_BLOCK_PARAMETER_NODE:
310 return "PM_NO_BLOCK_PARAMETER_NODE";
311 case PM_NO_KEYWORDS_PARAMETER_NODE:
312 return "PM_NO_KEYWORDS_PARAMETER_NODE";
313 case PM_NUMBERED_PARAMETERS_NODE:
314 return "PM_NUMBERED_PARAMETERS_NODE";
315 case PM_NUMBERED_REFERENCE_READ_NODE:
316 return "PM_NUMBERED_REFERENCE_READ_NODE";
317 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE:
318 return "PM_OPTIONAL_KEYWORD_PARAMETER_NODE";
319 case PM_OPTIONAL_PARAMETER_NODE:
320 return "PM_OPTIONAL_PARAMETER_NODE";
323 case PM_PARAMETERS_NODE:
324 return "PM_PARAMETERS_NODE";
325 case PM_PARENTHESES_NODE:
326 return "PM_PARENTHESES_NODE";
327 case PM_PINNED_EXPRESSION_NODE:
328 return "PM_PINNED_EXPRESSION_NODE";
329 case PM_PINNED_VARIABLE_NODE:
330 return "PM_PINNED_VARIABLE_NODE";
331 case PM_POST_EXECUTION_NODE:
332 return "PM_POST_EXECUTION_NODE";
333 case PM_PRE_EXECUTION_NODE:
334 return "PM_PRE_EXECUTION_NODE";
335 case PM_PROGRAM_NODE:
336 return "PM_PROGRAM_NODE";
338 return "PM_RANGE_NODE";
339 case PM_RATIONAL_NODE:
340 return "PM_RATIONAL_NODE";
342 return "PM_REDO_NODE";
343 case PM_REGULAR_EXPRESSION_NODE:
344 return "PM_REGULAR_EXPRESSION_NODE";
345 case PM_REQUIRED_KEYWORD_PARAMETER_NODE:
346 return "PM_REQUIRED_KEYWORD_PARAMETER_NODE";
347 case PM_REQUIRED_PARAMETER_NODE:
348 return "PM_REQUIRED_PARAMETER_NODE";
349 case PM_RESCUE_MODIFIER_NODE:
350 return "PM_RESCUE_MODIFIER_NODE";
352 return "PM_RESCUE_NODE";
353 case PM_REST_PARAMETER_NODE:
354 return "PM_REST_PARAMETER_NODE";
356 return "PM_RETRY_NODE";
358 return "PM_RETURN_NODE";
360 return "PM_SELF_NODE";
361 case PM_SHAREABLE_CONSTANT_NODE:
362 return "PM_SHAREABLE_CONSTANT_NODE";
363 case PM_SINGLETON_CLASS_NODE:
364 return "PM_SINGLETON_CLASS_NODE";
365 case PM_SOURCE_ENCODING_NODE:
366 return "PM_SOURCE_ENCODING_NODE";
367 case PM_SOURCE_FILE_NODE:
368 return "PM_SOURCE_FILE_NODE";
369 case PM_SOURCE_LINE_NODE:
370 return "PM_SOURCE_LINE_NODE";
372 return "PM_SPLAT_NODE";
373 case PM_STATEMENTS_NODE:
374 return "PM_STATEMENTS_NODE";
376 return "PM_STRING_NODE";
378 return "PM_SUPER_NODE";
380 return "PM_SYMBOL_NODE";
382 return "PM_TRUE_NODE";
384 return "PM_UNDEF_NODE";
386 return "PM_UNLESS_NODE";
388 return "PM_UNTIL_NODE";
390 return "PM_WHEN_NODE";
392 return "PM_WHILE_NODE";
393 case PM_X_STRING_NODE:
394 return "PM_X_STRING_NODE";
396 return "PM_YIELD_NODE";
410pm_visit_node(
const pm_node_t *node,
bool (*visitor)(
const pm_node_t *node,
void *data),
void *data) {
411 if (visitor(node, data)) pm_visit_child_nodes(node, visitor, data);
420pm_visit_child_nodes(
const pm_node_t *node,
bool (*visitor)(
const pm_node_t *node,
void *data),
void *data) {
421 switch (PM_NODE_TYPE(node)) {
422 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
433 case PM_ALIAS_METHOD_NODE: {
444 case PM_ALTERNATION_PATTERN_NODE: {
448 pm_visit_node((
const pm_node_t *) cast->
left, visitor, data);
459 pm_visit_node((
const pm_node_t *) cast->
left, visitor, data);
466 case PM_ARGUMENTS_NODE: {
471 for (
size_t index = 0; index < arguments->
size; index++) {
472 pm_visit_node(arguments->
nodes[index], visitor, data);
477 case PM_ARRAY_NODE: {
482 for (
size_t index = 0; index < elements->
size; index++) {
483 pm_visit_node(elements->
nodes[index], visitor, data);
488 case PM_ARRAY_PATTERN_NODE: {
498 for (
size_t index = 0; index < requireds->
size; index++) {
499 pm_visit_node(requireds->
nodes[index], visitor, data);
503 if (cast->
rest != NULL) {
504 pm_visit_node((
const pm_node_t *) cast->
rest, visitor, data);
509 for (
size_t index = 0; index < posts->
size; index++) {
510 pm_visit_node(posts->
nodes[index], visitor, data);
515 case PM_ASSOC_NODE: {
519 pm_visit_node((
const pm_node_t *) cast->
key, visitor, data);
526 case PM_ASSOC_SPLAT_NODE: {
530 if (cast->
value != NULL) {
536 case PM_BACK_REFERENCE_READ_NODE:
538 case PM_BEGIN_NODE: {
563 case PM_BLOCK_ARGUMENT_NODE: {
573 case PM_BLOCK_LOCAL_VARIABLE_NODE:
575 case PM_BLOCK_NODE: {
584 if (cast->
body != NULL) {
585 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
590 case PM_BLOCK_PARAMETER_NODE:
592 case PM_BLOCK_PARAMETERS_NODE: {
602 for (
size_t index = 0; index < locals->
size; index++) {
603 pm_visit_node(locals->
nodes[index], visitor, data);
608 case PM_BREAK_NODE: {
618 case PM_CALL_AND_WRITE_NODE: {
645 if (cast->
block != NULL) {
651 case PM_CALL_OPERATOR_WRITE_NODE: {
664 case PM_CALL_OR_WRITE_NODE: {
677 case PM_CALL_TARGET_NODE: {
685 case PM_CAPTURE_PATTERN_NODE: {
696 case PM_CASE_MATCH_NODE: {
706 for (
size_t index = 0; index < conditions->
size; index++) {
707 pm_visit_node(conditions->
nodes[index], visitor, data);
727 for (
size_t index = 0; index < conditions->
size; index++) {
728 pm_visit_node(conditions->
nodes[index], visitor, data);
738 case PM_CLASS_NODE: {
750 if (cast->
body != NULL) {
751 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
756 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
764 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
772 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
780 case PM_CLASS_VARIABLE_READ_NODE:
782 case PM_CLASS_VARIABLE_TARGET_NODE:
784 case PM_CLASS_VARIABLE_WRITE_NODE: {
792 case PM_CONSTANT_AND_WRITE_NODE: {
800 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
808 case PM_CONSTANT_OR_WRITE_NODE: {
816 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
827 case PM_CONSTANT_PATH_NODE: {
831 if (cast->
parent != NULL) {
837 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
848 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
859 case PM_CONSTANT_PATH_TARGET_NODE: {
863 if (cast->
parent != NULL) {
869 case PM_CONSTANT_PATH_WRITE_NODE: {
880 case PM_CONSTANT_READ_NODE:
882 case PM_CONSTANT_TARGET_NODE:
884 case PM_CONSTANT_WRITE_NODE: {
906 if (cast->
body != NULL) {
907 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
912 case PM_DEFINED_NODE: {
930 case PM_EMBEDDED_STATEMENTS_NODE: {
940 case PM_EMBEDDED_VARIABLE_NODE: {
948 case PM_ENSURE_NODE: {
958 case PM_ERROR_RECOVERY_NODE: {
970 case PM_FIND_PATTERN_NODE: {
979 pm_visit_node((
const pm_node_t *) cast->
left, visitor, data);
983 for (
size_t index = 0; index < requireds->
size; index++) {
984 pm_visit_node(requireds->
nodes[index], visitor, data);
992 case PM_FLIP_FLOP_NODE: {
996 if (cast->
left != NULL) {
997 pm_visit_node((
const pm_node_t *) cast->
left, visitor, data);
1001 if (cast->
right != NULL) {
1025 case PM_FORWARDING_ARGUMENTS_NODE:
1027 case PM_FORWARDING_PARAMETER_NODE:
1029 case PM_FORWARDING_SUPER_NODE: {
1033 if (cast->
block != NULL) {
1039 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
1047 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
1055 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
1063 case PM_GLOBAL_VARIABLE_READ_NODE:
1065 case PM_GLOBAL_VARIABLE_TARGET_NODE:
1067 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
1075 case PM_HASH_NODE: {
1080 for (
size_t index = 0; index < elements->
size; index++) {
1081 pm_visit_node(elements->
nodes[index], visitor, data);
1086 case PM_HASH_PATTERN_NODE: {
1096 for (
size_t index = 0; index < elements->
size; index++) {
1097 pm_visit_node(elements->
nodes[index], visitor, data);
1101 if (cast->
rest != NULL) {
1102 pm_visit_node((
const pm_node_t *) cast->
rest, visitor, data);
1125 case PM_IMAGINARY_NODE: {
1133 case PM_IMPLICIT_NODE: {
1141 case PM_IMPLICIT_REST_NODE:
1156 case PM_INDEX_AND_WRITE_NODE: {
1170 if (cast->
block != NULL) {
1179 case PM_INDEX_OPERATOR_WRITE_NODE: {
1193 if (cast->
block != NULL) {
1202 case PM_INDEX_OR_WRITE_NODE: {
1216 if (cast->
block != NULL) {
1225 case PM_INDEX_TARGET_NODE: {
1237 if (cast->
block != NULL) {
1243 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
1251 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
1259 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
1267 case PM_INSTANCE_VARIABLE_READ_NODE:
1269 case PM_INSTANCE_VARIABLE_TARGET_NODE:
1271 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
1279 case PM_INTEGER_NODE:
1281 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
1286 for (
size_t index = 0; index < parts->
size; index++) {
1287 pm_visit_node(parts->
nodes[index], visitor, data);
1292 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
1297 for (
size_t index = 0; index < parts->
size; index++) {
1298 pm_visit_node(parts->
nodes[index], visitor, data);
1303 case PM_INTERPOLATED_STRING_NODE: {
1308 for (
size_t index = 0; index < parts->
size; index++) {
1309 pm_visit_node(parts->
nodes[index], visitor, data);
1314 case PM_INTERPOLATED_SYMBOL_NODE: {
1319 for (
size_t index = 0; index < parts->
size; index++) {
1320 pm_visit_node(parts->
nodes[index], visitor, data);
1325 case PM_INTERPOLATED_X_STRING_NODE: {
1330 for (
size_t index = 0; index < parts->
size; index++) {
1331 pm_visit_node(parts->
nodes[index], visitor, data);
1336 case PM_IT_LOCAL_VARIABLE_READ_NODE:
1338 case PM_IT_PARAMETERS_NODE:
1340 case PM_KEYWORD_HASH_NODE: {
1345 for (
size_t index = 0; index < elements->
size; index++) {
1346 pm_visit_node(elements->
nodes[index], visitor, data);
1351 case PM_KEYWORD_REST_PARAMETER_NODE:
1353 case PM_LAMBDA_NODE: {
1362 if (cast->
body != NULL) {
1363 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
1368 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
1376 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
1384 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
1392 case PM_LOCAL_VARIABLE_READ_NODE:
1394 case PM_LOCAL_VARIABLE_TARGET_NODE:
1396 case PM_LOCAL_VARIABLE_WRITE_NODE: {
1404 case PM_MATCH_LAST_LINE_NODE:
1406 case PM_MATCH_PREDICATE_NODE: {
1417 case PM_MATCH_REQUIRED_NODE: {
1428 case PM_MATCH_WRITE_NODE: {
1432 pm_visit_node((
const pm_node_t *) cast->
call, visitor, data);
1436 for (
size_t index = 0; index < targets->
size; index++) {
1437 pm_visit_node(targets->
nodes[index], visitor, data);
1442 case PM_MODULE_NODE: {
1449 if (cast->
body != NULL) {
1450 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
1455 case PM_MULTI_TARGET_NODE: {
1460 for (
size_t index = 0; index < lefts->
size; index++) {
1461 pm_visit_node(lefts->
nodes[index], visitor, data);
1465 if (cast->
rest != NULL) {
1466 pm_visit_node((
const pm_node_t *) cast->
rest, visitor, data);
1471 for (
size_t index = 0; index < rights->
size; index++) {
1472 pm_visit_node(rights->
nodes[index], visitor, data);
1477 case PM_MULTI_WRITE_NODE: {
1482 for (
size_t index = 0; index < lefts->
size; index++) {
1483 pm_visit_node(lefts->
nodes[index], visitor, data);
1487 if (cast->
rest != NULL) {
1488 pm_visit_node((
const pm_node_t *) cast->
rest, visitor, data);
1493 for (
size_t index = 0; index < rights->
size; index++) {
1494 pm_visit_node(rights->
nodes[index], visitor, data);
1502 case PM_NEXT_NODE: {
1514 case PM_NO_BLOCK_PARAMETER_NODE:
1516 case PM_NO_KEYWORDS_PARAMETER_NODE:
1518 case PM_NUMBERED_PARAMETERS_NODE:
1520 case PM_NUMBERED_REFERENCE_READ_NODE:
1522 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
1530 case PM_OPTIONAL_PARAMETER_NODE: {
1542 pm_visit_node((
const pm_node_t *) cast->
left, visitor, data);
1549 case PM_PARAMETERS_NODE: {
1554 for (
size_t index = 0; index < requireds->
size; index++) {
1555 pm_visit_node(requireds->
nodes[index], visitor, data);
1560 for (
size_t index = 0; index < optionals->
size; index++) {
1561 pm_visit_node(optionals->
nodes[index], visitor, data);
1565 if (cast->
rest != NULL) {
1566 pm_visit_node((
const pm_node_t *) cast->
rest, visitor, data);
1571 for (
size_t index = 0; index < posts->
size; index++) {
1572 pm_visit_node(posts->
nodes[index], visitor, data);
1577 for (
size_t index = 0; index < keywords->
size; index++) {
1578 pm_visit_node(keywords->
nodes[index], visitor, data);
1587 if (cast->
block != NULL) {
1593 case PM_PARENTHESES_NODE: {
1597 if (cast->
body != NULL) {
1598 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
1603 case PM_PINNED_EXPRESSION_NODE: {
1611 case PM_PINNED_VARIABLE_NODE: {
1619 case PM_POST_EXECUTION_NODE: {
1629 case PM_PRE_EXECUTION_NODE: {
1639 case PM_PROGRAM_NODE: {
1647 case PM_RANGE_NODE: {
1651 if (cast->
left != NULL) {
1652 pm_visit_node((
const pm_node_t *) cast->
left, visitor, data);
1656 if (cast->
right != NULL) {
1662 case PM_RATIONAL_NODE:
1666 case PM_REGULAR_EXPRESSION_NODE:
1668 case PM_REQUIRED_KEYWORD_PARAMETER_NODE:
1670 case PM_REQUIRED_PARAMETER_NODE:
1672 case PM_RESCUE_MODIFIER_NODE: {
1683 case PM_RESCUE_NODE: {
1688 for (
size_t index = 0; index < exceptions->
size; index++) {
1689 pm_visit_node(exceptions->
nodes[index], visitor, data);
1709 case PM_REST_PARAMETER_NODE:
1713 case PM_RETURN_NODE: {
1725 case PM_SHAREABLE_CONSTANT_NODE: {
1733 case PM_SINGLETON_CLASS_NODE: {
1740 if (cast->
body != NULL) {
1741 pm_visit_node((
const pm_node_t *) cast->
body, visitor, data);
1746 case PM_SOURCE_ENCODING_NODE:
1748 case PM_SOURCE_FILE_NODE:
1750 case PM_SOURCE_LINE_NODE:
1752 case PM_SPLAT_NODE: {
1762 case PM_STATEMENTS_NODE: {
1767 for (
size_t index = 0; index < body->
size; index++) {
1768 pm_visit_node(body->
nodes[index], visitor, data);
1773 case PM_STRING_NODE:
1775 case PM_SUPER_NODE: {
1784 if (cast->
block != NULL) {
1790 case PM_SYMBOL_NODE:
1794 case PM_UNDEF_NODE: {
1799 for (
size_t index = 0; index < names->
size; index++) {
1800 pm_visit_node(names->
nodes[index], visitor, data);
1805 case PM_UNLESS_NODE: {
1823 case PM_UNTIL_NODE: {
1836 case PM_WHEN_NODE: {
1841 for (
size_t index = 0; index < conditions->
size; index++) {
1842 pm_visit_node(conditions->
nodes[index], visitor, data);
1852 case PM_WHILE_NODE: {
1865 case PM_X_STRING_NODE:
1867 case PM_YIELD_NODE: {
1890 .
base = { .
type = PM_ALIAS_GLOBAL_VARIABLE_NODE, .flags = flags, .node_id = node_id, .location = location },
1891 .new_name = new_name,
1892 .old_name = old_name,
1893 .keyword_loc = keyword_loc
1907 .
base = { .
type = PM_ALIAS_METHOD_NODE, .flags = flags, .node_id = node_id, .location = location },
1908 .new_name = new_name,
1909 .old_name = old_name,
1910 .keyword_loc = keyword_loc
1924 .
base = { .
type = PM_ALTERNATION_PATTERN_NODE, .flags = flags, .node_id = node_id, .location = location },
1927 .operator_loc = operator_loc
1941 .
base = { .
type = PM_AND_NODE, .flags = flags, .node_id = node_id, .location = location },
1944 .operator_loc = operator_loc
1958 .
base = { .
type = PM_ARGUMENTS_NODE, .flags = flags, .node_id = node_id, .location = location },
1959 .arguments = arguments
1973 .
base = { .
type = PM_ARRAY_NODE, .flags = flags, .node_id = node_id, .location = location },
1974 .elements = elements,
1975 .opening_loc = opening_loc,
1976 .closing_loc = closing_loc
1990 .
base = { .
type = PM_ARRAY_PATTERN_NODE, .flags = flags, .node_id = node_id, .location = location },
1991 .constant = constant,
1992 .requireds = requireds,
1995 .opening_loc = opening_loc,
1996 .closing_loc = closing_loc
2010 .
base = { .
type = PM_ASSOC_NODE, .flags = flags, .node_id = node_id, .location = location },
2013 .operator_loc = operator_loc
2027 .
base = { .
type = PM_ASSOC_SPLAT_NODE, .flags = flags, .node_id = node_id, .location = location },
2029 .operator_loc = operator_loc
2043 .
base = { .
type = PM_BACK_REFERENCE_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
2058 .
base = { .
type = PM_BEGIN_NODE, .flags = flags, .node_id = node_id, .location = location },
2059 .begin_keyword_loc = begin_keyword_loc,
2060 .statements = statements,
2061 .rescue_clause = rescue_clause,
2062 .else_clause = else_clause,
2063 .ensure_clause = ensure_clause,
2078 .
base = { .
type = PM_BLOCK_ARGUMENT_NODE, .flags = flags, .node_id = node_id, .location = location },
2079 .expression = expression,
2080 .operator_loc = operator_loc
2094 .
base = { .
type = PM_BLOCK_LOCAL_VARIABLE_NODE, .flags = flags, .node_id = node_id, .location = location },
2109 .
base = { .
type = PM_BLOCK_NODE, .flags = flags, .node_id = node_id, .location = location },
2111 .parameters = parameters,
2113 .opening_loc = opening_loc,
2114 .closing_loc = closing_loc
2128 .
base = { .
type = PM_BLOCK_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
2130 .name_loc = name_loc,
2131 .operator_loc = operator_loc
2145 .
base = { .
type = PM_BLOCK_PARAMETERS_NODE, .flags = flags, .node_id = node_id, .location = location },
2146 .parameters = parameters,
2148 .opening_loc = opening_loc,
2149 .closing_loc = closing_loc
2163 .
base = { .
type = PM_BREAK_NODE, .flags = flags, .node_id = node_id, .location = location },
2164 .arguments = arguments,
2165 .keyword_loc = keyword_loc
2175pm_call_and_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_location_t message_loc,
pm_constant_id_t read_name,
pm_constant_id_t write_name,
pm_location_t operator_loc,
struct pm_node *value) {
2179 .
base = { .
type = PM_CALL_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2180 .receiver = receiver,
2181 .call_operator_loc = call_operator_loc,
2182 .message_loc = message_loc,
2183 .read_name = read_name,
2184 .write_name = write_name,
2185 .operator_loc = operator_loc,
2196pm_call_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_constant_id_t name,
pm_location_t message_loc,
pm_location_t opening_loc,
struct pm_arguments_node *arguments,
pm_location_t closing_loc,
pm_location_t equal_loc,
struct pm_node *block) {
2200 .
base = { .
type = PM_CALL_NODE, .flags = flags, .node_id = node_id, .location = location },
2201 .receiver = receiver,
2202 .call_operator_loc = call_operator_loc,
2204 .message_loc = message_loc,
2205 .opening_loc = opening_loc,
2206 .arguments = arguments,
2207 .closing_loc = closing_loc,
2208 .equal_loc = equal_loc,
2219pm_call_operator_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_location_t message_loc,
pm_constant_id_t read_name,
pm_constant_id_t write_name,
pm_constant_id_t binary_operator,
pm_location_t binary_operator_loc,
struct pm_node *value) {
2223 .
base = { .
type = PM_CALL_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2224 .receiver = receiver,
2225 .call_operator_loc = call_operator_loc,
2226 .message_loc = message_loc,
2227 .read_name = read_name,
2228 .write_name = write_name,
2229 .binary_operator = binary_operator,
2230 .binary_operator_loc = binary_operator_loc,
2241pm_call_or_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_location_t message_loc,
pm_constant_id_t read_name,
pm_constant_id_t write_name,
pm_location_t operator_loc,
struct pm_node *value) {
2245 .
base = { .
type = PM_CALL_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2246 .receiver = receiver,
2247 .call_operator_loc = call_operator_loc,
2248 .message_loc = message_loc,
2249 .read_name = read_name,
2250 .write_name = write_name,
2251 .operator_loc = operator_loc,
2266 .
base = { .
type = PM_CALL_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
2267 .receiver = receiver,
2268 .call_operator_loc = call_operator_loc,
2270 .message_loc = message_loc
2284 .
base = { .
type = PM_CAPTURE_PATTERN_NODE, .flags = flags, .node_id = node_id, .location = location },
2287 .operator_loc = operator_loc
2301 .
base = { .
type = PM_CASE_MATCH_NODE, .flags = flags, .node_id = node_id, .location = location },
2302 .predicate = predicate,
2303 .conditions = conditions,
2304 .else_clause = else_clause,
2305 .case_keyword_loc = case_keyword_loc,
2306 .end_keyword_loc = end_keyword_loc
2320 .
base = { .
type = PM_CASE_NODE, .flags = flags, .node_id = node_id, .location = location },
2321 .predicate = predicate,
2322 .conditions = conditions,
2323 .else_clause = else_clause,
2324 .case_keyword_loc = case_keyword_loc,
2325 .end_keyword_loc = end_keyword_loc
2335pm_class_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
pm_constant_id_list_t locals,
pm_location_t class_keyword_loc,
struct pm_node *constant_path,
pm_location_t inheritance_operator_loc,
struct pm_node *superclass,
struct pm_node *body,
pm_location_t end_keyword_loc,
pm_constant_id_t name) {
2339 .
base = { .
type = PM_CLASS_NODE, .flags = flags, .node_id = node_id, .location = location },
2341 .class_keyword_loc = class_keyword_loc,
2342 .constant_path = constant_path,
2343 .inheritance_operator_loc = inheritance_operator_loc,
2344 .superclass = superclass,
2346 .end_keyword_loc = end_keyword_loc,
2361 .
base = { .
type = PM_CLASS_VARIABLE_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2363 .name_loc = name_loc,
2364 .operator_loc = operator_loc,
2379 .
base = { .
type = PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2381 .name_loc = name_loc,
2382 .binary_operator_loc = binary_operator_loc,
2384 .binary_operator = binary_operator
2398 .
base = { .
type = PM_CLASS_VARIABLE_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2400 .name_loc = name_loc,
2401 .operator_loc = operator_loc,
2416 .
base = { .
type = PM_CLASS_VARIABLE_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
2431 .
base = { .
type = PM_CLASS_VARIABLE_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
2446 .
base = { .
type = PM_CLASS_VARIABLE_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2448 .name_loc = name_loc,
2450 .operator_loc = operator_loc
2464 .
base = { .
type = PM_CONSTANT_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2466 .name_loc = name_loc,
2467 .operator_loc = operator_loc,
2482 .
base = { .
type = PM_CONSTANT_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2484 .name_loc = name_loc,
2485 .binary_operator_loc = binary_operator_loc,
2487 .binary_operator = binary_operator
2501 .
base = { .
type = PM_CONSTANT_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2503 .name_loc = name_loc,
2504 .operator_loc = operator_loc,
2519 .
base = { .
type = PM_CONSTANT_PATH_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2521 .operator_loc = operator_loc,
2536 .
base = { .
type = PM_CONSTANT_PATH_NODE, .flags = flags, .node_id = node_id, .location = location },
2539 .delimiter_loc = delimiter_loc,
2540 .name_loc = name_loc
2554 .
base = { .
type = PM_CONSTANT_PATH_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2556 .binary_operator_loc = binary_operator_loc,
2558 .binary_operator = binary_operator
2572 .
base = { .
type = PM_CONSTANT_PATH_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2574 .operator_loc = operator_loc,
2589 .
base = { .
type = PM_CONSTANT_PATH_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
2592 .delimiter_loc = delimiter_loc,
2593 .name_loc = name_loc
2607 .
base = { .
type = PM_CONSTANT_PATH_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2609 .operator_loc = operator_loc,
2624 .
base = { .
type = PM_CONSTANT_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
2639 .
base = { .
type = PM_CONSTANT_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
2654 .
base = { .
type = PM_CONSTANT_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2656 .name_loc = name_loc,
2658 .operator_loc = operator_loc
2668pm_def_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
pm_constant_id_t name,
pm_location_t name_loc,
struct pm_node *receiver,
struct pm_parameters_node *parameters,
struct pm_node *body,
pm_constant_id_list_t locals,
pm_location_t def_keyword_loc,
pm_location_t operator_loc,
pm_location_t lparen_loc,
pm_location_t rparen_loc,
pm_location_t equal_loc,
pm_location_t end_keyword_loc) {
2672 .
base = { .
type = PM_DEF_NODE, .flags = flags, .node_id = node_id, .location = location },
2674 .name_loc = name_loc,
2675 .receiver = receiver,
2676 .parameters = parameters,
2679 .def_keyword_loc = def_keyword_loc,
2680 .operator_loc = operator_loc,
2681 .lparen_loc = lparen_loc,
2682 .rparen_loc = rparen_loc,
2683 .equal_loc = equal_loc,
2684 .end_keyword_loc = end_keyword_loc
2698 .
base = { .
type = PM_DEFINED_NODE, .flags = flags, .node_id = node_id, .location = location },
2699 .lparen_loc = lparen_loc,
2701 .rparen_loc = rparen_loc,
2702 .keyword_loc = keyword_loc
2716 .
base = { .
type = PM_ELSE_NODE, .flags = flags, .node_id = node_id, .location = location },
2717 .else_keyword_loc = else_keyword_loc,
2718 .statements = statements,
2719 .end_keyword_loc = end_keyword_loc
2733 .
base = { .
type = PM_EMBEDDED_STATEMENTS_NODE, .flags = flags, .node_id = node_id, .location = location },
2734 .opening_loc = opening_loc,
2735 .statements = statements,
2736 .closing_loc = closing_loc
2750 .
base = { .
type = PM_EMBEDDED_VARIABLE_NODE, .flags = flags, .node_id = node_id, .location = location },
2751 .operator_loc = operator_loc,
2752 .variable = variable
2766 .
base = { .
type = PM_ENSURE_NODE, .flags = flags, .node_id = node_id, .location = location },
2767 .ensure_keyword_loc = ensure_keyword_loc,
2768 .statements = statements,
2769 .end_keyword_loc = end_keyword_loc
2783 .
base = { .
type = PM_ERROR_RECOVERY_NODE, .flags = flags, .node_id = node_id, .location = location },
2784 .unexpected = unexpected
2798 .
base = { .
type = PM_FALSE_NODE, .flags = flags, .node_id = node_id, .location = location }
2812 .
base = { .
type = PM_FIND_PATTERN_NODE, .flags = flags, .node_id = node_id, .location = location },
2813 .constant = constant,
2815 .requireds = requireds,
2817 .opening_loc = opening_loc,
2818 .closing_loc = closing_loc
2832 .
base = { .
type = PM_FLIP_FLOP_NODE, .flags = flags, .node_id = node_id, .location = location },
2835 .operator_loc = operator_loc
2845pm_float_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
double value) {
2849 .
base = { .
type = PM_FLOAT_NODE, .flags = flags, .node_id = node_id, .location = location },
2860pm_for_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *index,
struct pm_node *collection,
struct pm_statements_node *statements,
pm_location_t for_keyword_loc,
pm_location_t in_keyword_loc,
pm_location_t do_keyword_loc,
pm_location_t end_keyword_loc) {
2864 .
base = { .
type = PM_FOR_NODE, .flags = flags, .node_id = node_id, .location = location },
2866 .collection = collection,
2867 .statements = statements,
2868 .for_keyword_loc = for_keyword_loc,
2869 .in_keyword_loc = in_keyword_loc,
2870 .do_keyword_loc = do_keyword_loc,
2871 .end_keyword_loc = end_keyword_loc
2881pm_forwarding_arguments_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location) {
2885 .
base = { .
type = PM_FORWARDING_ARGUMENTS_NODE, .flags = flags, .node_id = node_id, .location = location }
2895pm_forwarding_parameter_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location) {
2899 .
base = { .
type = PM_FORWARDING_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location }
2913 .
base = { .
type = PM_FORWARDING_SUPER_NODE, .flags = flags, .node_id = node_id, .location = location },
2914 .keyword_loc = keyword_loc,
2929 .
base = { .
type = PM_GLOBAL_VARIABLE_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2931 .name_loc = name_loc,
2932 .operator_loc = operator_loc,
2947 .
base = { .
type = PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2949 .name_loc = name_loc,
2950 .binary_operator_loc = binary_operator_loc,
2952 .binary_operator = binary_operator
2966 .
base = { .
type = PM_GLOBAL_VARIABLE_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
2968 .name_loc = name_loc,
2969 .operator_loc = operator_loc,
2984 .
base = { .
type = PM_GLOBAL_VARIABLE_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
2999 .
base = { .
type = PM_GLOBAL_VARIABLE_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
3014 .
base = { .
type = PM_GLOBAL_VARIABLE_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3016 .name_loc = name_loc,
3018 .operator_loc = operator_loc
3032 .
base = { .
type = PM_HASH_NODE, .flags = flags, .node_id = node_id, .location = location },
3033 .opening_loc = opening_loc,
3034 .elements = elements,
3035 .closing_loc = closing_loc
3049 .
base = { .
type = PM_HASH_PATTERN_NODE, .flags = flags, .node_id = node_id, .location = location },
3050 .constant = constant,
3051 .elements = elements,
3053 .opening_loc = opening_loc,
3054 .closing_loc = closing_loc
3068 .
base = { .
type = PM_IF_NODE, .flags = flags, .node_id = node_id, .location = location },
3069 .if_keyword_loc = if_keyword_loc,
3070 .predicate = predicate,
3071 .then_keyword_loc = then_keyword_loc,
3072 .statements = statements,
3073 .subsequent = subsequent,
3074 .end_keyword_loc = end_keyword_loc
3088 .
base = { .
type = PM_IMAGINARY_NODE, .flags = flags, .node_id = node_id, .location = location },
3103 .
base = { .
type = PM_IMPLICIT_NODE, .flags = flags, .node_id = node_id, .location = location },
3114pm_implicit_rest_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location) {
3118 .
base = { .
type = PM_IMPLICIT_REST_NODE, .flags = flags, .node_id = node_id, .location = location }
3132 .
base = { .
type = PM_IN_NODE, .flags = flags, .node_id = node_id, .location = location },
3134 .statements = statements,
3136 .then_loc = then_loc
3146pm_index_and_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_location_t opening_loc,
struct pm_arguments_node *arguments,
pm_location_t closing_loc,
struct pm_block_argument_node *block,
pm_location_t operator_loc,
struct pm_node *value) {
3150 .
base = { .
type = PM_INDEX_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3151 .receiver = receiver,
3152 .call_operator_loc = call_operator_loc,
3153 .opening_loc = opening_loc,
3154 .arguments = arguments,
3155 .closing_loc = closing_loc,
3168pm_index_operator_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_location_t opening_loc,
struct pm_arguments_node *arguments,
pm_location_t closing_loc,
struct pm_block_argument_node *block,
pm_constant_id_t binary_operator,
pm_location_t binary_operator_loc,
struct pm_node *value) {
3172 .
base = { .
type = PM_INDEX_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3173 .receiver = receiver,
3174 .call_operator_loc = call_operator_loc,
3175 .opening_loc = opening_loc,
3176 .arguments = arguments,
3177 .closing_loc = closing_loc,
3179 .binary_operator = binary_operator,
3180 .binary_operator_loc = binary_operator_loc,
3191pm_index_or_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
struct pm_node *receiver,
pm_location_t call_operator_loc,
pm_location_t opening_loc,
struct pm_arguments_node *arguments,
pm_location_t closing_loc,
struct pm_block_argument_node *block,
pm_location_t operator_loc,
struct pm_node *value) {
3195 .
base = { .
type = PM_INDEX_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3196 .receiver = receiver,
3197 .call_operator_loc = call_operator_loc,
3198 .opening_loc = opening_loc,
3199 .arguments = arguments,
3200 .closing_loc = closing_loc,
3217 .
base = { .
type = PM_INDEX_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
3218 .receiver = receiver,
3219 .opening_loc = opening_loc,
3220 .arguments = arguments,
3221 .closing_loc = closing_loc,
3236 .
base = { .
type = PM_INSTANCE_VARIABLE_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3238 .name_loc = name_loc,
3239 .operator_loc = operator_loc,
3254 .
base = { .
type = PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3256 .name_loc = name_loc,
3257 .binary_operator_loc = binary_operator_loc,
3259 .binary_operator = binary_operator
3273 .
base = { .
type = PM_INSTANCE_VARIABLE_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3275 .name_loc = name_loc,
3276 .operator_loc = operator_loc,
3291 .
base = { .
type = PM_INSTANCE_VARIABLE_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
3306 .
base = { .
type = PM_INSTANCE_VARIABLE_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
3321 .
base = { .
type = PM_INSTANCE_VARIABLE_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3323 .name_loc = name_loc,
3325 .operator_loc = operator_loc
3339 .
base = { .
type = PM_INTEGER_NODE, .flags = flags, .node_id = node_id, .location = location },
3354 .
base = { .
type = PM_INTERPOLATED_MATCH_LAST_LINE_NODE, .flags = flags, .node_id = node_id, .location = location },
3355 .opening_loc = opening_loc,
3357 .closing_loc = closing_loc
3371 .
base = { .
type = PM_INTERPOLATED_REGULAR_EXPRESSION_NODE, .flags = flags, .node_id = node_id, .location = location },
3372 .opening_loc = opening_loc,
3374 .closing_loc = closing_loc
3388 .
base = { .
type = PM_INTERPOLATED_STRING_NODE, .flags = flags, .node_id = node_id, .location = location },
3389 .opening_loc = opening_loc,
3391 .closing_loc = closing_loc
3405 .
base = { .
type = PM_INTERPOLATED_SYMBOL_NODE, .flags = flags, .node_id = node_id, .location = location },
3406 .opening_loc = opening_loc,
3408 .closing_loc = closing_loc
3422 .
base = { .
type = PM_INTERPOLATED_X_STRING_NODE, .flags = flags, .node_id = node_id, .location = location },
3423 .opening_loc = opening_loc,
3425 .closing_loc = closing_loc
3435pm_it_local_variable_read_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location) {
3439 .
base = { .
type = PM_IT_LOCAL_VARIABLE_READ_NODE, .flags = flags, .node_id = node_id, .location = location }
3449pm_it_parameters_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location) {
3453 .
base = { .
type = PM_IT_PARAMETERS_NODE, .flags = flags, .node_id = node_id, .location = location }
3467 .
base = { .
type = PM_KEYWORD_HASH_NODE, .flags = flags, .node_id = node_id, .location = location },
3468 .elements = elements
3482 .
base = { .
type = PM_KEYWORD_REST_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
3484 .name_loc = name_loc,
3485 .operator_loc = operator_loc
3499 .
base = { .
type = PM_LAMBDA_NODE, .flags = flags, .node_id = node_id, .location = location },
3501 .operator_loc = operator_loc,
3502 .opening_loc = opening_loc,
3503 .closing_loc = closing_loc,
3504 .parameters = parameters,
3519 .
base = { .
type = PM_LOCAL_VARIABLE_AND_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3520 .name_loc = name_loc,
3521 .operator_loc = operator_loc,
3538 .
base = { .
type = PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3539 .name_loc = name_loc,
3540 .binary_operator_loc = binary_operator_loc,
3543 .binary_operator = binary_operator,
3558 .
base = { .
type = PM_LOCAL_VARIABLE_OR_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3559 .name_loc = name_loc,
3560 .operator_loc = operator_loc,
3577 .
base = { .
type = PM_LOCAL_VARIABLE_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
3593 .
base = { .
type = PM_LOCAL_VARIABLE_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
3609 .
base = { .
type = PM_LOCAL_VARIABLE_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3612 .name_loc = name_loc,
3614 .operator_loc = operator_loc
3628 .
base = { .
type = PM_MATCH_LAST_LINE_NODE, .flags = flags, .node_id = node_id, .location = location },
3629 .opening_loc = opening_loc,
3630 .content_loc = content_loc,
3631 .closing_loc = closing_loc,
3632 .unescaped = unescaped
3646 .
base = { .
type = PM_MATCH_PREDICATE_NODE, .flags = flags, .node_id = node_id, .location = location },
3649 .operator_loc = operator_loc
3663 .
base = { .
type = PM_MATCH_REQUIRED_NODE, .flags = flags, .node_id = node_id, .location = location },
3666 .operator_loc = operator_loc
3680 .
base = { .
type = PM_MATCH_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3696 .
base = { .
type = PM_MODULE_NODE, .flags = flags, .node_id = node_id, .location = location },
3698 .module_keyword_loc = module_keyword_loc,
3699 .constant_path = constant_path,
3701 .end_keyword_loc = end_keyword_loc,
3716 .
base = { .
type = PM_MULTI_TARGET_NODE, .flags = flags, .node_id = node_id, .location = location },
3720 .lparen_loc = lparen_loc,
3721 .rparen_loc = rparen_loc
3731pm_multi_write_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
pm_node_list_t lefts,
struct pm_node *rest,
pm_node_list_t rights,
pm_location_t lparen_loc,
pm_location_t rparen_loc,
pm_location_t operator_loc,
struct pm_node *value) {
3735 .
base = { .
type = PM_MULTI_WRITE_NODE, .flags = flags, .node_id = node_id, .location = location },
3739 .lparen_loc = lparen_loc,
3740 .rparen_loc = rparen_loc,
3741 .operator_loc = operator_loc,
3756 .
base = { .
type = PM_NEXT_NODE, .flags = flags, .node_id = node_id, .location = location },
3757 .arguments = arguments,
3758 .keyword_loc = keyword_loc
3772 .
base = { .
type = PM_NIL_NODE, .flags = flags, .node_id = node_id, .location = location }
3786 .
base = { .
type = PM_NO_BLOCK_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
3787 .operator_loc = operator_loc,
3788 .keyword_loc = keyword_loc
3802 .
base = { .
type = PM_NO_KEYWORDS_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
3803 .operator_loc = operator_loc,
3804 .keyword_loc = keyword_loc
3814pm_numbered_parameters_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location, uint8_t maximum) {
3818 .
base = { .
type = PM_NUMBERED_PARAMETERS_NODE, .flags = flags, .node_id = node_id, .location = location },
3829pm_numbered_reference_read_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location, uint32_t number) {
3833 .
base = { .
type = PM_NUMBERED_REFERENCE_READ_NODE, .flags = flags, .node_id = node_id, .location = location },
3848 .
base = { .
type = PM_OPTIONAL_KEYWORD_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
3850 .name_loc = name_loc,
3865 .
base = { .
type = PM_OPTIONAL_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
3867 .name_loc = name_loc,
3868 .operator_loc = operator_loc,
3883 .
base = { .
type = PM_OR_NODE, .flags = flags, .node_id = node_id, .location = location },
3886 .operator_loc = operator_loc
3896pm_parameters_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
pm_node_list_t requireds,
pm_node_list_t optionals,
struct pm_node *rest,
pm_node_list_t posts,
pm_node_list_t keywords,
struct pm_node *keyword_rest,
struct pm_node *block) {
3900 .
base = { .
type = PM_PARAMETERS_NODE, .flags = flags, .node_id = node_id, .location = location },
3901 .requireds = requireds,
3902 .optionals = optionals,
3905 .keywords = keywords,
3906 .keyword_rest = keyword_rest,
3921 .
base = { .
type = PM_PARENTHESES_NODE, .flags = flags, .node_id = node_id, .location = location },
3923 .opening_loc = opening_loc,
3924 .closing_loc = closing_loc
3938 .
base = { .
type = PM_PINNED_EXPRESSION_NODE, .flags = flags, .node_id = node_id, .location = location },
3939 .expression = expression,
3940 .operator_loc = operator_loc,
3941 .lparen_loc = lparen_loc,
3942 .rparen_loc = rparen_loc
3956 .
base = { .
type = PM_PINNED_VARIABLE_NODE, .flags = flags, .node_id = node_id, .location = location },
3957 .variable = variable,
3958 .operator_loc = operator_loc
3972 .
base = { .
type = PM_POST_EXECUTION_NODE, .flags = flags, .node_id = node_id, .location = location },
3973 .statements = statements,
3974 .keyword_loc = keyword_loc,
3975 .opening_loc = opening_loc,
3976 .closing_loc = closing_loc
3990 .
base = { .
type = PM_PRE_EXECUTION_NODE, .flags = flags, .node_id = node_id, .location = location },
3991 .statements = statements,
3992 .keyword_loc = keyword_loc,
3993 .opening_loc = opening_loc,
3994 .closing_loc = closing_loc
4008 .
base = { .
type = PM_PROGRAM_NODE, .flags = flags, .node_id = node_id, .location = location },
4010 .statements = statements
4024 .
base = { .
type = PM_RANGE_NODE, .flags = flags, .node_id = node_id, .location = location },
4027 .operator_loc = operator_loc
4041 .
base = { .
type = PM_RATIONAL_NODE, .flags = flags, .node_id = node_id, .location = location },
4042 .numerator = numerator,
4043 .denominator = denominator
4057 .
base = { .
type = PM_REDO_NODE, .flags = flags, .node_id = node_id, .location = location }
4071 .
base = { .
type = PM_REGULAR_EXPRESSION_NODE, .flags = flags, .node_id = node_id, .location = location },
4072 .opening_loc = opening_loc,
4073 .content_loc = content_loc,
4074 .closing_loc = closing_loc,
4075 .unescaped = unescaped
4089 .
base = { .
type = PM_REQUIRED_KEYWORD_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
4091 .name_loc = name_loc
4105 .
base = { .
type = PM_REQUIRED_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
4120 .
base = { .
type = PM_RESCUE_MODIFIER_NODE, .flags = flags, .node_id = node_id, .location = location },
4121 .expression = expression,
4122 .keyword_loc = keyword_loc,
4123 .rescue_expression = rescue_expression
4133pm_rescue_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location,
pm_location_t keyword_loc,
pm_node_list_t exceptions,
pm_location_t operator_loc,
struct pm_node *reference,
pm_location_t then_keyword_loc,
struct pm_statements_node *statements,
struct pm_rescue_node *subsequent) {
4137 .
base = { .
type = PM_RESCUE_NODE, .flags = flags, .node_id = node_id, .location = location },
4138 .keyword_loc = keyword_loc,
4139 .exceptions = exceptions,
4140 .operator_loc = operator_loc,
4141 .reference = reference,
4142 .then_keyword_loc = then_keyword_loc,
4143 .statements = statements,
4144 .subsequent = subsequent
4158 .
base = { .
type = PM_REST_PARAMETER_NODE, .flags = flags, .node_id = node_id, .location = location },
4160 .name_loc = name_loc,
4161 .operator_loc = operator_loc
4175 .
base = { .
type = PM_RETRY_NODE, .flags = flags, .node_id = node_id, .location = location }
4189 .
base = { .
type = PM_RETURN_NODE, .flags = flags, .node_id = node_id, .location = location },
4190 .keyword_loc = keyword_loc,
4191 .arguments = arguments
4205 .
base = { .
type = PM_SELF_NODE, .flags = flags, .node_id = node_id, .location = location }
4219 .
base = { .
type = PM_SHAREABLE_CONSTANT_NODE, .flags = flags, .node_id = node_id, .location = location },
4234 .
base = { .
type = PM_SINGLETON_CLASS_NODE, .flags = flags, .node_id = node_id, .location = location },
4236 .class_keyword_loc = class_keyword_loc,
4237 .operator_loc = operator_loc,
4238 .expression = expression,
4240 .end_keyword_loc = end_keyword_loc
4250pm_source_encoding_node_new(
pm_arena_t *arena, uint32_t node_id, pm_node_flags_t flags,
pm_location_t location) {
4254 .
base = { .
type = PM_SOURCE_ENCODING_NODE, .flags = flags, .node_id = node_id, .location = location }
4268 .
base = { .
type = PM_SOURCE_FILE_NODE, .flags = flags, .node_id = node_id, .location = location },
4269 .filepath = filepath
4283 .
base = { .
type = PM_SOURCE_LINE_NODE, .flags = flags, .node_id = node_id, .location = location }
4297 .
base = { .
type = PM_SPLAT_NODE, .flags = flags, .node_id = node_id, .location = location },
4298 .operator_loc = operator_loc,
4299 .expression = expression
4313 .
base = { .
type = PM_STATEMENTS_NODE, .flags = flags, .node_id = node_id, .location = location },
4328 .
base = { .
type = PM_STRING_NODE, .flags = flags, .node_id = node_id, .location = location },
4329 .opening_loc = opening_loc,
4330 .content_loc = content_loc,
4331 .closing_loc = closing_loc,
4332 .unescaped = unescaped
4346 .
base = { .
type = PM_SUPER_NODE, .flags = flags, .node_id = node_id, .location = location },
4347 .keyword_loc = keyword_loc,
4348 .lparen_loc = lparen_loc,
4349 .arguments = arguments,
4350 .rparen_loc = rparen_loc,
4365 .
base = { .
type = PM_SYMBOL_NODE, .flags = flags, .node_id = node_id, .location = location },
4366 .opening_loc = opening_loc,
4367 .value_loc = value_loc,
4368 .closing_loc = closing_loc,
4369 .unescaped = unescaped
4383 .
base = { .
type = PM_TRUE_NODE, .flags = flags, .node_id = node_id, .location = location }
4397 .
base = { .
type = PM_UNDEF_NODE, .flags = flags, .node_id = node_id, .location = location },
4399 .keyword_loc = keyword_loc
4413 .
base = { .
type = PM_UNLESS_NODE, .flags = flags, .node_id = node_id, .location = location },
4414 .keyword_loc = keyword_loc,
4415 .predicate = predicate,
4416 .then_keyword_loc = then_keyword_loc,
4417 .statements = statements,
4418 .else_clause = else_clause,
4433 .
base = { .
type = PM_UNTIL_NODE, .flags = flags, .node_id = node_id, .location = location },
4434 .keyword_loc = keyword_loc,
4435 .do_keyword_loc = do_keyword_loc,
4436 .closing_loc = closing_loc,
4437 .predicate = predicate,
4438 .statements = statements
4452 .
base = { .
type = PM_WHEN_NODE, .flags = flags, .node_id = node_id, .location = location },
4453 .keyword_loc = keyword_loc,
4454 .conditions = conditions,
4455 .then_keyword_loc = then_keyword_loc,
4456 .statements = statements
4470 .
base = { .
type = PM_WHILE_NODE, .flags = flags, .node_id = node_id, .location = location },
4471 .keyword_loc = keyword_loc,
4472 .do_keyword_loc = do_keyword_loc,
4473 .closing_loc = closing_loc,
4474 .predicate = predicate,
4475 .statements = statements
4489 .
base = { .
type = PM_X_STRING_NODE, .flags = flags, .node_id = node_id, .location = location },
4490 .opening_loc = opening_loc,
4491 .content_loc = content_loc,
4492 .closing_loc = closing_loc,
4493 .unescaped = unescaped
4507 .
base = { .
type = PM_YIELD_NODE, .flags = flags, .node_id = node_id, .location = location },
4508 .keyword_loc = keyword_loc,
4509 .lparen_loc = lparen_loc,
4510 .arguments = arguments,
4511 .rparen_loc = rparen_loc
#define PRISM_ALIGNOF
Get the alignment requirement of a type.
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_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_NODE_ALIGNAS struct pm_node * new_name
AliasMethodNode::new_name.
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_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.
struct pm_node_list elements
ArrayNode::elements.
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_node_t base
The embedded base node.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
AssocSplatNode::value.
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_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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * parameters
BlockNode::parameters.
PM_NODE_ALIGNAS struct pm_node * body
BlockNode::body.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
BreakNode::arguments.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
CallNode::arguments.
PM_NODE_ALIGNAS struct pm_node * block
CallNode::block.
PM_NODE_ALIGNAS struct pm_node * receiver
CallNode::receiver.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * receiver
CallOperatorWriteNode::receiver.
PM_NODE_ALIGNAS struct pm_node * value
CallOperatorWriteNode::value.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * receiver
CallTargetNode::receiver.
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.
struct pm_node_list conditions
CaseMatchNode::conditions.
pm_node_t base
The embedded base node.
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_NODE_ALIGNAS struct pm_node * superclass
ClassNode::superclass.
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_node_t base
The embedded base node.
ClassVariableOperatorWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOperatorWriteNode::value.
ClassVariableOrWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOrWriteNode::value.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableWriteNode::value.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantAndWriteNode::value.
pm_node_t base
The embedded base node.
ConstantOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
ConstantOperatorWriteNode::value.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantOrWriteNode::value.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathNode::parent.
ConstantPathOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOperatorWriteNode::value.
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_NODE_ALIGNAS struct pm_node * parent
ConstantPathTargetNode::parent.
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathWriteNode::value.
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_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
ConstantWriteNode::value.
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
DefNode::parameters.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * receiver
DefNode::receiver.
PM_NODE_ALIGNAS struct pm_node * body
DefNode::body.
PM_NODE_ALIGNAS struct pm_node * value
DefinedNode::value.
pm_node_t base
The embedded base node.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * variable
EmbeddedVariableNode::variable.
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 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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * constant
FindPatternNode::constant.
struct pm_node_list requireds
FindPatternNode::requireds.
PM_NODE_ALIGNAS struct pm_node * left
FlipFlopNode::left.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * right
FlipFlopNode::right.
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_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.
GlobalVariableAndWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableAndWriteNode::value.
GlobalVariableOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOperatorWriteNode::value.
pm_node_t base
The embedded base node.
GlobalVariableOrWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOrWriteNode::value.
pm_node_t base
The embedded base node.
GlobalVariableTargetNode.
pm_node_t base
The embedded base node.
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_NODE_ALIGNAS struct pm_node * constant
HashPatternNode::constant.
struct pm_node_list elements
HashPatternNode::elements.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * rest
HashPatternNode::rest.
PM_NODE_ALIGNAS struct pm_node * predicate
IfNode::predicate.
PM_NODE_ALIGNAS struct pm_statements_node * statements
IfNode::statements.
pm_node_t base
The embedded base node.
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_NODE_ALIGNAS struct pm_node * pattern
InNode::pattern.
PM_NODE_ALIGNAS struct pm_statements_node * statements
InNode::statements.
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_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_NODE_ALIGNAS struct pm_node * value
IndexOperatorWriteNode::value.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
pm_node_t base
The embedded base node.
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_NODE_ALIGNAS struct pm_block_argument_node * block
IndexTargetNode::block.
PM_NODE_ALIGNAS struct pm_node * receiver
IndexTargetNode::receiver.
InstanceVariableAndWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableAndWriteNode::value.
pm_node_t base
The embedded base node.
InstanceVariableOperatorWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOperatorWriteNode::value.
pm_node_t base
The embedded base node.
InstanceVariableOrWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOrWriteNode::value.
InstanceVariableReadNode.
pm_node_t base
The embedded base node.
InstanceVariableTargetNode.
pm_node_t base
The embedded base node.
InstanceVariableWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableWriteNode::value.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
A structure represents an arbitrary-sized integer.
InterpolatedMatchLastLineNode.
pm_node_t base
The embedded base node.
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
InterpolatedRegularExpressionNode.
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
struct pm_node_list parts
InterpolatedStringNode::parts.
struct pm_node_list parts
InterpolatedSymbolNode::parts.
pm_node_t base
The embedded base node.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * body
LambdaNode::body.
PM_NODE_ALIGNAS struct pm_node * parameters
LambdaNode::parameters.
LocalVariableAndWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableAndWriteNode::value.
LocalVariableOperatorWriteNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOperatorWriteNode::value.
LocalVariableOrWriteNode.
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOrWriteNode::value.
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 * value
LocalVariableWriteNode::value.
pm_node_t base
The embedded base node.
This struct represents a slice in the source code, defined by an offset and a length.
pm_node_t base
The embedded base node.
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_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_NODE_ALIGNAS struct pm_node * constant_path
ModuleNode::constant_path.
PM_NODE_ALIGNAS struct pm_node * body
ModuleNode::body.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * rest
MultiTargetNode::rest.
pm_node_t base
The embedded base node.
struct pm_node_list lefts
MultiTargetNode::lefts.
struct pm_node_list rights
MultiTargetNode::rights.
PM_NODE_ALIGNAS struct pm_node * rest
MultiWriteNode::rest.
struct pm_node_list rights
MultiWriteNode::rights.
PM_NODE_ALIGNAS struct pm_node * value
MultiWriteNode::value.
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_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
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.
size_t capacity
The capacity of the list that has been allocated.
This is the base structure that represents a node in the syntax tree.
pm_node_type_t type
This represents the type of the node.
pm_node_t base
The embedded base node.
NumberedReferenceReadNode.
pm_node_t base
The embedded base node.
OptionalKeywordParameterNode.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * value
OptionalKeywordParameterNode::value.
pm_node_t base
The embedded base node.
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_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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * body
ParenthesesNode::body.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * expression
PinnedExpressionNode::expression.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * variable
PinnedVariableNode::variable.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
PostExecutionNode::statements.
PM_NODE_ALIGNAS struct pm_statements_node * statements
PreExecutionNode::statements.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
ProgramNode::statements.
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_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
RequiredKeywordParameterNode.
pm_node_t base
The embedded base node.
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_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_NODE_ALIGNAS struct pm_node * reference
RescueNode::reference.
struct pm_node_list exceptions
RescueNode::exceptions.
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_arguments_node * arguments
ReturnNode::arguments.
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_NODE_ALIGNAS struct pm_node * expression
SingletonClassNode::expression.
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_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * expression
SplatNode::expression.
struct pm_node_list body
StatementsNode::body.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
A generic string type that can have various ownership semantics.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
SuperNode::arguments.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * block
SuperNode::block.
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 names
UndefNode::names.
PM_NODE_ALIGNAS struct pm_node * predicate
UnlessNode::predicate.
PM_NODE_ALIGNAS struct pm_statements_node * statements
UnlessNode::statements.
PM_NODE_ALIGNAS struct pm_else_node * else_clause
UnlessNode::else_clause.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_statements_node * statements
UntilNode::statements.
PM_NODE_ALIGNAS struct pm_node * predicate
UntilNode::predicate.
pm_node_t base
The embedded base node.
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_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_node * predicate
WhileNode::predicate.
pm_node_t base
The embedded base node.
pm_node_t base
The embedded base node.
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
YieldNode::arguments.