11#line 2 "prism/templates/ext/prism/api_node.c.erb"
12#include "prism/extension.h"
14extern VALUE rb_cPrism;
15extern VALUE rb_cPrismNode;
16extern VALUE rb_cPrismSource;
17extern VALUE rb_cPrismToken;
18extern VALUE rb_cPrismLocation;
20static VALUE rb_cPrismAliasGlobalVariableNode;
21static VALUE rb_cPrismAliasMethodNode;
22static VALUE rb_cPrismAlternationPatternNode;
23static VALUE rb_cPrismAndNode;
24static VALUE rb_cPrismArgumentsNode;
25static VALUE rb_cPrismArrayNode;
26static VALUE rb_cPrismArrayPatternNode;
27static VALUE rb_cPrismAssocNode;
28static VALUE rb_cPrismAssocSplatNode;
29static VALUE rb_cPrismBackReferenceReadNode;
30static VALUE rb_cPrismBeginNode;
31static VALUE rb_cPrismBlockArgumentNode;
32static VALUE rb_cPrismBlockLocalVariableNode;
33static VALUE rb_cPrismBlockNode;
34static VALUE rb_cPrismBlockParameterNode;
35static VALUE rb_cPrismBlockParametersNode;
36static VALUE rb_cPrismBreakNode;
37static VALUE rb_cPrismCallAndWriteNode;
38static VALUE rb_cPrismCallNode;
39static VALUE rb_cPrismCallOperatorWriteNode;
40static VALUE rb_cPrismCallOrWriteNode;
41static VALUE rb_cPrismCallTargetNode;
42static VALUE rb_cPrismCapturePatternNode;
43static VALUE rb_cPrismCaseMatchNode;
44static VALUE rb_cPrismCaseNode;
45static VALUE rb_cPrismClassNode;
46static VALUE rb_cPrismClassVariableAndWriteNode;
47static VALUE rb_cPrismClassVariableOperatorWriteNode;
48static VALUE rb_cPrismClassVariableOrWriteNode;
49static VALUE rb_cPrismClassVariableReadNode;
50static VALUE rb_cPrismClassVariableTargetNode;
51static VALUE rb_cPrismClassVariableWriteNode;
52static VALUE rb_cPrismConstantAndWriteNode;
53static VALUE rb_cPrismConstantOperatorWriteNode;
54static VALUE rb_cPrismConstantOrWriteNode;
55static VALUE rb_cPrismConstantPathAndWriteNode;
56static VALUE rb_cPrismConstantPathNode;
57static VALUE rb_cPrismConstantPathOperatorWriteNode;
58static VALUE rb_cPrismConstantPathOrWriteNode;
59static VALUE rb_cPrismConstantPathTargetNode;
60static VALUE rb_cPrismConstantPathWriteNode;
61static VALUE rb_cPrismConstantReadNode;
62static VALUE rb_cPrismConstantTargetNode;
63static VALUE rb_cPrismConstantWriteNode;
64static VALUE rb_cPrismDefNode;
65static VALUE rb_cPrismDefinedNode;
66static VALUE rb_cPrismElseNode;
67static VALUE rb_cPrismEmbeddedStatementsNode;
68static VALUE rb_cPrismEmbeddedVariableNode;
69static VALUE rb_cPrismEnsureNode;
70static VALUE rb_cPrismFalseNode;
71static VALUE rb_cPrismFindPatternNode;
72static VALUE rb_cPrismFlipFlopNode;
73static VALUE rb_cPrismFloatNode;
74static VALUE rb_cPrismForNode;
75static VALUE rb_cPrismForwardingArgumentsNode;
76static VALUE rb_cPrismForwardingParameterNode;
77static VALUE rb_cPrismForwardingSuperNode;
78static VALUE rb_cPrismGlobalVariableAndWriteNode;
79static VALUE rb_cPrismGlobalVariableOperatorWriteNode;
80static VALUE rb_cPrismGlobalVariableOrWriteNode;
81static VALUE rb_cPrismGlobalVariableReadNode;
82static VALUE rb_cPrismGlobalVariableTargetNode;
83static VALUE rb_cPrismGlobalVariableWriteNode;
84static VALUE rb_cPrismHashNode;
85static VALUE rb_cPrismHashPatternNode;
86static VALUE rb_cPrismIfNode;
87static VALUE rb_cPrismImaginaryNode;
88static VALUE rb_cPrismImplicitNode;
89static VALUE rb_cPrismImplicitRestNode;
90static VALUE rb_cPrismInNode;
91static VALUE rb_cPrismIndexAndWriteNode;
92static VALUE rb_cPrismIndexOperatorWriteNode;
93static VALUE rb_cPrismIndexOrWriteNode;
94static VALUE rb_cPrismIndexTargetNode;
95static VALUE rb_cPrismInstanceVariableAndWriteNode;
96static VALUE rb_cPrismInstanceVariableOperatorWriteNode;
97static VALUE rb_cPrismInstanceVariableOrWriteNode;
98static VALUE rb_cPrismInstanceVariableReadNode;
99static VALUE rb_cPrismInstanceVariableTargetNode;
100static VALUE rb_cPrismInstanceVariableWriteNode;
101static VALUE rb_cPrismIntegerNode;
102static VALUE rb_cPrismInterpolatedMatchLastLineNode;
103static VALUE rb_cPrismInterpolatedRegularExpressionNode;
104static VALUE rb_cPrismInterpolatedStringNode;
105static VALUE rb_cPrismInterpolatedSymbolNode;
106static VALUE rb_cPrismInterpolatedXStringNode;
107static VALUE rb_cPrismItLocalVariableReadNode;
108static VALUE rb_cPrismItParametersNode;
109static VALUE rb_cPrismKeywordHashNode;
110static VALUE rb_cPrismKeywordRestParameterNode;
111static VALUE rb_cPrismLambdaNode;
112static VALUE rb_cPrismLocalVariableAndWriteNode;
113static VALUE rb_cPrismLocalVariableOperatorWriteNode;
114static VALUE rb_cPrismLocalVariableOrWriteNode;
115static VALUE rb_cPrismLocalVariableReadNode;
116static VALUE rb_cPrismLocalVariableTargetNode;
117static VALUE rb_cPrismLocalVariableWriteNode;
118static VALUE rb_cPrismMatchLastLineNode;
119static VALUE rb_cPrismMatchPredicateNode;
120static VALUE rb_cPrismMatchRequiredNode;
121static VALUE rb_cPrismMatchWriteNode;
122static VALUE rb_cPrismMissingNode;
123static VALUE rb_cPrismModuleNode;
124static VALUE rb_cPrismMultiTargetNode;
125static VALUE rb_cPrismMultiWriteNode;
126static VALUE rb_cPrismNextNode;
127static VALUE rb_cPrismNilNode;
128static VALUE rb_cPrismNoKeywordsParameterNode;
129static VALUE rb_cPrismNumberedParametersNode;
130static VALUE rb_cPrismNumberedReferenceReadNode;
131static VALUE rb_cPrismOptionalKeywordParameterNode;
132static VALUE rb_cPrismOptionalParameterNode;
133static VALUE rb_cPrismOrNode;
134static VALUE rb_cPrismParametersNode;
135static VALUE rb_cPrismParenthesesNode;
136static VALUE rb_cPrismPinnedExpressionNode;
137static VALUE rb_cPrismPinnedVariableNode;
138static VALUE rb_cPrismPostExecutionNode;
139static VALUE rb_cPrismPreExecutionNode;
140static VALUE rb_cPrismProgramNode;
141static VALUE rb_cPrismRangeNode;
142static VALUE rb_cPrismRationalNode;
143static VALUE rb_cPrismRedoNode;
144static VALUE rb_cPrismRegularExpressionNode;
145static VALUE rb_cPrismRequiredKeywordParameterNode;
146static VALUE rb_cPrismRequiredParameterNode;
147static VALUE rb_cPrismRescueModifierNode;
148static VALUE rb_cPrismRescueNode;
149static VALUE rb_cPrismRestParameterNode;
150static VALUE rb_cPrismRetryNode;
151static VALUE rb_cPrismReturnNode;
152static VALUE rb_cPrismSelfNode;
153static VALUE rb_cPrismShareableConstantNode;
154static VALUE rb_cPrismSingletonClassNode;
155static VALUE rb_cPrismSourceEncodingNode;
156static VALUE rb_cPrismSourceFileNode;
157static VALUE rb_cPrismSourceLineNode;
158static VALUE rb_cPrismSplatNode;
159static VALUE rb_cPrismStatementsNode;
160static VALUE rb_cPrismStringNode;
161static VALUE rb_cPrismSuperNode;
162static VALUE rb_cPrismSymbolNode;
163static VALUE rb_cPrismTrueNode;
164static VALUE rb_cPrismUndefNode;
165static VALUE rb_cPrismUnlessNode;
166static VALUE rb_cPrismUntilNode;
167static VALUE rb_cPrismWhenNode;
168static VALUE rb_cPrismWhileNode;
169static VALUE rb_cPrismXStringNode;
170static VALUE rb_cPrismYieldNode;
173pm_location_new(
const pm_parser_t *parser,
const uint8_t *start,
const uint8_t *end,
VALUE source,
bool freeze) {
175 VALUE location_argv[] = {
183 uint64_t value = ((((uint64_t) (start - parser->
start)) << 32) | ((uint32_t) (end - start)));
191 VALUE location = pm_location_new(parser, token->start, token->end, source, freeze);
193 VALUE slice = rb_enc_str_new((
const char *) token->start, token->end - token->start, encoding);
204pm_string_new(
const pm_string_t *
string, rb_encoding *encoding) {
205 return rb_obj_freeze(rb_enc_str_new((
const char *) pm_string_source(
string), pm_string_length(
string), encoding));
211 if (integer->
values == NULL) {
215 unsigned char *bytes = (
unsigned char *) RSTRING_PTR(
string);
217 size_t offset = integer->
length * 8;
218 for (
size_t value_index = 0; value_index < integer->
length; value_index++) {
219 uint32_t value = integer->
values[value_index];
221 for (
int index = 0; index < 8; index++) {
222 int byte = (value >> (4 * index)) & 0xf;
223 bytes[--offset] =
byte < 10 ?
byte +
'0' :
byte - 10 +
'a';
231 result =
rb_funcall(result, rb_intern(
"-@"), 0);
239pm_source_new(
const pm_parser_t *parser, rb_encoding *encoding,
bool freeze) {
240 VALUE source_string = rb_enc_str_new((
const char *) parser->
start, parser->
end - parser->
start, encoding);
260 const pm_node_t *visit;
262} pm_node_stack_node_t;
265pm_node_stack_push(pm_node_stack_node_t **stack,
const pm_node_t *visit) {
266 pm_node_stack_node_t *node =
xmalloc(
sizeof(pm_node_stack_node_t));
269 node->visited =
false;
273static const pm_node_t *
274pm_node_stack_pop(pm_node_stack_node_t **stack) {
275 pm_node_stack_node_t *current = *stack;
276 const pm_node_t *visit = current->visit;
278 *stack = current->prev;
285pm_ast_new(
const pm_parser_t *parser,
const pm_node_t *node, rb_encoding *encoding,
VALUE source,
bool freeze) {
292 VALUE string = rb_enc_str_new((
const char *) constant->
start, constant->
length, encoding);
297 rb_set_errinfo(
Qnil);
300 rb_ary_push(constants, value);
303 pm_node_stack_node_t *node_stack = NULL;
304 pm_node_stack_push(&node_stack, node);
307 while (node_stack != NULL) {
308 if (!node_stack->visited) {
309 if (node_stack->visit == NULL) {
310 pm_node_stack_pop(&node_stack);
311 rb_ary_push(value_stack,
Qnil);
315 const pm_node_t *node = node_stack->visit;
316 node_stack->visited =
true;
318 switch (PM_NODE_TYPE(node)) {
319#line 164 "prism/templates/ext/prism/api_node.c.erb"
320 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
321 pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
322 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
new_name);
323 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
old_name);
326#line 164 "prism/templates/ext/prism/api_node.c.erb"
327 case PM_ALIAS_METHOD_NODE: {
328 pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
329 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
new_name);
330 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
old_name);
333#line 164 "prism/templates/ext/prism/api_node.c.erb"
334 case PM_ALTERNATION_PATTERN_NODE: {
335 pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
336 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
left);
337 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
right);
340#line 164 "prism/templates/ext/prism/api_node.c.erb"
342 pm_and_node_t *cast = (pm_and_node_t *) node;
343 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
left);
344 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
right);
347#line 164 "prism/templates/ext/prism/api_node.c.erb"
348 case PM_ARGUMENTS_NODE: {
349 pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
350 for (
size_t index = 0; index < cast->
arguments.
size; index++) {
351 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments.
nodes[index]);
355#line 164 "prism/templates/ext/prism/api_node.c.erb"
356 case PM_ARRAY_NODE: {
357 pm_array_node_t *cast = (pm_array_node_t *) node;
358 for (
size_t index = 0; index < cast->
elements.
size; index++) {
359 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
elements.
nodes[index]);
363#line 164 "prism/templates/ext/prism/api_node.c.erb"
364 case PM_ARRAY_PATTERN_NODE: {
365 pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
366 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
constant);
367 for (
size_t index = 0; index < cast->
requireds.
size; index++) {
368 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
requireds.
nodes[index]);
370 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rest);
371 for (
size_t index = 0; index < cast->
posts.
size; index++) {
372 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
posts.
nodes[index]);
376#line 164 "prism/templates/ext/prism/api_node.c.erb"
377 case PM_ASSOC_NODE: {
378 pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
379 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
key);
380 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
383#line 164 "prism/templates/ext/prism/api_node.c.erb"
384 case PM_ASSOC_SPLAT_NODE: {
385 pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
386 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
389#line 164 "prism/templates/ext/prism/api_node.c.erb"
390 case PM_BEGIN_NODE: {
391 pm_begin_node_t *cast = (pm_begin_node_t *) node;
392 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
393 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rescue_clause);
394 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
else_clause);
395 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
ensure_clause);
398#line 164 "prism/templates/ext/prism/api_node.c.erb"
399 case PM_BLOCK_ARGUMENT_NODE: {
400 pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
401 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
expression);
404#line 164 "prism/templates/ext/prism/api_node.c.erb"
405 case PM_BLOCK_NODE: {
406 pm_block_node_t *cast = (pm_block_node_t *) node;
407 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parameters);
408 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
411#line 164 "prism/templates/ext/prism/api_node.c.erb"
412 case PM_BLOCK_PARAMETERS_NODE: {
413 pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
414 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parameters);
415 for (
size_t index = 0; index < cast->
locals.
size; index++) {
416 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
locals.
nodes[index]);
420#line 164 "prism/templates/ext/prism/api_node.c.erb"
421 case PM_BREAK_NODE: {
422 pm_break_node_t *cast = (pm_break_node_t *) node;
423 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
426#line 164 "prism/templates/ext/prism/api_node.c.erb"
427 case PM_CALL_AND_WRITE_NODE: {
428 pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
429 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
430 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
433#line 164 "prism/templates/ext/prism/api_node.c.erb"
435 pm_call_node_t *cast = (pm_call_node_t *) node;
436 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
437 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
438 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
441#line 164 "prism/templates/ext/prism/api_node.c.erb"
442 case PM_CALL_OPERATOR_WRITE_NODE: {
443 pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
444 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
445 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
448#line 164 "prism/templates/ext/prism/api_node.c.erb"
449 case PM_CALL_OR_WRITE_NODE: {
450 pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
451 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
452 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
455#line 164 "prism/templates/ext/prism/api_node.c.erb"
456 case PM_CALL_TARGET_NODE: {
457 pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
458 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
461#line 164 "prism/templates/ext/prism/api_node.c.erb"
462 case PM_CAPTURE_PATTERN_NODE: {
463 pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
464 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
465 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
target);
468#line 164 "prism/templates/ext/prism/api_node.c.erb"
469 case PM_CASE_MATCH_NODE: {
470 pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
471 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
predicate);
473 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
conditions.
nodes[index]);
475 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
else_clause);
478#line 164 "prism/templates/ext/prism/api_node.c.erb"
480 pm_case_node_t *cast = (pm_case_node_t *) node;
481 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
predicate);
483 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
conditions.
nodes[index]);
485 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
else_clause);
488#line 164 "prism/templates/ext/prism/api_node.c.erb"
489 case PM_CLASS_NODE: {
490 pm_class_node_t *cast = (pm_class_node_t *) node;
491 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
constant_path);
492 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
superclass);
493 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
496#line 164 "prism/templates/ext/prism/api_node.c.erb"
497 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
498 pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
499 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
502#line 164 "prism/templates/ext/prism/api_node.c.erb"
503 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
504 pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
505 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
508#line 164 "prism/templates/ext/prism/api_node.c.erb"
509 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
510 pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
511 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
514#line 164 "prism/templates/ext/prism/api_node.c.erb"
515 case PM_CLASS_VARIABLE_WRITE_NODE: {
516 pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
517 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
520#line 164 "prism/templates/ext/prism/api_node.c.erb"
521 case PM_CONSTANT_AND_WRITE_NODE: {
522 pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
523 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
526#line 164 "prism/templates/ext/prism/api_node.c.erb"
527 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
528 pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
529 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
532#line 164 "prism/templates/ext/prism/api_node.c.erb"
533 case PM_CONSTANT_OR_WRITE_NODE: {
534 pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
535 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
538#line 164 "prism/templates/ext/prism/api_node.c.erb"
539 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
540 pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
541 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
target);
542 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
545#line 164 "prism/templates/ext/prism/api_node.c.erb"
546 case PM_CONSTANT_PATH_NODE: {
547 pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
548 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parent);
551#line 164 "prism/templates/ext/prism/api_node.c.erb"
552 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
553 pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
554 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
target);
555 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
558#line 164 "prism/templates/ext/prism/api_node.c.erb"
559 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
560 pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
561 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
target);
562 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
565#line 164 "prism/templates/ext/prism/api_node.c.erb"
566 case PM_CONSTANT_PATH_TARGET_NODE: {
567 pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
568 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parent);
571#line 164 "prism/templates/ext/prism/api_node.c.erb"
572 case PM_CONSTANT_PATH_WRITE_NODE: {
573 pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
574 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
target);
575 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
578#line 164 "prism/templates/ext/prism/api_node.c.erb"
579 case PM_CONSTANT_WRITE_NODE: {
580 pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
581 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
584#line 164 "prism/templates/ext/prism/api_node.c.erb"
586 pm_def_node_t *cast = (pm_def_node_t *) node;
587 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
588 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parameters);
589 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
592#line 164 "prism/templates/ext/prism/api_node.c.erb"
593 case PM_DEFINED_NODE: {
594 pm_defined_node_t *cast = (pm_defined_node_t *) node;
595 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
598#line 164 "prism/templates/ext/prism/api_node.c.erb"
600 pm_else_node_t *cast = (pm_else_node_t *) node;
601 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
604#line 164 "prism/templates/ext/prism/api_node.c.erb"
605 case PM_EMBEDDED_STATEMENTS_NODE: {
606 pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
607 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
610#line 164 "prism/templates/ext/prism/api_node.c.erb"
611 case PM_EMBEDDED_VARIABLE_NODE: {
612 pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
613 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
variable);
616#line 164 "prism/templates/ext/prism/api_node.c.erb"
617 case PM_ENSURE_NODE: {
618 pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
619 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
622#line 164 "prism/templates/ext/prism/api_node.c.erb"
623 case PM_FIND_PATTERN_NODE: {
624 pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
625 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
constant);
626 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
left);
627 for (
size_t index = 0; index < cast->
requireds.
size; index++) {
628 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
requireds.
nodes[index]);
630 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
right);
633#line 164 "prism/templates/ext/prism/api_node.c.erb"
634 case PM_FLIP_FLOP_NODE: {
635 pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
636 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
left);
637 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
right);
640#line 164 "prism/templates/ext/prism/api_node.c.erb"
642 pm_for_node_t *cast = (pm_for_node_t *) node;
643 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
index);
644 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
collection);
645 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
648#line 164 "prism/templates/ext/prism/api_node.c.erb"
649 case PM_FORWARDING_SUPER_NODE: {
650 pm_forwarding_super_node_t *cast = (pm_forwarding_super_node_t *) node;
651 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
654#line 164 "prism/templates/ext/prism/api_node.c.erb"
655 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
656 pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
657 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
660#line 164 "prism/templates/ext/prism/api_node.c.erb"
661 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
662 pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
663 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
666#line 164 "prism/templates/ext/prism/api_node.c.erb"
667 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
668 pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
669 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
672#line 164 "prism/templates/ext/prism/api_node.c.erb"
673 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
674 pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
675 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
678#line 164 "prism/templates/ext/prism/api_node.c.erb"
680 pm_hash_node_t *cast = (pm_hash_node_t *) node;
681 for (
size_t index = 0; index < cast->
elements.
size; index++) {
682 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
elements.
nodes[index]);
686#line 164 "prism/templates/ext/prism/api_node.c.erb"
687 case PM_HASH_PATTERN_NODE: {
688 pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
689 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
constant);
690 for (
size_t index = 0; index < cast->
elements.
size; index++) {
691 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
elements.
nodes[index]);
693 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rest);
696#line 164 "prism/templates/ext/prism/api_node.c.erb"
698 pm_if_node_t *cast = (pm_if_node_t *) node;
699 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
predicate);
700 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
701 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
subsequent);
704#line 164 "prism/templates/ext/prism/api_node.c.erb"
705 case PM_IMAGINARY_NODE: {
706 pm_imaginary_node_t *cast = (pm_imaginary_node_t *) node;
707 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
numeric);
710#line 164 "prism/templates/ext/prism/api_node.c.erb"
711 case PM_IMPLICIT_NODE: {
712 pm_implicit_node_t *cast = (pm_implicit_node_t *) node;
713 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
716#line 164 "prism/templates/ext/prism/api_node.c.erb"
718 pm_in_node_t *cast = (pm_in_node_t *) node;
719 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
pattern);
720 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
723#line 164 "prism/templates/ext/prism/api_node.c.erb"
724 case PM_INDEX_AND_WRITE_NODE: {
725 pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
726 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
727 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
728 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
729 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
732#line 164 "prism/templates/ext/prism/api_node.c.erb"
733 case PM_INDEX_OPERATOR_WRITE_NODE: {
734 pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
735 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
736 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
737 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
738 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
741#line 164 "prism/templates/ext/prism/api_node.c.erb"
742 case PM_INDEX_OR_WRITE_NODE: {
743 pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
744 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
745 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
746 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
747 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
750#line 164 "prism/templates/ext/prism/api_node.c.erb"
751 case PM_INDEX_TARGET_NODE: {
752 pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
753 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
receiver);
754 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
755 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
758#line 164 "prism/templates/ext/prism/api_node.c.erb"
759 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
760 pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
761 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
764#line 164 "prism/templates/ext/prism/api_node.c.erb"
765 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
766 pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
767 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
770#line 164 "prism/templates/ext/prism/api_node.c.erb"
771 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
772 pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
773 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
776#line 164 "prism/templates/ext/prism/api_node.c.erb"
777 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
778 pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
779 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
782#line 164 "prism/templates/ext/prism/api_node.c.erb"
783 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
784 pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
785 for (
size_t index = 0; index < cast->
parts.
size; index++) {
786 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parts.
nodes[index]);
790#line 164 "prism/templates/ext/prism/api_node.c.erb"
791 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
792 pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
793 for (
size_t index = 0; index < cast->
parts.
size; index++) {
794 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parts.
nodes[index]);
798#line 164 "prism/templates/ext/prism/api_node.c.erb"
799 case PM_INTERPOLATED_STRING_NODE: {
800 pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
801 for (
size_t index = 0; index < cast->
parts.
size; index++) {
802 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parts.
nodes[index]);
806#line 164 "prism/templates/ext/prism/api_node.c.erb"
807 case PM_INTERPOLATED_SYMBOL_NODE: {
808 pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
809 for (
size_t index = 0; index < cast->
parts.
size; index++) {
810 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parts.
nodes[index]);
814#line 164 "prism/templates/ext/prism/api_node.c.erb"
815 case PM_INTERPOLATED_X_STRING_NODE: {
816 pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
817 for (
size_t index = 0; index < cast->
parts.
size; index++) {
818 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parts.
nodes[index]);
822#line 164 "prism/templates/ext/prism/api_node.c.erb"
823 case PM_KEYWORD_HASH_NODE: {
824 pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
825 for (
size_t index = 0; index < cast->
elements.
size; index++) {
826 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
elements.
nodes[index]);
830#line 164 "prism/templates/ext/prism/api_node.c.erb"
831 case PM_LAMBDA_NODE: {
832 pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
833 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
parameters);
834 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
837#line 164 "prism/templates/ext/prism/api_node.c.erb"
838 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
839 pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
840 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
843#line 164 "prism/templates/ext/prism/api_node.c.erb"
844 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
845 pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
846 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
849#line 164 "prism/templates/ext/prism/api_node.c.erb"
850 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
851 pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
852 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
855#line 164 "prism/templates/ext/prism/api_node.c.erb"
856 case PM_LOCAL_VARIABLE_WRITE_NODE: {
857 pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
858 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
861#line 164 "prism/templates/ext/prism/api_node.c.erb"
862 case PM_MATCH_PREDICATE_NODE: {
863 pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
864 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
865 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
pattern);
868#line 164 "prism/templates/ext/prism/api_node.c.erb"
869 case PM_MATCH_REQUIRED_NODE: {
870 pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
871 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
872 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
pattern);
875#line 164 "prism/templates/ext/prism/api_node.c.erb"
876 case PM_MATCH_WRITE_NODE: {
877 pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
878 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
call);
879 for (
size_t index = 0; index < cast->
targets.
size; index++) {
880 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
targets.
nodes[index]);
884#line 164 "prism/templates/ext/prism/api_node.c.erb"
885 case PM_MODULE_NODE: {
886 pm_module_node_t *cast = (pm_module_node_t *) node;
887 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
constant_path);
888 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
891#line 164 "prism/templates/ext/prism/api_node.c.erb"
892 case PM_MULTI_TARGET_NODE: {
893 pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
894 for (
size_t index = 0; index < cast->
lefts.
size; index++) {
895 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
lefts.
nodes[index]);
897 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rest);
898 for (
size_t index = 0; index < cast->
rights.
size; index++) {
899 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rights.
nodes[index]);
903#line 164 "prism/templates/ext/prism/api_node.c.erb"
904 case PM_MULTI_WRITE_NODE: {
905 pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
906 for (
size_t index = 0; index < cast->
lefts.
size; index++) {
907 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
lefts.
nodes[index]);
909 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rest);
910 for (
size_t index = 0; index < cast->
rights.
size; index++) {
911 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rights.
nodes[index]);
913 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
916#line 164 "prism/templates/ext/prism/api_node.c.erb"
918 pm_next_node_t *cast = (pm_next_node_t *) node;
919 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
922#line 164 "prism/templates/ext/prism/api_node.c.erb"
923 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
924 pm_optional_keyword_parameter_node_t *cast = (pm_optional_keyword_parameter_node_t *) node;
925 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
928#line 164 "prism/templates/ext/prism/api_node.c.erb"
929 case PM_OPTIONAL_PARAMETER_NODE: {
930 pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
931 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
value);
934#line 164 "prism/templates/ext/prism/api_node.c.erb"
936 pm_or_node_t *cast = (pm_or_node_t *) node;
937 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
left);
938 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
right);
941#line 164 "prism/templates/ext/prism/api_node.c.erb"
942 case PM_PARAMETERS_NODE: {
943 pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
944 for (
size_t index = 0; index < cast->
requireds.
size; index++) {
945 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
requireds.
nodes[index]);
947 for (
size_t index = 0; index < cast->
optionals.
size; index++) {
948 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
optionals.
nodes[index]);
950 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
rest);
951 for (
size_t index = 0; index < cast->
posts.
size; index++) {
952 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
posts.
nodes[index]);
954 for (
size_t index = 0; index < cast->
keywords.
size; index++) {
955 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
keywords.
nodes[index]);
957 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
keyword_rest);
958 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
961#line 164 "prism/templates/ext/prism/api_node.c.erb"
962 case PM_PARENTHESES_NODE: {
963 pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
964 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
967#line 164 "prism/templates/ext/prism/api_node.c.erb"
968 case PM_PINNED_EXPRESSION_NODE: {
969 pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
970 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
expression);
973#line 164 "prism/templates/ext/prism/api_node.c.erb"
974 case PM_PINNED_VARIABLE_NODE: {
975 pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
976 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
variable);
979#line 164 "prism/templates/ext/prism/api_node.c.erb"
980 case PM_POST_EXECUTION_NODE: {
981 pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
982 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
985#line 164 "prism/templates/ext/prism/api_node.c.erb"
986 case PM_PRE_EXECUTION_NODE: {
987 pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
988 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
991#line 164 "prism/templates/ext/prism/api_node.c.erb"
992 case PM_PROGRAM_NODE: {
993 pm_program_node_t *cast = (pm_program_node_t *) node;
994 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
997#line 164 "prism/templates/ext/prism/api_node.c.erb"
998 case PM_RANGE_NODE: {
999 pm_range_node_t *cast = (pm_range_node_t *) node;
1000 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
left);
1001 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
right);
1004#line 164 "prism/templates/ext/prism/api_node.c.erb"
1005 case PM_RESCUE_MODIFIER_NODE: {
1006 pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
1007 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
expression);
1011#line 164 "prism/templates/ext/prism/api_node.c.erb"
1012 case PM_RESCUE_NODE: {
1013 pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
1015 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
exceptions.
nodes[index]);
1017 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
reference);
1018 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
1019 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
subsequent);
1022#line 164 "prism/templates/ext/prism/api_node.c.erb"
1023 case PM_RETURN_NODE: {
1024 pm_return_node_t *cast = (pm_return_node_t *) node;
1025 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
1028#line 164 "prism/templates/ext/prism/api_node.c.erb"
1029 case PM_SHAREABLE_CONSTANT_NODE: {
1030 pm_shareable_constant_node_t *cast = (pm_shareable_constant_node_t *) node;
1031 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
write);
1034#line 164 "prism/templates/ext/prism/api_node.c.erb"
1035 case PM_SINGLETON_CLASS_NODE: {
1036 pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
1037 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
expression);
1038 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body);
1041#line 164 "prism/templates/ext/prism/api_node.c.erb"
1042 case PM_SPLAT_NODE: {
1043 pm_splat_node_t *cast = (pm_splat_node_t *) node;
1044 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
expression);
1047#line 164 "prism/templates/ext/prism/api_node.c.erb"
1048 case PM_STATEMENTS_NODE: {
1049 pm_statements_node_t *cast = (pm_statements_node_t *) node;
1050 for (
size_t index = 0; index < cast->
body.
size; index++) {
1051 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
body.
nodes[index]);
1055#line 164 "prism/templates/ext/prism/api_node.c.erb"
1056 case PM_SUPER_NODE: {
1057 pm_super_node_t *cast = (pm_super_node_t *) node;
1058 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
1059 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
block);
1062#line 164 "prism/templates/ext/prism/api_node.c.erb"
1063 case PM_UNDEF_NODE: {
1064 pm_undef_node_t *cast = (pm_undef_node_t *) node;
1065 for (
size_t index = 0; index < cast->
names.
size; index++) {
1066 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
names.
nodes[index]);
1070#line 164 "prism/templates/ext/prism/api_node.c.erb"
1071 case PM_UNLESS_NODE: {
1072 pm_unless_node_t *cast = (pm_unless_node_t *) node;
1073 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
predicate);
1074 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
1075 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
else_clause);
1078#line 164 "prism/templates/ext/prism/api_node.c.erb"
1079 case PM_UNTIL_NODE: {
1080 pm_until_node_t *cast = (pm_until_node_t *) node;
1081 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
predicate);
1082 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
1085#line 164 "prism/templates/ext/prism/api_node.c.erb"
1086 case PM_WHEN_NODE: {
1087 pm_when_node_t *cast = (pm_when_node_t *) node;
1089 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
conditions.
nodes[index]);
1091 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
1094#line 164 "prism/templates/ext/prism/api_node.c.erb"
1095 case PM_WHILE_NODE: {
1096 pm_while_node_t *cast = (pm_while_node_t *) node;
1097 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
predicate);
1098 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
statements);
1101#line 164 "prism/templates/ext/prism/api_node.c.erb"
1102 case PM_YIELD_NODE: {
1103 pm_yield_node_t *cast = (pm_yield_node_t *) node;
1104 pm_node_stack_push(&node_stack, (pm_node_t *) cast->
arguments);
1110#line 184 "prism/templates/ext/prism/api_node.c.erb"
1112 const pm_node_t *node = pm_node_stack_pop(&node_stack);
1114 switch (PM_NODE_TYPE(node)) {
1115#line 190 "prism/templates/ext/prism/api_node.c.erb"
1116 case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
1117 pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
1133#line 213 "prism/templates/ext/prism/api_node.c.erb"
1134 argv[4] = rb_ary_pop(value_stack);
1137#line 213 "prism/templates/ext/prism/api_node.c.erb"
1138 argv[5] = rb_ary_pop(value_stack);
1141#line 240 "prism/templates/ext/prism/api_node.c.erb"
1147 rb_ary_push(value_stack, value);
1150#line 190 "prism/templates/ext/prism/api_node.c.erb"
1151 case PM_ALIAS_METHOD_NODE: {
1152 pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
1168#line 213 "prism/templates/ext/prism/api_node.c.erb"
1169 argv[4] = rb_ary_pop(value_stack);
1172#line 213 "prism/templates/ext/prism/api_node.c.erb"
1173 argv[5] = rb_ary_pop(value_stack);
1176#line 240 "prism/templates/ext/prism/api_node.c.erb"
1182 rb_ary_push(value_stack, value);
1185#line 190 "prism/templates/ext/prism/api_node.c.erb"
1186 case PM_ALTERNATION_PATTERN_NODE: {
1187 pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
1203#line 213 "prism/templates/ext/prism/api_node.c.erb"
1204 argv[4] = rb_ary_pop(value_stack);
1207#line 213 "prism/templates/ext/prism/api_node.c.erb"
1208 argv[5] = rb_ary_pop(value_stack);
1211#line 240 "prism/templates/ext/prism/api_node.c.erb"
1217 rb_ary_push(value_stack, value);
1220#line 190 "prism/templates/ext/prism/api_node.c.erb"
1222 pm_and_node_t *cast = (pm_and_node_t *) node;
1238#line 213 "prism/templates/ext/prism/api_node.c.erb"
1239 argv[4] = rb_ary_pop(value_stack);
1242#line 213 "prism/templates/ext/prism/api_node.c.erb"
1243 argv[5] = rb_ary_pop(value_stack);
1246#line 240 "prism/templates/ext/prism/api_node.c.erb"
1252 rb_ary_push(value_stack, value);
1255#line 190 "prism/templates/ext/prism/api_node.c.erb"
1256 case PM_ARGUMENTS_NODE: {
1257 pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
1273#line 216 "prism/templates/ext/prism/api_node.c.erb"
1275 for (
size_t index = 0; index < cast->
arguments.
size; index++) {
1276 rb_ary_push(argv[4], rb_ary_pop(value_stack));
1283 rb_ary_push(value_stack, value);
1286#line 190 "prism/templates/ext/prism/api_node.c.erb"
1287 case PM_ARRAY_NODE: {
1288 pm_array_node_t *cast = (pm_array_node_t *) node;
1304#line 216 "prism/templates/ext/prism/api_node.c.erb"
1306 for (
size_t index = 0; index < cast->
elements.
size; index++) {
1307 rb_ary_push(argv[4], rb_ary_pop(value_stack));
1312#line 243 "prism/templates/ext/prism/api_node.c.erb"
1316#line 243 "prism/templates/ext/prism/api_node.c.erb"
1322 rb_ary_push(value_stack, value);
1325#line 190 "prism/templates/ext/prism/api_node.c.erb"
1326 case PM_ARRAY_PATTERN_NODE: {
1327 pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
1343#line 213 "prism/templates/ext/prism/api_node.c.erb"
1344 argv[4] = rb_ary_pop(value_stack);
1347#line 216 "prism/templates/ext/prism/api_node.c.erb"
1349 for (
size_t index = 0; index < cast->
requireds.
size; index++) {
1350 rb_ary_push(argv[5], rb_ary_pop(value_stack));
1355#line 213 "prism/templates/ext/prism/api_node.c.erb"
1356 argv[6] = rb_ary_pop(value_stack);
1359#line 216 "prism/templates/ext/prism/api_node.c.erb"
1360 argv[7] = rb_ary_new_capa(cast->
posts.
size);
1361 for (
size_t index = 0; index < cast->
posts.
size; index++) {
1362 rb_ary_push(argv[7], rb_ary_pop(value_stack));
1367#line 243 "prism/templates/ext/prism/api_node.c.erb"
1371#line 243 "prism/templates/ext/prism/api_node.c.erb"
1377 rb_ary_push(value_stack, value);
1380#line 190 "prism/templates/ext/prism/api_node.c.erb"
1381 case PM_ASSOC_NODE: {
1382 pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
1398#line 213 "prism/templates/ext/prism/api_node.c.erb"
1399 argv[4] = rb_ary_pop(value_stack);
1402#line 213 "prism/templates/ext/prism/api_node.c.erb"
1403 argv[5] = rb_ary_pop(value_stack);
1406#line 243 "prism/templates/ext/prism/api_node.c.erb"
1412 rb_ary_push(value_stack, value);
1415#line 190 "prism/templates/ext/prism/api_node.c.erb"
1416 case PM_ASSOC_SPLAT_NODE: {
1417 pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
1433#line 213 "prism/templates/ext/prism/api_node.c.erb"
1434 argv[4] = rb_ary_pop(value_stack);
1437#line 240 "prism/templates/ext/prism/api_node.c.erb"
1443 rb_ary_push(value_stack, value);
1446#line 190 "prism/templates/ext/prism/api_node.c.erb"
1447 case PM_BACK_REFERENCE_READ_NODE: {
1448 pm_back_reference_read_node_t *cast = (pm_back_reference_read_node_t *) node;
1464#line 226 "prism/templates/ext/prism/api_node.c.erb"
1465 assert(cast->
name != 0);
1471 rb_ary_push(value_stack, value);
1474#line 190 "prism/templates/ext/prism/api_node.c.erb"
1475 case PM_BEGIN_NODE: {
1476 pm_begin_node_t *cast = (pm_begin_node_t *) node;
1492#line 243 "prism/templates/ext/prism/api_node.c.erb"
1496#line 213 "prism/templates/ext/prism/api_node.c.erb"
1497 argv[5] = rb_ary_pop(value_stack);
1500#line 213 "prism/templates/ext/prism/api_node.c.erb"
1501 argv[6] = rb_ary_pop(value_stack);
1504#line 213 "prism/templates/ext/prism/api_node.c.erb"
1505 argv[7] = rb_ary_pop(value_stack);
1508#line 213 "prism/templates/ext/prism/api_node.c.erb"
1509 argv[8] = rb_ary_pop(value_stack);
1512#line 243 "prism/templates/ext/prism/api_node.c.erb"
1518 rb_ary_push(value_stack, value);
1521#line 190 "prism/templates/ext/prism/api_node.c.erb"
1522 case PM_BLOCK_ARGUMENT_NODE: {
1523 pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
1539#line 213 "prism/templates/ext/prism/api_node.c.erb"
1540 argv[4] = rb_ary_pop(value_stack);
1543#line 240 "prism/templates/ext/prism/api_node.c.erb"
1549 rb_ary_push(value_stack, value);
1552#line 190 "prism/templates/ext/prism/api_node.c.erb"
1553 case PM_BLOCK_LOCAL_VARIABLE_NODE: {
1554 pm_block_local_variable_node_t *cast = (pm_block_local_variable_node_t *) node;
1570#line 226 "prism/templates/ext/prism/api_node.c.erb"
1571 assert(cast->
name != 0);
1577 rb_ary_push(value_stack, value);
1580#line 190 "prism/templates/ext/prism/api_node.c.erb"
1581 case PM_BLOCK_NODE: {
1582 pm_block_node_t *cast = (pm_block_node_t *) node;
1598#line 232 "prism/templates/ext/prism/api_node.c.erb"
1599 argv[4] = rb_ary_new_capa(cast->
locals.
size);
1600 for (
size_t index = 0; index < cast->
locals.
size; index++) {
1607#line 213 "prism/templates/ext/prism/api_node.c.erb"
1608 argv[5] = rb_ary_pop(value_stack);
1611#line 213 "prism/templates/ext/prism/api_node.c.erb"
1612 argv[6] = rb_ary_pop(value_stack);
1615#line 240 "prism/templates/ext/prism/api_node.c.erb"
1619#line 240 "prism/templates/ext/prism/api_node.c.erb"
1625 rb_ary_push(value_stack, value);
1628#line 190 "prism/templates/ext/prism/api_node.c.erb"
1629 case PM_BLOCK_PARAMETER_NODE: {
1630 pm_block_parameter_node_t *cast = (pm_block_parameter_node_t *) node;
1649#line 243 "prism/templates/ext/prism/api_node.c.erb"
1653#line 240 "prism/templates/ext/prism/api_node.c.erb"
1659 rb_ary_push(value_stack, value);
1662#line 190 "prism/templates/ext/prism/api_node.c.erb"
1663 case PM_BLOCK_PARAMETERS_NODE: {
1664 pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
1680#line 213 "prism/templates/ext/prism/api_node.c.erb"
1681 argv[4] = rb_ary_pop(value_stack);
1684#line 216 "prism/templates/ext/prism/api_node.c.erb"
1685 argv[5] = rb_ary_new_capa(cast->
locals.
size);
1686 for (
size_t index = 0; index < cast->
locals.
size; index++) {
1687 rb_ary_push(argv[5], rb_ary_pop(value_stack));
1692#line 243 "prism/templates/ext/prism/api_node.c.erb"
1696#line 243 "prism/templates/ext/prism/api_node.c.erb"
1702 rb_ary_push(value_stack, value);
1705#line 190 "prism/templates/ext/prism/api_node.c.erb"
1706 case PM_BREAK_NODE: {
1707 pm_break_node_t *cast = (pm_break_node_t *) node;
1723#line 213 "prism/templates/ext/prism/api_node.c.erb"
1724 argv[4] = rb_ary_pop(value_stack);
1727#line 240 "prism/templates/ext/prism/api_node.c.erb"
1733 rb_ary_push(value_stack, value);
1736#line 190 "prism/templates/ext/prism/api_node.c.erb"
1737 case PM_CALL_AND_WRITE_NODE: {
1738 pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
1754#line 213 "prism/templates/ext/prism/api_node.c.erb"
1755 argv[4] = rb_ary_pop(value_stack);
1758#line 243 "prism/templates/ext/prism/api_node.c.erb"
1762#line 243 "prism/templates/ext/prism/api_node.c.erb"
1766#line 226 "prism/templates/ext/prism/api_node.c.erb"
1771#line 226 "prism/templates/ext/prism/api_node.c.erb"
1776#line 240 "prism/templates/ext/prism/api_node.c.erb"
1780#line 213 "prism/templates/ext/prism/api_node.c.erb"
1781 argv[10] = rb_ary_pop(value_stack);
1786 rb_ary_push(value_stack, value);
1789#line 190 "prism/templates/ext/prism/api_node.c.erb"
1790 case PM_CALL_NODE: {
1791 pm_call_node_t *cast = (pm_call_node_t *) node;
1807#line 213 "prism/templates/ext/prism/api_node.c.erb"
1808 argv[4] = rb_ary_pop(value_stack);
1811#line 243 "prism/templates/ext/prism/api_node.c.erb"
1815#line 226 "prism/templates/ext/prism/api_node.c.erb"
1816 assert(cast->
name != 0);
1820#line 243 "prism/templates/ext/prism/api_node.c.erb"
1824#line 243 "prism/templates/ext/prism/api_node.c.erb"
1828#line 213 "prism/templates/ext/prism/api_node.c.erb"
1829 argv[9] = rb_ary_pop(value_stack);
1832#line 243 "prism/templates/ext/prism/api_node.c.erb"
1836#line 213 "prism/templates/ext/prism/api_node.c.erb"
1837 argv[11] = rb_ary_pop(value_stack);
1842 rb_ary_push(value_stack, value);
1845#line 190 "prism/templates/ext/prism/api_node.c.erb"
1846 case PM_CALL_OPERATOR_WRITE_NODE: {
1847 pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
1863#line 213 "prism/templates/ext/prism/api_node.c.erb"
1864 argv[4] = rb_ary_pop(value_stack);
1867#line 243 "prism/templates/ext/prism/api_node.c.erb"
1871#line 243 "prism/templates/ext/prism/api_node.c.erb"
1875#line 226 "prism/templates/ext/prism/api_node.c.erb"
1880#line 226 "prism/templates/ext/prism/api_node.c.erb"
1885#line 226 "prism/templates/ext/prism/api_node.c.erb"
1890#line 240 "prism/templates/ext/prism/api_node.c.erb"
1894#line 213 "prism/templates/ext/prism/api_node.c.erb"
1895 argv[11] = rb_ary_pop(value_stack);
1900 rb_ary_push(value_stack, value);
1903#line 190 "prism/templates/ext/prism/api_node.c.erb"
1904 case PM_CALL_OR_WRITE_NODE: {
1905 pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
1921#line 213 "prism/templates/ext/prism/api_node.c.erb"
1922 argv[4] = rb_ary_pop(value_stack);
1925#line 243 "prism/templates/ext/prism/api_node.c.erb"
1929#line 243 "prism/templates/ext/prism/api_node.c.erb"
1933#line 226 "prism/templates/ext/prism/api_node.c.erb"
1938#line 226 "prism/templates/ext/prism/api_node.c.erb"
1943#line 240 "prism/templates/ext/prism/api_node.c.erb"
1947#line 213 "prism/templates/ext/prism/api_node.c.erb"
1948 argv[10] = rb_ary_pop(value_stack);
1953 rb_ary_push(value_stack, value);
1956#line 190 "prism/templates/ext/prism/api_node.c.erb"
1957 case PM_CALL_TARGET_NODE: {
1958 pm_call_target_node_t *cast = (pm_call_target_node_t *) node;
1974#line 213 "prism/templates/ext/prism/api_node.c.erb"
1975 argv[4] = rb_ary_pop(value_stack);
1978#line 240 "prism/templates/ext/prism/api_node.c.erb"
1982#line 226 "prism/templates/ext/prism/api_node.c.erb"
1983 assert(cast->
name != 0);
1987#line 240 "prism/templates/ext/prism/api_node.c.erb"
1993 rb_ary_push(value_stack, value);
1996#line 190 "prism/templates/ext/prism/api_node.c.erb"
1997 case PM_CAPTURE_PATTERN_NODE: {
1998 pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
2014#line 213 "prism/templates/ext/prism/api_node.c.erb"
2015 argv[4] = rb_ary_pop(value_stack);
2018#line 213 "prism/templates/ext/prism/api_node.c.erb"
2019 argv[5] = rb_ary_pop(value_stack);
2022#line 240 "prism/templates/ext/prism/api_node.c.erb"
2028 rb_ary_push(value_stack, value);
2031#line 190 "prism/templates/ext/prism/api_node.c.erb"
2032 case PM_CASE_MATCH_NODE: {
2033 pm_case_match_node_t *cast = (pm_case_match_node_t *) node;
2049#line 213 "prism/templates/ext/prism/api_node.c.erb"
2050 argv[4] = rb_ary_pop(value_stack);
2053#line 216 "prism/templates/ext/prism/api_node.c.erb"
2056 rb_ary_push(argv[5], rb_ary_pop(value_stack));
2061#line 213 "prism/templates/ext/prism/api_node.c.erb"
2062 argv[6] = rb_ary_pop(value_stack);
2065#line 240 "prism/templates/ext/prism/api_node.c.erb"
2069#line 240 "prism/templates/ext/prism/api_node.c.erb"
2075 rb_ary_push(value_stack, value);
2078#line 190 "prism/templates/ext/prism/api_node.c.erb"
2079 case PM_CASE_NODE: {
2080 pm_case_node_t *cast = (pm_case_node_t *) node;
2096#line 213 "prism/templates/ext/prism/api_node.c.erb"
2097 argv[4] = rb_ary_pop(value_stack);
2100#line 216 "prism/templates/ext/prism/api_node.c.erb"
2103 rb_ary_push(argv[5], rb_ary_pop(value_stack));
2108#line 213 "prism/templates/ext/prism/api_node.c.erb"
2109 argv[6] = rb_ary_pop(value_stack);
2112#line 240 "prism/templates/ext/prism/api_node.c.erb"
2116#line 240 "prism/templates/ext/prism/api_node.c.erb"
2122 rb_ary_push(value_stack, value);
2125#line 190 "prism/templates/ext/prism/api_node.c.erb"
2126 case PM_CLASS_NODE: {
2127 pm_class_node_t *cast = (pm_class_node_t *) node;
2143#line 232 "prism/templates/ext/prism/api_node.c.erb"
2144 argv[4] = rb_ary_new_capa(cast->
locals.
size);
2145 for (
size_t index = 0; index < cast->
locals.
size; index++) {
2152#line 240 "prism/templates/ext/prism/api_node.c.erb"
2156#line 213 "prism/templates/ext/prism/api_node.c.erb"
2157 argv[6] = rb_ary_pop(value_stack);
2160#line 243 "prism/templates/ext/prism/api_node.c.erb"
2164#line 213 "prism/templates/ext/prism/api_node.c.erb"
2165 argv[8] = rb_ary_pop(value_stack);
2168#line 213 "prism/templates/ext/prism/api_node.c.erb"
2169 argv[9] = rb_ary_pop(value_stack);
2172#line 240 "prism/templates/ext/prism/api_node.c.erb"
2176#line 226 "prism/templates/ext/prism/api_node.c.erb"
2177 assert(cast->
name != 0);
2183 rb_ary_push(value_stack, value);
2186#line 190 "prism/templates/ext/prism/api_node.c.erb"
2187 case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
2188 pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
2204#line 226 "prism/templates/ext/prism/api_node.c.erb"
2205 assert(cast->
name != 0);
2209#line 240 "prism/templates/ext/prism/api_node.c.erb"
2213#line 240 "prism/templates/ext/prism/api_node.c.erb"
2217#line 213 "prism/templates/ext/prism/api_node.c.erb"
2218 argv[7] = rb_ary_pop(value_stack);
2223 rb_ary_push(value_stack, value);
2226#line 190 "prism/templates/ext/prism/api_node.c.erb"
2227 case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
2228 pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
2244#line 226 "prism/templates/ext/prism/api_node.c.erb"
2245 assert(cast->
name != 0);
2249#line 240 "prism/templates/ext/prism/api_node.c.erb"
2253#line 240 "prism/templates/ext/prism/api_node.c.erb"
2257#line 213 "prism/templates/ext/prism/api_node.c.erb"
2258 argv[7] = rb_ary_pop(value_stack);
2261#line 226 "prism/templates/ext/prism/api_node.c.erb"
2268 rb_ary_push(value_stack, value);
2271#line 190 "prism/templates/ext/prism/api_node.c.erb"
2272 case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
2273 pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
2289#line 226 "prism/templates/ext/prism/api_node.c.erb"
2290 assert(cast->
name != 0);
2294#line 240 "prism/templates/ext/prism/api_node.c.erb"
2298#line 240 "prism/templates/ext/prism/api_node.c.erb"
2302#line 213 "prism/templates/ext/prism/api_node.c.erb"
2303 argv[7] = rb_ary_pop(value_stack);
2308 rb_ary_push(value_stack, value);
2311#line 190 "prism/templates/ext/prism/api_node.c.erb"
2312 case PM_CLASS_VARIABLE_READ_NODE: {
2313 pm_class_variable_read_node_t *cast = (pm_class_variable_read_node_t *) node;
2329#line 226 "prism/templates/ext/prism/api_node.c.erb"
2330 assert(cast->
name != 0);
2336 rb_ary_push(value_stack, value);
2339#line 190 "prism/templates/ext/prism/api_node.c.erb"
2340 case PM_CLASS_VARIABLE_TARGET_NODE: {
2341 pm_class_variable_target_node_t *cast = (pm_class_variable_target_node_t *) node;
2357#line 226 "prism/templates/ext/prism/api_node.c.erb"
2358 assert(cast->
name != 0);
2364 rb_ary_push(value_stack, value);
2367#line 190 "prism/templates/ext/prism/api_node.c.erb"
2368 case PM_CLASS_VARIABLE_WRITE_NODE: {
2369 pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
2385#line 226 "prism/templates/ext/prism/api_node.c.erb"
2386 assert(cast->
name != 0);
2390#line 240 "prism/templates/ext/prism/api_node.c.erb"
2394#line 213 "prism/templates/ext/prism/api_node.c.erb"
2395 argv[6] = rb_ary_pop(value_stack);
2398#line 240 "prism/templates/ext/prism/api_node.c.erb"
2404 rb_ary_push(value_stack, value);
2407#line 190 "prism/templates/ext/prism/api_node.c.erb"
2408 case PM_CONSTANT_AND_WRITE_NODE: {
2409 pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
2425#line 226 "prism/templates/ext/prism/api_node.c.erb"
2426 assert(cast->
name != 0);
2430#line 240 "prism/templates/ext/prism/api_node.c.erb"
2434#line 240 "prism/templates/ext/prism/api_node.c.erb"
2438#line 213 "prism/templates/ext/prism/api_node.c.erb"
2439 argv[7] = rb_ary_pop(value_stack);
2444 rb_ary_push(value_stack, value);
2447#line 190 "prism/templates/ext/prism/api_node.c.erb"
2448 case PM_CONSTANT_OPERATOR_WRITE_NODE: {
2449 pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
2465#line 226 "prism/templates/ext/prism/api_node.c.erb"
2466 assert(cast->
name != 0);
2470#line 240 "prism/templates/ext/prism/api_node.c.erb"
2474#line 240 "prism/templates/ext/prism/api_node.c.erb"
2478#line 213 "prism/templates/ext/prism/api_node.c.erb"
2479 argv[7] = rb_ary_pop(value_stack);
2482#line 226 "prism/templates/ext/prism/api_node.c.erb"
2489 rb_ary_push(value_stack, value);
2492#line 190 "prism/templates/ext/prism/api_node.c.erb"
2493 case PM_CONSTANT_OR_WRITE_NODE: {
2494 pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
2510#line 226 "prism/templates/ext/prism/api_node.c.erb"
2511 assert(cast->
name != 0);
2515#line 240 "prism/templates/ext/prism/api_node.c.erb"
2519#line 240 "prism/templates/ext/prism/api_node.c.erb"
2523#line 213 "prism/templates/ext/prism/api_node.c.erb"
2524 argv[7] = rb_ary_pop(value_stack);
2529 rb_ary_push(value_stack, value);
2532#line 190 "prism/templates/ext/prism/api_node.c.erb"
2533 case PM_CONSTANT_PATH_AND_WRITE_NODE: {
2534 pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
2550#line 213 "prism/templates/ext/prism/api_node.c.erb"
2551 argv[4] = rb_ary_pop(value_stack);
2554#line 240 "prism/templates/ext/prism/api_node.c.erb"
2558#line 213 "prism/templates/ext/prism/api_node.c.erb"
2559 argv[6] = rb_ary_pop(value_stack);
2564 rb_ary_push(value_stack, value);
2567#line 190 "prism/templates/ext/prism/api_node.c.erb"
2568 case PM_CONSTANT_PATH_NODE: {
2569 pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
2585#line 213 "prism/templates/ext/prism/api_node.c.erb"
2586 argv[4] = rb_ary_pop(value_stack);
2592#line 240 "prism/templates/ext/prism/api_node.c.erb"
2596#line 240 "prism/templates/ext/prism/api_node.c.erb"
2602 rb_ary_push(value_stack, value);
2605#line 190 "prism/templates/ext/prism/api_node.c.erb"
2606 case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
2607 pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
2623#line 213 "prism/templates/ext/prism/api_node.c.erb"
2624 argv[4] = rb_ary_pop(value_stack);
2627#line 240 "prism/templates/ext/prism/api_node.c.erb"
2631#line 213 "prism/templates/ext/prism/api_node.c.erb"
2632 argv[6] = rb_ary_pop(value_stack);
2635#line 226 "prism/templates/ext/prism/api_node.c.erb"
2642 rb_ary_push(value_stack, value);
2645#line 190 "prism/templates/ext/prism/api_node.c.erb"
2646 case PM_CONSTANT_PATH_OR_WRITE_NODE: {
2647 pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
2663#line 213 "prism/templates/ext/prism/api_node.c.erb"
2664 argv[4] = rb_ary_pop(value_stack);
2667#line 240 "prism/templates/ext/prism/api_node.c.erb"
2671#line 213 "prism/templates/ext/prism/api_node.c.erb"
2672 argv[6] = rb_ary_pop(value_stack);
2677 rb_ary_push(value_stack, value);
2680#line 190 "prism/templates/ext/prism/api_node.c.erb"
2681 case PM_CONSTANT_PATH_TARGET_NODE: {
2682 pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
2698#line 213 "prism/templates/ext/prism/api_node.c.erb"
2699 argv[4] = rb_ary_pop(value_stack);
2705#line 240 "prism/templates/ext/prism/api_node.c.erb"
2709#line 240 "prism/templates/ext/prism/api_node.c.erb"
2715 rb_ary_push(value_stack, value);
2718#line 190 "prism/templates/ext/prism/api_node.c.erb"
2719 case PM_CONSTANT_PATH_WRITE_NODE: {
2720 pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
2736#line 213 "prism/templates/ext/prism/api_node.c.erb"
2737 argv[4] = rb_ary_pop(value_stack);
2740#line 240 "prism/templates/ext/prism/api_node.c.erb"
2744#line 213 "prism/templates/ext/prism/api_node.c.erb"
2745 argv[6] = rb_ary_pop(value_stack);
2750 rb_ary_push(value_stack, value);
2753#line 190 "prism/templates/ext/prism/api_node.c.erb"
2754 case PM_CONSTANT_READ_NODE: {
2755 pm_constant_read_node_t *cast = (pm_constant_read_node_t *) node;
2771#line 226 "prism/templates/ext/prism/api_node.c.erb"
2772 assert(cast->
name != 0);
2778 rb_ary_push(value_stack, value);
2781#line 190 "prism/templates/ext/prism/api_node.c.erb"
2782 case PM_CONSTANT_TARGET_NODE: {
2783 pm_constant_target_node_t *cast = (pm_constant_target_node_t *) node;
2799#line 226 "prism/templates/ext/prism/api_node.c.erb"
2800 assert(cast->
name != 0);
2806 rb_ary_push(value_stack, value);
2809#line 190 "prism/templates/ext/prism/api_node.c.erb"
2810 case PM_CONSTANT_WRITE_NODE: {
2811 pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
2827#line 226 "prism/templates/ext/prism/api_node.c.erb"
2828 assert(cast->
name != 0);
2832#line 240 "prism/templates/ext/prism/api_node.c.erb"
2836#line 213 "prism/templates/ext/prism/api_node.c.erb"
2837 argv[6] = rb_ary_pop(value_stack);
2840#line 240 "prism/templates/ext/prism/api_node.c.erb"
2846 rb_ary_push(value_stack, value);
2849#line 190 "prism/templates/ext/prism/api_node.c.erb"
2851 pm_def_node_t *cast = (pm_def_node_t *) node;
2867#line 226 "prism/templates/ext/prism/api_node.c.erb"
2868 assert(cast->
name != 0);
2872#line 240 "prism/templates/ext/prism/api_node.c.erb"
2876#line 213 "prism/templates/ext/prism/api_node.c.erb"
2877 argv[6] = rb_ary_pop(value_stack);
2880#line 213 "prism/templates/ext/prism/api_node.c.erb"
2881 argv[7] = rb_ary_pop(value_stack);
2884#line 213 "prism/templates/ext/prism/api_node.c.erb"
2885 argv[8] = rb_ary_pop(value_stack);
2888#line 232 "prism/templates/ext/prism/api_node.c.erb"
2889 argv[9] = rb_ary_new_capa(cast->
locals.
size);
2890 for (
size_t index = 0; index < cast->
locals.
size; index++) {
2897#line 240 "prism/templates/ext/prism/api_node.c.erb"
2901#line 243 "prism/templates/ext/prism/api_node.c.erb"
2905#line 243 "prism/templates/ext/prism/api_node.c.erb"
2909#line 243 "prism/templates/ext/prism/api_node.c.erb"
2913#line 243 "prism/templates/ext/prism/api_node.c.erb"
2917#line 243 "prism/templates/ext/prism/api_node.c.erb"
2923 rb_ary_push(value_stack, value);
2926#line 190 "prism/templates/ext/prism/api_node.c.erb"
2927 case PM_DEFINED_NODE: {
2928 pm_defined_node_t *cast = (pm_defined_node_t *) node;
2944#line 243 "prism/templates/ext/prism/api_node.c.erb"
2948#line 213 "prism/templates/ext/prism/api_node.c.erb"
2949 argv[5] = rb_ary_pop(value_stack);
2952#line 243 "prism/templates/ext/prism/api_node.c.erb"
2956#line 240 "prism/templates/ext/prism/api_node.c.erb"
2962 rb_ary_push(value_stack, value);
2965#line 190 "prism/templates/ext/prism/api_node.c.erb"
2966 case PM_ELSE_NODE: {
2967 pm_else_node_t *cast = (pm_else_node_t *) node;
2983#line 240 "prism/templates/ext/prism/api_node.c.erb"
2987#line 213 "prism/templates/ext/prism/api_node.c.erb"
2988 argv[5] = rb_ary_pop(value_stack);
2991#line 243 "prism/templates/ext/prism/api_node.c.erb"
2997 rb_ary_push(value_stack, value);
3000#line 190 "prism/templates/ext/prism/api_node.c.erb"
3001 case PM_EMBEDDED_STATEMENTS_NODE: {
3002 pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
3018#line 240 "prism/templates/ext/prism/api_node.c.erb"
3022#line 213 "prism/templates/ext/prism/api_node.c.erb"
3023 argv[5] = rb_ary_pop(value_stack);
3026#line 240 "prism/templates/ext/prism/api_node.c.erb"
3032 rb_ary_push(value_stack, value);
3035#line 190 "prism/templates/ext/prism/api_node.c.erb"
3036 case PM_EMBEDDED_VARIABLE_NODE: {
3037 pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
3053#line 240 "prism/templates/ext/prism/api_node.c.erb"
3057#line 213 "prism/templates/ext/prism/api_node.c.erb"
3058 argv[5] = rb_ary_pop(value_stack);
3063 rb_ary_push(value_stack, value);
3066#line 190 "prism/templates/ext/prism/api_node.c.erb"
3067 case PM_ENSURE_NODE: {
3068 pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
3084#line 240 "prism/templates/ext/prism/api_node.c.erb"
3088#line 213 "prism/templates/ext/prism/api_node.c.erb"
3089 argv[5] = rb_ary_pop(value_stack);
3092#line 240 "prism/templates/ext/prism/api_node.c.erb"
3098 rb_ary_push(value_stack, value);
3101#line 190 "prism/templates/ext/prism/api_node.c.erb"
3102 case PM_FALSE_NODE: {
3120 rb_ary_push(value_stack, value);
3123#line 190 "prism/templates/ext/prism/api_node.c.erb"
3124 case PM_FIND_PATTERN_NODE: {
3125 pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
3141#line 213 "prism/templates/ext/prism/api_node.c.erb"
3142 argv[4] = rb_ary_pop(value_stack);
3145#line 213 "prism/templates/ext/prism/api_node.c.erb"
3146 argv[5] = rb_ary_pop(value_stack);
3149#line 216 "prism/templates/ext/prism/api_node.c.erb"
3151 for (
size_t index = 0; index < cast->
requireds.
size; index++) {
3152 rb_ary_push(argv[6], rb_ary_pop(value_stack));
3157#line 213 "prism/templates/ext/prism/api_node.c.erb"
3158 argv[7] = rb_ary_pop(value_stack);
3161#line 243 "prism/templates/ext/prism/api_node.c.erb"
3165#line 243 "prism/templates/ext/prism/api_node.c.erb"
3171 rb_ary_push(value_stack, value);
3174#line 190 "prism/templates/ext/prism/api_node.c.erb"
3175 case PM_FLIP_FLOP_NODE: {
3176 pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
3192#line 213 "prism/templates/ext/prism/api_node.c.erb"
3193 argv[4] = rb_ary_pop(value_stack);
3196#line 213 "prism/templates/ext/prism/api_node.c.erb"
3197 argv[5] = rb_ary_pop(value_stack);
3200#line 240 "prism/templates/ext/prism/api_node.c.erb"
3206 rb_ary_push(value_stack, value);
3209#line 190 "prism/templates/ext/prism/api_node.c.erb"
3210 case PM_FLOAT_NODE: {
3211 pm_float_node_t *cast = (pm_float_node_t *) node;
3227#line 255 "prism/templates/ext/prism/api_node.c.erb"
3233 rb_ary_push(value_stack, value);
3236#line 190 "prism/templates/ext/prism/api_node.c.erb"
3238 pm_for_node_t *cast = (pm_for_node_t *) node;
3254#line 213 "prism/templates/ext/prism/api_node.c.erb"
3255 argv[4] = rb_ary_pop(value_stack);
3258#line 213 "prism/templates/ext/prism/api_node.c.erb"
3259 argv[5] = rb_ary_pop(value_stack);
3262#line 213 "prism/templates/ext/prism/api_node.c.erb"
3263 argv[6] = rb_ary_pop(value_stack);
3266#line 240 "prism/templates/ext/prism/api_node.c.erb"
3270#line 240 "prism/templates/ext/prism/api_node.c.erb"
3274#line 243 "prism/templates/ext/prism/api_node.c.erb"
3278#line 240 "prism/templates/ext/prism/api_node.c.erb"
3284 rb_ary_push(value_stack, value);
3287#line 190 "prism/templates/ext/prism/api_node.c.erb"
3288 case PM_FORWARDING_ARGUMENTS_NODE: {
3306 rb_ary_push(value_stack, value);
3309#line 190 "prism/templates/ext/prism/api_node.c.erb"
3310 case PM_FORWARDING_PARAMETER_NODE: {
3328 rb_ary_push(value_stack, value);
3331#line 190 "prism/templates/ext/prism/api_node.c.erb"
3332 case PM_FORWARDING_SUPER_NODE: {
3348#line 213 "prism/templates/ext/prism/api_node.c.erb"
3349 argv[4] = rb_ary_pop(value_stack);
3354 rb_ary_push(value_stack, value);
3357#line 190 "prism/templates/ext/prism/api_node.c.erb"
3358 case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
3359 pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
3375#line 226 "prism/templates/ext/prism/api_node.c.erb"
3376 assert(cast->
name != 0);
3380#line 240 "prism/templates/ext/prism/api_node.c.erb"
3384#line 240 "prism/templates/ext/prism/api_node.c.erb"
3388#line 213 "prism/templates/ext/prism/api_node.c.erb"
3389 argv[7] = rb_ary_pop(value_stack);
3394 rb_ary_push(value_stack, value);
3397#line 190 "prism/templates/ext/prism/api_node.c.erb"
3398 case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
3399 pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
3415#line 226 "prism/templates/ext/prism/api_node.c.erb"
3416 assert(cast->
name != 0);
3420#line 240 "prism/templates/ext/prism/api_node.c.erb"
3424#line 240 "prism/templates/ext/prism/api_node.c.erb"
3428#line 213 "prism/templates/ext/prism/api_node.c.erb"
3429 argv[7] = rb_ary_pop(value_stack);
3432#line 226 "prism/templates/ext/prism/api_node.c.erb"
3439 rb_ary_push(value_stack, value);
3442#line 190 "prism/templates/ext/prism/api_node.c.erb"
3443 case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
3444 pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
3460#line 226 "prism/templates/ext/prism/api_node.c.erb"
3461 assert(cast->
name != 0);
3465#line 240 "prism/templates/ext/prism/api_node.c.erb"
3469#line 240 "prism/templates/ext/prism/api_node.c.erb"
3473#line 213 "prism/templates/ext/prism/api_node.c.erb"
3474 argv[7] = rb_ary_pop(value_stack);
3479 rb_ary_push(value_stack, value);
3482#line 190 "prism/templates/ext/prism/api_node.c.erb"
3483 case PM_GLOBAL_VARIABLE_READ_NODE: {
3484 pm_global_variable_read_node_t *cast = (pm_global_variable_read_node_t *) node;
3500#line 226 "prism/templates/ext/prism/api_node.c.erb"
3501 assert(cast->
name != 0);
3507 rb_ary_push(value_stack, value);
3510#line 190 "prism/templates/ext/prism/api_node.c.erb"
3511 case PM_GLOBAL_VARIABLE_TARGET_NODE: {
3512 pm_global_variable_target_node_t *cast = (pm_global_variable_target_node_t *) node;
3528#line 226 "prism/templates/ext/prism/api_node.c.erb"
3529 assert(cast->
name != 0);
3535 rb_ary_push(value_stack, value);
3538#line 190 "prism/templates/ext/prism/api_node.c.erb"
3539 case PM_GLOBAL_VARIABLE_WRITE_NODE: {
3540 pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
3556#line 226 "prism/templates/ext/prism/api_node.c.erb"
3557 assert(cast->
name != 0);
3561#line 240 "prism/templates/ext/prism/api_node.c.erb"
3565#line 213 "prism/templates/ext/prism/api_node.c.erb"
3566 argv[6] = rb_ary_pop(value_stack);
3569#line 240 "prism/templates/ext/prism/api_node.c.erb"
3575 rb_ary_push(value_stack, value);
3578#line 190 "prism/templates/ext/prism/api_node.c.erb"
3579 case PM_HASH_NODE: {
3580 pm_hash_node_t *cast = (pm_hash_node_t *) node;
3596#line 240 "prism/templates/ext/prism/api_node.c.erb"
3600#line 216 "prism/templates/ext/prism/api_node.c.erb"
3602 for (
size_t index = 0; index < cast->
elements.
size; index++) {
3603 rb_ary_push(argv[5], rb_ary_pop(value_stack));
3608#line 240 "prism/templates/ext/prism/api_node.c.erb"
3614 rb_ary_push(value_stack, value);
3617#line 190 "prism/templates/ext/prism/api_node.c.erb"
3618 case PM_HASH_PATTERN_NODE: {
3619 pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
3635#line 213 "prism/templates/ext/prism/api_node.c.erb"
3636 argv[4] = rb_ary_pop(value_stack);
3639#line 216 "prism/templates/ext/prism/api_node.c.erb"
3641 for (
size_t index = 0; index < cast->
elements.
size; index++) {
3642 rb_ary_push(argv[5], rb_ary_pop(value_stack));
3647#line 213 "prism/templates/ext/prism/api_node.c.erb"
3648 argv[6] = rb_ary_pop(value_stack);
3651#line 243 "prism/templates/ext/prism/api_node.c.erb"
3655#line 243 "prism/templates/ext/prism/api_node.c.erb"
3661 rb_ary_push(value_stack, value);
3664#line 190 "prism/templates/ext/prism/api_node.c.erb"
3666 pm_if_node_t *cast = (pm_if_node_t *) node;
3682#line 243 "prism/templates/ext/prism/api_node.c.erb"
3686#line 213 "prism/templates/ext/prism/api_node.c.erb"
3687 argv[5] = rb_ary_pop(value_stack);
3690#line 243 "prism/templates/ext/prism/api_node.c.erb"
3694#line 213 "prism/templates/ext/prism/api_node.c.erb"
3695 argv[7] = rb_ary_pop(value_stack);
3698#line 213 "prism/templates/ext/prism/api_node.c.erb"
3699 argv[8] = rb_ary_pop(value_stack);
3702#line 243 "prism/templates/ext/prism/api_node.c.erb"
3708 rb_ary_push(value_stack, value);
3711#line 190 "prism/templates/ext/prism/api_node.c.erb"
3712 case PM_IMAGINARY_NODE: {
3728#line 213 "prism/templates/ext/prism/api_node.c.erb"
3729 argv[4] = rb_ary_pop(value_stack);
3734 rb_ary_push(value_stack, value);
3737#line 190 "prism/templates/ext/prism/api_node.c.erb"
3738 case PM_IMPLICIT_NODE: {
3754#line 213 "prism/templates/ext/prism/api_node.c.erb"
3755 argv[4] = rb_ary_pop(value_stack);
3760 rb_ary_push(value_stack, value);
3763#line 190 "prism/templates/ext/prism/api_node.c.erb"
3764 case PM_IMPLICIT_REST_NODE: {
3782 rb_ary_push(value_stack, value);
3785#line 190 "prism/templates/ext/prism/api_node.c.erb"
3787 pm_in_node_t *cast = (pm_in_node_t *) node;
3803#line 213 "prism/templates/ext/prism/api_node.c.erb"
3804 argv[4] = rb_ary_pop(value_stack);
3807#line 213 "prism/templates/ext/prism/api_node.c.erb"
3808 argv[5] = rb_ary_pop(value_stack);
3811#line 240 "prism/templates/ext/prism/api_node.c.erb"
3815#line 243 "prism/templates/ext/prism/api_node.c.erb"
3821 rb_ary_push(value_stack, value);
3824#line 190 "prism/templates/ext/prism/api_node.c.erb"
3825 case PM_INDEX_AND_WRITE_NODE: {
3826 pm_index_and_write_node_t *cast = (pm_index_and_write_node_t *) node;
3842#line 213 "prism/templates/ext/prism/api_node.c.erb"
3843 argv[4] = rb_ary_pop(value_stack);
3846#line 243 "prism/templates/ext/prism/api_node.c.erb"
3850#line 240 "prism/templates/ext/prism/api_node.c.erb"
3854#line 213 "prism/templates/ext/prism/api_node.c.erb"
3855 argv[7] = rb_ary_pop(value_stack);
3858#line 240 "prism/templates/ext/prism/api_node.c.erb"
3862#line 213 "prism/templates/ext/prism/api_node.c.erb"
3863 argv[9] = rb_ary_pop(value_stack);
3866#line 240 "prism/templates/ext/prism/api_node.c.erb"
3870#line 213 "prism/templates/ext/prism/api_node.c.erb"
3871 argv[11] = rb_ary_pop(value_stack);
3876 rb_ary_push(value_stack, value);
3879#line 190 "prism/templates/ext/prism/api_node.c.erb"
3880 case PM_INDEX_OPERATOR_WRITE_NODE: {
3881 pm_index_operator_write_node_t *cast = (pm_index_operator_write_node_t *) node;
3897#line 213 "prism/templates/ext/prism/api_node.c.erb"
3898 argv[4] = rb_ary_pop(value_stack);
3901#line 243 "prism/templates/ext/prism/api_node.c.erb"
3905#line 240 "prism/templates/ext/prism/api_node.c.erb"
3909#line 213 "prism/templates/ext/prism/api_node.c.erb"
3910 argv[7] = rb_ary_pop(value_stack);
3913#line 240 "prism/templates/ext/prism/api_node.c.erb"
3917#line 213 "prism/templates/ext/prism/api_node.c.erb"
3918 argv[9] = rb_ary_pop(value_stack);
3921#line 226 "prism/templates/ext/prism/api_node.c.erb"
3926#line 240 "prism/templates/ext/prism/api_node.c.erb"
3930#line 213 "prism/templates/ext/prism/api_node.c.erb"
3931 argv[12] = rb_ary_pop(value_stack);
3936 rb_ary_push(value_stack, value);
3939#line 190 "prism/templates/ext/prism/api_node.c.erb"
3940 case PM_INDEX_OR_WRITE_NODE: {
3941 pm_index_or_write_node_t *cast = (pm_index_or_write_node_t *) node;
3957#line 213 "prism/templates/ext/prism/api_node.c.erb"
3958 argv[4] = rb_ary_pop(value_stack);
3961#line 243 "prism/templates/ext/prism/api_node.c.erb"
3965#line 240 "prism/templates/ext/prism/api_node.c.erb"
3969#line 213 "prism/templates/ext/prism/api_node.c.erb"
3970 argv[7] = rb_ary_pop(value_stack);
3973#line 240 "prism/templates/ext/prism/api_node.c.erb"
3977#line 213 "prism/templates/ext/prism/api_node.c.erb"
3978 argv[9] = rb_ary_pop(value_stack);
3981#line 240 "prism/templates/ext/prism/api_node.c.erb"
3985#line 213 "prism/templates/ext/prism/api_node.c.erb"
3986 argv[11] = rb_ary_pop(value_stack);
3991 rb_ary_push(value_stack, value);
3994#line 190 "prism/templates/ext/prism/api_node.c.erb"
3995 case PM_INDEX_TARGET_NODE: {
3996 pm_index_target_node_t *cast = (pm_index_target_node_t *) node;
4012#line 213 "prism/templates/ext/prism/api_node.c.erb"
4013 argv[4] = rb_ary_pop(value_stack);
4016#line 240 "prism/templates/ext/prism/api_node.c.erb"
4020#line 213 "prism/templates/ext/prism/api_node.c.erb"
4021 argv[6] = rb_ary_pop(value_stack);
4024#line 240 "prism/templates/ext/prism/api_node.c.erb"
4028#line 213 "prism/templates/ext/prism/api_node.c.erb"
4029 argv[8] = rb_ary_pop(value_stack);
4034 rb_ary_push(value_stack, value);
4037#line 190 "prism/templates/ext/prism/api_node.c.erb"
4038 case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
4039 pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
4055#line 226 "prism/templates/ext/prism/api_node.c.erb"
4056 assert(cast->
name != 0);
4060#line 240 "prism/templates/ext/prism/api_node.c.erb"
4064#line 240 "prism/templates/ext/prism/api_node.c.erb"
4068#line 213 "prism/templates/ext/prism/api_node.c.erb"
4069 argv[7] = rb_ary_pop(value_stack);
4074 rb_ary_push(value_stack, value);
4077#line 190 "prism/templates/ext/prism/api_node.c.erb"
4078 case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
4079 pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
4095#line 226 "prism/templates/ext/prism/api_node.c.erb"
4096 assert(cast->
name != 0);
4100#line 240 "prism/templates/ext/prism/api_node.c.erb"
4104#line 240 "prism/templates/ext/prism/api_node.c.erb"
4108#line 213 "prism/templates/ext/prism/api_node.c.erb"
4109 argv[7] = rb_ary_pop(value_stack);
4112#line 226 "prism/templates/ext/prism/api_node.c.erb"
4119 rb_ary_push(value_stack, value);
4122#line 190 "prism/templates/ext/prism/api_node.c.erb"
4123 case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
4124 pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
4140#line 226 "prism/templates/ext/prism/api_node.c.erb"
4141 assert(cast->
name != 0);
4145#line 240 "prism/templates/ext/prism/api_node.c.erb"
4149#line 240 "prism/templates/ext/prism/api_node.c.erb"
4153#line 213 "prism/templates/ext/prism/api_node.c.erb"
4154 argv[7] = rb_ary_pop(value_stack);
4159 rb_ary_push(value_stack, value);
4162#line 190 "prism/templates/ext/prism/api_node.c.erb"
4163 case PM_INSTANCE_VARIABLE_READ_NODE: {
4164 pm_instance_variable_read_node_t *cast = (pm_instance_variable_read_node_t *) node;
4180#line 226 "prism/templates/ext/prism/api_node.c.erb"
4181 assert(cast->
name != 0);
4187 rb_ary_push(value_stack, value);
4190#line 190 "prism/templates/ext/prism/api_node.c.erb"
4191 case PM_INSTANCE_VARIABLE_TARGET_NODE: {
4192 pm_instance_variable_target_node_t *cast = (pm_instance_variable_target_node_t *) node;
4208#line 226 "prism/templates/ext/prism/api_node.c.erb"
4209 assert(cast->
name != 0);
4215 rb_ary_push(value_stack, value);
4218#line 190 "prism/templates/ext/prism/api_node.c.erb"
4219 case PM_INSTANCE_VARIABLE_WRITE_NODE: {
4220 pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
4236#line 226 "prism/templates/ext/prism/api_node.c.erb"
4237 assert(cast->
name != 0);
4241#line 240 "prism/templates/ext/prism/api_node.c.erb"
4245#line 213 "prism/templates/ext/prism/api_node.c.erb"
4246 argv[6] = rb_ary_pop(value_stack);
4249#line 240 "prism/templates/ext/prism/api_node.c.erb"
4255 rb_ary_push(value_stack, value);
4258#line 190 "prism/templates/ext/prism/api_node.c.erb"
4259 case PM_INTEGER_NODE: {
4260 pm_integer_node_t *cast = (pm_integer_node_t *) node;
4276#line 252 "prism/templates/ext/prism/api_node.c.erb"
4277 argv[4] = pm_integer_new(&cast->
value);
4282 rb_ary_push(value_stack, value);
4285#line 190 "prism/templates/ext/prism/api_node.c.erb"
4286 case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
4287 pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
4303#line 240 "prism/templates/ext/prism/api_node.c.erb"
4307#line 216 "prism/templates/ext/prism/api_node.c.erb"
4308 argv[5] = rb_ary_new_capa(cast->
parts.
size);
4309 for (
size_t index = 0; index < cast->
parts.
size; index++) {
4310 rb_ary_push(argv[5], rb_ary_pop(value_stack));
4315#line 240 "prism/templates/ext/prism/api_node.c.erb"
4321 rb_ary_push(value_stack, value);
4324#line 190 "prism/templates/ext/prism/api_node.c.erb"
4325 case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
4326 pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
4342#line 240 "prism/templates/ext/prism/api_node.c.erb"
4346#line 216 "prism/templates/ext/prism/api_node.c.erb"
4347 argv[5] = rb_ary_new_capa(cast->
parts.
size);
4348 for (
size_t index = 0; index < cast->
parts.
size; index++) {
4349 rb_ary_push(argv[5], rb_ary_pop(value_stack));
4354#line 240 "prism/templates/ext/prism/api_node.c.erb"
4360 rb_ary_push(value_stack, value);
4363#line 190 "prism/templates/ext/prism/api_node.c.erb"
4364 case PM_INTERPOLATED_STRING_NODE: {
4365 pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
4381#line 243 "prism/templates/ext/prism/api_node.c.erb"
4385#line 216 "prism/templates/ext/prism/api_node.c.erb"
4386 argv[5] = rb_ary_new_capa(cast->
parts.
size);
4387 for (
size_t index = 0; index < cast->
parts.
size; index++) {
4388 rb_ary_push(argv[5], rb_ary_pop(value_stack));
4393#line 243 "prism/templates/ext/prism/api_node.c.erb"
4399 rb_ary_push(value_stack, value);
4402#line 190 "prism/templates/ext/prism/api_node.c.erb"
4403 case PM_INTERPOLATED_SYMBOL_NODE: {
4404 pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
4420#line 243 "prism/templates/ext/prism/api_node.c.erb"
4424#line 216 "prism/templates/ext/prism/api_node.c.erb"
4425 argv[5] = rb_ary_new_capa(cast->
parts.
size);
4426 for (
size_t index = 0; index < cast->
parts.
size; index++) {
4427 rb_ary_push(argv[5], rb_ary_pop(value_stack));
4432#line 243 "prism/templates/ext/prism/api_node.c.erb"
4438 rb_ary_push(value_stack, value);
4441#line 190 "prism/templates/ext/prism/api_node.c.erb"
4442 case PM_INTERPOLATED_X_STRING_NODE: {
4443 pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
4459#line 240 "prism/templates/ext/prism/api_node.c.erb"
4463#line 216 "prism/templates/ext/prism/api_node.c.erb"
4464 argv[5] = rb_ary_new_capa(cast->
parts.
size);
4465 for (
size_t index = 0; index < cast->
parts.
size; index++) {
4466 rb_ary_push(argv[5], rb_ary_pop(value_stack));
4471#line 240 "prism/templates/ext/prism/api_node.c.erb"
4477 rb_ary_push(value_stack, value);
4480#line 190 "prism/templates/ext/prism/api_node.c.erb"
4481 case PM_IT_LOCAL_VARIABLE_READ_NODE: {
4499 rb_ary_push(value_stack, value);
4502#line 190 "prism/templates/ext/prism/api_node.c.erb"
4503 case PM_IT_PARAMETERS_NODE: {
4521 rb_ary_push(value_stack, value);
4524#line 190 "prism/templates/ext/prism/api_node.c.erb"
4525 case PM_KEYWORD_HASH_NODE: {
4526 pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
4542#line 216 "prism/templates/ext/prism/api_node.c.erb"
4544 for (
size_t index = 0; index < cast->
elements.
size; index++) {
4545 rb_ary_push(argv[4], rb_ary_pop(value_stack));
4552 rb_ary_push(value_stack, value);
4555#line 190 "prism/templates/ext/prism/api_node.c.erb"
4556 case PM_KEYWORD_REST_PARAMETER_NODE: {
4557 pm_keyword_rest_parameter_node_t *cast = (pm_keyword_rest_parameter_node_t *) node;
4576#line 243 "prism/templates/ext/prism/api_node.c.erb"
4580#line 240 "prism/templates/ext/prism/api_node.c.erb"
4586 rb_ary_push(value_stack, value);
4589#line 190 "prism/templates/ext/prism/api_node.c.erb"
4590 case PM_LAMBDA_NODE: {
4591 pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
4607#line 232 "prism/templates/ext/prism/api_node.c.erb"
4608 argv[4] = rb_ary_new_capa(cast->
locals.
size);
4609 for (
size_t index = 0; index < cast->
locals.
size; index++) {
4616#line 240 "prism/templates/ext/prism/api_node.c.erb"
4620#line 240 "prism/templates/ext/prism/api_node.c.erb"
4624#line 240 "prism/templates/ext/prism/api_node.c.erb"
4628#line 213 "prism/templates/ext/prism/api_node.c.erb"
4629 argv[8] = rb_ary_pop(value_stack);
4632#line 213 "prism/templates/ext/prism/api_node.c.erb"
4633 argv[9] = rb_ary_pop(value_stack);
4638 rb_ary_push(value_stack, value);
4641#line 190 "prism/templates/ext/prism/api_node.c.erb"
4642 case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
4643 pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
4659#line 240 "prism/templates/ext/prism/api_node.c.erb"
4663#line 240 "prism/templates/ext/prism/api_node.c.erb"
4667#line 213 "prism/templates/ext/prism/api_node.c.erb"
4668 argv[6] = rb_ary_pop(value_stack);
4671#line 226 "prism/templates/ext/prism/api_node.c.erb"
4672 assert(cast->
name != 0);
4676#line 249 "prism/templates/ext/prism/api_node.c.erb"
4682 rb_ary_push(value_stack, value);
4685#line 190 "prism/templates/ext/prism/api_node.c.erb"
4686 case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
4687 pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
4703#line 240 "prism/templates/ext/prism/api_node.c.erb"
4707#line 240 "prism/templates/ext/prism/api_node.c.erb"
4711#line 213 "prism/templates/ext/prism/api_node.c.erb"
4712 argv[6] = rb_ary_pop(value_stack);
4715#line 226 "prism/templates/ext/prism/api_node.c.erb"
4716 assert(cast->
name != 0);
4720#line 226 "prism/templates/ext/prism/api_node.c.erb"
4725#line 249 "prism/templates/ext/prism/api_node.c.erb"
4731 rb_ary_push(value_stack, value);
4734#line 190 "prism/templates/ext/prism/api_node.c.erb"
4735 case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
4736 pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
4752#line 240 "prism/templates/ext/prism/api_node.c.erb"
4756#line 240 "prism/templates/ext/prism/api_node.c.erb"
4760#line 213 "prism/templates/ext/prism/api_node.c.erb"
4761 argv[6] = rb_ary_pop(value_stack);
4764#line 226 "prism/templates/ext/prism/api_node.c.erb"
4765 assert(cast->
name != 0);
4769#line 249 "prism/templates/ext/prism/api_node.c.erb"
4775 rb_ary_push(value_stack, value);
4778#line 190 "prism/templates/ext/prism/api_node.c.erb"
4779 case PM_LOCAL_VARIABLE_READ_NODE: {
4780 pm_local_variable_read_node_t *cast = (pm_local_variable_read_node_t *) node;
4796#line 226 "prism/templates/ext/prism/api_node.c.erb"
4797 assert(cast->
name != 0);
4801#line 249 "prism/templates/ext/prism/api_node.c.erb"
4807 rb_ary_push(value_stack, value);
4810#line 190 "prism/templates/ext/prism/api_node.c.erb"
4811 case PM_LOCAL_VARIABLE_TARGET_NODE: {
4812 pm_local_variable_target_node_t *cast = (pm_local_variable_target_node_t *) node;
4828#line 226 "prism/templates/ext/prism/api_node.c.erb"
4829 assert(cast->
name != 0);
4833#line 249 "prism/templates/ext/prism/api_node.c.erb"
4839 rb_ary_push(value_stack, value);
4842#line 190 "prism/templates/ext/prism/api_node.c.erb"
4843 case PM_LOCAL_VARIABLE_WRITE_NODE: {
4844 pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
4860#line 226 "prism/templates/ext/prism/api_node.c.erb"
4861 assert(cast->
name != 0);
4865#line 249 "prism/templates/ext/prism/api_node.c.erb"
4869#line 240 "prism/templates/ext/prism/api_node.c.erb"
4873#line 213 "prism/templates/ext/prism/api_node.c.erb"
4874 argv[7] = rb_ary_pop(value_stack);
4877#line 240 "prism/templates/ext/prism/api_node.c.erb"
4883 rb_ary_push(value_stack, value);
4886#line 190 "prism/templates/ext/prism/api_node.c.erb"
4887 case PM_MATCH_LAST_LINE_NODE: {
4888 pm_match_last_line_node_t *cast = (pm_match_last_line_node_t *) node;
4904#line 240 "prism/templates/ext/prism/api_node.c.erb"
4908#line 240 "prism/templates/ext/prism/api_node.c.erb"
4912#line 240 "prism/templates/ext/prism/api_node.c.erb"
4916#line 223 "prism/templates/ext/prism/api_node.c.erb"
4917 argv[7] = pm_string_new(&cast->
unescaped, encoding);
4922 rb_ary_push(value_stack, value);
4925#line 190 "prism/templates/ext/prism/api_node.c.erb"
4926 case PM_MATCH_PREDICATE_NODE: {
4927 pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
4943#line 213 "prism/templates/ext/prism/api_node.c.erb"
4944 argv[4] = rb_ary_pop(value_stack);
4947#line 213 "prism/templates/ext/prism/api_node.c.erb"
4948 argv[5] = rb_ary_pop(value_stack);
4951#line 240 "prism/templates/ext/prism/api_node.c.erb"
4957 rb_ary_push(value_stack, value);
4960#line 190 "prism/templates/ext/prism/api_node.c.erb"
4961 case PM_MATCH_REQUIRED_NODE: {
4962 pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
4978#line 213 "prism/templates/ext/prism/api_node.c.erb"
4979 argv[4] = rb_ary_pop(value_stack);
4982#line 213 "prism/templates/ext/prism/api_node.c.erb"
4983 argv[5] = rb_ary_pop(value_stack);
4986#line 240 "prism/templates/ext/prism/api_node.c.erb"
4992 rb_ary_push(value_stack, value);
4995#line 190 "prism/templates/ext/prism/api_node.c.erb"
4996 case PM_MATCH_WRITE_NODE: {
4997 pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
5013#line 213 "prism/templates/ext/prism/api_node.c.erb"
5014 argv[4] = rb_ary_pop(value_stack);
5017#line 216 "prism/templates/ext/prism/api_node.c.erb"
5019 for (
size_t index = 0; index < cast->
targets.
size; index++) {
5020 rb_ary_push(argv[5], rb_ary_pop(value_stack));
5027 rb_ary_push(value_stack, value);
5030#line 190 "prism/templates/ext/prism/api_node.c.erb"
5031 case PM_MISSING_NODE: {
5049 rb_ary_push(value_stack, value);
5052#line 190 "prism/templates/ext/prism/api_node.c.erb"
5053 case PM_MODULE_NODE: {
5054 pm_module_node_t *cast = (pm_module_node_t *) node;
5070#line 232 "prism/templates/ext/prism/api_node.c.erb"
5071 argv[4] = rb_ary_new_capa(cast->
locals.
size);
5072 for (
size_t index = 0; index < cast->
locals.
size; index++) {
5079#line 240 "prism/templates/ext/prism/api_node.c.erb"
5083#line 213 "prism/templates/ext/prism/api_node.c.erb"
5084 argv[6] = rb_ary_pop(value_stack);
5087#line 213 "prism/templates/ext/prism/api_node.c.erb"
5088 argv[7] = rb_ary_pop(value_stack);
5091#line 240 "prism/templates/ext/prism/api_node.c.erb"
5095#line 226 "prism/templates/ext/prism/api_node.c.erb"
5096 assert(cast->
name != 0);
5102 rb_ary_push(value_stack, value);
5105#line 190 "prism/templates/ext/prism/api_node.c.erb"
5106 case PM_MULTI_TARGET_NODE: {
5107 pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
5123#line 216 "prism/templates/ext/prism/api_node.c.erb"
5124 argv[4] = rb_ary_new_capa(cast->
lefts.
size);
5125 for (
size_t index = 0; index < cast->
lefts.
size; index++) {
5126 rb_ary_push(argv[4], rb_ary_pop(value_stack));
5131#line 213 "prism/templates/ext/prism/api_node.c.erb"
5132 argv[5] = rb_ary_pop(value_stack);
5135#line 216 "prism/templates/ext/prism/api_node.c.erb"
5136 argv[6] = rb_ary_new_capa(cast->
rights.
size);
5137 for (
size_t index = 0; index < cast->
rights.
size; index++) {
5138 rb_ary_push(argv[6], rb_ary_pop(value_stack));
5143#line 243 "prism/templates/ext/prism/api_node.c.erb"
5147#line 243 "prism/templates/ext/prism/api_node.c.erb"
5153 rb_ary_push(value_stack, value);
5156#line 190 "prism/templates/ext/prism/api_node.c.erb"
5157 case PM_MULTI_WRITE_NODE: {
5158 pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
5174#line 216 "prism/templates/ext/prism/api_node.c.erb"
5175 argv[4] = rb_ary_new_capa(cast->
lefts.
size);
5176 for (
size_t index = 0; index < cast->
lefts.
size; index++) {
5177 rb_ary_push(argv[4], rb_ary_pop(value_stack));
5182#line 213 "prism/templates/ext/prism/api_node.c.erb"
5183 argv[5] = rb_ary_pop(value_stack);
5186#line 216 "prism/templates/ext/prism/api_node.c.erb"
5187 argv[6] = rb_ary_new_capa(cast->
rights.
size);
5188 for (
size_t index = 0; index < cast->
rights.
size; index++) {
5189 rb_ary_push(argv[6], rb_ary_pop(value_stack));
5194#line 243 "prism/templates/ext/prism/api_node.c.erb"
5198#line 243 "prism/templates/ext/prism/api_node.c.erb"
5202#line 240 "prism/templates/ext/prism/api_node.c.erb"
5206#line 213 "prism/templates/ext/prism/api_node.c.erb"
5207 argv[10] = rb_ary_pop(value_stack);
5212 rb_ary_push(value_stack, value);
5215#line 190 "prism/templates/ext/prism/api_node.c.erb"
5216 case PM_NEXT_NODE: {
5217 pm_next_node_t *cast = (pm_next_node_t *) node;
5233#line 213 "prism/templates/ext/prism/api_node.c.erb"
5234 argv[4] = rb_ary_pop(value_stack);
5237#line 240 "prism/templates/ext/prism/api_node.c.erb"
5243 rb_ary_push(value_stack, value);
5246#line 190 "prism/templates/ext/prism/api_node.c.erb"
5265 rb_ary_push(value_stack, value);
5268#line 190 "prism/templates/ext/prism/api_node.c.erb"
5269 case PM_NO_KEYWORDS_PARAMETER_NODE: {
5270 pm_no_keywords_parameter_node_t *cast = (pm_no_keywords_parameter_node_t *) node;
5286#line 240 "prism/templates/ext/prism/api_node.c.erb"
5290#line 240 "prism/templates/ext/prism/api_node.c.erb"
5296 rb_ary_push(value_stack, value);
5299#line 190 "prism/templates/ext/prism/api_node.c.erb"
5300 case PM_NUMBERED_PARAMETERS_NODE: {
5301 pm_numbered_parameters_node_t *cast = (pm_numbered_parameters_node_t *) node;
5317#line 246 "prism/templates/ext/prism/api_node.c.erb"
5323 rb_ary_push(value_stack, value);
5326#line 190 "prism/templates/ext/prism/api_node.c.erb"
5327 case PM_NUMBERED_REFERENCE_READ_NODE: {
5328 pm_numbered_reference_read_node_t *cast = (pm_numbered_reference_read_node_t *) node;
5344#line 249 "prism/templates/ext/prism/api_node.c.erb"
5350 rb_ary_push(value_stack, value);
5353#line 190 "prism/templates/ext/prism/api_node.c.erb"
5354 case PM_OPTIONAL_KEYWORD_PARAMETER_NODE: {
5355 pm_optional_keyword_parameter_node_t *cast = (pm_optional_keyword_parameter_node_t *) node;
5371#line 226 "prism/templates/ext/prism/api_node.c.erb"
5372 assert(cast->
name != 0);
5376#line 240 "prism/templates/ext/prism/api_node.c.erb"
5380#line 213 "prism/templates/ext/prism/api_node.c.erb"
5381 argv[6] = rb_ary_pop(value_stack);
5386 rb_ary_push(value_stack, value);
5389#line 190 "prism/templates/ext/prism/api_node.c.erb"
5390 case PM_OPTIONAL_PARAMETER_NODE: {
5391 pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
5407#line 226 "prism/templates/ext/prism/api_node.c.erb"
5408 assert(cast->
name != 0);
5412#line 240 "prism/templates/ext/prism/api_node.c.erb"
5416#line 240 "prism/templates/ext/prism/api_node.c.erb"
5420#line 213 "prism/templates/ext/prism/api_node.c.erb"
5421 argv[7] = rb_ary_pop(value_stack);
5426 rb_ary_push(value_stack, value);
5429#line 190 "prism/templates/ext/prism/api_node.c.erb"
5431 pm_or_node_t *cast = (pm_or_node_t *) node;
5447#line 213 "prism/templates/ext/prism/api_node.c.erb"
5448 argv[4] = rb_ary_pop(value_stack);
5451#line 213 "prism/templates/ext/prism/api_node.c.erb"
5452 argv[5] = rb_ary_pop(value_stack);
5455#line 240 "prism/templates/ext/prism/api_node.c.erb"
5461 rb_ary_push(value_stack, value);
5464#line 190 "prism/templates/ext/prism/api_node.c.erb"
5465 case PM_PARAMETERS_NODE: {
5466 pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
5482#line 216 "prism/templates/ext/prism/api_node.c.erb"
5484 for (
size_t index = 0; index < cast->
requireds.
size; index++) {
5485 rb_ary_push(argv[4], rb_ary_pop(value_stack));
5490#line 216 "prism/templates/ext/prism/api_node.c.erb"
5492 for (
size_t index = 0; index < cast->
optionals.
size; index++) {
5493 rb_ary_push(argv[5], rb_ary_pop(value_stack));
5498#line 213 "prism/templates/ext/prism/api_node.c.erb"
5499 argv[6] = rb_ary_pop(value_stack);
5502#line 216 "prism/templates/ext/prism/api_node.c.erb"
5503 argv[7] = rb_ary_new_capa(cast->
posts.
size);
5504 for (
size_t index = 0; index < cast->
posts.
size; index++) {
5505 rb_ary_push(argv[7], rb_ary_pop(value_stack));
5510#line 216 "prism/templates/ext/prism/api_node.c.erb"
5512 for (
size_t index = 0; index < cast->
keywords.
size; index++) {
5513 rb_ary_push(argv[8], rb_ary_pop(value_stack));
5518#line 213 "prism/templates/ext/prism/api_node.c.erb"
5519 argv[9] = rb_ary_pop(value_stack);
5522#line 213 "prism/templates/ext/prism/api_node.c.erb"
5523 argv[10] = rb_ary_pop(value_stack);
5528 rb_ary_push(value_stack, value);
5531#line 190 "prism/templates/ext/prism/api_node.c.erb"
5532 case PM_PARENTHESES_NODE: {
5533 pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
5549#line 213 "prism/templates/ext/prism/api_node.c.erb"
5550 argv[4] = rb_ary_pop(value_stack);
5553#line 240 "prism/templates/ext/prism/api_node.c.erb"
5557#line 240 "prism/templates/ext/prism/api_node.c.erb"
5563 rb_ary_push(value_stack, value);
5566#line 190 "prism/templates/ext/prism/api_node.c.erb"
5567 case PM_PINNED_EXPRESSION_NODE: {
5568 pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
5584#line 213 "prism/templates/ext/prism/api_node.c.erb"
5585 argv[4] = rb_ary_pop(value_stack);
5588#line 240 "prism/templates/ext/prism/api_node.c.erb"
5592#line 240 "prism/templates/ext/prism/api_node.c.erb"
5596#line 240 "prism/templates/ext/prism/api_node.c.erb"
5602 rb_ary_push(value_stack, value);
5605#line 190 "prism/templates/ext/prism/api_node.c.erb"
5606 case PM_PINNED_VARIABLE_NODE: {
5607 pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
5623#line 213 "prism/templates/ext/prism/api_node.c.erb"
5624 argv[4] = rb_ary_pop(value_stack);
5627#line 240 "prism/templates/ext/prism/api_node.c.erb"
5633 rb_ary_push(value_stack, value);
5636#line 190 "prism/templates/ext/prism/api_node.c.erb"
5637 case PM_POST_EXECUTION_NODE: {
5638 pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
5654#line 213 "prism/templates/ext/prism/api_node.c.erb"
5655 argv[4] = rb_ary_pop(value_stack);
5658#line 240 "prism/templates/ext/prism/api_node.c.erb"
5662#line 240 "prism/templates/ext/prism/api_node.c.erb"
5666#line 240 "prism/templates/ext/prism/api_node.c.erb"
5672 rb_ary_push(value_stack, value);
5675#line 190 "prism/templates/ext/prism/api_node.c.erb"
5676 case PM_PRE_EXECUTION_NODE: {
5677 pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
5693#line 213 "prism/templates/ext/prism/api_node.c.erb"
5694 argv[4] = rb_ary_pop(value_stack);
5697#line 240 "prism/templates/ext/prism/api_node.c.erb"
5701#line 240 "prism/templates/ext/prism/api_node.c.erb"
5705#line 240 "prism/templates/ext/prism/api_node.c.erb"
5711 rb_ary_push(value_stack, value);
5714#line 190 "prism/templates/ext/prism/api_node.c.erb"
5715 case PM_PROGRAM_NODE: {
5716 pm_program_node_t *cast = (pm_program_node_t *) node;
5732#line 232 "prism/templates/ext/prism/api_node.c.erb"
5733 argv[4] = rb_ary_new_capa(cast->
locals.
size);
5734 for (
size_t index = 0; index < cast->
locals.
size; index++) {
5741#line 213 "prism/templates/ext/prism/api_node.c.erb"
5742 argv[5] = rb_ary_pop(value_stack);
5747 rb_ary_push(value_stack, value);
5750#line 190 "prism/templates/ext/prism/api_node.c.erb"
5751 case PM_RANGE_NODE: {
5752 pm_range_node_t *cast = (pm_range_node_t *) node;
5768#line 213 "prism/templates/ext/prism/api_node.c.erb"
5769 argv[4] = rb_ary_pop(value_stack);
5772#line 213 "prism/templates/ext/prism/api_node.c.erb"
5773 argv[5] = rb_ary_pop(value_stack);
5776#line 240 "prism/templates/ext/prism/api_node.c.erb"
5782 rb_ary_push(value_stack, value);
5785#line 190 "prism/templates/ext/prism/api_node.c.erb"
5786 case PM_RATIONAL_NODE: {
5787 pm_rational_node_t *cast = (pm_rational_node_t *) node;
5803#line 252 "prism/templates/ext/prism/api_node.c.erb"
5804 argv[4] = pm_integer_new(&cast->
numerator);
5807#line 252 "prism/templates/ext/prism/api_node.c.erb"
5813 rb_ary_push(value_stack, value);
5816#line 190 "prism/templates/ext/prism/api_node.c.erb"
5817 case PM_REDO_NODE: {
5835 rb_ary_push(value_stack, value);
5838#line 190 "prism/templates/ext/prism/api_node.c.erb"
5839 case PM_REGULAR_EXPRESSION_NODE: {
5840 pm_regular_expression_node_t *cast = (pm_regular_expression_node_t *) node;
5856#line 240 "prism/templates/ext/prism/api_node.c.erb"
5860#line 240 "prism/templates/ext/prism/api_node.c.erb"
5864#line 240 "prism/templates/ext/prism/api_node.c.erb"
5868#line 223 "prism/templates/ext/prism/api_node.c.erb"
5869 argv[7] = pm_string_new(&cast->
unescaped, encoding);
5874 rb_ary_push(value_stack, value);
5877#line 190 "prism/templates/ext/prism/api_node.c.erb"
5878 case PM_REQUIRED_KEYWORD_PARAMETER_NODE: {
5879 pm_required_keyword_parameter_node_t *cast = (pm_required_keyword_parameter_node_t *) node;
5895#line 226 "prism/templates/ext/prism/api_node.c.erb"
5896 assert(cast->
name != 0);
5900#line 240 "prism/templates/ext/prism/api_node.c.erb"
5906 rb_ary_push(value_stack, value);
5909#line 190 "prism/templates/ext/prism/api_node.c.erb"
5910 case PM_REQUIRED_PARAMETER_NODE: {
5911 pm_required_parameter_node_t *cast = (pm_required_parameter_node_t *) node;
5927#line 226 "prism/templates/ext/prism/api_node.c.erb"
5928 assert(cast->
name != 0);
5934 rb_ary_push(value_stack, value);
5937#line 190 "prism/templates/ext/prism/api_node.c.erb"
5938 case PM_RESCUE_MODIFIER_NODE: {
5939 pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
5955#line 213 "prism/templates/ext/prism/api_node.c.erb"
5956 argv[4] = rb_ary_pop(value_stack);
5959#line 240 "prism/templates/ext/prism/api_node.c.erb"
5963#line 213 "prism/templates/ext/prism/api_node.c.erb"
5964 argv[6] = rb_ary_pop(value_stack);
5969 rb_ary_push(value_stack, value);
5972#line 190 "prism/templates/ext/prism/api_node.c.erb"
5973 case PM_RESCUE_NODE: {
5974 pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
5990#line 240 "prism/templates/ext/prism/api_node.c.erb"
5994#line 216 "prism/templates/ext/prism/api_node.c.erb"
5997 rb_ary_push(argv[5], rb_ary_pop(value_stack));
6002#line 243 "prism/templates/ext/prism/api_node.c.erb"
6006#line 213 "prism/templates/ext/prism/api_node.c.erb"
6007 argv[7] = rb_ary_pop(value_stack);
6010#line 243 "prism/templates/ext/prism/api_node.c.erb"
6014#line 213 "prism/templates/ext/prism/api_node.c.erb"
6015 argv[9] = rb_ary_pop(value_stack);
6018#line 213 "prism/templates/ext/prism/api_node.c.erb"
6019 argv[10] = rb_ary_pop(value_stack);
6024 rb_ary_push(value_stack, value);
6027#line 190 "prism/templates/ext/prism/api_node.c.erb"
6028 case PM_REST_PARAMETER_NODE: {
6029 pm_rest_parameter_node_t *cast = (pm_rest_parameter_node_t *) node;
6048#line 243 "prism/templates/ext/prism/api_node.c.erb"
6052#line 240 "prism/templates/ext/prism/api_node.c.erb"
6058 rb_ary_push(value_stack, value);
6061#line 190 "prism/templates/ext/prism/api_node.c.erb"
6062 case PM_RETRY_NODE: {
6080 rb_ary_push(value_stack, value);
6083#line 190 "prism/templates/ext/prism/api_node.c.erb"
6084 case PM_RETURN_NODE: {
6085 pm_return_node_t *cast = (pm_return_node_t *) node;
6101#line 240 "prism/templates/ext/prism/api_node.c.erb"
6105#line 213 "prism/templates/ext/prism/api_node.c.erb"
6106 argv[5] = rb_ary_pop(value_stack);
6111 rb_ary_push(value_stack, value);
6114#line 190 "prism/templates/ext/prism/api_node.c.erb"
6115 case PM_SELF_NODE: {
6133 rb_ary_push(value_stack, value);
6136#line 190 "prism/templates/ext/prism/api_node.c.erb"
6137 case PM_SHAREABLE_CONSTANT_NODE: {
6153#line 213 "prism/templates/ext/prism/api_node.c.erb"
6154 argv[4] = rb_ary_pop(value_stack);
6159 rb_ary_push(value_stack, value);
6162#line 190 "prism/templates/ext/prism/api_node.c.erb"
6163 case PM_SINGLETON_CLASS_NODE: {
6164 pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
6180#line 232 "prism/templates/ext/prism/api_node.c.erb"
6181 argv[4] = rb_ary_new_capa(cast->
locals.
size);
6182 for (
size_t index = 0; index < cast->
locals.
size; index++) {
6189#line 240 "prism/templates/ext/prism/api_node.c.erb"
6193#line 240 "prism/templates/ext/prism/api_node.c.erb"
6197#line 213 "prism/templates/ext/prism/api_node.c.erb"
6198 argv[7] = rb_ary_pop(value_stack);
6201#line 213 "prism/templates/ext/prism/api_node.c.erb"
6202 argv[8] = rb_ary_pop(value_stack);
6205#line 240 "prism/templates/ext/prism/api_node.c.erb"
6211 rb_ary_push(value_stack, value);
6214#line 190 "prism/templates/ext/prism/api_node.c.erb"
6215 case PM_SOURCE_ENCODING_NODE: {
6233 rb_ary_push(value_stack, value);
6236#line 190 "prism/templates/ext/prism/api_node.c.erb"
6237 case PM_SOURCE_FILE_NODE: {
6238 pm_source_file_node_t *cast = (pm_source_file_node_t *) node;
6254#line 223 "prism/templates/ext/prism/api_node.c.erb"
6255 argv[4] = pm_string_new(&cast->
filepath, encoding);
6260 rb_ary_push(value_stack, value);
6263#line 190 "prism/templates/ext/prism/api_node.c.erb"
6264 case PM_SOURCE_LINE_NODE: {
6282 rb_ary_push(value_stack, value);
6285#line 190 "prism/templates/ext/prism/api_node.c.erb"
6286 case PM_SPLAT_NODE: {
6287 pm_splat_node_t *cast = (pm_splat_node_t *) node;
6303#line 240 "prism/templates/ext/prism/api_node.c.erb"
6307#line 213 "prism/templates/ext/prism/api_node.c.erb"
6308 argv[5] = rb_ary_pop(value_stack);
6313 rb_ary_push(value_stack, value);
6316#line 190 "prism/templates/ext/prism/api_node.c.erb"
6317 case PM_STATEMENTS_NODE: {
6318 pm_statements_node_t *cast = (pm_statements_node_t *) node;
6334#line 216 "prism/templates/ext/prism/api_node.c.erb"
6335 argv[4] = rb_ary_new_capa(cast->
body.
size);
6336 for (
size_t index = 0; index < cast->
body.
size; index++) {
6337 rb_ary_push(argv[4], rb_ary_pop(value_stack));
6344 rb_ary_push(value_stack, value);
6347#line 190 "prism/templates/ext/prism/api_node.c.erb"
6348 case PM_STRING_NODE: {
6349 pm_string_node_t *cast = (pm_string_node_t *) node;
6365#line 243 "prism/templates/ext/prism/api_node.c.erb"
6369#line 240 "prism/templates/ext/prism/api_node.c.erb"
6373#line 243 "prism/templates/ext/prism/api_node.c.erb"
6377#line 223 "prism/templates/ext/prism/api_node.c.erb"
6378 argv[7] = pm_string_new(&cast->
unescaped, encoding);
6383 rb_ary_push(value_stack, value);
6386#line 190 "prism/templates/ext/prism/api_node.c.erb"
6387 case PM_SUPER_NODE: {
6388 pm_super_node_t *cast = (pm_super_node_t *) node;
6404#line 240 "prism/templates/ext/prism/api_node.c.erb"
6408#line 243 "prism/templates/ext/prism/api_node.c.erb"
6412#line 213 "prism/templates/ext/prism/api_node.c.erb"
6413 argv[6] = rb_ary_pop(value_stack);
6416#line 243 "prism/templates/ext/prism/api_node.c.erb"
6420#line 213 "prism/templates/ext/prism/api_node.c.erb"
6421 argv[8] = rb_ary_pop(value_stack);
6426 rb_ary_push(value_stack, value);
6429#line 190 "prism/templates/ext/prism/api_node.c.erb"
6430 case PM_SYMBOL_NODE: {
6431 pm_symbol_node_t *cast = (pm_symbol_node_t *) node;
6447#line 243 "prism/templates/ext/prism/api_node.c.erb"
6451#line 243 "prism/templates/ext/prism/api_node.c.erb"
6455#line 243 "prism/templates/ext/prism/api_node.c.erb"
6459#line 223 "prism/templates/ext/prism/api_node.c.erb"
6460 argv[7] = pm_string_new(&cast->
unescaped, encoding);
6465 rb_ary_push(value_stack, value);
6468#line 190 "prism/templates/ext/prism/api_node.c.erb"
6469 case PM_TRUE_NODE: {
6487 rb_ary_push(value_stack, value);
6490#line 190 "prism/templates/ext/prism/api_node.c.erb"
6491 case PM_UNDEF_NODE: {
6492 pm_undef_node_t *cast = (pm_undef_node_t *) node;
6508#line 216 "prism/templates/ext/prism/api_node.c.erb"
6509 argv[4] = rb_ary_new_capa(cast->
names.
size);
6510 for (
size_t index = 0; index < cast->
names.
size; index++) {
6511 rb_ary_push(argv[4], rb_ary_pop(value_stack));
6516#line 240 "prism/templates/ext/prism/api_node.c.erb"
6522 rb_ary_push(value_stack, value);
6525#line 190 "prism/templates/ext/prism/api_node.c.erb"
6526 case PM_UNLESS_NODE: {
6527 pm_unless_node_t *cast = (pm_unless_node_t *) node;
6543#line 240 "prism/templates/ext/prism/api_node.c.erb"
6547#line 213 "prism/templates/ext/prism/api_node.c.erb"
6548 argv[5] = rb_ary_pop(value_stack);
6551#line 243 "prism/templates/ext/prism/api_node.c.erb"
6555#line 213 "prism/templates/ext/prism/api_node.c.erb"
6556 argv[7] = rb_ary_pop(value_stack);
6559#line 213 "prism/templates/ext/prism/api_node.c.erb"
6560 argv[8] = rb_ary_pop(value_stack);
6563#line 243 "prism/templates/ext/prism/api_node.c.erb"
6569 rb_ary_push(value_stack, value);
6572#line 190 "prism/templates/ext/prism/api_node.c.erb"
6573 case PM_UNTIL_NODE: {
6574 pm_until_node_t *cast = (pm_until_node_t *) node;
6590#line 240 "prism/templates/ext/prism/api_node.c.erb"
6594#line 243 "prism/templates/ext/prism/api_node.c.erb"
6598#line 243 "prism/templates/ext/prism/api_node.c.erb"
6602#line 213 "prism/templates/ext/prism/api_node.c.erb"
6603 argv[7] = rb_ary_pop(value_stack);
6606#line 213 "prism/templates/ext/prism/api_node.c.erb"
6607 argv[8] = rb_ary_pop(value_stack);
6612 rb_ary_push(value_stack, value);
6615#line 190 "prism/templates/ext/prism/api_node.c.erb"
6616 case PM_WHEN_NODE: {
6617 pm_when_node_t *cast = (pm_when_node_t *) node;
6633#line 240 "prism/templates/ext/prism/api_node.c.erb"
6637#line 216 "prism/templates/ext/prism/api_node.c.erb"
6640 rb_ary_push(argv[5], rb_ary_pop(value_stack));
6645#line 243 "prism/templates/ext/prism/api_node.c.erb"
6649#line 213 "prism/templates/ext/prism/api_node.c.erb"
6650 argv[7] = rb_ary_pop(value_stack);
6655 rb_ary_push(value_stack, value);
6658#line 190 "prism/templates/ext/prism/api_node.c.erb"
6659 case PM_WHILE_NODE: {
6660 pm_while_node_t *cast = (pm_while_node_t *) node;
6676#line 240 "prism/templates/ext/prism/api_node.c.erb"
6680#line 243 "prism/templates/ext/prism/api_node.c.erb"
6684#line 243 "prism/templates/ext/prism/api_node.c.erb"
6688#line 213 "prism/templates/ext/prism/api_node.c.erb"
6689 argv[7] = rb_ary_pop(value_stack);
6692#line 213 "prism/templates/ext/prism/api_node.c.erb"
6693 argv[8] = rb_ary_pop(value_stack);
6698 rb_ary_push(value_stack, value);
6701#line 190 "prism/templates/ext/prism/api_node.c.erb"
6702 case PM_X_STRING_NODE: {
6703 pm_x_string_node_t *cast = (pm_x_string_node_t *) node;
6719#line 240 "prism/templates/ext/prism/api_node.c.erb"
6723#line 240 "prism/templates/ext/prism/api_node.c.erb"
6727#line 240 "prism/templates/ext/prism/api_node.c.erb"
6731#line 223 "prism/templates/ext/prism/api_node.c.erb"
6732 argv[7] = pm_string_new(&cast->
unescaped, encoding);
6737 rb_ary_push(value_stack, value);
6740#line 190 "prism/templates/ext/prism/api_node.c.erb"
6741 case PM_YIELD_NODE: {
6742 pm_yield_node_t *cast = (pm_yield_node_t *) node;
6758#line 240 "prism/templates/ext/prism/api_node.c.erb"
6762#line 243 "prism/templates/ext/prism/api_node.c.erb"
6766#line 213 "prism/templates/ext/prism/api_node.c.erb"
6767 argv[6] = rb_ary_pop(value_stack);
6770#line 243 "prism/templates/ext/prism/api_node.c.erb"
6776 rb_ary_push(value_stack, value);
6785 return rb_ary_pop(value_stack);
6789Init_prism_api_node(
void) {
6790 rb_cPrismAliasGlobalVariableNode =
rb_define_class_under(rb_cPrism,
"AliasGlobalVariableNode", rb_cPrismNode);
6792 rb_cPrismAlternationPatternNode =
rb_define_class_under(rb_cPrism,
"AlternationPatternNode", rb_cPrismNode);
6799 rb_cPrismBackReferenceReadNode =
rb_define_class_under(rb_cPrism,
"BackReferenceReadNode", rb_cPrismNode);
6802 rb_cPrismBlockLocalVariableNode =
rb_define_class_under(rb_cPrism,
"BlockLocalVariableNode", rb_cPrismNode);
6804 rb_cPrismBlockParameterNode =
rb_define_class_under(rb_cPrism,
"BlockParameterNode", rb_cPrismNode);
6805 rb_cPrismBlockParametersNode =
rb_define_class_under(rb_cPrism,
"BlockParametersNode", rb_cPrismNode);
6809 rb_cPrismCallOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"CallOperatorWriteNode", rb_cPrismNode);
6812 rb_cPrismCapturePatternNode =
rb_define_class_under(rb_cPrism,
"CapturePatternNode", rb_cPrismNode);
6816 rb_cPrismClassVariableAndWriteNode =
rb_define_class_under(rb_cPrism,
"ClassVariableAndWriteNode", rb_cPrismNode);
6817 rb_cPrismClassVariableOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"ClassVariableOperatorWriteNode", rb_cPrismNode);
6818 rb_cPrismClassVariableOrWriteNode =
rb_define_class_under(rb_cPrism,
"ClassVariableOrWriteNode", rb_cPrismNode);
6819 rb_cPrismClassVariableReadNode =
rb_define_class_under(rb_cPrism,
"ClassVariableReadNode", rb_cPrismNode);
6820 rb_cPrismClassVariableTargetNode =
rb_define_class_under(rb_cPrism,
"ClassVariableTargetNode", rb_cPrismNode);
6821 rb_cPrismClassVariableWriteNode =
rb_define_class_under(rb_cPrism,
"ClassVariableWriteNode", rb_cPrismNode);
6822 rb_cPrismConstantAndWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantAndWriteNode", rb_cPrismNode);
6823 rb_cPrismConstantOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantOperatorWriteNode", rb_cPrismNode);
6824 rb_cPrismConstantOrWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantOrWriteNode", rb_cPrismNode);
6825 rb_cPrismConstantPathAndWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantPathAndWriteNode", rb_cPrismNode);
6827 rb_cPrismConstantPathOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantPathOperatorWriteNode", rb_cPrismNode);
6828 rb_cPrismConstantPathOrWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantPathOrWriteNode", rb_cPrismNode);
6829 rb_cPrismConstantPathTargetNode =
rb_define_class_under(rb_cPrism,
"ConstantPathTargetNode", rb_cPrismNode);
6830 rb_cPrismConstantPathWriteNode =
rb_define_class_under(rb_cPrism,
"ConstantPathWriteNode", rb_cPrismNode);
6832 rb_cPrismConstantTargetNode =
rb_define_class_under(rb_cPrism,
"ConstantTargetNode", rb_cPrismNode);
6837 rb_cPrismEmbeddedStatementsNode =
rb_define_class_under(rb_cPrism,
"EmbeddedStatementsNode", rb_cPrismNode);
6838 rb_cPrismEmbeddedVariableNode =
rb_define_class_under(rb_cPrism,
"EmbeddedVariableNode", rb_cPrismNode);
6845 rb_cPrismForwardingArgumentsNode =
rb_define_class_under(rb_cPrism,
"ForwardingArgumentsNode", rb_cPrismNode);
6846 rb_cPrismForwardingParameterNode =
rb_define_class_under(rb_cPrism,
"ForwardingParameterNode", rb_cPrismNode);
6847 rb_cPrismForwardingSuperNode =
rb_define_class_under(rb_cPrism,
"ForwardingSuperNode", rb_cPrismNode);
6848 rb_cPrismGlobalVariableAndWriteNode =
rb_define_class_under(rb_cPrism,
"GlobalVariableAndWriteNode", rb_cPrismNode);
6849 rb_cPrismGlobalVariableOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"GlobalVariableOperatorWriteNode", rb_cPrismNode);
6850 rb_cPrismGlobalVariableOrWriteNode =
rb_define_class_under(rb_cPrism,
"GlobalVariableOrWriteNode", rb_cPrismNode);
6851 rb_cPrismGlobalVariableReadNode =
rb_define_class_under(rb_cPrism,
"GlobalVariableReadNode", rb_cPrismNode);
6852 rb_cPrismGlobalVariableTargetNode =
rb_define_class_under(rb_cPrism,
"GlobalVariableTargetNode", rb_cPrismNode);
6853 rb_cPrismGlobalVariableWriteNode =
rb_define_class_under(rb_cPrism,
"GlobalVariableWriteNode", rb_cPrismNode);
6862 rb_cPrismIndexOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"IndexOperatorWriteNode", rb_cPrismNode);
6865 rb_cPrismInstanceVariableAndWriteNode =
rb_define_class_under(rb_cPrism,
"InstanceVariableAndWriteNode", rb_cPrismNode);
6866 rb_cPrismInstanceVariableOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"InstanceVariableOperatorWriteNode", rb_cPrismNode);
6867 rb_cPrismInstanceVariableOrWriteNode =
rb_define_class_under(rb_cPrism,
"InstanceVariableOrWriteNode", rb_cPrismNode);
6868 rb_cPrismInstanceVariableReadNode =
rb_define_class_under(rb_cPrism,
"InstanceVariableReadNode", rb_cPrismNode);
6869 rb_cPrismInstanceVariableTargetNode =
rb_define_class_under(rb_cPrism,
"InstanceVariableTargetNode", rb_cPrismNode);
6870 rb_cPrismInstanceVariableWriteNode =
rb_define_class_under(rb_cPrism,
"InstanceVariableWriteNode", rb_cPrismNode);
6872 rb_cPrismInterpolatedMatchLastLineNode =
rb_define_class_under(rb_cPrism,
"InterpolatedMatchLastLineNode", rb_cPrismNode);
6873 rb_cPrismInterpolatedRegularExpressionNode =
rb_define_class_under(rb_cPrism,
"InterpolatedRegularExpressionNode", rb_cPrismNode);
6874 rb_cPrismInterpolatedStringNode =
rb_define_class_under(rb_cPrism,
"InterpolatedStringNode", rb_cPrismNode);
6875 rb_cPrismInterpolatedSymbolNode =
rb_define_class_under(rb_cPrism,
"InterpolatedSymbolNode", rb_cPrismNode);
6876 rb_cPrismInterpolatedXStringNode =
rb_define_class_under(rb_cPrism,
"InterpolatedXStringNode", rb_cPrismNode);
6877 rb_cPrismItLocalVariableReadNode =
rb_define_class_under(rb_cPrism,
"ItLocalVariableReadNode", rb_cPrismNode);
6880 rb_cPrismKeywordRestParameterNode =
rb_define_class_under(rb_cPrism,
"KeywordRestParameterNode", rb_cPrismNode);
6882 rb_cPrismLocalVariableAndWriteNode =
rb_define_class_under(rb_cPrism,
"LocalVariableAndWriteNode", rb_cPrismNode);
6883 rb_cPrismLocalVariableOperatorWriteNode =
rb_define_class_under(rb_cPrism,
"LocalVariableOperatorWriteNode", rb_cPrismNode);
6884 rb_cPrismLocalVariableOrWriteNode =
rb_define_class_under(rb_cPrism,
"LocalVariableOrWriteNode", rb_cPrismNode);
6885 rb_cPrismLocalVariableReadNode =
rb_define_class_under(rb_cPrism,
"LocalVariableReadNode", rb_cPrismNode);
6886 rb_cPrismLocalVariableTargetNode =
rb_define_class_under(rb_cPrism,
"LocalVariableTargetNode", rb_cPrismNode);
6887 rb_cPrismLocalVariableWriteNode =
rb_define_class_under(rb_cPrism,
"LocalVariableWriteNode", rb_cPrismNode);
6889 rb_cPrismMatchPredicateNode =
rb_define_class_under(rb_cPrism,
"MatchPredicateNode", rb_cPrismNode);
6898 rb_cPrismNoKeywordsParameterNode =
rb_define_class_under(rb_cPrism,
"NoKeywordsParameterNode", rb_cPrismNode);
6899 rb_cPrismNumberedParametersNode =
rb_define_class_under(rb_cPrism,
"NumberedParametersNode", rb_cPrismNode);
6900 rb_cPrismNumberedReferenceReadNode =
rb_define_class_under(rb_cPrism,
"NumberedReferenceReadNode", rb_cPrismNode);
6901 rb_cPrismOptionalKeywordParameterNode =
rb_define_class_under(rb_cPrism,
"OptionalKeywordParameterNode", rb_cPrismNode);
6902 rb_cPrismOptionalParameterNode =
rb_define_class_under(rb_cPrism,
"OptionalParameterNode", rb_cPrismNode);
6906 rb_cPrismPinnedExpressionNode =
rb_define_class_under(rb_cPrism,
"PinnedExpressionNode", rb_cPrismNode);
6907 rb_cPrismPinnedVariableNode =
rb_define_class_under(rb_cPrism,
"PinnedVariableNode", rb_cPrismNode);
6914 rb_cPrismRegularExpressionNode =
rb_define_class_under(rb_cPrism,
"RegularExpressionNode", rb_cPrismNode);
6915 rb_cPrismRequiredKeywordParameterNode =
rb_define_class_under(rb_cPrism,
"RequiredKeywordParameterNode", rb_cPrismNode);
6916 rb_cPrismRequiredParameterNode =
rb_define_class_under(rb_cPrism,
"RequiredParameterNode", rb_cPrismNode);
6917 rb_cPrismRescueModifierNode =
rb_define_class_under(rb_cPrism,
"RescueModifierNode", rb_cPrismNode);
6923 rb_cPrismShareableConstantNode =
rb_define_class_under(rb_cPrism,
"ShareableConstantNode", rb_cPrismNode);
6924 rb_cPrismSingletonClassNode =
rb_define_class_under(rb_cPrism,
"SingletonClassNode", rb_cPrismNode);
6925 rb_cPrismSourceEncodingNode =
rb_define_class_under(rb_cPrism,
"SourceEncodingNode", rb_cPrismNode);
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
#define xfree
Old name of ruby_xfree.
#define ID2SYM
Old name of RB_ID2SYM.
#define ULONG2NUM
Old name of RB_ULONG2NUM.
#define xmalloc
Old name of ruby_xmalloc.
#define LONG2FIX
Old name of RB_INT2FIX.
#define LONG2NUM
Old name of RB_LONG2NUM.
#define ULL2NUM
Old name of RB_ULL2NUM.
#define Qnil
Old name of RUBY_Qnil.
#define DBL2NUM
Old name of rb_float_new.
#define UINT2NUM
Old name of RB_UINT2NUM.
VALUE rb_eRuntimeError
RuntimeError exception.
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
VALUE rb_obj_freeze(VALUE obj)
Just calls rb_obj_freeze_inline() inside.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
VALUE rb_ary_new(void)
Allocates a new, empty array.
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
VALUE rb_str_intern(VALUE str)
Identical to rb_to_symbol(), except it assumes the receiver being an instance of RString.
static ID rb_intern_const(const char *str)
This is a "tiny optimisation" over rb_intern().
VALUE type(ANYARGS)
ANYARGS-ed function type.
struct pm_parser pm_parser_t
The parser used to parse Ruby source.
PRISM_EXPORTED_FUNCTION const char * pm_token_type_name(pm_token_type_t token_type)
Returns a string representation of the given token type.
#define RARRAY_AREF(a, i)
struct pm_node * old_name
AliasGlobalVariableNode::old_name.
struct pm_node * new_name
AliasGlobalVariableNode::new_name.
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
struct pm_node * old_name
AliasMethodNode::old_name.
struct pm_node * new_name
AliasMethodNode::new_name.
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
struct pm_node * left
AlternationPatternNode::left.
struct pm_node * right
AlternationPatternNode::right.
struct pm_node * left
AndNode::left.
struct pm_node * right
AndNode::right.
pm_location_t operator_loc
AndNode::operator_loc.
struct pm_node_list arguments
ArgumentsNode::arguments.
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.
struct pm_node * rest
ArrayPatternNode::rest.
struct pm_node * constant
ArrayPatternNode::constant.
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
struct pm_node_list posts
ArrayPatternNode::posts.
struct pm_node * value
AssocNode::value.
struct pm_node * key
AssocNode::key.
pm_location_t operator_loc
AssocNode::operator_loc.
struct pm_node * value
AssocSplatNode::value.
pm_location_t operator_loc
AssocSplatNode::operator_loc.
pm_constant_id_t name
BackReferenceReadNode::name.
struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
struct pm_statements_node * statements
BeginNode::statements.
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
struct pm_else_node * else_clause
BeginNode::else_clause.
struct pm_node * expression
BlockArgumentNode::expression.
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
pm_constant_id_t name
BlockLocalVariableNode::name.
pm_location_t closing_loc
BlockNode::closing_loc.
struct pm_node * parameters
BlockNode::parameters.
pm_location_t opening_loc
BlockNode::opening_loc.
struct pm_node * body
BlockNode::body.
pm_constant_id_list_t locals
BlockNode::locals.
pm_location_t operator_loc
BlockParameterNode::operator_loc.
pm_location_t name_loc
BlockParameterNode::name_loc.
pm_constant_id_t name
BlockParameterNode::name.
struct pm_parameters_node * parameters
BlockParametersNode::parameters.
struct pm_node_list locals
BlockParametersNode::locals.
pm_location_t closing_loc
BlockParametersNode::closing_loc.
pm_location_t opening_loc
BlockParametersNode::opening_loc.
struct pm_arguments_node * arguments
BreakNode::arguments.
pm_location_t keyword_loc
BreakNode::keyword_loc.
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
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.
struct pm_node * receiver
CallAndWriteNode::receiver.
pm_location_t opening_loc
CallNode::opening_loc.
pm_location_t closing_loc
CallNode::closing_loc.
struct pm_node * receiver
CallNode::receiver.
pm_constant_id_t name
CallNode::name.
pm_location_t call_operator_loc
CallNode::call_operator_loc.
pm_location_t message_loc
CallNode::message_loc.
struct pm_arguments_node * arguments
CallNode::arguments.
struct pm_node * block
CallNode::block.
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.
struct pm_node * receiver
CallOperatorWriteNode::receiver.
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
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.
struct pm_node * receiver
CallOrWriteNode::receiver.
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_constant_id_t name
CallTargetNode::name.
struct pm_node * receiver
CallTargetNode::receiver.
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
pm_location_t message_loc
CallTargetNode::message_loc.
struct pm_local_variable_target_node * target
CapturePatternNode::target.
pm_location_t operator_loc
CapturePatternNode::operator_loc.
struct pm_node * value
CapturePatternNode::value.
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
struct pm_node_list conditions
CaseMatchNode::conditions.
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
struct pm_else_node * else_clause
CaseMatchNode::else_clause.
struct pm_node * predicate
CaseMatchNode::predicate.
struct pm_node * predicate
CaseNode::predicate.
struct pm_else_node * else_clause
CaseNode::else_clause.
struct pm_node_list conditions
CaseNode::conditions.
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.
struct pm_node * constant_path
ClassNode::constant_path.
pm_constant_id_list_t locals
ClassNode::locals.
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
pm_constant_id_t name
ClassNode::name.
struct pm_node * body
ClassNode::body.
struct pm_node * superclass
ClassNode::superclass.
struct pm_node * value
ClassVariableAndWriteNode::value.
pm_constant_id_t name
ClassVariableAndWriteNode::name.
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
struct pm_node * value
ClassVariableOperatorWriteNode::value.
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableOrWriteNode::name.
struct pm_node * value
ClassVariableOrWriteNode::value.
pm_constant_id_t name
ClassVariableReadNode::name.
pm_constant_id_t name
ClassVariableTargetNode::name.
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
struct pm_node * value
ClassVariableWriteNode::value.
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
pm_constant_id_t name
ClassVariableWriteNode::name.
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
pm_constant_id_t name
ConstantAndWriteNode::name.
struct pm_node * value
ConstantAndWriteNode::value.
size_t size
The number of constant ids in the list.
pm_constant_id_t * ids
The constant ids in the list.
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.
struct pm_node * value
ConstantOperatorWriteNode::value.
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
pm_constant_id_t name
ConstantOrWriteNode::name.
struct pm_node * value
ConstantOrWriteNode::value.
struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
struct pm_node * value
ConstantPathAndWriteNode::value.
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
pm_location_t name_loc
ConstantPathNode::name_loc.
pm_constant_id_t name
ConstantPathNode::name.
struct pm_node * parent
ConstantPathNode::parent.
struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
struct pm_node * value
ConstantPathOperatorWriteNode::value.
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
struct pm_node * value
ConstantPathOrWriteNode::value.
struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
struct pm_node * parent
ConstantPathTargetNode::parent.
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
pm_constant_id_t name
ConstantPathTargetNode::name.
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
struct pm_constant_path_node * target
ConstantPathWriteNode::target.
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
struct pm_node * value
ConstantPathWriteNode::value.
uint32_t size
The number of buckets in the hash map.
pm_constant_t * constants
The constants that are stored in the buckets.
pm_constant_id_t name
ConstantReadNode::name.
A constant in the pool which effectively stores a string.
size_t length
The length of the string.
const uint8_t * start
A pointer to the start of the string.
pm_constant_id_t name
ConstantTargetNode::name.
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.
struct pm_parameters_node * parameters
DefNode::parameters.
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.
struct pm_node * body
DefNode::body.
pm_location_t equal_loc
DefNode::equal_loc.
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
struct pm_node * receiver
DefNode::receiver.
pm_location_t lparen_loc
DefNode::lparen_loc.
pm_location_t operator_loc
DefNode::operator_loc.
pm_constant_id_list_t locals
DefNode::locals.
pm_location_t lparen_loc
DefinedNode::lparen_loc.
pm_location_t rparen_loc
DefinedNode::rparen_loc.
pm_location_t keyword_loc
DefinedNode::keyword_loc.
struct pm_node * value
DefinedNode::value.
struct pm_statements_node * statements
ElseNode::statements.
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
struct pm_node * variable
EmbeddedVariableNode::variable.
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
struct pm_statements_node * statements
EnsureNode::statements.
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
struct pm_node * constant
FindPatternNode::constant.
struct pm_node * right
FindPatternNode::right.
pm_location_t opening_loc
FindPatternNode::opening_loc.
struct pm_node_list requireds
FindPatternNode::requireds.
struct pm_splat_node * left
FindPatternNode::left.
pm_location_t closing_loc
FindPatternNode::closing_loc.
pm_location_t operator_loc
FlipFlopNode::operator_loc.
struct pm_node * left
FlipFlopNode::left.
struct pm_node * right
FlipFlopNode::right.
double value
FloatNode::value.
struct pm_statements_node * statements
ForNode::statements.
struct pm_node * index
ForNode::index.
struct pm_node * collection
ForNode::collection.
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.
struct pm_block_node * block
ForwardingSuperNode::block.
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
struct pm_node * value
GlobalVariableAndWriteNode::value.
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
struct pm_node * value
GlobalVariableOperatorWriteNode::value.
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
struct pm_node * value
GlobalVariableOrWriteNode::value.
pm_constant_id_t name
GlobalVariableReadNode::name.
pm_constant_id_t name
GlobalVariableTargetNode::name.
struct pm_node * value
GlobalVariableWriteNode::value.
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
pm_constant_id_t name
GlobalVariableWriteNode::name.
struct pm_node_list elements
HashNode::elements.
pm_location_t closing_loc
HashNode::closing_loc.
pm_location_t opening_loc
HashNode::opening_loc.
struct pm_node_list elements
HashPatternNode::elements.
pm_location_t opening_loc
HashPatternNode::opening_loc.
struct pm_node * rest
HashPatternNode::rest.
pm_location_t closing_loc
HashPatternNode::closing_loc.
struct pm_node * constant
HashPatternNode::constant.
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.
struct pm_statements_node * statements
IfNode::statements.
struct pm_node * subsequent
IfNode::subsequent.
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
struct pm_node * numeric
ImaginaryNode::numeric.
struct pm_node * value
ImplicitNode::value.
struct pm_statements_node * statements
InNode::statements.
struct pm_node * pattern
InNode::pattern.
pm_location_t then_loc
InNode::then_loc.
pm_location_t in_loc
InNode::in_loc.
struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
struct pm_node * receiver
IndexAndWriteNode::receiver.
struct pm_block_argument_node * block
IndexAndWriteNode::block.
struct pm_node * value
IndexAndWriteNode::value.
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.
struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
struct pm_node * value
IndexOperatorWriteNode::value.
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
struct pm_node * receiver
IndexOperatorWriteNode::receiver.
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
struct pm_block_argument_node * block
IndexOrWriteNode::block.
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
struct pm_node * receiver
IndexOrWriteNode::receiver.
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
struct pm_node * value
IndexOrWriteNode::value.
struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
struct pm_node * receiver
IndexTargetNode::receiver.
pm_location_t closing_loc
IndexTargetNode::closing_loc.
struct pm_arguments_node * arguments
IndexTargetNode::arguments.
pm_location_t opening_loc
IndexTargetNode::opening_loc.
struct pm_block_argument_node * block
IndexTargetNode::block.
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
struct pm_node * value
InstanceVariableAndWriteNode::value.
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
struct pm_node * value
InstanceVariableOperatorWriteNode::value.
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
struct pm_node * value
InstanceVariableOrWriteNode::value.
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
pm_constant_id_t name
InstanceVariableReadNode::name.
pm_constant_id_t name
InstanceVariableTargetNode::name.
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
pm_constant_id_t name
InstanceVariableWriteNode::name.
struct pm_node * value
InstanceVariableWriteNode::value.
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
pm_integer_t value
IntegerNode::value.
A structure represents an arbitrary-sized integer.
size_t length
The number of allocated values.
uint32_t value
Embedded value for small integer.
uint32_t * values
List of 32-bit integers.
bool negative
Whether or not the integer is negative.
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
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_location_t opening_loc
InterpolatedXStringNode::opening_loc.
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
struct pm_node_list parts
InterpolatedXStringNode::parts.
struct pm_node_list elements
KeywordHashNode::elements.
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.
struct pm_node * body
LambdaNode::body.
pm_location_t opening_loc
LambdaNode::opening_loc.
struct pm_node * parameters
LambdaNode::parameters.
pm_location_t operator_loc
LambdaNode::operator_loc.
pm_constant_id_list_t locals
LambdaNode::locals.
pm_constant_id_t name
LocalVariableAndWriteNode::name.
uint32_t depth
LocalVariableAndWriteNode::depth.
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
struct pm_node * value
LocalVariableAndWriteNode::value.
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
uint32_t depth
LocalVariableOperatorWriteNode::depth.
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
struct pm_node * value
LocalVariableOperatorWriteNode::value.
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
uint32_t depth
LocalVariableOrWriteNode::depth.
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
struct pm_node * value
LocalVariableOrWriteNode::value.
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.
uint32_t depth
LocalVariableTargetNode::depth.
pm_constant_id_t name
LocalVariableTargetNode::name.
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
struct pm_node * value
LocalVariableWriteNode::value.
uint32_t depth
LocalVariableWriteNode::depth.
pm_constant_id_t name
LocalVariableWriteNode::name.
const uint8_t * start
A pointer to the start location of the range in the source.
const uint8_t * end
A pointer to the end location of the range in the source.
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_location_t operator_loc
MatchPredicateNode::operator_loc.
struct pm_node * pattern
MatchPredicateNode::pattern.
struct pm_node * value
MatchPredicateNode::value.
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
struct pm_node * value
MatchRequiredNode::value.
struct pm_node * pattern
MatchRequiredNode::pattern.
struct pm_node_list targets
MatchWriteNode::targets.
struct pm_call_node * call
MatchWriteNode::call.
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
struct pm_node * constant_path
ModuleNode::constant_path.
struct pm_node * body
ModuleNode::body.
pm_constant_id_list_t locals
ModuleNode::locals.
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
pm_constant_id_t name
ModuleNode::name.
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
struct pm_node_list lefts
MultiTargetNode::lefts.
struct pm_node * rest
MultiTargetNode::rest.
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
struct pm_node_list rights
MultiTargetNode::rights.
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
struct pm_node * value
MultiWriteNode::value.
struct pm_node * rest
MultiWriteNode::rest.
struct pm_node_list rights
MultiWriteNode::rights.
pm_location_t operator_loc
MultiWriteNode::operator_loc.
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
struct pm_node_list lefts
MultiWriteNode::lefts.
size_t * offsets
The list of offsets.
size_t size
The number of offsets in the list.
struct pm_arguments_node * arguments
NextNode::arguments.
pm_location_t keyword_loc
NextNode::keyword_loc.
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
size_t size
The number of nodes in the list.
struct pm_node ** nodes
The nodes in the list.
uint32_t node_id
The unique identifier for this node, which is deterministic based on the source.
pm_node_flags_t flags
This represents any flags on the node.
pm_location_t location
This is the location of the node in the source.
uint8_t maximum
NumberedParametersNode::maximum.
uint32_t number
NumberedReferenceReadNode::number.
pm_constant_id_t name
OptionalKeywordParameterNode::name.
struct pm_node * value
OptionalKeywordParameterNode::value.
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
pm_location_t name_loc
OptionalParameterNode::name_loc.
struct pm_node * value
OptionalParameterNode::value.
pm_constant_id_t name
OptionalParameterNode::name.
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
struct pm_node * left
OrNode::left.
struct pm_node * right
OrNode::right.
pm_location_t operator_loc
OrNode::operator_loc.
struct pm_node * rest
ParametersNode::rest.
struct pm_node_list requireds
ParametersNode::requireds.
struct pm_block_parameter_node * block
ParametersNode::block.
struct pm_node_list optionals
ParametersNode::optionals.
struct pm_node_list posts
ParametersNode::posts.
struct pm_node * keyword_rest
ParametersNode::keyword_rest.
struct pm_node_list keywords
ParametersNode::keywords.
struct pm_node * body
ParenthesesNode::body.
pm_location_t closing_loc
ParenthesesNode::closing_loc.
pm_location_t opening_loc
ParenthesesNode::opening_loc.
const uint8_t * end
The pointer to the end of the source.
pm_constant_pool_t constant_pool
This constant pool keeps all of the constants defined throughout the file so that we can reference th...
const uint8_t * start
The pointer to the start of the source.
int32_t start_line
The line number at the start of the parse.
pm_newline_list_t newline_list
This is the list of newline offsets in the source file.
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
struct pm_node * expression
PinnedExpressionNode::expression.
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
struct pm_node * variable
PinnedVariableNode::variable.
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
pm_location_t closing_loc
PostExecutionNode::closing_loc.
struct pm_statements_node * statements
PostExecutionNode::statements.
pm_location_t opening_loc
PostExecutionNode::opening_loc.
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
struct pm_statements_node * statements
PreExecutionNode::statements.
pm_location_t closing_loc
PreExecutionNode::closing_loc.
pm_location_t opening_loc
PreExecutionNode::opening_loc.
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
struct pm_statements_node * statements
ProgramNode::statements.
pm_constant_id_list_t locals
ProgramNode::locals.
struct pm_node * right
RangeNode::right.
pm_location_t operator_loc
RangeNode::operator_loc.
struct pm_node * left
RangeNode::left.
pm_integer_t denominator
RationalNode::denominator.
pm_integer_t numerator
RationalNode::numerator.
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
pm_string_t unescaped
RegularExpressionNode::unescaped.
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
pm_location_t content_loc
RegularExpressionNode::content_loc.
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
pm_constant_id_t name
RequiredKeywordParameterNode::name.
pm_constant_id_t name
RequiredParameterNode::name.
struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
struct pm_node * expression
RescueModifierNode::expression.
pm_location_t keyword_loc
RescueNode::keyword_loc.
struct pm_rescue_node * subsequent
RescueNode::subsequent.
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
pm_location_t operator_loc
RescueNode::operator_loc.
struct pm_node * reference
RescueNode::reference.
struct pm_node_list exceptions
RescueNode::exceptions.
struct pm_statements_node * statements
RescueNode::statements.
pm_constant_id_t name
RestParameterNode::name.
pm_location_t name_loc
RestParameterNode::name_loc.
pm_location_t operator_loc
RestParameterNode::operator_loc.
pm_location_t keyword_loc
ReturnNode::keyword_loc.
struct pm_arguments_node * arguments
ReturnNode::arguments.
struct pm_node * write
ShareableConstantNode::write.
pm_constant_id_list_t locals
SingletonClassNode::locals.
pm_location_t operator_loc
SingletonClassNode::operator_loc.
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.
struct pm_node * body
SingletonClassNode::body.
pm_string_t filepath
SourceFileNode::filepath.
struct pm_node * expression
SplatNode::expression.
pm_location_t operator_loc
SplatNode::operator_loc.
struct pm_node_list body
StatementsNode::body.
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.
struct pm_arguments_node * arguments
SuperNode::arguments.
pm_location_t lparen_loc
SuperNode::lparen_loc.
pm_location_t keyword_loc
SuperNode::keyword_loc.
pm_location_t rparen_loc
SuperNode::rparen_loc.
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.
This struct represents a token in the Ruby source.
pm_location_t keyword_loc
UndefNode::keyword_loc.
struct pm_node_list names
UndefNode::names.
pm_location_t keyword_loc
UnlessNode::keyword_loc.
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
struct pm_statements_node * statements
UnlessNode::statements.
struct pm_node * predicate
UnlessNode::predicate.
struct pm_else_node * else_clause
UnlessNode::else_clause.
struct pm_statements_node * statements
UntilNode::statements.
pm_location_t closing_loc
UntilNode::closing_loc.
struct pm_node * predicate
UntilNode::predicate.
pm_location_t keyword_loc
UntilNode::keyword_loc.
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
struct pm_statements_node * statements
WhenNode::statements.
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
pm_location_t keyword_loc
WhenNode::keyword_loc.
struct pm_node_list conditions
WhenNode::conditions.
pm_location_t closing_loc
WhileNode::closing_loc.
pm_location_t keyword_loc
WhileNode::keyword_loc.
struct pm_statements_node * statements
WhileNode::statements.
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
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_location_t keyword_loc
YieldNode::keyword_loc.
pm_location_t lparen_loc
YieldNode::lparen_loc.
pm_location_t rparen_loc
YieldNode::rparen_loc.
struct pm_arguments_node * arguments
YieldNode::arguments.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.