prism 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +172 -0
- data/CODE_OF_CONDUCT.md +76 -0
- data/CONTRIBUTING.md +62 -0
- data/LICENSE.md +7 -0
- data/Makefile +84 -0
- data/README.md +89 -0
- data/config.yml +2481 -0
- data/docs/build_system.md +74 -0
- data/docs/building.md +22 -0
- data/docs/configuration.md +60 -0
- data/docs/design.md +53 -0
- data/docs/encoding.md +117 -0
- data/docs/fuzzing.md +93 -0
- data/docs/heredocs.md +36 -0
- data/docs/mapping.md +117 -0
- data/docs/ripper.md +36 -0
- data/docs/ruby_api.md +25 -0
- data/docs/serialization.md +181 -0
- data/docs/testing.md +55 -0
- data/ext/prism/api_node.c +4725 -0
- data/ext/prism/api_pack.c +256 -0
- data/ext/prism/extconf.rb +136 -0
- data/ext/prism/extension.c +626 -0
- data/ext/prism/extension.h +18 -0
- data/include/prism/ast.h +1932 -0
- data/include/prism/defines.h +45 -0
- data/include/prism/diagnostic.h +231 -0
- data/include/prism/enc/pm_encoding.h +95 -0
- data/include/prism/node.h +41 -0
- data/include/prism/pack.h +141 -0
- data/include/prism/parser.h +418 -0
- data/include/prism/regexp.h +19 -0
- data/include/prism/unescape.h +48 -0
- data/include/prism/util/pm_buffer.h +51 -0
- data/include/prism/util/pm_char.h +91 -0
- data/include/prism/util/pm_constant_pool.h +78 -0
- data/include/prism/util/pm_list.h +67 -0
- data/include/prism/util/pm_memchr.h +14 -0
- data/include/prism/util/pm_newline_list.h +61 -0
- data/include/prism/util/pm_state_stack.h +24 -0
- data/include/prism/util/pm_string.h +61 -0
- data/include/prism/util/pm_string_list.h +25 -0
- data/include/prism/util/pm_strpbrk.h +29 -0
- data/include/prism/version.h +4 -0
- data/include/prism.h +82 -0
- data/lib/prism/compiler.rb +465 -0
- data/lib/prism/debug.rb +157 -0
- data/lib/prism/desugar_compiler.rb +206 -0
- data/lib/prism/dispatcher.rb +2051 -0
- data/lib/prism/dsl.rb +750 -0
- data/lib/prism/ffi.rb +251 -0
- data/lib/prism/lex_compat.rb +838 -0
- data/lib/prism/mutation_compiler.rb +718 -0
- data/lib/prism/node.rb +14540 -0
- data/lib/prism/node_ext.rb +55 -0
- data/lib/prism/node_inspector.rb +68 -0
- data/lib/prism/pack.rb +185 -0
- data/lib/prism/parse_result/comments.rb +172 -0
- data/lib/prism/parse_result/newlines.rb +60 -0
- data/lib/prism/parse_result.rb +266 -0
- data/lib/prism/pattern.rb +239 -0
- data/lib/prism/ripper_compat.rb +174 -0
- data/lib/prism/serialize.rb +662 -0
- data/lib/prism/visitor.rb +470 -0
- data/lib/prism.rb +64 -0
- data/prism.gemspec +113 -0
- data/src/diagnostic.c +287 -0
- data/src/enc/pm_big5.c +52 -0
- data/src/enc/pm_euc_jp.c +58 -0
- data/src/enc/pm_gbk.c +61 -0
- data/src/enc/pm_shift_jis.c +56 -0
- data/src/enc/pm_tables.c +507 -0
- data/src/enc/pm_unicode.c +2324 -0
- data/src/enc/pm_windows_31j.c +56 -0
- data/src/node.c +2633 -0
- data/src/pack.c +493 -0
- data/src/prettyprint.c +2136 -0
- data/src/prism.c +14587 -0
- data/src/regexp.c +580 -0
- data/src/serialize.c +1899 -0
- data/src/token_type.c +349 -0
- data/src/unescape.c +637 -0
- data/src/util/pm_buffer.c +103 -0
- data/src/util/pm_char.c +272 -0
- data/src/util/pm_constant_pool.c +252 -0
- data/src/util/pm_list.c +41 -0
- data/src/util/pm_memchr.c +33 -0
- data/src/util/pm_newline_list.c +134 -0
- data/src/util/pm_state_stack.c +19 -0
- data/src/util/pm_string.c +200 -0
- data/src/util/pm_string_list.c +29 -0
- data/src/util/pm_strncasecmp.c +17 -0
- data/src/util/pm_strpbrk.c +66 -0
- metadata +138 -0
@@ -0,0 +1,4725 @@
|
|
1
|
+
/******************************************************************************/
|
2
|
+
/* This file is generated by the templates/template.rb script and should not */
|
3
|
+
/* be modified manually. See */
|
4
|
+
/* templates/ext/prism/api_node.c.erb */
|
5
|
+
/* if you are looking to modify the */
|
6
|
+
/* template */
|
7
|
+
/******************************************************************************/
|
8
|
+
#line 2 "api_node.c.erb"
|
9
|
+
#include "prism/extension.h"
|
10
|
+
|
11
|
+
extern VALUE rb_cPrism;
|
12
|
+
extern VALUE rb_cPrismNode;
|
13
|
+
extern VALUE rb_cPrismSource;
|
14
|
+
extern VALUE rb_cPrismToken;
|
15
|
+
extern VALUE rb_cPrismLocation;
|
16
|
+
|
17
|
+
static VALUE rb_cPrismAliasGlobalVariableNode;
|
18
|
+
static VALUE rb_cPrismAliasMethodNode;
|
19
|
+
static VALUE rb_cPrismAlternationPatternNode;
|
20
|
+
static VALUE rb_cPrismAndNode;
|
21
|
+
static VALUE rb_cPrismArgumentsNode;
|
22
|
+
static VALUE rb_cPrismArrayNode;
|
23
|
+
static VALUE rb_cPrismArrayPatternNode;
|
24
|
+
static VALUE rb_cPrismAssocNode;
|
25
|
+
static VALUE rb_cPrismAssocSplatNode;
|
26
|
+
static VALUE rb_cPrismBackReferenceReadNode;
|
27
|
+
static VALUE rb_cPrismBeginNode;
|
28
|
+
static VALUE rb_cPrismBlockArgumentNode;
|
29
|
+
static VALUE rb_cPrismBlockLocalVariableNode;
|
30
|
+
static VALUE rb_cPrismBlockNode;
|
31
|
+
static VALUE rb_cPrismBlockParameterNode;
|
32
|
+
static VALUE rb_cPrismBlockParametersNode;
|
33
|
+
static VALUE rb_cPrismBreakNode;
|
34
|
+
static VALUE rb_cPrismCallAndWriteNode;
|
35
|
+
static VALUE rb_cPrismCallNode;
|
36
|
+
static VALUE rb_cPrismCallOperatorWriteNode;
|
37
|
+
static VALUE rb_cPrismCallOrWriteNode;
|
38
|
+
static VALUE rb_cPrismCapturePatternNode;
|
39
|
+
static VALUE rb_cPrismCaseNode;
|
40
|
+
static VALUE rb_cPrismClassNode;
|
41
|
+
static VALUE rb_cPrismClassVariableAndWriteNode;
|
42
|
+
static VALUE rb_cPrismClassVariableOperatorWriteNode;
|
43
|
+
static VALUE rb_cPrismClassVariableOrWriteNode;
|
44
|
+
static VALUE rb_cPrismClassVariableReadNode;
|
45
|
+
static VALUE rb_cPrismClassVariableTargetNode;
|
46
|
+
static VALUE rb_cPrismClassVariableWriteNode;
|
47
|
+
static VALUE rb_cPrismConstantAndWriteNode;
|
48
|
+
static VALUE rb_cPrismConstantOperatorWriteNode;
|
49
|
+
static VALUE rb_cPrismConstantOrWriteNode;
|
50
|
+
static VALUE rb_cPrismConstantPathAndWriteNode;
|
51
|
+
static VALUE rb_cPrismConstantPathNode;
|
52
|
+
static VALUE rb_cPrismConstantPathOperatorWriteNode;
|
53
|
+
static VALUE rb_cPrismConstantPathOrWriteNode;
|
54
|
+
static VALUE rb_cPrismConstantPathTargetNode;
|
55
|
+
static VALUE rb_cPrismConstantPathWriteNode;
|
56
|
+
static VALUE rb_cPrismConstantReadNode;
|
57
|
+
static VALUE rb_cPrismConstantTargetNode;
|
58
|
+
static VALUE rb_cPrismConstantWriteNode;
|
59
|
+
static VALUE rb_cPrismDefNode;
|
60
|
+
static VALUE rb_cPrismDefinedNode;
|
61
|
+
static VALUE rb_cPrismElseNode;
|
62
|
+
static VALUE rb_cPrismEmbeddedStatementsNode;
|
63
|
+
static VALUE rb_cPrismEmbeddedVariableNode;
|
64
|
+
static VALUE rb_cPrismEnsureNode;
|
65
|
+
static VALUE rb_cPrismFalseNode;
|
66
|
+
static VALUE rb_cPrismFindPatternNode;
|
67
|
+
static VALUE rb_cPrismFlipFlopNode;
|
68
|
+
static VALUE rb_cPrismFloatNode;
|
69
|
+
static VALUE rb_cPrismForNode;
|
70
|
+
static VALUE rb_cPrismForwardingArgumentsNode;
|
71
|
+
static VALUE rb_cPrismForwardingParameterNode;
|
72
|
+
static VALUE rb_cPrismForwardingSuperNode;
|
73
|
+
static VALUE rb_cPrismGlobalVariableAndWriteNode;
|
74
|
+
static VALUE rb_cPrismGlobalVariableOperatorWriteNode;
|
75
|
+
static VALUE rb_cPrismGlobalVariableOrWriteNode;
|
76
|
+
static VALUE rb_cPrismGlobalVariableReadNode;
|
77
|
+
static VALUE rb_cPrismGlobalVariableTargetNode;
|
78
|
+
static VALUE rb_cPrismGlobalVariableWriteNode;
|
79
|
+
static VALUE rb_cPrismHashNode;
|
80
|
+
static VALUE rb_cPrismHashPatternNode;
|
81
|
+
static VALUE rb_cPrismIfNode;
|
82
|
+
static VALUE rb_cPrismImaginaryNode;
|
83
|
+
static VALUE rb_cPrismImplicitNode;
|
84
|
+
static VALUE rb_cPrismInNode;
|
85
|
+
static VALUE rb_cPrismInstanceVariableAndWriteNode;
|
86
|
+
static VALUE rb_cPrismInstanceVariableOperatorWriteNode;
|
87
|
+
static VALUE rb_cPrismInstanceVariableOrWriteNode;
|
88
|
+
static VALUE rb_cPrismInstanceVariableReadNode;
|
89
|
+
static VALUE rb_cPrismInstanceVariableTargetNode;
|
90
|
+
static VALUE rb_cPrismInstanceVariableWriteNode;
|
91
|
+
static VALUE rb_cPrismIntegerNode;
|
92
|
+
static VALUE rb_cPrismInterpolatedMatchLastLineNode;
|
93
|
+
static VALUE rb_cPrismInterpolatedRegularExpressionNode;
|
94
|
+
static VALUE rb_cPrismInterpolatedStringNode;
|
95
|
+
static VALUE rb_cPrismInterpolatedSymbolNode;
|
96
|
+
static VALUE rb_cPrismInterpolatedXStringNode;
|
97
|
+
static VALUE rb_cPrismKeywordHashNode;
|
98
|
+
static VALUE rb_cPrismKeywordParameterNode;
|
99
|
+
static VALUE rb_cPrismKeywordRestParameterNode;
|
100
|
+
static VALUE rb_cPrismLambdaNode;
|
101
|
+
static VALUE rb_cPrismLocalVariableAndWriteNode;
|
102
|
+
static VALUE rb_cPrismLocalVariableOperatorWriteNode;
|
103
|
+
static VALUE rb_cPrismLocalVariableOrWriteNode;
|
104
|
+
static VALUE rb_cPrismLocalVariableReadNode;
|
105
|
+
static VALUE rb_cPrismLocalVariableTargetNode;
|
106
|
+
static VALUE rb_cPrismLocalVariableWriteNode;
|
107
|
+
static VALUE rb_cPrismMatchLastLineNode;
|
108
|
+
static VALUE rb_cPrismMatchPredicateNode;
|
109
|
+
static VALUE rb_cPrismMatchRequiredNode;
|
110
|
+
static VALUE rb_cPrismMatchWriteNode;
|
111
|
+
static VALUE rb_cPrismMissingNode;
|
112
|
+
static VALUE rb_cPrismModuleNode;
|
113
|
+
static VALUE rb_cPrismMultiTargetNode;
|
114
|
+
static VALUE rb_cPrismMultiWriteNode;
|
115
|
+
static VALUE rb_cPrismNextNode;
|
116
|
+
static VALUE rb_cPrismNilNode;
|
117
|
+
static VALUE rb_cPrismNoKeywordsParameterNode;
|
118
|
+
static VALUE rb_cPrismNumberedReferenceReadNode;
|
119
|
+
static VALUE rb_cPrismOptionalParameterNode;
|
120
|
+
static VALUE rb_cPrismOrNode;
|
121
|
+
static VALUE rb_cPrismParametersNode;
|
122
|
+
static VALUE rb_cPrismParenthesesNode;
|
123
|
+
static VALUE rb_cPrismPinnedExpressionNode;
|
124
|
+
static VALUE rb_cPrismPinnedVariableNode;
|
125
|
+
static VALUE rb_cPrismPostExecutionNode;
|
126
|
+
static VALUE rb_cPrismPreExecutionNode;
|
127
|
+
static VALUE rb_cPrismProgramNode;
|
128
|
+
static VALUE rb_cPrismRangeNode;
|
129
|
+
static VALUE rb_cPrismRationalNode;
|
130
|
+
static VALUE rb_cPrismRedoNode;
|
131
|
+
static VALUE rb_cPrismRegularExpressionNode;
|
132
|
+
static VALUE rb_cPrismRequiredDestructuredParameterNode;
|
133
|
+
static VALUE rb_cPrismRequiredParameterNode;
|
134
|
+
static VALUE rb_cPrismRescueModifierNode;
|
135
|
+
static VALUE rb_cPrismRescueNode;
|
136
|
+
static VALUE rb_cPrismRestParameterNode;
|
137
|
+
static VALUE rb_cPrismRetryNode;
|
138
|
+
static VALUE rb_cPrismReturnNode;
|
139
|
+
static VALUE rb_cPrismSelfNode;
|
140
|
+
static VALUE rb_cPrismSingletonClassNode;
|
141
|
+
static VALUE rb_cPrismSourceEncodingNode;
|
142
|
+
static VALUE rb_cPrismSourceFileNode;
|
143
|
+
static VALUE rb_cPrismSourceLineNode;
|
144
|
+
static VALUE rb_cPrismSplatNode;
|
145
|
+
static VALUE rb_cPrismStatementsNode;
|
146
|
+
static VALUE rb_cPrismStringConcatNode;
|
147
|
+
static VALUE rb_cPrismStringNode;
|
148
|
+
static VALUE rb_cPrismSuperNode;
|
149
|
+
static VALUE rb_cPrismSymbolNode;
|
150
|
+
static VALUE rb_cPrismTrueNode;
|
151
|
+
static VALUE rb_cPrismUndefNode;
|
152
|
+
static VALUE rb_cPrismUnlessNode;
|
153
|
+
static VALUE rb_cPrismUntilNode;
|
154
|
+
static VALUE rb_cPrismWhenNode;
|
155
|
+
static VALUE rb_cPrismWhileNode;
|
156
|
+
static VALUE rb_cPrismXStringNode;
|
157
|
+
static VALUE rb_cPrismYieldNode;
|
158
|
+
|
159
|
+
static VALUE
|
160
|
+
pm_location_new(pm_parser_t *parser, const uint8_t *start, const uint8_t *end, VALUE source) {
|
161
|
+
VALUE argv[] = { source, LONG2FIX(start - parser->start), LONG2FIX(end - start) };
|
162
|
+
return rb_class_new_instance(3, argv, rb_cPrismLocation);
|
163
|
+
}
|
164
|
+
|
165
|
+
VALUE
|
166
|
+
pm_token_new(pm_parser_t *parser, pm_token_t *token, rb_encoding *encoding, VALUE source) {
|
167
|
+
ID type = rb_intern(pm_token_type_to_str(token->type));
|
168
|
+
VALUE location = pm_location_new(parser, token->start, token->end, source);
|
169
|
+
|
170
|
+
VALUE argv[] = {
|
171
|
+
ID2SYM(type),
|
172
|
+
rb_enc_str_new((const char *) token->start, token->end - token->start, encoding),
|
173
|
+
location
|
174
|
+
};
|
175
|
+
|
176
|
+
return rb_class_new_instance(3, argv, rb_cPrismToken);
|
177
|
+
}
|
178
|
+
|
179
|
+
static VALUE
|
180
|
+
pm_string_new(pm_string_t *string, rb_encoding *encoding) {
|
181
|
+
return rb_enc_str_new((const char *) pm_string_source(string), pm_string_length(string), encoding);
|
182
|
+
}
|
183
|
+
|
184
|
+
// Create a Prism::Source object from the given parser.
|
185
|
+
VALUE
|
186
|
+
pm_source_new(pm_parser_t *parser, rb_encoding *encoding) {
|
187
|
+
VALUE source = rb_enc_str_new((const char *) parser->start, parser->end - parser->start, encoding);
|
188
|
+
VALUE offsets = rb_ary_new_capa(parser->newline_list.size);
|
189
|
+
|
190
|
+
for (size_t index = 0; index < parser->newline_list.size; index++) {
|
191
|
+
rb_ary_push(offsets, INT2FIX(parser->newline_list.offsets[index]));
|
192
|
+
}
|
193
|
+
|
194
|
+
VALUE source_argv[] = { source, offsets };
|
195
|
+
return rb_class_new_instance(2, source_argv, rb_cPrismSource);
|
196
|
+
}
|
197
|
+
|
198
|
+
typedef struct pm_node_stack_node {
|
199
|
+
struct pm_node_stack_node *prev;
|
200
|
+
pm_node_t *visit;
|
201
|
+
bool visited;
|
202
|
+
} pm_node_stack_node_t;
|
203
|
+
|
204
|
+
static void
|
205
|
+
pm_node_stack_push(pm_node_stack_node_t **stack, pm_node_t *visit) {
|
206
|
+
pm_node_stack_node_t *node = malloc(sizeof(pm_node_stack_node_t));
|
207
|
+
node->prev = *stack;
|
208
|
+
node->visit = visit;
|
209
|
+
node->visited = false;
|
210
|
+
*stack = node;
|
211
|
+
}
|
212
|
+
|
213
|
+
static pm_node_t *
|
214
|
+
pm_node_stack_pop(pm_node_stack_node_t **stack) {
|
215
|
+
pm_node_stack_node_t *current = *stack;
|
216
|
+
pm_node_t *visit = current->visit;
|
217
|
+
|
218
|
+
*stack = current->prev;
|
219
|
+
free(current);
|
220
|
+
|
221
|
+
return visit;
|
222
|
+
}
|
223
|
+
|
224
|
+
VALUE
|
225
|
+
pm_ast_new(pm_parser_t *parser, pm_node_t *node, rb_encoding *encoding) {
|
226
|
+
VALUE source = pm_source_new(parser, encoding);
|
227
|
+
ID *constants = calloc(parser->constant_pool.size, sizeof(ID));
|
228
|
+
|
229
|
+
for (uint32_t index = 0; index < parser->constant_pool.size; index++) {
|
230
|
+
pm_constant_t *constant = &parser->constant_pool.constants[index];
|
231
|
+
constants[index] = rb_intern3((const char *) constant->start, constant->length, encoding);
|
232
|
+
}
|
233
|
+
|
234
|
+
pm_node_stack_node_t *node_stack = NULL;
|
235
|
+
pm_node_stack_push(&node_stack, node);
|
236
|
+
VALUE value_stack = rb_ary_new();
|
237
|
+
|
238
|
+
while (node_stack != NULL) {
|
239
|
+
if (!node_stack->visited) {
|
240
|
+
if (node_stack->visit == NULL) {
|
241
|
+
pm_node_stack_pop(&node_stack);
|
242
|
+
rb_ary_push(value_stack, Qnil);
|
243
|
+
continue;
|
244
|
+
}
|
245
|
+
|
246
|
+
pm_node_t *node = node_stack->visit;
|
247
|
+
node_stack->visited = true;
|
248
|
+
|
249
|
+
switch (PM_NODE_TYPE(node)) {
|
250
|
+
#line 108 "api_node.c.erb"
|
251
|
+
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
252
|
+
pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
|
253
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->new_name);
|
254
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->old_name);
|
255
|
+
break;
|
256
|
+
}
|
257
|
+
#line 108 "api_node.c.erb"
|
258
|
+
case PM_ALIAS_METHOD_NODE: {
|
259
|
+
pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
|
260
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->new_name);
|
261
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->old_name);
|
262
|
+
break;
|
263
|
+
}
|
264
|
+
#line 108 "api_node.c.erb"
|
265
|
+
case PM_ALTERNATION_PATTERN_NODE: {
|
266
|
+
pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
|
267
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
268
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
269
|
+
break;
|
270
|
+
}
|
271
|
+
#line 108 "api_node.c.erb"
|
272
|
+
case PM_AND_NODE: {
|
273
|
+
pm_and_node_t *cast = (pm_and_node_t *) node;
|
274
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
275
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
276
|
+
break;
|
277
|
+
}
|
278
|
+
#line 108 "api_node.c.erb"
|
279
|
+
case PM_ARGUMENTS_NODE: {
|
280
|
+
pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
|
281
|
+
for (size_t index = 0; index < cast->arguments.size; index++) {
|
282
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments.nodes[index]);
|
283
|
+
}
|
284
|
+
break;
|
285
|
+
}
|
286
|
+
#line 108 "api_node.c.erb"
|
287
|
+
case PM_ARRAY_NODE: {
|
288
|
+
pm_array_node_t *cast = (pm_array_node_t *) node;
|
289
|
+
for (size_t index = 0; index < cast->elements.size; index++) {
|
290
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->elements.nodes[index]);
|
291
|
+
}
|
292
|
+
break;
|
293
|
+
}
|
294
|
+
#line 108 "api_node.c.erb"
|
295
|
+
case PM_ARRAY_PATTERN_NODE: {
|
296
|
+
pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
|
297
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->constant);
|
298
|
+
for (size_t index = 0; index < cast->requireds.size; index++) {
|
299
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->requireds.nodes[index]);
|
300
|
+
}
|
301
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->rest);
|
302
|
+
for (size_t index = 0; index < cast->posts.size; index++) {
|
303
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->posts.nodes[index]);
|
304
|
+
}
|
305
|
+
break;
|
306
|
+
}
|
307
|
+
#line 108 "api_node.c.erb"
|
308
|
+
case PM_ASSOC_NODE: {
|
309
|
+
pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
|
310
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->key);
|
311
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
312
|
+
break;
|
313
|
+
}
|
314
|
+
#line 108 "api_node.c.erb"
|
315
|
+
case PM_ASSOC_SPLAT_NODE: {
|
316
|
+
pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
|
317
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
318
|
+
break;
|
319
|
+
}
|
320
|
+
#line 108 "api_node.c.erb"
|
321
|
+
case PM_BEGIN_NODE: {
|
322
|
+
pm_begin_node_t *cast = (pm_begin_node_t *) node;
|
323
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
324
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->rescue_clause);
|
325
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->else_clause);
|
326
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->ensure_clause);
|
327
|
+
break;
|
328
|
+
}
|
329
|
+
#line 108 "api_node.c.erb"
|
330
|
+
case PM_BLOCK_ARGUMENT_NODE: {
|
331
|
+
pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
|
332
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->expression);
|
333
|
+
break;
|
334
|
+
}
|
335
|
+
#line 108 "api_node.c.erb"
|
336
|
+
case PM_BLOCK_NODE: {
|
337
|
+
pm_block_node_t *cast = (pm_block_node_t *) node;
|
338
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parameters);
|
339
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
340
|
+
break;
|
341
|
+
}
|
342
|
+
#line 108 "api_node.c.erb"
|
343
|
+
case PM_BLOCK_PARAMETERS_NODE: {
|
344
|
+
pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
|
345
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parameters);
|
346
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
347
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->locals.nodes[index]);
|
348
|
+
}
|
349
|
+
break;
|
350
|
+
}
|
351
|
+
#line 108 "api_node.c.erb"
|
352
|
+
case PM_BREAK_NODE: {
|
353
|
+
pm_break_node_t *cast = (pm_break_node_t *) node;
|
354
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
355
|
+
break;
|
356
|
+
}
|
357
|
+
#line 108 "api_node.c.erb"
|
358
|
+
case PM_CALL_AND_WRITE_NODE: {
|
359
|
+
pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
|
360
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
361
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
362
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
363
|
+
break;
|
364
|
+
}
|
365
|
+
#line 108 "api_node.c.erb"
|
366
|
+
case PM_CALL_NODE: {
|
367
|
+
pm_call_node_t *cast = (pm_call_node_t *) node;
|
368
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
369
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
370
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->block);
|
371
|
+
break;
|
372
|
+
}
|
373
|
+
#line 108 "api_node.c.erb"
|
374
|
+
case PM_CALL_OPERATOR_WRITE_NODE: {
|
375
|
+
pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
|
376
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
377
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
378
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
379
|
+
break;
|
380
|
+
}
|
381
|
+
#line 108 "api_node.c.erb"
|
382
|
+
case PM_CALL_OR_WRITE_NODE: {
|
383
|
+
pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
|
384
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
385
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
386
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
387
|
+
break;
|
388
|
+
}
|
389
|
+
#line 108 "api_node.c.erb"
|
390
|
+
case PM_CAPTURE_PATTERN_NODE: {
|
391
|
+
pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
|
392
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
393
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->target);
|
394
|
+
break;
|
395
|
+
}
|
396
|
+
#line 108 "api_node.c.erb"
|
397
|
+
case PM_CASE_NODE: {
|
398
|
+
pm_case_node_t *cast = (pm_case_node_t *) node;
|
399
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->predicate);
|
400
|
+
for (size_t index = 0; index < cast->conditions.size; index++) {
|
401
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->conditions.nodes[index]);
|
402
|
+
}
|
403
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->consequent);
|
404
|
+
break;
|
405
|
+
}
|
406
|
+
#line 108 "api_node.c.erb"
|
407
|
+
case PM_CLASS_NODE: {
|
408
|
+
pm_class_node_t *cast = (pm_class_node_t *) node;
|
409
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->constant_path);
|
410
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->superclass);
|
411
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
412
|
+
break;
|
413
|
+
}
|
414
|
+
#line 108 "api_node.c.erb"
|
415
|
+
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
416
|
+
pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
|
417
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
418
|
+
break;
|
419
|
+
}
|
420
|
+
#line 108 "api_node.c.erb"
|
421
|
+
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
422
|
+
pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
|
423
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
424
|
+
break;
|
425
|
+
}
|
426
|
+
#line 108 "api_node.c.erb"
|
427
|
+
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
428
|
+
pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
|
429
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
430
|
+
break;
|
431
|
+
}
|
432
|
+
#line 108 "api_node.c.erb"
|
433
|
+
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
434
|
+
pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
|
435
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
436
|
+
break;
|
437
|
+
}
|
438
|
+
#line 108 "api_node.c.erb"
|
439
|
+
case PM_CONSTANT_AND_WRITE_NODE: {
|
440
|
+
pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
|
441
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
442
|
+
break;
|
443
|
+
}
|
444
|
+
#line 108 "api_node.c.erb"
|
445
|
+
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
446
|
+
pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
|
447
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
448
|
+
break;
|
449
|
+
}
|
450
|
+
#line 108 "api_node.c.erb"
|
451
|
+
case PM_CONSTANT_OR_WRITE_NODE: {
|
452
|
+
pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
|
453
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
454
|
+
break;
|
455
|
+
}
|
456
|
+
#line 108 "api_node.c.erb"
|
457
|
+
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
458
|
+
pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
|
459
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->target);
|
460
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
461
|
+
break;
|
462
|
+
}
|
463
|
+
#line 108 "api_node.c.erb"
|
464
|
+
case PM_CONSTANT_PATH_NODE: {
|
465
|
+
pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
|
466
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parent);
|
467
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->child);
|
468
|
+
break;
|
469
|
+
}
|
470
|
+
#line 108 "api_node.c.erb"
|
471
|
+
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
472
|
+
pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
|
473
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->target);
|
474
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
475
|
+
break;
|
476
|
+
}
|
477
|
+
#line 108 "api_node.c.erb"
|
478
|
+
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
479
|
+
pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
|
480
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->target);
|
481
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
482
|
+
break;
|
483
|
+
}
|
484
|
+
#line 108 "api_node.c.erb"
|
485
|
+
case PM_CONSTANT_PATH_TARGET_NODE: {
|
486
|
+
pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
|
487
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parent);
|
488
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->child);
|
489
|
+
break;
|
490
|
+
}
|
491
|
+
#line 108 "api_node.c.erb"
|
492
|
+
case PM_CONSTANT_PATH_WRITE_NODE: {
|
493
|
+
pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
|
494
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->target);
|
495
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
496
|
+
break;
|
497
|
+
}
|
498
|
+
#line 108 "api_node.c.erb"
|
499
|
+
case PM_CONSTANT_WRITE_NODE: {
|
500
|
+
pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
|
501
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
502
|
+
break;
|
503
|
+
}
|
504
|
+
#line 108 "api_node.c.erb"
|
505
|
+
case PM_DEF_NODE: {
|
506
|
+
pm_def_node_t *cast = (pm_def_node_t *) node;
|
507
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->receiver);
|
508
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parameters);
|
509
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
510
|
+
break;
|
511
|
+
}
|
512
|
+
#line 108 "api_node.c.erb"
|
513
|
+
case PM_DEFINED_NODE: {
|
514
|
+
pm_defined_node_t *cast = (pm_defined_node_t *) node;
|
515
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
516
|
+
break;
|
517
|
+
}
|
518
|
+
#line 108 "api_node.c.erb"
|
519
|
+
case PM_ELSE_NODE: {
|
520
|
+
pm_else_node_t *cast = (pm_else_node_t *) node;
|
521
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
522
|
+
break;
|
523
|
+
}
|
524
|
+
#line 108 "api_node.c.erb"
|
525
|
+
case PM_EMBEDDED_STATEMENTS_NODE: {
|
526
|
+
pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
|
527
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
528
|
+
break;
|
529
|
+
}
|
530
|
+
#line 108 "api_node.c.erb"
|
531
|
+
case PM_EMBEDDED_VARIABLE_NODE: {
|
532
|
+
pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
|
533
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->variable);
|
534
|
+
break;
|
535
|
+
}
|
536
|
+
#line 108 "api_node.c.erb"
|
537
|
+
case PM_ENSURE_NODE: {
|
538
|
+
pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
|
539
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
540
|
+
break;
|
541
|
+
}
|
542
|
+
#line 108 "api_node.c.erb"
|
543
|
+
case PM_FIND_PATTERN_NODE: {
|
544
|
+
pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
|
545
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->constant);
|
546
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
547
|
+
for (size_t index = 0; index < cast->requireds.size; index++) {
|
548
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->requireds.nodes[index]);
|
549
|
+
}
|
550
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
551
|
+
break;
|
552
|
+
}
|
553
|
+
#line 108 "api_node.c.erb"
|
554
|
+
case PM_FLIP_FLOP_NODE: {
|
555
|
+
pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
|
556
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
557
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
558
|
+
break;
|
559
|
+
}
|
560
|
+
#line 108 "api_node.c.erb"
|
561
|
+
case PM_FOR_NODE: {
|
562
|
+
pm_for_node_t *cast = (pm_for_node_t *) node;
|
563
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->index);
|
564
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->collection);
|
565
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
566
|
+
break;
|
567
|
+
}
|
568
|
+
#line 108 "api_node.c.erb"
|
569
|
+
case PM_FORWARDING_SUPER_NODE: {
|
570
|
+
pm_forwarding_super_node_t *cast = (pm_forwarding_super_node_t *) node;
|
571
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->block);
|
572
|
+
break;
|
573
|
+
}
|
574
|
+
#line 108 "api_node.c.erb"
|
575
|
+
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
576
|
+
pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
|
577
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
578
|
+
break;
|
579
|
+
}
|
580
|
+
#line 108 "api_node.c.erb"
|
581
|
+
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
582
|
+
pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
|
583
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
584
|
+
break;
|
585
|
+
}
|
586
|
+
#line 108 "api_node.c.erb"
|
587
|
+
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
588
|
+
pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
|
589
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
590
|
+
break;
|
591
|
+
}
|
592
|
+
#line 108 "api_node.c.erb"
|
593
|
+
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
594
|
+
pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
|
595
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
596
|
+
break;
|
597
|
+
}
|
598
|
+
#line 108 "api_node.c.erb"
|
599
|
+
case PM_HASH_NODE: {
|
600
|
+
pm_hash_node_t *cast = (pm_hash_node_t *) node;
|
601
|
+
for (size_t index = 0; index < cast->elements.size; index++) {
|
602
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->elements.nodes[index]);
|
603
|
+
}
|
604
|
+
break;
|
605
|
+
}
|
606
|
+
#line 108 "api_node.c.erb"
|
607
|
+
case PM_HASH_PATTERN_NODE: {
|
608
|
+
pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
|
609
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->constant);
|
610
|
+
for (size_t index = 0; index < cast->assocs.size; index++) {
|
611
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->assocs.nodes[index]);
|
612
|
+
}
|
613
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->kwrest);
|
614
|
+
break;
|
615
|
+
}
|
616
|
+
#line 108 "api_node.c.erb"
|
617
|
+
case PM_IF_NODE: {
|
618
|
+
pm_if_node_t *cast = (pm_if_node_t *) node;
|
619
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->predicate);
|
620
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
621
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->consequent);
|
622
|
+
break;
|
623
|
+
}
|
624
|
+
#line 108 "api_node.c.erb"
|
625
|
+
case PM_IMAGINARY_NODE: {
|
626
|
+
pm_imaginary_node_t *cast = (pm_imaginary_node_t *) node;
|
627
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->numeric);
|
628
|
+
break;
|
629
|
+
}
|
630
|
+
#line 108 "api_node.c.erb"
|
631
|
+
case PM_IMPLICIT_NODE: {
|
632
|
+
pm_implicit_node_t *cast = (pm_implicit_node_t *) node;
|
633
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
634
|
+
break;
|
635
|
+
}
|
636
|
+
#line 108 "api_node.c.erb"
|
637
|
+
case PM_IN_NODE: {
|
638
|
+
pm_in_node_t *cast = (pm_in_node_t *) node;
|
639
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->pattern);
|
640
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
641
|
+
break;
|
642
|
+
}
|
643
|
+
#line 108 "api_node.c.erb"
|
644
|
+
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
645
|
+
pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
|
646
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
647
|
+
break;
|
648
|
+
}
|
649
|
+
#line 108 "api_node.c.erb"
|
650
|
+
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
651
|
+
pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
|
652
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
653
|
+
break;
|
654
|
+
}
|
655
|
+
#line 108 "api_node.c.erb"
|
656
|
+
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
657
|
+
pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
|
658
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
659
|
+
break;
|
660
|
+
}
|
661
|
+
#line 108 "api_node.c.erb"
|
662
|
+
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
663
|
+
pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
|
664
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
665
|
+
break;
|
666
|
+
}
|
667
|
+
#line 108 "api_node.c.erb"
|
668
|
+
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
669
|
+
pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
|
670
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
671
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parts.nodes[index]);
|
672
|
+
}
|
673
|
+
break;
|
674
|
+
}
|
675
|
+
#line 108 "api_node.c.erb"
|
676
|
+
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
677
|
+
pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
|
678
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
679
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parts.nodes[index]);
|
680
|
+
}
|
681
|
+
break;
|
682
|
+
}
|
683
|
+
#line 108 "api_node.c.erb"
|
684
|
+
case PM_INTERPOLATED_STRING_NODE: {
|
685
|
+
pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
|
686
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
687
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parts.nodes[index]);
|
688
|
+
}
|
689
|
+
break;
|
690
|
+
}
|
691
|
+
#line 108 "api_node.c.erb"
|
692
|
+
case PM_INTERPOLATED_SYMBOL_NODE: {
|
693
|
+
pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
|
694
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
695
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parts.nodes[index]);
|
696
|
+
}
|
697
|
+
break;
|
698
|
+
}
|
699
|
+
#line 108 "api_node.c.erb"
|
700
|
+
case PM_INTERPOLATED_X_STRING_NODE: {
|
701
|
+
pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
|
702
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
703
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parts.nodes[index]);
|
704
|
+
}
|
705
|
+
break;
|
706
|
+
}
|
707
|
+
#line 108 "api_node.c.erb"
|
708
|
+
case PM_KEYWORD_HASH_NODE: {
|
709
|
+
pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
|
710
|
+
for (size_t index = 0; index < cast->elements.size; index++) {
|
711
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->elements.nodes[index]);
|
712
|
+
}
|
713
|
+
break;
|
714
|
+
}
|
715
|
+
#line 108 "api_node.c.erb"
|
716
|
+
case PM_KEYWORD_PARAMETER_NODE: {
|
717
|
+
pm_keyword_parameter_node_t *cast = (pm_keyword_parameter_node_t *) node;
|
718
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
719
|
+
break;
|
720
|
+
}
|
721
|
+
#line 108 "api_node.c.erb"
|
722
|
+
case PM_LAMBDA_NODE: {
|
723
|
+
pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
|
724
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parameters);
|
725
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
726
|
+
break;
|
727
|
+
}
|
728
|
+
#line 108 "api_node.c.erb"
|
729
|
+
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
730
|
+
pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
|
731
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
732
|
+
break;
|
733
|
+
}
|
734
|
+
#line 108 "api_node.c.erb"
|
735
|
+
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
736
|
+
pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
|
737
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
738
|
+
break;
|
739
|
+
}
|
740
|
+
#line 108 "api_node.c.erb"
|
741
|
+
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
742
|
+
pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
|
743
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
744
|
+
break;
|
745
|
+
}
|
746
|
+
#line 108 "api_node.c.erb"
|
747
|
+
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
748
|
+
pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
|
749
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
750
|
+
break;
|
751
|
+
}
|
752
|
+
#line 108 "api_node.c.erb"
|
753
|
+
case PM_MATCH_PREDICATE_NODE: {
|
754
|
+
pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
|
755
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
756
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->pattern);
|
757
|
+
break;
|
758
|
+
}
|
759
|
+
#line 108 "api_node.c.erb"
|
760
|
+
case PM_MATCH_REQUIRED_NODE: {
|
761
|
+
pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
|
762
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
763
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->pattern);
|
764
|
+
break;
|
765
|
+
}
|
766
|
+
#line 108 "api_node.c.erb"
|
767
|
+
case PM_MATCH_WRITE_NODE: {
|
768
|
+
pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
|
769
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->call);
|
770
|
+
break;
|
771
|
+
}
|
772
|
+
#line 108 "api_node.c.erb"
|
773
|
+
case PM_MODULE_NODE: {
|
774
|
+
pm_module_node_t *cast = (pm_module_node_t *) node;
|
775
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->constant_path);
|
776
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
777
|
+
break;
|
778
|
+
}
|
779
|
+
#line 108 "api_node.c.erb"
|
780
|
+
case PM_MULTI_TARGET_NODE: {
|
781
|
+
pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
|
782
|
+
for (size_t index = 0; index < cast->targets.size; index++) {
|
783
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->targets.nodes[index]);
|
784
|
+
}
|
785
|
+
break;
|
786
|
+
}
|
787
|
+
#line 108 "api_node.c.erb"
|
788
|
+
case PM_MULTI_WRITE_NODE: {
|
789
|
+
pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
|
790
|
+
for (size_t index = 0; index < cast->targets.size; index++) {
|
791
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->targets.nodes[index]);
|
792
|
+
}
|
793
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
794
|
+
break;
|
795
|
+
}
|
796
|
+
#line 108 "api_node.c.erb"
|
797
|
+
case PM_NEXT_NODE: {
|
798
|
+
pm_next_node_t *cast = (pm_next_node_t *) node;
|
799
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
800
|
+
break;
|
801
|
+
}
|
802
|
+
#line 108 "api_node.c.erb"
|
803
|
+
case PM_OPTIONAL_PARAMETER_NODE: {
|
804
|
+
pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
|
805
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->value);
|
806
|
+
break;
|
807
|
+
}
|
808
|
+
#line 108 "api_node.c.erb"
|
809
|
+
case PM_OR_NODE: {
|
810
|
+
pm_or_node_t *cast = (pm_or_node_t *) node;
|
811
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
812
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
813
|
+
break;
|
814
|
+
}
|
815
|
+
#line 108 "api_node.c.erb"
|
816
|
+
case PM_PARAMETERS_NODE: {
|
817
|
+
pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
|
818
|
+
for (size_t index = 0; index < cast->requireds.size; index++) {
|
819
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->requireds.nodes[index]);
|
820
|
+
}
|
821
|
+
for (size_t index = 0; index < cast->optionals.size; index++) {
|
822
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->optionals.nodes[index]);
|
823
|
+
}
|
824
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->rest);
|
825
|
+
for (size_t index = 0; index < cast->posts.size; index++) {
|
826
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->posts.nodes[index]);
|
827
|
+
}
|
828
|
+
for (size_t index = 0; index < cast->keywords.size; index++) {
|
829
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->keywords.nodes[index]);
|
830
|
+
}
|
831
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->keyword_rest);
|
832
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->block);
|
833
|
+
break;
|
834
|
+
}
|
835
|
+
#line 108 "api_node.c.erb"
|
836
|
+
case PM_PARENTHESES_NODE: {
|
837
|
+
pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
|
838
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
839
|
+
break;
|
840
|
+
}
|
841
|
+
#line 108 "api_node.c.erb"
|
842
|
+
case PM_PINNED_EXPRESSION_NODE: {
|
843
|
+
pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
|
844
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->expression);
|
845
|
+
break;
|
846
|
+
}
|
847
|
+
#line 108 "api_node.c.erb"
|
848
|
+
case PM_PINNED_VARIABLE_NODE: {
|
849
|
+
pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
|
850
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->variable);
|
851
|
+
break;
|
852
|
+
}
|
853
|
+
#line 108 "api_node.c.erb"
|
854
|
+
case PM_POST_EXECUTION_NODE: {
|
855
|
+
pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
|
856
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
857
|
+
break;
|
858
|
+
}
|
859
|
+
#line 108 "api_node.c.erb"
|
860
|
+
case PM_PRE_EXECUTION_NODE: {
|
861
|
+
pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
|
862
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
863
|
+
break;
|
864
|
+
}
|
865
|
+
#line 108 "api_node.c.erb"
|
866
|
+
case PM_PROGRAM_NODE: {
|
867
|
+
pm_program_node_t *cast = (pm_program_node_t *) node;
|
868
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
869
|
+
break;
|
870
|
+
}
|
871
|
+
#line 108 "api_node.c.erb"
|
872
|
+
case PM_RANGE_NODE: {
|
873
|
+
pm_range_node_t *cast = (pm_range_node_t *) node;
|
874
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
875
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
876
|
+
break;
|
877
|
+
}
|
878
|
+
#line 108 "api_node.c.erb"
|
879
|
+
case PM_RATIONAL_NODE: {
|
880
|
+
pm_rational_node_t *cast = (pm_rational_node_t *) node;
|
881
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->numeric);
|
882
|
+
break;
|
883
|
+
}
|
884
|
+
#line 108 "api_node.c.erb"
|
885
|
+
case PM_REQUIRED_DESTRUCTURED_PARAMETER_NODE: {
|
886
|
+
pm_required_destructured_parameter_node_t *cast = (pm_required_destructured_parameter_node_t *) node;
|
887
|
+
for (size_t index = 0; index < cast->parameters.size; index++) {
|
888
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->parameters.nodes[index]);
|
889
|
+
}
|
890
|
+
break;
|
891
|
+
}
|
892
|
+
#line 108 "api_node.c.erb"
|
893
|
+
case PM_RESCUE_MODIFIER_NODE: {
|
894
|
+
pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
|
895
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->expression);
|
896
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->rescue_expression);
|
897
|
+
break;
|
898
|
+
}
|
899
|
+
#line 108 "api_node.c.erb"
|
900
|
+
case PM_RESCUE_NODE: {
|
901
|
+
pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
|
902
|
+
for (size_t index = 0; index < cast->exceptions.size; index++) {
|
903
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->exceptions.nodes[index]);
|
904
|
+
}
|
905
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->reference);
|
906
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
907
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->consequent);
|
908
|
+
break;
|
909
|
+
}
|
910
|
+
#line 108 "api_node.c.erb"
|
911
|
+
case PM_RETURN_NODE: {
|
912
|
+
pm_return_node_t *cast = (pm_return_node_t *) node;
|
913
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
914
|
+
break;
|
915
|
+
}
|
916
|
+
#line 108 "api_node.c.erb"
|
917
|
+
case PM_SINGLETON_CLASS_NODE: {
|
918
|
+
pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
|
919
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->expression);
|
920
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body);
|
921
|
+
break;
|
922
|
+
}
|
923
|
+
#line 108 "api_node.c.erb"
|
924
|
+
case PM_SPLAT_NODE: {
|
925
|
+
pm_splat_node_t *cast = (pm_splat_node_t *) node;
|
926
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->expression);
|
927
|
+
break;
|
928
|
+
}
|
929
|
+
#line 108 "api_node.c.erb"
|
930
|
+
case PM_STATEMENTS_NODE: {
|
931
|
+
pm_statements_node_t *cast = (pm_statements_node_t *) node;
|
932
|
+
for (size_t index = 0; index < cast->body.size; index++) {
|
933
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->body.nodes[index]);
|
934
|
+
}
|
935
|
+
break;
|
936
|
+
}
|
937
|
+
#line 108 "api_node.c.erb"
|
938
|
+
case PM_STRING_CONCAT_NODE: {
|
939
|
+
pm_string_concat_node_t *cast = (pm_string_concat_node_t *) node;
|
940
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->left);
|
941
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->right);
|
942
|
+
break;
|
943
|
+
}
|
944
|
+
#line 108 "api_node.c.erb"
|
945
|
+
case PM_SUPER_NODE: {
|
946
|
+
pm_super_node_t *cast = (pm_super_node_t *) node;
|
947
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
948
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->block);
|
949
|
+
break;
|
950
|
+
}
|
951
|
+
#line 108 "api_node.c.erb"
|
952
|
+
case PM_UNDEF_NODE: {
|
953
|
+
pm_undef_node_t *cast = (pm_undef_node_t *) node;
|
954
|
+
for (size_t index = 0; index < cast->names.size; index++) {
|
955
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->names.nodes[index]);
|
956
|
+
}
|
957
|
+
break;
|
958
|
+
}
|
959
|
+
#line 108 "api_node.c.erb"
|
960
|
+
case PM_UNLESS_NODE: {
|
961
|
+
pm_unless_node_t *cast = (pm_unless_node_t *) node;
|
962
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->predicate);
|
963
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
964
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->consequent);
|
965
|
+
break;
|
966
|
+
}
|
967
|
+
#line 108 "api_node.c.erb"
|
968
|
+
case PM_UNTIL_NODE: {
|
969
|
+
pm_until_node_t *cast = (pm_until_node_t *) node;
|
970
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->predicate);
|
971
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
972
|
+
break;
|
973
|
+
}
|
974
|
+
#line 108 "api_node.c.erb"
|
975
|
+
case PM_WHEN_NODE: {
|
976
|
+
pm_when_node_t *cast = (pm_when_node_t *) node;
|
977
|
+
for (size_t index = 0; index < cast->conditions.size; index++) {
|
978
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->conditions.nodes[index]);
|
979
|
+
}
|
980
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
981
|
+
break;
|
982
|
+
}
|
983
|
+
#line 108 "api_node.c.erb"
|
984
|
+
case PM_WHILE_NODE: {
|
985
|
+
pm_while_node_t *cast = (pm_while_node_t *) node;
|
986
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->predicate);
|
987
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->statements);
|
988
|
+
break;
|
989
|
+
}
|
990
|
+
#line 108 "api_node.c.erb"
|
991
|
+
case PM_YIELD_NODE: {
|
992
|
+
pm_yield_node_t *cast = (pm_yield_node_t *) node;
|
993
|
+
pm_node_stack_push(&node_stack, (pm_node_t *) cast->arguments);
|
994
|
+
break;
|
995
|
+
}
|
996
|
+
default:
|
997
|
+
break;
|
998
|
+
}
|
999
|
+
#line 128 "api_node.c.erb"
|
1000
|
+
} else {
|
1001
|
+
pm_node_t *node = pm_node_stack_pop(&node_stack);
|
1002
|
+
|
1003
|
+
switch (PM_NODE_TYPE(node)) {
|
1004
|
+
#line 134 "api_node.c.erb"
|
1005
|
+
case PM_ALIAS_GLOBAL_VARIABLE_NODE: {
|
1006
|
+
pm_alias_global_variable_node_t *cast = (pm_alias_global_variable_node_t *) node;
|
1007
|
+
VALUE argv[4];
|
1008
|
+
|
1009
|
+
// new_name
|
1010
|
+
#line 145 "api_node.c.erb"
|
1011
|
+
argv[0] = rb_ary_pop(value_stack);
|
1012
|
+
|
1013
|
+
// old_name
|
1014
|
+
#line 145 "api_node.c.erb"
|
1015
|
+
argv[1] = rb_ary_pop(value_stack);
|
1016
|
+
|
1017
|
+
// keyword_loc
|
1018
|
+
#line 170 "api_node.c.erb"
|
1019
|
+
argv[2] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
1020
|
+
|
1021
|
+
// location
|
1022
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1023
|
+
|
1024
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismAliasGlobalVariableNode));
|
1025
|
+
break;
|
1026
|
+
}
|
1027
|
+
#line 134 "api_node.c.erb"
|
1028
|
+
case PM_ALIAS_METHOD_NODE: {
|
1029
|
+
pm_alias_method_node_t *cast = (pm_alias_method_node_t *) node;
|
1030
|
+
VALUE argv[4];
|
1031
|
+
|
1032
|
+
// new_name
|
1033
|
+
#line 145 "api_node.c.erb"
|
1034
|
+
argv[0] = rb_ary_pop(value_stack);
|
1035
|
+
|
1036
|
+
// old_name
|
1037
|
+
#line 145 "api_node.c.erb"
|
1038
|
+
argv[1] = rb_ary_pop(value_stack);
|
1039
|
+
|
1040
|
+
// keyword_loc
|
1041
|
+
#line 170 "api_node.c.erb"
|
1042
|
+
argv[2] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
1043
|
+
|
1044
|
+
// location
|
1045
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1046
|
+
|
1047
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismAliasMethodNode));
|
1048
|
+
break;
|
1049
|
+
}
|
1050
|
+
#line 134 "api_node.c.erb"
|
1051
|
+
case PM_ALTERNATION_PATTERN_NODE: {
|
1052
|
+
pm_alternation_pattern_node_t *cast = (pm_alternation_pattern_node_t *) node;
|
1053
|
+
VALUE argv[4];
|
1054
|
+
|
1055
|
+
// left
|
1056
|
+
#line 145 "api_node.c.erb"
|
1057
|
+
argv[0] = rb_ary_pop(value_stack);
|
1058
|
+
|
1059
|
+
// right
|
1060
|
+
#line 145 "api_node.c.erb"
|
1061
|
+
argv[1] = rb_ary_pop(value_stack);
|
1062
|
+
|
1063
|
+
// operator_loc
|
1064
|
+
#line 170 "api_node.c.erb"
|
1065
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1066
|
+
|
1067
|
+
// location
|
1068
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1069
|
+
|
1070
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismAlternationPatternNode));
|
1071
|
+
break;
|
1072
|
+
}
|
1073
|
+
#line 134 "api_node.c.erb"
|
1074
|
+
case PM_AND_NODE: {
|
1075
|
+
pm_and_node_t *cast = (pm_and_node_t *) node;
|
1076
|
+
VALUE argv[4];
|
1077
|
+
|
1078
|
+
// left
|
1079
|
+
#line 145 "api_node.c.erb"
|
1080
|
+
argv[0] = rb_ary_pop(value_stack);
|
1081
|
+
|
1082
|
+
// right
|
1083
|
+
#line 145 "api_node.c.erb"
|
1084
|
+
argv[1] = rb_ary_pop(value_stack);
|
1085
|
+
|
1086
|
+
// operator_loc
|
1087
|
+
#line 170 "api_node.c.erb"
|
1088
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1089
|
+
|
1090
|
+
// location
|
1091
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1092
|
+
|
1093
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismAndNode));
|
1094
|
+
break;
|
1095
|
+
}
|
1096
|
+
#line 134 "api_node.c.erb"
|
1097
|
+
case PM_ARGUMENTS_NODE: {
|
1098
|
+
pm_arguments_node_t *cast = (pm_arguments_node_t *) node;
|
1099
|
+
VALUE argv[2];
|
1100
|
+
|
1101
|
+
// arguments
|
1102
|
+
#line 148 "api_node.c.erb"
|
1103
|
+
argv[0] = rb_ary_new_capa(cast->arguments.size);
|
1104
|
+
for (size_t index = 0; index < cast->arguments.size; index++) {
|
1105
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
1106
|
+
}
|
1107
|
+
|
1108
|
+
// location
|
1109
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1110
|
+
|
1111
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismArgumentsNode));
|
1112
|
+
break;
|
1113
|
+
}
|
1114
|
+
#line 134 "api_node.c.erb"
|
1115
|
+
case PM_ARRAY_NODE: {
|
1116
|
+
pm_array_node_t *cast = (pm_array_node_t *) node;
|
1117
|
+
VALUE argv[4];
|
1118
|
+
|
1119
|
+
// elements
|
1120
|
+
#line 148 "api_node.c.erb"
|
1121
|
+
argv[0] = rb_ary_new_capa(cast->elements.size);
|
1122
|
+
for (size_t index = 0; index < cast->elements.size; index++) {
|
1123
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
1124
|
+
}
|
1125
|
+
|
1126
|
+
// opening_loc
|
1127
|
+
#line 173 "api_node.c.erb"
|
1128
|
+
argv[1] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1129
|
+
|
1130
|
+
// closing_loc
|
1131
|
+
#line 173 "api_node.c.erb"
|
1132
|
+
argv[2] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1133
|
+
|
1134
|
+
// location
|
1135
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1136
|
+
|
1137
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismArrayNode));
|
1138
|
+
break;
|
1139
|
+
}
|
1140
|
+
#line 134 "api_node.c.erb"
|
1141
|
+
case PM_ARRAY_PATTERN_NODE: {
|
1142
|
+
pm_array_pattern_node_t *cast = (pm_array_pattern_node_t *) node;
|
1143
|
+
VALUE argv[7];
|
1144
|
+
|
1145
|
+
// constant
|
1146
|
+
#line 145 "api_node.c.erb"
|
1147
|
+
argv[0] = rb_ary_pop(value_stack);
|
1148
|
+
|
1149
|
+
// requireds
|
1150
|
+
#line 148 "api_node.c.erb"
|
1151
|
+
argv[1] = rb_ary_new_capa(cast->requireds.size);
|
1152
|
+
for (size_t index = 0; index < cast->requireds.size; index++) {
|
1153
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1154
|
+
}
|
1155
|
+
|
1156
|
+
// rest
|
1157
|
+
#line 145 "api_node.c.erb"
|
1158
|
+
argv[2] = rb_ary_pop(value_stack);
|
1159
|
+
|
1160
|
+
// posts
|
1161
|
+
#line 148 "api_node.c.erb"
|
1162
|
+
argv[3] = rb_ary_new_capa(cast->posts.size);
|
1163
|
+
for (size_t index = 0; index < cast->posts.size; index++) {
|
1164
|
+
rb_ary_push(argv[3], rb_ary_pop(value_stack));
|
1165
|
+
}
|
1166
|
+
|
1167
|
+
// opening_loc
|
1168
|
+
#line 173 "api_node.c.erb"
|
1169
|
+
argv[4] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1170
|
+
|
1171
|
+
// closing_loc
|
1172
|
+
#line 173 "api_node.c.erb"
|
1173
|
+
argv[5] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1174
|
+
|
1175
|
+
// location
|
1176
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1177
|
+
|
1178
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismArrayPatternNode));
|
1179
|
+
break;
|
1180
|
+
}
|
1181
|
+
#line 134 "api_node.c.erb"
|
1182
|
+
case PM_ASSOC_NODE: {
|
1183
|
+
pm_assoc_node_t *cast = (pm_assoc_node_t *) node;
|
1184
|
+
VALUE argv[4];
|
1185
|
+
|
1186
|
+
// key
|
1187
|
+
#line 145 "api_node.c.erb"
|
1188
|
+
argv[0] = rb_ary_pop(value_stack);
|
1189
|
+
|
1190
|
+
// value
|
1191
|
+
#line 145 "api_node.c.erb"
|
1192
|
+
argv[1] = rb_ary_pop(value_stack);
|
1193
|
+
|
1194
|
+
// operator_loc
|
1195
|
+
#line 173 "api_node.c.erb"
|
1196
|
+
argv[2] = cast->operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1197
|
+
|
1198
|
+
// location
|
1199
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1200
|
+
|
1201
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismAssocNode));
|
1202
|
+
break;
|
1203
|
+
}
|
1204
|
+
#line 134 "api_node.c.erb"
|
1205
|
+
case PM_ASSOC_SPLAT_NODE: {
|
1206
|
+
pm_assoc_splat_node_t *cast = (pm_assoc_splat_node_t *) node;
|
1207
|
+
VALUE argv[3];
|
1208
|
+
|
1209
|
+
// value
|
1210
|
+
#line 145 "api_node.c.erb"
|
1211
|
+
argv[0] = rb_ary_pop(value_stack);
|
1212
|
+
|
1213
|
+
// operator_loc
|
1214
|
+
#line 170 "api_node.c.erb"
|
1215
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1216
|
+
|
1217
|
+
// location
|
1218
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1219
|
+
|
1220
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismAssocSplatNode));
|
1221
|
+
break;
|
1222
|
+
}
|
1223
|
+
#line 134 "api_node.c.erb"
|
1224
|
+
case PM_BACK_REFERENCE_READ_NODE: {
|
1225
|
+
VALUE argv[1];
|
1226
|
+
|
1227
|
+
// location
|
1228
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1229
|
+
|
1230
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismBackReferenceReadNode));
|
1231
|
+
break;
|
1232
|
+
}
|
1233
|
+
#line 134 "api_node.c.erb"
|
1234
|
+
case PM_BEGIN_NODE: {
|
1235
|
+
pm_begin_node_t *cast = (pm_begin_node_t *) node;
|
1236
|
+
VALUE argv[7];
|
1237
|
+
|
1238
|
+
// begin_keyword_loc
|
1239
|
+
#line 173 "api_node.c.erb"
|
1240
|
+
argv[0] = cast->begin_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->begin_keyword_loc.start, cast->begin_keyword_loc.end, source);
|
1241
|
+
|
1242
|
+
// statements
|
1243
|
+
#line 145 "api_node.c.erb"
|
1244
|
+
argv[1] = rb_ary_pop(value_stack);
|
1245
|
+
|
1246
|
+
// rescue_clause
|
1247
|
+
#line 145 "api_node.c.erb"
|
1248
|
+
argv[2] = rb_ary_pop(value_stack);
|
1249
|
+
|
1250
|
+
// else_clause
|
1251
|
+
#line 145 "api_node.c.erb"
|
1252
|
+
argv[3] = rb_ary_pop(value_stack);
|
1253
|
+
|
1254
|
+
// ensure_clause
|
1255
|
+
#line 145 "api_node.c.erb"
|
1256
|
+
argv[4] = rb_ary_pop(value_stack);
|
1257
|
+
|
1258
|
+
// end_keyword_loc
|
1259
|
+
#line 173 "api_node.c.erb"
|
1260
|
+
argv[5] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
1261
|
+
|
1262
|
+
// location
|
1263
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1264
|
+
|
1265
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismBeginNode));
|
1266
|
+
break;
|
1267
|
+
}
|
1268
|
+
#line 134 "api_node.c.erb"
|
1269
|
+
case PM_BLOCK_ARGUMENT_NODE: {
|
1270
|
+
pm_block_argument_node_t *cast = (pm_block_argument_node_t *) node;
|
1271
|
+
VALUE argv[3];
|
1272
|
+
|
1273
|
+
// expression
|
1274
|
+
#line 145 "api_node.c.erb"
|
1275
|
+
argv[0] = rb_ary_pop(value_stack);
|
1276
|
+
|
1277
|
+
// operator_loc
|
1278
|
+
#line 170 "api_node.c.erb"
|
1279
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1280
|
+
|
1281
|
+
// location
|
1282
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1283
|
+
|
1284
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismBlockArgumentNode));
|
1285
|
+
break;
|
1286
|
+
}
|
1287
|
+
#line 134 "api_node.c.erb"
|
1288
|
+
case PM_BLOCK_LOCAL_VARIABLE_NODE: {
|
1289
|
+
pm_block_local_variable_node_t *cast = (pm_block_local_variable_node_t *) node;
|
1290
|
+
VALUE argv[2];
|
1291
|
+
|
1292
|
+
// name
|
1293
|
+
#line 157 "api_node.c.erb"
|
1294
|
+
assert(cast->name != 0);
|
1295
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1296
|
+
|
1297
|
+
// location
|
1298
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1299
|
+
|
1300
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismBlockLocalVariableNode));
|
1301
|
+
break;
|
1302
|
+
}
|
1303
|
+
#line 134 "api_node.c.erb"
|
1304
|
+
case PM_BLOCK_NODE: {
|
1305
|
+
pm_block_node_t *cast = (pm_block_node_t *) node;
|
1306
|
+
VALUE argv[6];
|
1307
|
+
|
1308
|
+
// locals
|
1309
|
+
#line 163 "api_node.c.erb"
|
1310
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
1311
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
1312
|
+
assert(cast->locals.ids[index] != 0);
|
1313
|
+
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
1314
|
+
}
|
1315
|
+
|
1316
|
+
// parameters
|
1317
|
+
#line 145 "api_node.c.erb"
|
1318
|
+
argv[1] = rb_ary_pop(value_stack);
|
1319
|
+
|
1320
|
+
// body
|
1321
|
+
#line 145 "api_node.c.erb"
|
1322
|
+
argv[2] = rb_ary_pop(value_stack);
|
1323
|
+
|
1324
|
+
// opening_loc
|
1325
|
+
#line 170 "api_node.c.erb"
|
1326
|
+
argv[3] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1327
|
+
|
1328
|
+
// closing_loc
|
1329
|
+
#line 170 "api_node.c.erb"
|
1330
|
+
argv[4] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1331
|
+
|
1332
|
+
// location
|
1333
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1334
|
+
|
1335
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismBlockNode));
|
1336
|
+
break;
|
1337
|
+
}
|
1338
|
+
#line 134 "api_node.c.erb"
|
1339
|
+
case PM_BLOCK_PARAMETER_NODE: {
|
1340
|
+
pm_block_parameter_node_t *cast = (pm_block_parameter_node_t *) node;
|
1341
|
+
VALUE argv[4];
|
1342
|
+
|
1343
|
+
// name
|
1344
|
+
argv[0] = cast->name == 0 ? Qnil : rb_id2sym(constants[cast->name - 1]);
|
1345
|
+
|
1346
|
+
// name_loc
|
1347
|
+
#line 173 "api_node.c.erb"
|
1348
|
+
argv[1] = cast->name_loc.start == NULL ? Qnil : pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1349
|
+
|
1350
|
+
// operator_loc
|
1351
|
+
#line 170 "api_node.c.erb"
|
1352
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1353
|
+
|
1354
|
+
// location
|
1355
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1356
|
+
|
1357
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismBlockParameterNode));
|
1358
|
+
break;
|
1359
|
+
}
|
1360
|
+
#line 134 "api_node.c.erb"
|
1361
|
+
case PM_BLOCK_PARAMETERS_NODE: {
|
1362
|
+
pm_block_parameters_node_t *cast = (pm_block_parameters_node_t *) node;
|
1363
|
+
VALUE argv[5];
|
1364
|
+
|
1365
|
+
// parameters
|
1366
|
+
#line 145 "api_node.c.erb"
|
1367
|
+
argv[0] = rb_ary_pop(value_stack);
|
1368
|
+
|
1369
|
+
// locals
|
1370
|
+
#line 148 "api_node.c.erb"
|
1371
|
+
argv[1] = rb_ary_new_capa(cast->locals.size);
|
1372
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
1373
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1374
|
+
}
|
1375
|
+
|
1376
|
+
// opening_loc
|
1377
|
+
#line 173 "api_node.c.erb"
|
1378
|
+
argv[2] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1379
|
+
|
1380
|
+
// closing_loc
|
1381
|
+
#line 173 "api_node.c.erb"
|
1382
|
+
argv[3] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1383
|
+
|
1384
|
+
// location
|
1385
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1386
|
+
|
1387
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismBlockParametersNode));
|
1388
|
+
break;
|
1389
|
+
}
|
1390
|
+
#line 134 "api_node.c.erb"
|
1391
|
+
case PM_BREAK_NODE: {
|
1392
|
+
pm_break_node_t *cast = (pm_break_node_t *) node;
|
1393
|
+
VALUE argv[3];
|
1394
|
+
|
1395
|
+
// arguments
|
1396
|
+
#line 145 "api_node.c.erb"
|
1397
|
+
argv[0] = rb_ary_pop(value_stack);
|
1398
|
+
|
1399
|
+
// keyword_loc
|
1400
|
+
#line 170 "api_node.c.erb"
|
1401
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
1402
|
+
|
1403
|
+
// location
|
1404
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1405
|
+
|
1406
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismBreakNode));
|
1407
|
+
break;
|
1408
|
+
}
|
1409
|
+
#line 134 "api_node.c.erb"
|
1410
|
+
case PM_CALL_AND_WRITE_NODE: {
|
1411
|
+
pm_call_and_write_node_t *cast = (pm_call_and_write_node_t *) node;
|
1412
|
+
VALUE argv[12];
|
1413
|
+
|
1414
|
+
// receiver
|
1415
|
+
#line 145 "api_node.c.erb"
|
1416
|
+
argv[0] = rb_ary_pop(value_stack);
|
1417
|
+
|
1418
|
+
// call_operator_loc
|
1419
|
+
#line 173 "api_node.c.erb"
|
1420
|
+
argv[1] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1421
|
+
|
1422
|
+
// message_loc
|
1423
|
+
#line 173 "api_node.c.erb"
|
1424
|
+
argv[2] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1425
|
+
|
1426
|
+
// opening_loc
|
1427
|
+
#line 173 "api_node.c.erb"
|
1428
|
+
argv[3] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1429
|
+
|
1430
|
+
// arguments
|
1431
|
+
#line 145 "api_node.c.erb"
|
1432
|
+
argv[4] = rb_ary_pop(value_stack);
|
1433
|
+
|
1434
|
+
// closing_loc
|
1435
|
+
#line 173 "api_node.c.erb"
|
1436
|
+
argv[5] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1437
|
+
|
1438
|
+
// flags
|
1439
|
+
#line 179 "api_node.c.erb"
|
1440
|
+
argv[6] = ULONG2NUM(node->flags >> 2);
|
1441
|
+
|
1442
|
+
// read_name
|
1443
|
+
#line 154 "api_node.c.erb"
|
1444
|
+
argv[7] = pm_string_new(&cast->read_name, encoding);
|
1445
|
+
|
1446
|
+
// write_name
|
1447
|
+
#line 154 "api_node.c.erb"
|
1448
|
+
argv[8] = pm_string_new(&cast->write_name, encoding);
|
1449
|
+
|
1450
|
+
// operator_loc
|
1451
|
+
#line 170 "api_node.c.erb"
|
1452
|
+
argv[9] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1453
|
+
|
1454
|
+
// value
|
1455
|
+
#line 145 "api_node.c.erb"
|
1456
|
+
argv[10] = rb_ary_pop(value_stack);
|
1457
|
+
|
1458
|
+
// location
|
1459
|
+
argv[11] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1460
|
+
|
1461
|
+
rb_ary_push(value_stack, rb_class_new_instance(12, argv, rb_cPrismCallAndWriteNode));
|
1462
|
+
break;
|
1463
|
+
}
|
1464
|
+
#line 134 "api_node.c.erb"
|
1465
|
+
case PM_CALL_NODE: {
|
1466
|
+
pm_call_node_t *cast = (pm_call_node_t *) node;
|
1467
|
+
VALUE argv[10];
|
1468
|
+
|
1469
|
+
// receiver
|
1470
|
+
#line 145 "api_node.c.erb"
|
1471
|
+
argv[0] = rb_ary_pop(value_stack);
|
1472
|
+
|
1473
|
+
// call_operator_loc
|
1474
|
+
#line 173 "api_node.c.erb"
|
1475
|
+
argv[1] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1476
|
+
|
1477
|
+
// message_loc
|
1478
|
+
#line 173 "api_node.c.erb"
|
1479
|
+
argv[2] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1480
|
+
|
1481
|
+
// opening_loc
|
1482
|
+
#line 173 "api_node.c.erb"
|
1483
|
+
argv[3] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1484
|
+
|
1485
|
+
// arguments
|
1486
|
+
#line 145 "api_node.c.erb"
|
1487
|
+
argv[4] = rb_ary_pop(value_stack);
|
1488
|
+
|
1489
|
+
// closing_loc
|
1490
|
+
#line 173 "api_node.c.erb"
|
1491
|
+
argv[5] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1492
|
+
|
1493
|
+
// block
|
1494
|
+
#line 145 "api_node.c.erb"
|
1495
|
+
argv[6] = rb_ary_pop(value_stack);
|
1496
|
+
|
1497
|
+
// flags
|
1498
|
+
#line 179 "api_node.c.erb"
|
1499
|
+
argv[7] = ULONG2NUM(node->flags >> 2);
|
1500
|
+
|
1501
|
+
// name
|
1502
|
+
#line 154 "api_node.c.erb"
|
1503
|
+
argv[8] = pm_string_new(&cast->name, encoding);
|
1504
|
+
|
1505
|
+
// location
|
1506
|
+
argv[9] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1507
|
+
|
1508
|
+
rb_ary_push(value_stack, rb_class_new_instance(10, argv, rb_cPrismCallNode));
|
1509
|
+
break;
|
1510
|
+
}
|
1511
|
+
#line 134 "api_node.c.erb"
|
1512
|
+
case PM_CALL_OPERATOR_WRITE_NODE: {
|
1513
|
+
pm_call_operator_write_node_t *cast = (pm_call_operator_write_node_t *) node;
|
1514
|
+
VALUE argv[13];
|
1515
|
+
|
1516
|
+
// receiver
|
1517
|
+
#line 145 "api_node.c.erb"
|
1518
|
+
argv[0] = rb_ary_pop(value_stack);
|
1519
|
+
|
1520
|
+
// call_operator_loc
|
1521
|
+
#line 173 "api_node.c.erb"
|
1522
|
+
argv[1] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1523
|
+
|
1524
|
+
// message_loc
|
1525
|
+
#line 173 "api_node.c.erb"
|
1526
|
+
argv[2] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1527
|
+
|
1528
|
+
// opening_loc
|
1529
|
+
#line 173 "api_node.c.erb"
|
1530
|
+
argv[3] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1531
|
+
|
1532
|
+
// arguments
|
1533
|
+
#line 145 "api_node.c.erb"
|
1534
|
+
argv[4] = rb_ary_pop(value_stack);
|
1535
|
+
|
1536
|
+
// closing_loc
|
1537
|
+
#line 173 "api_node.c.erb"
|
1538
|
+
argv[5] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1539
|
+
|
1540
|
+
// flags
|
1541
|
+
#line 179 "api_node.c.erb"
|
1542
|
+
argv[6] = ULONG2NUM(node->flags >> 2);
|
1543
|
+
|
1544
|
+
// read_name
|
1545
|
+
#line 154 "api_node.c.erb"
|
1546
|
+
argv[7] = pm_string_new(&cast->read_name, encoding);
|
1547
|
+
|
1548
|
+
// write_name
|
1549
|
+
#line 154 "api_node.c.erb"
|
1550
|
+
argv[8] = pm_string_new(&cast->write_name, encoding);
|
1551
|
+
|
1552
|
+
// operator
|
1553
|
+
#line 157 "api_node.c.erb"
|
1554
|
+
assert(cast->operator != 0);
|
1555
|
+
argv[9] = rb_id2sym(constants[cast->operator - 1]);
|
1556
|
+
|
1557
|
+
// operator_loc
|
1558
|
+
#line 170 "api_node.c.erb"
|
1559
|
+
argv[10] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1560
|
+
|
1561
|
+
// value
|
1562
|
+
#line 145 "api_node.c.erb"
|
1563
|
+
argv[11] = rb_ary_pop(value_stack);
|
1564
|
+
|
1565
|
+
// location
|
1566
|
+
argv[12] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1567
|
+
|
1568
|
+
rb_ary_push(value_stack, rb_class_new_instance(13, argv, rb_cPrismCallOperatorWriteNode));
|
1569
|
+
break;
|
1570
|
+
}
|
1571
|
+
#line 134 "api_node.c.erb"
|
1572
|
+
case PM_CALL_OR_WRITE_NODE: {
|
1573
|
+
pm_call_or_write_node_t *cast = (pm_call_or_write_node_t *) node;
|
1574
|
+
VALUE argv[12];
|
1575
|
+
|
1576
|
+
// receiver
|
1577
|
+
#line 145 "api_node.c.erb"
|
1578
|
+
argv[0] = rb_ary_pop(value_stack);
|
1579
|
+
|
1580
|
+
// call_operator_loc
|
1581
|
+
#line 173 "api_node.c.erb"
|
1582
|
+
argv[1] = cast->call_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->call_operator_loc.start, cast->call_operator_loc.end, source);
|
1583
|
+
|
1584
|
+
// message_loc
|
1585
|
+
#line 173 "api_node.c.erb"
|
1586
|
+
argv[2] = cast->message_loc.start == NULL ? Qnil : pm_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
1587
|
+
|
1588
|
+
// opening_loc
|
1589
|
+
#line 173 "api_node.c.erb"
|
1590
|
+
argv[3] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
1591
|
+
|
1592
|
+
// arguments
|
1593
|
+
#line 145 "api_node.c.erb"
|
1594
|
+
argv[4] = rb_ary_pop(value_stack);
|
1595
|
+
|
1596
|
+
// closing_loc
|
1597
|
+
#line 173 "api_node.c.erb"
|
1598
|
+
argv[5] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
1599
|
+
|
1600
|
+
// flags
|
1601
|
+
#line 179 "api_node.c.erb"
|
1602
|
+
argv[6] = ULONG2NUM(node->flags >> 2);
|
1603
|
+
|
1604
|
+
// read_name
|
1605
|
+
#line 154 "api_node.c.erb"
|
1606
|
+
argv[7] = pm_string_new(&cast->read_name, encoding);
|
1607
|
+
|
1608
|
+
// write_name
|
1609
|
+
#line 154 "api_node.c.erb"
|
1610
|
+
argv[8] = pm_string_new(&cast->write_name, encoding);
|
1611
|
+
|
1612
|
+
// operator_loc
|
1613
|
+
#line 170 "api_node.c.erb"
|
1614
|
+
argv[9] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1615
|
+
|
1616
|
+
// value
|
1617
|
+
#line 145 "api_node.c.erb"
|
1618
|
+
argv[10] = rb_ary_pop(value_stack);
|
1619
|
+
|
1620
|
+
// location
|
1621
|
+
argv[11] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1622
|
+
|
1623
|
+
rb_ary_push(value_stack, rb_class_new_instance(12, argv, rb_cPrismCallOrWriteNode));
|
1624
|
+
break;
|
1625
|
+
}
|
1626
|
+
#line 134 "api_node.c.erb"
|
1627
|
+
case PM_CAPTURE_PATTERN_NODE: {
|
1628
|
+
pm_capture_pattern_node_t *cast = (pm_capture_pattern_node_t *) node;
|
1629
|
+
VALUE argv[4];
|
1630
|
+
|
1631
|
+
// value
|
1632
|
+
#line 145 "api_node.c.erb"
|
1633
|
+
argv[0] = rb_ary_pop(value_stack);
|
1634
|
+
|
1635
|
+
// target
|
1636
|
+
#line 145 "api_node.c.erb"
|
1637
|
+
argv[1] = rb_ary_pop(value_stack);
|
1638
|
+
|
1639
|
+
// operator_loc
|
1640
|
+
#line 170 "api_node.c.erb"
|
1641
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1642
|
+
|
1643
|
+
// location
|
1644
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1645
|
+
|
1646
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismCapturePatternNode));
|
1647
|
+
break;
|
1648
|
+
}
|
1649
|
+
#line 134 "api_node.c.erb"
|
1650
|
+
case PM_CASE_NODE: {
|
1651
|
+
pm_case_node_t *cast = (pm_case_node_t *) node;
|
1652
|
+
VALUE argv[6];
|
1653
|
+
|
1654
|
+
// predicate
|
1655
|
+
#line 145 "api_node.c.erb"
|
1656
|
+
argv[0] = rb_ary_pop(value_stack);
|
1657
|
+
|
1658
|
+
// conditions
|
1659
|
+
#line 148 "api_node.c.erb"
|
1660
|
+
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
1661
|
+
for (size_t index = 0; index < cast->conditions.size; index++) {
|
1662
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
1663
|
+
}
|
1664
|
+
|
1665
|
+
// consequent
|
1666
|
+
#line 145 "api_node.c.erb"
|
1667
|
+
argv[2] = rb_ary_pop(value_stack);
|
1668
|
+
|
1669
|
+
// case_keyword_loc
|
1670
|
+
#line 170 "api_node.c.erb"
|
1671
|
+
argv[3] = pm_location_new(parser, cast->case_keyword_loc.start, cast->case_keyword_loc.end, source);
|
1672
|
+
|
1673
|
+
// end_keyword_loc
|
1674
|
+
#line 170 "api_node.c.erb"
|
1675
|
+
argv[4] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
1676
|
+
|
1677
|
+
// location
|
1678
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1679
|
+
|
1680
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismCaseNode));
|
1681
|
+
break;
|
1682
|
+
}
|
1683
|
+
#line 134 "api_node.c.erb"
|
1684
|
+
case PM_CLASS_NODE: {
|
1685
|
+
pm_class_node_t *cast = (pm_class_node_t *) node;
|
1686
|
+
VALUE argv[9];
|
1687
|
+
|
1688
|
+
// locals
|
1689
|
+
#line 163 "api_node.c.erb"
|
1690
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
1691
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
1692
|
+
assert(cast->locals.ids[index] != 0);
|
1693
|
+
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
1694
|
+
}
|
1695
|
+
|
1696
|
+
// class_keyword_loc
|
1697
|
+
#line 170 "api_node.c.erb"
|
1698
|
+
argv[1] = pm_location_new(parser, cast->class_keyword_loc.start, cast->class_keyword_loc.end, source);
|
1699
|
+
|
1700
|
+
// constant_path
|
1701
|
+
#line 145 "api_node.c.erb"
|
1702
|
+
argv[2] = rb_ary_pop(value_stack);
|
1703
|
+
|
1704
|
+
// inheritance_operator_loc
|
1705
|
+
#line 173 "api_node.c.erb"
|
1706
|
+
argv[3] = cast->inheritance_operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->inheritance_operator_loc.start, cast->inheritance_operator_loc.end, source);
|
1707
|
+
|
1708
|
+
// superclass
|
1709
|
+
#line 145 "api_node.c.erb"
|
1710
|
+
argv[4] = rb_ary_pop(value_stack);
|
1711
|
+
|
1712
|
+
// body
|
1713
|
+
#line 145 "api_node.c.erb"
|
1714
|
+
argv[5] = rb_ary_pop(value_stack);
|
1715
|
+
|
1716
|
+
// end_keyword_loc
|
1717
|
+
#line 170 "api_node.c.erb"
|
1718
|
+
argv[6] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
1719
|
+
|
1720
|
+
// name
|
1721
|
+
#line 157 "api_node.c.erb"
|
1722
|
+
assert(cast->name != 0);
|
1723
|
+
argv[7] = rb_id2sym(constants[cast->name - 1]);
|
1724
|
+
|
1725
|
+
// location
|
1726
|
+
argv[8] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1727
|
+
|
1728
|
+
rb_ary_push(value_stack, rb_class_new_instance(9, argv, rb_cPrismClassNode));
|
1729
|
+
break;
|
1730
|
+
}
|
1731
|
+
#line 134 "api_node.c.erb"
|
1732
|
+
case PM_CLASS_VARIABLE_AND_WRITE_NODE: {
|
1733
|
+
pm_class_variable_and_write_node_t *cast = (pm_class_variable_and_write_node_t *) node;
|
1734
|
+
VALUE argv[5];
|
1735
|
+
|
1736
|
+
// name
|
1737
|
+
#line 157 "api_node.c.erb"
|
1738
|
+
assert(cast->name != 0);
|
1739
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1740
|
+
|
1741
|
+
// name_loc
|
1742
|
+
#line 170 "api_node.c.erb"
|
1743
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1744
|
+
|
1745
|
+
// operator_loc
|
1746
|
+
#line 170 "api_node.c.erb"
|
1747
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1748
|
+
|
1749
|
+
// value
|
1750
|
+
#line 145 "api_node.c.erb"
|
1751
|
+
argv[3] = rb_ary_pop(value_stack);
|
1752
|
+
|
1753
|
+
// location
|
1754
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1755
|
+
|
1756
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismClassVariableAndWriteNode));
|
1757
|
+
break;
|
1758
|
+
}
|
1759
|
+
#line 134 "api_node.c.erb"
|
1760
|
+
case PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
1761
|
+
pm_class_variable_operator_write_node_t *cast = (pm_class_variable_operator_write_node_t *) node;
|
1762
|
+
VALUE argv[6];
|
1763
|
+
|
1764
|
+
// name
|
1765
|
+
#line 157 "api_node.c.erb"
|
1766
|
+
assert(cast->name != 0);
|
1767
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1768
|
+
|
1769
|
+
// name_loc
|
1770
|
+
#line 170 "api_node.c.erb"
|
1771
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1772
|
+
|
1773
|
+
// operator_loc
|
1774
|
+
#line 170 "api_node.c.erb"
|
1775
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1776
|
+
|
1777
|
+
// value
|
1778
|
+
#line 145 "api_node.c.erb"
|
1779
|
+
argv[3] = rb_ary_pop(value_stack);
|
1780
|
+
|
1781
|
+
// operator
|
1782
|
+
#line 157 "api_node.c.erb"
|
1783
|
+
assert(cast->operator != 0);
|
1784
|
+
argv[4] = rb_id2sym(constants[cast->operator - 1]);
|
1785
|
+
|
1786
|
+
// location
|
1787
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1788
|
+
|
1789
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismClassVariableOperatorWriteNode));
|
1790
|
+
break;
|
1791
|
+
}
|
1792
|
+
#line 134 "api_node.c.erb"
|
1793
|
+
case PM_CLASS_VARIABLE_OR_WRITE_NODE: {
|
1794
|
+
pm_class_variable_or_write_node_t *cast = (pm_class_variable_or_write_node_t *) node;
|
1795
|
+
VALUE argv[5];
|
1796
|
+
|
1797
|
+
// name
|
1798
|
+
#line 157 "api_node.c.erb"
|
1799
|
+
assert(cast->name != 0);
|
1800
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1801
|
+
|
1802
|
+
// name_loc
|
1803
|
+
#line 170 "api_node.c.erb"
|
1804
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1805
|
+
|
1806
|
+
// operator_loc
|
1807
|
+
#line 170 "api_node.c.erb"
|
1808
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1809
|
+
|
1810
|
+
// value
|
1811
|
+
#line 145 "api_node.c.erb"
|
1812
|
+
argv[3] = rb_ary_pop(value_stack);
|
1813
|
+
|
1814
|
+
// location
|
1815
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1816
|
+
|
1817
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismClassVariableOrWriteNode));
|
1818
|
+
break;
|
1819
|
+
}
|
1820
|
+
#line 134 "api_node.c.erb"
|
1821
|
+
case PM_CLASS_VARIABLE_READ_NODE: {
|
1822
|
+
pm_class_variable_read_node_t *cast = (pm_class_variable_read_node_t *) node;
|
1823
|
+
VALUE argv[2];
|
1824
|
+
|
1825
|
+
// name
|
1826
|
+
#line 157 "api_node.c.erb"
|
1827
|
+
assert(cast->name != 0);
|
1828
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1829
|
+
|
1830
|
+
// location
|
1831
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1832
|
+
|
1833
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismClassVariableReadNode));
|
1834
|
+
break;
|
1835
|
+
}
|
1836
|
+
#line 134 "api_node.c.erb"
|
1837
|
+
case PM_CLASS_VARIABLE_TARGET_NODE: {
|
1838
|
+
pm_class_variable_target_node_t *cast = (pm_class_variable_target_node_t *) node;
|
1839
|
+
VALUE argv[2];
|
1840
|
+
|
1841
|
+
// name
|
1842
|
+
#line 157 "api_node.c.erb"
|
1843
|
+
assert(cast->name != 0);
|
1844
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1845
|
+
|
1846
|
+
// location
|
1847
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1848
|
+
|
1849
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismClassVariableTargetNode));
|
1850
|
+
break;
|
1851
|
+
}
|
1852
|
+
#line 134 "api_node.c.erb"
|
1853
|
+
case PM_CLASS_VARIABLE_WRITE_NODE: {
|
1854
|
+
pm_class_variable_write_node_t *cast = (pm_class_variable_write_node_t *) node;
|
1855
|
+
VALUE argv[5];
|
1856
|
+
|
1857
|
+
// name
|
1858
|
+
#line 157 "api_node.c.erb"
|
1859
|
+
assert(cast->name != 0);
|
1860
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1861
|
+
|
1862
|
+
// name_loc
|
1863
|
+
#line 170 "api_node.c.erb"
|
1864
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1865
|
+
|
1866
|
+
// value
|
1867
|
+
#line 145 "api_node.c.erb"
|
1868
|
+
argv[2] = rb_ary_pop(value_stack);
|
1869
|
+
|
1870
|
+
// operator_loc
|
1871
|
+
#line 173 "api_node.c.erb"
|
1872
|
+
argv[3] = cast->operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1873
|
+
|
1874
|
+
// location
|
1875
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1876
|
+
|
1877
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismClassVariableWriteNode));
|
1878
|
+
break;
|
1879
|
+
}
|
1880
|
+
#line 134 "api_node.c.erb"
|
1881
|
+
case PM_CONSTANT_AND_WRITE_NODE: {
|
1882
|
+
pm_constant_and_write_node_t *cast = (pm_constant_and_write_node_t *) node;
|
1883
|
+
VALUE argv[5];
|
1884
|
+
|
1885
|
+
// name
|
1886
|
+
#line 157 "api_node.c.erb"
|
1887
|
+
assert(cast->name != 0);
|
1888
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1889
|
+
|
1890
|
+
// name_loc
|
1891
|
+
#line 170 "api_node.c.erb"
|
1892
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1893
|
+
|
1894
|
+
// operator_loc
|
1895
|
+
#line 170 "api_node.c.erb"
|
1896
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1897
|
+
|
1898
|
+
// value
|
1899
|
+
#line 145 "api_node.c.erb"
|
1900
|
+
argv[3] = rb_ary_pop(value_stack);
|
1901
|
+
|
1902
|
+
// location
|
1903
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1904
|
+
|
1905
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismConstantAndWriteNode));
|
1906
|
+
break;
|
1907
|
+
}
|
1908
|
+
#line 134 "api_node.c.erb"
|
1909
|
+
case PM_CONSTANT_OPERATOR_WRITE_NODE: {
|
1910
|
+
pm_constant_operator_write_node_t *cast = (pm_constant_operator_write_node_t *) node;
|
1911
|
+
VALUE argv[6];
|
1912
|
+
|
1913
|
+
// name
|
1914
|
+
#line 157 "api_node.c.erb"
|
1915
|
+
assert(cast->name != 0);
|
1916
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1917
|
+
|
1918
|
+
// name_loc
|
1919
|
+
#line 170 "api_node.c.erb"
|
1920
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1921
|
+
|
1922
|
+
// operator_loc
|
1923
|
+
#line 170 "api_node.c.erb"
|
1924
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1925
|
+
|
1926
|
+
// value
|
1927
|
+
#line 145 "api_node.c.erb"
|
1928
|
+
argv[3] = rb_ary_pop(value_stack);
|
1929
|
+
|
1930
|
+
// operator
|
1931
|
+
#line 157 "api_node.c.erb"
|
1932
|
+
assert(cast->operator != 0);
|
1933
|
+
argv[4] = rb_id2sym(constants[cast->operator - 1]);
|
1934
|
+
|
1935
|
+
// location
|
1936
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1937
|
+
|
1938
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismConstantOperatorWriteNode));
|
1939
|
+
break;
|
1940
|
+
}
|
1941
|
+
#line 134 "api_node.c.erb"
|
1942
|
+
case PM_CONSTANT_OR_WRITE_NODE: {
|
1943
|
+
pm_constant_or_write_node_t *cast = (pm_constant_or_write_node_t *) node;
|
1944
|
+
VALUE argv[5];
|
1945
|
+
|
1946
|
+
// name
|
1947
|
+
#line 157 "api_node.c.erb"
|
1948
|
+
assert(cast->name != 0);
|
1949
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
1950
|
+
|
1951
|
+
// name_loc
|
1952
|
+
#line 170 "api_node.c.erb"
|
1953
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
1954
|
+
|
1955
|
+
// operator_loc
|
1956
|
+
#line 170 "api_node.c.erb"
|
1957
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1958
|
+
|
1959
|
+
// value
|
1960
|
+
#line 145 "api_node.c.erb"
|
1961
|
+
argv[3] = rb_ary_pop(value_stack);
|
1962
|
+
|
1963
|
+
// location
|
1964
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1965
|
+
|
1966
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismConstantOrWriteNode));
|
1967
|
+
break;
|
1968
|
+
}
|
1969
|
+
#line 134 "api_node.c.erb"
|
1970
|
+
case PM_CONSTANT_PATH_AND_WRITE_NODE: {
|
1971
|
+
pm_constant_path_and_write_node_t *cast = (pm_constant_path_and_write_node_t *) node;
|
1972
|
+
VALUE argv[4];
|
1973
|
+
|
1974
|
+
// target
|
1975
|
+
#line 145 "api_node.c.erb"
|
1976
|
+
argv[0] = rb_ary_pop(value_stack);
|
1977
|
+
|
1978
|
+
// operator_loc
|
1979
|
+
#line 170 "api_node.c.erb"
|
1980
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
1981
|
+
|
1982
|
+
// value
|
1983
|
+
#line 145 "api_node.c.erb"
|
1984
|
+
argv[2] = rb_ary_pop(value_stack);
|
1985
|
+
|
1986
|
+
// location
|
1987
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
1988
|
+
|
1989
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismConstantPathAndWriteNode));
|
1990
|
+
break;
|
1991
|
+
}
|
1992
|
+
#line 134 "api_node.c.erb"
|
1993
|
+
case PM_CONSTANT_PATH_NODE: {
|
1994
|
+
pm_constant_path_node_t *cast = (pm_constant_path_node_t *) node;
|
1995
|
+
VALUE argv[4];
|
1996
|
+
|
1997
|
+
// parent
|
1998
|
+
#line 145 "api_node.c.erb"
|
1999
|
+
argv[0] = rb_ary_pop(value_stack);
|
2000
|
+
|
2001
|
+
// child
|
2002
|
+
#line 145 "api_node.c.erb"
|
2003
|
+
argv[1] = rb_ary_pop(value_stack);
|
2004
|
+
|
2005
|
+
// delimiter_loc
|
2006
|
+
#line 170 "api_node.c.erb"
|
2007
|
+
argv[2] = pm_location_new(parser, cast->delimiter_loc.start, cast->delimiter_loc.end, source);
|
2008
|
+
|
2009
|
+
// location
|
2010
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2011
|
+
|
2012
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismConstantPathNode));
|
2013
|
+
break;
|
2014
|
+
}
|
2015
|
+
#line 134 "api_node.c.erb"
|
2016
|
+
case PM_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
2017
|
+
pm_constant_path_operator_write_node_t *cast = (pm_constant_path_operator_write_node_t *) node;
|
2018
|
+
VALUE argv[5];
|
2019
|
+
|
2020
|
+
// target
|
2021
|
+
#line 145 "api_node.c.erb"
|
2022
|
+
argv[0] = rb_ary_pop(value_stack);
|
2023
|
+
|
2024
|
+
// operator_loc
|
2025
|
+
#line 170 "api_node.c.erb"
|
2026
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2027
|
+
|
2028
|
+
// value
|
2029
|
+
#line 145 "api_node.c.erb"
|
2030
|
+
argv[2] = rb_ary_pop(value_stack);
|
2031
|
+
|
2032
|
+
// operator
|
2033
|
+
#line 157 "api_node.c.erb"
|
2034
|
+
assert(cast->operator != 0);
|
2035
|
+
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
2036
|
+
|
2037
|
+
// location
|
2038
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2039
|
+
|
2040
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismConstantPathOperatorWriteNode));
|
2041
|
+
break;
|
2042
|
+
}
|
2043
|
+
#line 134 "api_node.c.erb"
|
2044
|
+
case PM_CONSTANT_PATH_OR_WRITE_NODE: {
|
2045
|
+
pm_constant_path_or_write_node_t *cast = (pm_constant_path_or_write_node_t *) node;
|
2046
|
+
VALUE argv[4];
|
2047
|
+
|
2048
|
+
// target
|
2049
|
+
#line 145 "api_node.c.erb"
|
2050
|
+
argv[0] = rb_ary_pop(value_stack);
|
2051
|
+
|
2052
|
+
// operator_loc
|
2053
|
+
#line 170 "api_node.c.erb"
|
2054
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2055
|
+
|
2056
|
+
// value
|
2057
|
+
#line 145 "api_node.c.erb"
|
2058
|
+
argv[2] = rb_ary_pop(value_stack);
|
2059
|
+
|
2060
|
+
// location
|
2061
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2062
|
+
|
2063
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismConstantPathOrWriteNode));
|
2064
|
+
break;
|
2065
|
+
}
|
2066
|
+
#line 134 "api_node.c.erb"
|
2067
|
+
case PM_CONSTANT_PATH_TARGET_NODE: {
|
2068
|
+
pm_constant_path_target_node_t *cast = (pm_constant_path_target_node_t *) node;
|
2069
|
+
VALUE argv[4];
|
2070
|
+
|
2071
|
+
// parent
|
2072
|
+
#line 145 "api_node.c.erb"
|
2073
|
+
argv[0] = rb_ary_pop(value_stack);
|
2074
|
+
|
2075
|
+
// child
|
2076
|
+
#line 145 "api_node.c.erb"
|
2077
|
+
argv[1] = rb_ary_pop(value_stack);
|
2078
|
+
|
2079
|
+
// delimiter_loc
|
2080
|
+
#line 170 "api_node.c.erb"
|
2081
|
+
argv[2] = pm_location_new(parser, cast->delimiter_loc.start, cast->delimiter_loc.end, source);
|
2082
|
+
|
2083
|
+
// location
|
2084
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2085
|
+
|
2086
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismConstantPathTargetNode));
|
2087
|
+
break;
|
2088
|
+
}
|
2089
|
+
#line 134 "api_node.c.erb"
|
2090
|
+
case PM_CONSTANT_PATH_WRITE_NODE: {
|
2091
|
+
pm_constant_path_write_node_t *cast = (pm_constant_path_write_node_t *) node;
|
2092
|
+
VALUE argv[4];
|
2093
|
+
|
2094
|
+
// target
|
2095
|
+
#line 145 "api_node.c.erb"
|
2096
|
+
argv[0] = rb_ary_pop(value_stack);
|
2097
|
+
|
2098
|
+
// operator_loc
|
2099
|
+
#line 170 "api_node.c.erb"
|
2100
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2101
|
+
|
2102
|
+
// value
|
2103
|
+
#line 145 "api_node.c.erb"
|
2104
|
+
argv[2] = rb_ary_pop(value_stack);
|
2105
|
+
|
2106
|
+
// location
|
2107
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2108
|
+
|
2109
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismConstantPathWriteNode));
|
2110
|
+
break;
|
2111
|
+
}
|
2112
|
+
#line 134 "api_node.c.erb"
|
2113
|
+
case PM_CONSTANT_READ_NODE: {
|
2114
|
+
pm_constant_read_node_t *cast = (pm_constant_read_node_t *) node;
|
2115
|
+
VALUE argv[2];
|
2116
|
+
|
2117
|
+
// name
|
2118
|
+
#line 157 "api_node.c.erb"
|
2119
|
+
assert(cast->name != 0);
|
2120
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2121
|
+
|
2122
|
+
// location
|
2123
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2124
|
+
|
2125
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismConstantReadNode));
|
2126
|
+
break;
|
2127
|
+
}
|
2128
|
+
#line 134 "api_node.c.erb"
|
2129
|
+
case PM_CONSTANT_TARGET_NODE: {
|
2130
|
+
pm_constant_target_node_t *cast = (pm_constant_target_node_t *) node;
|
2131
|
+
VALUE argv[2];
|
2132
|
+
|
2133
|
+
// name
|
2134
|
+
#line 157 "api_node.c.erb"
|
2135
|
+
assert(cast->name != 0);
|
2136
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2137
|
+
|
2138
|
+
// location
|
2139
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2140
|
+
|
2141
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismConstantTargetNode));
|
2142
|
+
break;
|
2143
|
+
}
|
2144
|
+
#line 134 "api_node.c.erb"
|
2145
|
+
case PM_CONSTANT_WRITE_NODE: {
|
2146
|
+
pm_constant_write_node_t *cast = (pm_constant_write_node_t *) node;
|
2147
|
+
VALUE argv[5];
|
2148
|
+
|
2149
|
+
// name
|
2150
|
+
#line 157 "api_node.c.erb"
|
2151
|
+
assert(cast->name != 0);
|
2152
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2153
|
+
|
2154
|
+
// name_loc
|
2155
|
+
#line 170 "api_node.c.erb"
|
2156
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2157
|
+
|
2158
|
+
// value
|
2159
|
+
#line 145 "api_node.c.erb"
|
2160
|
+
argv[2] = rb_ary_pop(value_stack);
|
2161
|
+
|
2162
|
+
// operator_loc
|
2163
|
+
#line 170 "api_node.c.erb"
|
2164
|
+
argv[3] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2165
|
+
|
2166
|
+
// location
|
2167
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2168
|
+
|
2169
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismConstantWriteNode));
|
2170
|
+
break;
|
2171
|
+
}
|
2172
|
+
#line 134 "api_node.c.erb"
|
2173
|
+
case PM_DEF_NODE: {
|
2174
|
+
pm_def_node_t *cast = (pm_def_node_t *) node;
|
2175
|
+
VALUE argv[13];
|
2176
|
+
|
2177
|
+
// name
|
2178
|
+
#line 157 "api_node.c.erb"
|
2179
|
+
assert(cast->name != 0);
|
2180
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2181
|
+
|
2182
|
+
// name_loc
|
2183
|
+
#line 170 "api_node.c.erb"
|
2184
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2185
|
+
|
2186
|
+
// receiver
|
2187
|
+
#line 145 "api_node.c.erb"
|
2188
|
+
argv[2] = rb_ary_pop(value_stack);
|
2189
|
+
|
2190
|
+
// parameters
|
2191
|
+
#line 145 "api_node.c.erb"
|
2192
|
+
argv[3] = rb_ary_pop(value_stack);
|
2193
|
+
|
2194
|
+
// body
|
2195
|
+
#line 145 "api_node.c.erb"
|
2196
|
+
argv[4] = rb_ary_pop(value_stack);
|
2197
|
+
|
2198
|
+
// locals
|
2199
|
+
#line 163 "api_node.c.erb"
|
2200
|
+
argv[5] = rb_ary_new_capa(cast->locals.size);
|
2201
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
2202
|
+
assert(cast->locals.ids[index] != 0);
|
2203
|
+
rb_ary_push(argv[5], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
2204
|
+
}
|
2205
|
+
|
2206
|
+
// def_keyword_loc
|
2207
|
+
#line 170 "api_node.c.erb"
|
2208
|
+
argv[6] = pm_location_new(parser, cast->def_keyword_loc.start, cast->def_keyword_loc.end, source);
|
2209
|
+
|
2210
|
+
// operator_loc
|
2211
|
+
#line 173 "api_node.c.erb"
|
2212
|
+
argv[7] = cast->operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2213
|
+
|
2214
|
+
// lparen_loc
|
2215
|
+
#line 173 "api_node.c.erb"
|
2216
|
+
argv[8] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
2217
|
+
|
2218
|
+
// rparen_loc
|
2219
|
+
#line 173 "api_node.c.erb"
|
2220
|
+
argv[9] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
2221
|
+
|
2222
|
+
// equal_loc
|
2223
|
+
#line 173 "api_node.c.erb"
|
2224
|
+
argv[10] = cast->equal_loc.start == NULL ? Qnil : pm_location_new(parser, cast->equal_loc.start, cast->equal_loc.end, source);
|
2225
|
+
|
2226
|
+
// end_keyword_loc
|
2227
|
+
#line 173 "api_node.c.erb"
|
2228
|
+
argv[11] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2229
|
+
|
2230
|
+
// location
|
2231
|
+
argv[12] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2232
|
+
|
2233
|
+
rb_ary_push(value_stack, rb_class_new_instance(13, argv, rb_cPrismDefNode));
|
2234
|
+
break;
|
2235
|
+
}
|
2236
|
+
#line 134 "api_node.c.erb"
|
2237
|
+
case PM_DEFINED_NODE: {
|
2238
|
+
pm_defined_node_t *cast = (pm_defined_node_t *) node;
|
2239
|
+
VALUE argv[5];
|
2240
|
+
|
2241
|
+
// lparen_loc
|
2242
|
+
#line 173 "api_node.c.erb"
|
2243
|
+
argv[0] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
2244
|
+
|
2245
|
+
// value
|
2246
|
+
#line 145 "api_node.c.erb"
|
2247
|
+
argv[1] = rb_ary_pop(value_stack);
|
2248
|
+
|
2249
|
+
// rparen_loc
|
2250
|
+
#line 173 "api_node.c.erb"
|
2251
|
+
argv[2] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
2252
|
+
|
2253
|
+
// keyword_loc
|
2254
|
+
#line 170 "api_node.c.erb"
|
2255
|
+
argv[3] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
2256
|
+
|
2257
|
+
// location
|
2258
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2259
|
+
|
2260
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismDefinedNode));
|
2261
|
+
break;
|
2262
|
+
}
|
2263
|
+
#line 134 "api_node.c.erb"
|
2264
|
+
case PM_ELSE_NODE: {
|
2265
|
+
pm_else_node_t *cast = (pm_else_node_t *) node;
|
2266
|
+
VALUE argv[4];
|
2267
|
+
|
2268
|
+
// else_keyword_loc
|
2269
|
+
#line 170 "api_node.c.erb"
|
2270
|
+
argv[0] = pm_location_new(parser, cast->else_keyword_loc.start, cast->else_keyword_loc.end, source);
|
2271
|
+
|
2272
|
+
// statements
|
2273
|
+
#line 145 "api_node.c.erb"
|
2274
|
+
argv[1] = rb_ary_pop(value_stack);
|
2275
|
+
|
2276
|
+
// end_keyword_loc
|
2277
|
+
#line 173 "api_node.c.erb"
|
2278
|
+
argv[2] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2279
|
+
|
2280
|
+
// location
|
2281
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2282
|
+
|
2283
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismElseNode));
|
2284
|
+
break;
|
2285
|
+
}
|
2286
|
+
#line 134 "api_node.c.erb"
|
2287
|
+
case PM_EMBEDDED_STATEMENTS_NODE: {
|
2288
|
+
pm_embedded_statements_node_t *cast = (pm_embedded_statements_node_t *) node;
|
2289
|
+
VALUE argv[4];
|
2290
|
+
|
2291
|
+
// opening_loc
|
2292
|
+
#line 170 "api_node.c.erb"
|
2293
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2294
|
+
|
2295
|
+
// statements
|
2296
|
+
#line 145 "api_node.c.erb"
|
2297
|
+
argv[1] = rb_ary_pop(value_stack);
|
2298
|
+
|
2299
|
+
// closing_loc
|
2300
|
+
#line 170 "api_node.c.erb"
|
2301
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2302
|
+
|
2303
|
+
// location
|
2304
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2305
|
+
|
2306
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismEmbeddedStatementsNode));
|
2307
|
+
break;
|
2308
|
+
}
|
2309
|
+
#line 134 "api_node.c.erb"
|
2310
|
+
case PM_EMBEDDED_VARIABLE_NODE: {
|
2311
|
+
pm_embedded_variable_node_t *cast = (pm_embedded_variable_node_t *) node;
|
2312
|
+
VALUE argv[3];
|
2313
|
+
|
2314
|
+
// operator_loc
|
2315
|
+
#line 170 "api_node.c.erb"
|
2316
|
+
argv[0] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2317
|
+
|
2318
|
+
// variable
|
2319
|
+
#line 145 "api_node.c.erb"
|
2320
|
+
argv[1] = rb_ary_pop(value_stack);
|
2321
|
+
|
2322
|
+
// location
|
2323
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2324
|
+
|
2325
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismEmbeddedVariableNode));
|
2326
|
+
break;
|
2327
|
+
}
|
2328
|
+
#line 134 "api_node.c.erb"
|
2329
|
+
case PM_ENSURE_NODE: {
|
2330
|
+
pm_ensure_node_t *cast = (pm_ensure_node_t *) node;
|
2331
|
+
VALUE argv[4];
|
2332
|
+
|
2333
|
+
// ensure_keyword_loc
|
2334
|
+
#line 170 "api_node.c.erb"
|
2335
|
+
argv[0] = pm_location_new(parser, cast->ensure_keyword_loc.start, cast->ensure_keyword_loc.end, source);
|
2336
|
+
|
2337
|
+
// statements
|
2338
|
+
#line 145 "api_node.c.erb"
|
2339
|
+
argv[1] = rb_ary_pop(value_stack);
|
2340
|
+
|
2341
|
+
// end_keyword_loc
|
2342
|
+
#line 170 "api_node.c.erb"
|
2343
|
+
argv[2] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2344
|
+
|
2345
|
+
// location
|
2346
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2347
|
+
|
2348
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismEnsureNode));
|
2349
|
+
break;
|
2350
|
+
}
|
2351
|
+
#line 134 "api_node.c.erb"
|
2352
|
+
case PM_FALSE_NODE: {
|
2353
|
+
VALUE argv[1];
|
2354
|
+
|
2355
|
+
// location
|
2356
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2357
|
+
|
2358
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismFalseNode));
|
2359
|
+
break;
|
2360
|
+
}
|
2361
|
+
#line 134 "api_node.c.erb"
|
2362
|
+
case PM_FIND_PATTERN_NODE: {
|
2363
|
+
pm_find_pattern_node_t *cast = (pm_find_pattern_node_t *) node;
|
2364
|
+
VALUE argv[7];
|
2365
|
+
|
2366
|
+
// constant
|
2367
|
+
#line 145 "api_node.c.erb"
|
2368
|
+
argv[0] = rb_ary_pop(value_stack);
|
2369
|
+
|
2370
|
+
// left
|
2371
|
+
#line 145 "api_node.c.erb"
|
2372
|
+
argv[1] = rb_ary_pop(value_stack);
|
2373
|
+
|
2374
|
+
// requireds
|
2375
|
+
#line 148 "api_node.c.erb"
|
2376
|
+
argv[2] = rb_ary_new_capa(cast->requireds.size);
|
2377
|
+
for (size_t index = 0; index < cast->requireds.size; index++) {
|
2378
|
+
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
2379
|
+
}
|
2380
|
+
|
2381
|
+
// right
|
2382
|
+
#line 145 "api_node.c.erb"
|
2383
|
+
argv[3] = rb_ary_pop(value_stack);
|
2384
|
+
|
2385
|
+
// opening_loc
|
2386
|
+
#line 173 "api_node.c.erb"
|
2387
|
+
argv[4] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2388
|
+
|
2389
|
+
// closing_loc
|
2390
|
+
#line 173 "api_node.c.erb"
|
2391
|
+
argv[5] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2392
|
+
|
2393
|
+
// location
|
2394
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2395
|
+
|
2396
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismFindPatternNode));
|
2397
|
+
break;
|
2398
|
+
}
|
2399
|
+
#line 134 "api_node.c.erb"
|
2400
|
+
case PM_FLIP_FLOP_NODE: {
|
2401
|
+
pm_flip_flop_node_t *cast = (pm_flip_flop_node_t *) node;
|
2402
|
+
VALUE argv[5];
|
2403
|
+
|
2404
|
+
// left
|
2405
|
+
#line 145 "api_node.c.erb"
|
2406
|
+
argv[0] = rb_ary_pop(value_stack);
|
2407
|
+
|
2408
|
+
// right
|
2409
|
+
#line 145 "api_node.c.erb"
|
2410
|
+
argv[1] = rb_ary_pop(value_stack);
|
2411
|
+
|
2412
|
+
// operator_loc
|
2413
|
+
#line 170 "api_node.c.erb"
|
2414
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2415
|
+
|
2416
|
+
// flags
|
2417
|
+
#line 179 "api_node.c.erb"
|
2418
|
+
argv[3] = ULONG2NUM(node->flags >> 2);
|
2419
|
+
|
2420
|
+
// location
|
2421
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2422
|
+
|
2423
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismFlipFlopNode));
|
2424
|
+
break;
|
2425
|
+
}
|
2426
|
+
#line 134 "api_node.c.erb"
|
2427
|
+
case PM_FLOAT_NODE: {
|
2428
|
+
VALUE argv[1];
|
2429
|
+
|
2430
|
+
// location
|
2431
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2432
|
+
|
2433
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismFloatNode));
|
2434
|
+
break;
|
2435
|
+
}
|
2436
|
+
#line 134 "api_node.c.erb"
|
2437
|
+
case PM_FOR_NODE: {
|
2438
|
+
pm_for_node_t *cast = (pm_for_node_t *) node;
|
2439
|
+
VALUE argv[8];
|
2440
|
+
|
2441
|
+
// index
|
2442
|
+
#line 145 "api_node.c.erb"
|
2443
|
+
argv[0] = rb_ary_pop(value_stack);
|
2444
|
+
|
2445
|
+
// collection
|
2446
|
+
#line 145 "api_node.c.erb"
|
2447
|
+
argv[1] = rb_ary_pop(value_stack);
|
2448
|
+
|
2449
|
+
// statements
|
2450
|
+
#line 145 "api_node.c.erb"
|
2451
|
+
argv[2] = rb_ary_pop(value_stack);
|
2452
|
+
|
2453
|
+
// for_keyword_loc
|
2454
|
+
#line 170 "api_node.c.erb"
|
2455
|
+
argv[3] = pm_location_new(parser, cast->for_keyword_loc.start, cast->for_keyword_loc.end, source);
|
2456
|
+
|
2457
|
+
// in_keyword_loc
|
2458
|
+
#line 170 "api_node.c.erb"
|
2459
|
+
argv[4] = pm_location_new(parser, cast->in_keyword_loc.start, cast->in_keyword_loc.end, source);
|
2460
|
+
|
2461
|
+
// do_keyword_loc
|
2462
|
+
#line 173 "api_node.c.erb"
|
2463
|
+
argv[5] = cast->do_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->do_keyword_loc.start, cast->do_keyword_loc.end, source);
|
2464
|
+
|
2465
|
+
// end_keyword_loc
|
2466
|
+
#line 170 "api_node.c.erb"
|
2467
|
+
argv[6] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2468
|
+
|
2469
|
+
// location
|
2470
|
+
argv[7] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2471
|
+
|
2472
|
+
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cPrismForNode));
|
2473
|
+
break;
|
2474
|
+
}
|
2475
|
+
#line 134 "api_node.c.erb"
|
2476
|
+
case PM_FORWARDING_ARGUMENTS_NODE: {
|
2477
|
+
VALUE argv[1];
|
2478
|
+
|
2479
|
+
// location
|
2480
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2481
|
+
|
2482
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismForwardingArgumentsNode));
|
2483
|
+
break;
|
2484
|
+
}
|
2485
|
+
#line 134 "api_node.c.erb"
|
2486
|
+
case PM_FORWARDING_PARAMETER_NODE: {
|
2487
|
+
VALUE argv[1];
|
2488
|
+
|
2489
|
+
// location
|
2490
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2491
|
+
|
2492
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismForwardingParameterNode));
|
2493
|
+
break;
|
2494
|
+
}
|
2495
|
+
#line 134 "api_node.c.erb"
|
2496
|
+
case PM_FORWARDING_SUPER_NODE: {
|
2497
|
+
VALUE argv[2];
|
2498
|
+
|
2499
|
+
// block
|
2500
|
+
#line 145 "api_node.c.erb"
|
2501
|
+
argv[0] = rb_ary_pop(value_stack);
|
2502
|
+
|
2503
|
+
// location
|
2504
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2505
|
+
|
2506
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismForwardingSuperNode));
|
2507
|
+
break;
|
2508
|
+
}
|
2509
|
+
#line 134 "api_node.c.erb"
|
2510
|
+
case PM_GLOBAL_VARIABLE_AND_WRITE_NODE: {
|
2511
|
+
pm_global_variable_and_write_node_t *cast = (pm_global_variable_and_write_node_t *) node;
|
2512
|
+
VALUE argv[5];
|
2513
|
+
|
2514
|
+
// name
|
2515
|
+
#line 157 "api_node.c.erb"
|
2516
|
+
assert(cast->name != 0);
|
2517
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2518
|
+
|
2519
|
+
// name_loc
|
2520
|
+
#line 170 "api_node.c.erb"
|
2521
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2522
|
+
|
2523
|
+
// operator_loc
|
2524
|
+
#line 170 "api_node.c.erb"
|
2525
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2526
|
+
|
2527
|
+
// value
|
2528
|
+
#line 145 "api_node.c.erb"
|
2529
|
+
argv[3] = rb_ary_pop(value_stack);
|
2530
|
+
|
2531
|
+
// location
|
2532
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2533
|
+
|
2534
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismGlobalVariableAndWriteNode));
|
2535
|
+
break;
|
2536
|
+
}
|
2537
|
+
#line 134 "api_node.c.erb"
|
2538
|
+
case PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
2539
|
+
pm_global_variable_operator_write_node_t *cast = (pm_global_variable_operator_write_node_t *) node;
|
2540
|
+
VALUE argv[6];
|
2541
|
+
|
2542
|
+
// name
|
2543
|
+
#line 157 "api_node.c.erb"
|
2544
|
+
assert(cast->name != 0);
|
2545
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2546
|
+
|
2547
|
+
// name_loc
|
2548
|
+
#line 170 "api_node.c.erb"
|
2549
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2550
|
+
|
2551
|
+
// operator_loc
|
2552
|
+
#line 170 "api_node.c.erb"
|
2553
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2554
|
+
|
2555
|
+
// value
|
2556
|
+
#line 145 "api_node.c.erb"
|
2557
|
+
argv[3] = rb_ary_pop(value_stack);
|
2558
|
+
|
2559
|
+
// operator
|
2560
|
+
#line 157 "api_node.c.erb"
|
2561
|
+
assert(cast->operator != 0);
|
2562
|
+
argv[4] = rb_id2sym(constants[cast->operator - 1]);
|
2563
|
+
|
2564
|
+
// location
|
2565
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2566
|
+
|
2567
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismGlobalVariableOperatorWriteNode));
|
2568
|
+
break;
|
2569
|
+
}
|
2570
|
+
#line 134 "api_node.c.erb"
|
2571
|
+
case PM_GLOBAL_VARIABLE_OR_WRITE_NODE: {
|
2572
|
+
pm_global_variable_or_write_node_t *cast = (pm_global_variable_or_write_node_t *) node;
|
2573
|
+
VALUE argv[5];
|
2574
|
+
|
2575
|
+
// name
|
2576
|
+
#line 157 "api_node.c.erb"
|
2577
|
+
assert(cast->name != 0);
|
2578
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2579
|
+
|
2580
|
+
// name_loc
|
2581
|
+
#line 170 "api_node.c.erb"
|
2582
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2583
|
+
|
2584
|
+
// operator_loc
|
2585
|
+
#line 170 "api_node.c.erb"
|
2586
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2587
|
+
|
2588
|
+
// value
|
2589
|
+
#line 145 "api_node.c.erb"
|
2590
|
+
argv[3] = rb_ary_pop(value_stack);
|
2591
|
+
|
2592
|
+
// location
|
2593
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2594
|
+
|
2595
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismGlobalVariableOrWriteNode));
|
2596
|
+
break;
|
2597
|
+
}
|
2598
|
+
#line 134 "api_node.c.erb"
|
2599
|
+
case PM_GLOBAL_VARIABLE_READ_NODE: {
|
2600
|
+
pm_global_variable_read_node_t *cast = (pm_global_variable_read_node_t *) node;
|
2601
|
+
VALUE argv[2];
|
2602
|
+
|
2603
|
+
// name
|
2604
|
+
#line 157 "api_node.c.erb"
|
2605
|
+
assert(cast->name != 0);
|
2606
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2607
|
+
|
2608
|
+
// location
|
2609
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2610
|
+
|
2611
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismGlobalVariableReadNode));
|
2612
|
+
break;
|
2613
|
+
}
|
2614
|
+
#line 134 "api_node.c.erb"
|
2615
|
+
case PM_GLOBAL_VARIABLE_TARGET_NODE: {
|
2616
|
+
pm_global_variable_target_node_t *cast = (pm_global_variable_target_node_t *) node;
|
2617
|
+
VALUE argv[2];
|
2618
|
+
|
2619
|
+
// name
|
2620
|
+
#line 157 "api_node.c.erb"
|
2621
|
+
assert(cast->name != 0);
|
2622
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2623
|
+
|
2624
|
+
// location
|
2625
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2626
|
+
|
2627
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismGlobalVariableTargetNode));
|
2628
|
+
break;
|
2629
|
+
}
|
2630
|
+
#line 134 "api_node.c.erb"
|
2631
|
+
case PM_GLOBAL_VARIABLE_WRITE_NODE: {
|
2632
|
+
pm_global_variable_write_node_t *cast = (pm_global_variable_write_node_t *) node;
|
2633
|
+
VALUE argv[5];
|
2634
|
+
|
2635
|
+
// name
|
2636
|
+
#line 157 "api_node.c.erb"
|
2637
|
+
assert(cast->name != 0);
|
2638
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2639
|
+
|
2640
|
+
// name_loc
|
2641
|
+
#line 170 "api_node.c.erb"
|
2642
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2643
|
+
|
2644
|
+
// value
|
2645
|
+
#line 145 "api_node.c.erb"
|
2646
|
+
argv[2] = rb_ary_pop(value_stack);
|
2647
|
+
|
2648
|
+
// operator_loc
|
2649
|
+
#line 170 "api_node.c.erb"
|
2650
|
+
argv[3] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2651
|
+
|
2652
|
+
// location
|
2653
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2654
|
+
|
2655
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismGlobalVariableWriteNode));
|
2656
|
+
break;
|
2657
|
+
}
|
2658
|
+
#line 134 "api_node.c.erb"
|
2659
|
+
case PM_HASH_NODE: {
|
2660
|
+
pm_hash_node_t *cast = (pm_hash_node_t *) node;
|
2661
|
+
VALUE argv[4];
|
2662
|
+
|
2663
|
+
// opening_loc
|
2664
|
+
#line 170 "api_node.c.erb"
|
2665
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2666
|
+
|
2667
|
+
// elements
|
2668
|
+
#line 148 "api_node.c.erb"
|
2669
|
+
argv[1] = rb_ary_new_capa(cast->elements.size);
|
2670
|
+
for (size_t index = 0; index < cast->elements.size; index++) {
|
2671
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2672
|
+
}
|
2673
|
+
|
2674
|
+
// closing_loc
|
2675
|
+
#line 170 "api_node.c.erb"
|
2676
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2677
|
+
|
2678
|
+
// location
|
2679
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2680
|
+
|
2681
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismHashNode));
|
2682
|
+
break;
|
2683
|
+
}
|
2684
|
+
#line 134 "api_node.c.erb"
|
2685
|
+
case PM_HASH_PATTERN_NODE: {
|
2686
|
+
pm_hash_pattern_node_t *cast = (pm_hash_pattern_node_t *) node;
|
2687
|
+
VALUE argv[6];
|
2688
|
+
|
2689
|
+
// constant
|
2690
|
+
#line 145 "api_node.c.erb"
|
2691
|
+
argv[0] = rb_ary_pop(value_stack);
|
2692
|
+
|
2693
|
+
// assocs
|
2694
|
+
#line 148 "api_node.c.erb"
|
2695
|
+
argv[1] = rb_ary_new_capa(cast->assocs.size);
|
2696
|
+
for (size_t index = 0; index < cast->assocs.size; index++) {
|
2697
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2698
|
+
}
|
2699
|
+
|
2700
|
+
// kwrest
|
2701
|
+
#line 145 "api_node.c.erb"
|
2702
|
+
argv[2] = rb_ary_pop(value_stack);
|
2703
|
+
|
2704
|
+
// opening_loc
|
2705
|
+
#line 173 "api_node.c.erb"
|
2706
|
+
argv[3] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2707
|
+
|
2708
|
+
// closing_loc
|
2709
|
+
#line 173 "api_node.c.erb"
|
2710
|
+
argv[4] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2711
|
+
|
2712
|
+
// location
|
2713
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2714
|
+
|
2715
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismHashPatternNode));
|
2716
|
+
break;
|
2717
|
+
}
|
2718
|
+
#line 134 "api_node.c.erb"
|
2719
|
+
case PM_IF_NODE: {
|
2720
|
+
pm_if_node_t *cast = (pm_if_node_t *) node;
|
2721
|
+
VALUE argv[6];
|
2722
|
+
|
2723
|
+
// if_keyword_loc
|
2724
|
+
#line 173 "api_node.c.erb"
|
2725
|
+
argv[0] = cast->if_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->if_keyword_loc.start, cast->if_keyword_loc.end, source);
|
2726
|
+
|
2727
|
+
// predicate
|
2728
|
+
#line 145 "api_node.c.erb"
|
2729
|
+
argv[1] = rb_ary_pop(value_stack);
|
2730
|
+
|
2731
|
+
// statements
|
2732
|
+
#line 145 "api_node.c.erb"
|
2733
|
+
argv[2] = rb_ary_pop(value_stack);
|
2734
|
+
|
2735
|
+
// consequent
|
2736
|
+
#line 145 "api_node.c.erb"
|
2737
|
+
argv[3] = rb_ary_pop(value_stack);
|
2738
|
+
|
2739
|
+
// end_keyword_loc
|
2740
|
+
#line 173 "api_node.c.erb"
|
2741
|
+
argv[4] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
2742
|
+
|
2743
|
+
// location
|
2744
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2745
|
+
|
2746
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismIfNode));
|
2747
|
+
break;
|
2748
|
+
}
|
2749
|
+
#line 134 "api_node.c.erb"
|
2750
|
+
case PM_IMAGINARY_NODE: {
|
2751
|
+
VALUE argv[2];
|
2752
|
+
|
2753
|
+
// numeric
|
2754
|
+
#line 145 "api_node.c.erb"
|
2755
|
+
argv[0] = rb_ary_pop(value_stack);
|
2756
|
+
|
2757
|
+
// location
|
2758
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2759
|
+
|
2760
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismImaginaryNode));
|
2761
|
+
break;
|
2762
|
+
}
|
2763
|
+
#line 134 "api_node.c.erb"
|
2764
|
+
case PM_IMPLICIT_NODE: {
|
2765
|
+
VALUE argv[2];
|
2766
|
+
|
2767
|
+
// value
|
2768
|
+
#line 145 "api_node.c.erb"
|
2769
|
+
argv[0] = rb_ary_pop(value_stack);
|
2770
|
+
|
2771
|
+
// location
|
2772
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2773
|
+
|
2774
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismImplicitNode));
|
2775
|
+
break;
|
2776
|
+
}
|
2777
|
+
#line 134 "api_node.c.erb"
|
2778
|
+
case PM_IN_NODE: {
|
2779
|
+
pm_in_node_t *cast = (pm_in_node_t *) node;
|
2780
|
+
VALUE argv[5];
|
2781
|
+
|
2782
|
+
// pattern
|
2783
|
+
#line 145 "api_node.c.erb"
|
2784
|
+
argv[0] = rb_ary_pop(value_stack);
|
2785
|
+
|
2786
|
+
// statements
|
2787
|
+
#line 145 "api_node.c.erb"
|
2788
|
+
argv[1] = rb_ary_pop(value_stack);
|
2789
|
+
|
2790
|
+
// in_loc
|
2791
|
+
#line 170 "api_node.c.erb"
|
2792
|
+
argv[2] = pm_location_new(parser, cast->in_loc.start, cast->in_loc.end, source);
|
2793
|
+
|
2794
|
+
// then_loc
|
2795
|
+
#line 173 "api_node.c.erb"
|
2796
|
+
argv[3] = cast->then_loc.start == NULL ? Qnil : pm_location_new(parser, cast->then_loc.start, cast->then_loc.end, source);
|
2797
|
+
|
2798
|
+
// location
|
2799
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2800
|
+
|
2801
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismInNode));
|
2802
|
+
break;
|
2803
|
+
}
|
2804
|
+
#line 134 "api_node.c.erb"
|
2805
|
+
case PM_INSTANCE_VARIABLE_AND_WRITE_NODE: {
|
2806
|
+
pm_instance_variable_and_write_node_t *cast = (pm_instance_variable_and_write_node_t *) node;
|
2807
|
+
VALUE argv[5];
|
2808
|
+
|
2809
|
+
// name
|
2810
|
+
#line 157 "api_node.c.erb"
|
2811
|
+
assert(cast->name != 0);
|
2812
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2813
|
+
|
2814
|
+
// name_loc
|
2815
|
+
#line 170 "api_node.c.erb"
|
2816
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2817
|
+
|
2818
|
+
// operator_loc
|
2819
|
+
#line 170 "api_node.c.erb"
|
2820
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2821
|
+
|
2822
|
+
// value
|
2823
|
+
#line 145 "api_node.c.erb"
|
2824
|
+
argv[3] = rb_ary_pop(value_stack);
|
2825
|
+
|
2826
|
+
// location
|
2827
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2828
|
+
|
2829
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismInstanceVariableAndWriteNode));
|
2830
|
+
break;
|
2831
|
+
}
|
2832
|
+
#line 134 "api_node.c.erb"
|
2833
|
+
case PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
2834
|
+
pm_instance_variable_operator_write_node_t *cast = (pm_instance_variable_operator_write_node_t *) node;
|
2835
|
+
VALUE argv[6];
|
2836
|
+
|
2837
|
+
// name
|
2838
|
+
#line 157 "api_node.c.erb"
|
2839
|
+
assert(cast->name != 0);
|
2840
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2841
|
+
|
2842
|
+
// name_loc
|
2843
|
+
#line 170 "api_node.c.erb"
|
2844
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2845
|
+
|
2846
|
+
// operator_loc
|
2847
|
+
#line 170 "api_node.c.erb"
|
2848
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2849
|
+
|
2850
|
+
// value
|
2851
|
+
#line 145 "api_node.c.erb"
|
2852
|
+
argv[3] = rb_ary_pop(value_stack);
|
2853
|
+
|
2854
|
+
// operator
|
2855
|
+
#line 157 "api_node.c.erb"
|
2856
|
+
assert(cast->operator != 0);
|
2857
|
+
argv[4] = rb_id2sym(constants[cast->operator - 1]);
|
2858
|
+
|
2859
|
+
// location
|
2860
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2861
|
+
|
2862
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismInstanceVariableOperatorWriteNode));
|
2863
|
+
break;
|
2864
|
+
}
|
2865
|
+
#line 134 "api_node.c.erb"
|
2866
|
+
case PM_INSTANCE_VARIABLE_OR_WRITE_NODE: {
|
2867
|
+
pm_instance_variable_or_write_node_t *cast = (pm_instance_variable_or_write_node_t *) node;
|
2868
|
+
VALUE argv[5];
|
2869
|
+
|
2870
|
+
// name
|
2871
|
+
#line 157 "api_node.c.erb"
|
2872
|
+
assert(cast->name != 0);
|
2873
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2874
|
+
|
2875
|
+
// name_loc
|
2876
|
+
#line 170 "api_node.c.erb"
|
2877
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2878
|
+
|
2879
|
+
// operator_loc
|
2880
|
+
#line 170 "api_node.c.erb"
|
2881
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2882
|
+
|
2883
|
+
// value
|
2884
|
+
#line 145 "api_node.c.erb"
|
2885
|
+
argv[3] = rb_ary_pop(value_stack);
|
2886
|
+
|
2887
|
+
// location
|
2888
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2889
|
+
|
2890
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismInstanceVariableOrWriteNode));
|
2891
|
+
break;
|
2892
|
+
}
|
2893
|
+
#line 134 "api_node.c.erb"
|
2894
|
+
case PM_INSTANCE_VARIABLE_READ_NODE: {
|
2895
|
+
pm_instance_variable_read_node_t *cast = (pm_instance_variable_read_node_t *) node;
|
2896
|
+
VALUE argv[2];
|
2897
|
+
|
2898
|
+
// name
|
2899
|
+
#line 157 "api_node.c.erb"
|
2900
|
+
assert(cast->name != 0);
|
2901
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2902
|
+
|
2903
|
+
// location
|
2904
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2905
|
+
|
2906
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismInstanceVariableReadNode));
|
2907
|
+
break;
|
2908
|
+
}
|
2909
|
+
#line 134 "api_node.c.erb"
|
2910
|
+
case PM_INSTANCE_VARIABLE_TARGET_NODE: {
|
2911
|
+
pm_instance_variable_target_node_t *cast = (pm_instance_variable_target_node_t *) node;
|
2912
|
+
VALUE argv[2];
|
2913
|
+
|
2914
|
+
// name
|
2915
|
+
#line 157 "api_node.c.erb"
|
2916
|
+
assert(cast->name != 0);
|
2917
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2918
|
+
|
2919
|
+
// location
|
2920
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2921
|
+
|
2922
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismInstanceVariableTargetNode));
|
2923
|
+
break;
|
2924
|
+
}
|
2925
|
+
#line 134 "api_node.c.erb"
|
2926
|
+
case PM_INSTANCE_VARIABLE_WRITE_NODE: {
|
2927
|
+
pm_instance_variable_write_node_t *cast = (pm_instance_variable_write_node_t *) node;
|
2928
|
+
VALUE argv[5];
|
2929
|
+
|
2930
|
+
// name
|
2931
|
+
#line 157 "api_node.c.erb"
|
2932
|
+
assert(cast->name != 0);
|
2933
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
2934
|
+
|
2935
|
+
// name_loc
|
2936
|
+
#line 170 "api_node.c.erb"
|
2937
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
2938
|
+
|
2939
|
+
// value
|
2940
|
+
#line 145 "api_node.c.erb"
|
2941
|
+
argv[2] = rb_ary_pop(value_stack);
|
2942
|
+
|
2943
|
+
// operator_loc
|
2944
|
+
#line 170 "api_node.c.erb"
|
2945
|
+
argv[3] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
2946
|
+
|
2947
|
+
// location
|
2948
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2949
|
+
|
2950
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismInstanceVariableWriteNode));
|
2951
|
+
break;
|
2952
|
+
}
|
2953
|
+
#line 134 "api_node.c.erb"
|
2954
|
+
case PM_INTEGER_NODE: {
|
2955
|
+
VALUE argv[2];
|
2956
|
+
|
2957
|
+
// flags
|
2958
|
+
#line 179 "api_node.c.erb"
|
2959
|
+
argv[0] = ULONG2NUM(node->flags >> 2);
|
2960
|
+
|
2961
|
+
// location
|
2962
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2963
|
+
|
2964
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismIntegerNode));
|
2965
|
+
break;
|
2966
|
+
}
|
2967
|
+
#line 134 "api_node.c.erb"
|
2968
|
+
case PM_INTERPOLATED_MATCH_LAST_LINE_NODE: {
|
2969
|
+
pm_interpolated_match_last_line_node_t *cast = (pm_interpolated_match_last_line_node_t *) node;
|
2970
|
+
VALUE argv[5];
|
2971
|
+
|
2972
|
+
// opening_loc
|
2973
|
+
#line 170 "api_node.c.erb"
|
2974
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
2975
|
+
|
2976
|
+
// parts
|
2977
|
+
#line 148 "api_node.c.erb"
|
2978
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
2979
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
2980
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
2981
|
+
}
|
2982
|
+
|
2983
|
+
// closing_loc
|
2984
|
+
#line 170 "api_node.c.erb"
|
2985
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
2986
|
+
|
2987
|
+
// flags
|
2988
|
+
#line 179 "api_node.c.erb"
|
2989
|
+
argv[3] = ULONG2NUM(node->flags >> 2);
|
2990
|
+
|
2991
|
+
// location
|
2992
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
2993
|
+
|
2994
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismInterpolatedMatchLastLineNode));
|
2995
|
+
break;
|
2996
|
+
}
|
2997
|
+
#line 134 "api_node.c.erb"
|
2998
|
+
case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
2999
|
+
pm_interpolated_regular_expression_node_t *cast = (pm_interpolated_regular_expression_node_t *) node;
|
3000
|
+
VALUE argv[5];
|
3001
|
+
|
3002
|
+
// opening_loc
|
3003
|
+
#line 170 "api_node.c.erb"
|
3004
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3005
|
+
|
3006
|
+
// parts
|
3007
|
+
#line 148 "api_node.c.erb"
|
3008
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
3009
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
3010
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3011
|
+
}
|
3012
|
+
|
3013
|
+
// closing_loc
|
3014
|
+
#line 170 "api_node.c.erb"
|
3015
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3016
|
+
|
3017
|
+
// flags
|
3018
|
+
#line 179 "api_node.c.erb"
|
3019
|
+
argv[3] = ULONG2NUM(node->flags >> 2);
|
3020
|
+
|
3021
|
+
// location
|
3022
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3023
|
+
|
3024
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismInterpolatedRegularExpressionNode));
|
3025
|
+
break;
|
3026
|
+
}
|
3027
|
+
#line 134 "api_node.c.erb"
|
3028
|
+
case PM_INTERPOLATED_STRING_NODE: {
|
3029
|
+
pm_interpolated_string_node_t *cast = (pm_interpolated_string_node_t *) node;
|
3030
|
+
VALUE argv[4];
|
3031
|
+
|
3032
|
+
// opening_loc
|
3033
|
+
#line 173 "api_node.c.erb"
|
3034
|
+
argv[0] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3035
|
+
|
3036
|
+
// parts
|
3037
|
+
#line 148 "api_node.c.erb"
|
3038
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
3039
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
3040
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3041
|
+
}
|
3042
|
+
|
3043
|
+
// closing_loc
|
3044
|
+
#line 173 "api_node.c.erb"
|
3045
|
+
argv[2] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3046
|
+
|
3047
|
+
// location
|
3048
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3049
|
+
|
3050
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismInterpolatedStringNode));
|
3051
|
+
break;
|
3052
|
+
}
|
3053
|
+
#line 134 "api_node.c.erb"
|
3054
|
+
case PM_INTERPOLATED_SYMBOL_NODE: {
|
3055
|
+
pm_interpolated_symbol_node_t *cast = (pm_interpolated_symbol_node_t *) node;
|
3056
|
+
VALUE argv[4];
|
3057
|
+
|
3058
|
+
// opening_loc
|
3059
|
+
#line 173 "api_node.c.erb"
|
3060
|
+
argv[0] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3061
|
+
|
3062
|
+
// parts
|
3063
|
+
#line 148 "api_node.c.erb"
|
3064
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
3065
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
3066
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3067
|
+
}
|
3068
|
+
|
3069
|
+
// closing_loc
|
3070
|
+
#line 173 "api_node.c.erb"
|
3071
|
+
argv[2] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3072
|
+
|
3073
|
+
// location
|
3074
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3075
|
+
|
3076
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismInterpolatedSymbolNode));
|
3077
|
+
break;
|
3078
|
+
}
|
3079
|
+
#line 134 "api_node.c.erb"
|
3080
|
+
case PM_INTERPOLATED_X_STRING_NODE: {
|
3081
|
+
pm_interpolated_x_string_node_t *cast = (pm_interpolated_x_string_node_t *) node;
|
3082
|
+
VALUE argv[4];
|
3083
|
+
|
3084
|
+
// opening_loc
|
3085
|
+
#line 170 "api_node.c.erb"
|
3086
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3087
|
+
|
3088
|
+
// parts
|
3089
|
+
#line 148 "api_node.c.erb"
|
3090
|
+
argv[1] = rb_ary_new_capa(cast->parts.size);
|
3091
|
+
for (size_t index = 0; index < cast->parts.size; index++) {
|
3092
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3093
|
+
}
|
3094
|
+
|
3095
|
+
// closing_loc
|
3096
|
+
#line 170 "api_node.c.erb"
|
3097
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3098
|
+
|
3099
|
+
// location
|
3100
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3101
|
+
|
3102
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismInterpolatedXStringNode));
|
3103
|
+
break;
|
3104
|
+
}
|
3105
|
+
#line 134 "api_node.c.erb"
|
3106
|
+
case PM_KEYWORD_HASH_NODE: {
|
3107
|
+
pm_keyword_hash_node_t *cast = (pm_keyword_hash_node_t *) node;
|
3108
|
+
VALUE argv[2];
|
3109
|
+
|
3110
|
+
// elements
|
3111
|
+
#line 148 "api_node.c.erb"
|
3112
|
+
argv[0] = rb_ary_new_capa(cast->elements.size);
|
3113
|
+
for (size_t index = 0; index < cast->elements.size; index++) {
|
3114
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3115
|
+
}
|
3116
|
+
|
3117
|
+
// location
|
3118
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3119
|
+
|
3120
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismKeywordHashNode));
|
3121
|
+
break;
|
3122
|
+
}
|
3123
|
+
#line 134 "api_node.c.erb"
|
3124
|
+
case PM_KEYWORD_PARAMETER_NODE: {
|
3125
|
+
pm_keyword_parameter_node_t *cast = (pm_keyword_parameter_node_t *) node;
|
3126
|
+
VALUE argv[4];
|
3127
|
+
|
3128
|
+
// name
|
3129
|
+
#line 157 "api_node.c.erb"
|
3130
|
+
assert(cast->name != 0);
|
3131
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3132
|
+
|
3133
|
+
// name_loc
|
3134
|
+
#line 170 "api_node.c.erb"
|
3135
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3136
|
+
|
3137
|
+
// value
|
3138
|
+
#line 145 "api_node.c.erb"
|
3139
|
+
argv[2] = rb_ary_pop(value_stack);
|
3140
|
+
|
3141
|
+
// location
|
3142
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3143
|
+
|
3144
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismKeywordParameterNode));
|
3145
|
+
break;
|
3146
|
+
}
|
3147
|
+
#line 134 "api_node.c.erb"
|
3148
|
+
case PM_KEYWORD_REST_PARAMETER_NODE: {
|
3149
|
+
pm_keyword_rest_parameter_node_t *cast = (pm_keyword_rest_parameter_node_t *) node;
|
3150
|
+
VALUE argv[4];
|
3151
|
+
|
3152
|
+
// name
|
3153
|
+
argv[0] = cast->name == 0 ? Qnil : rb_id2sym(constants[cast->name - 1]);
|
3154
|
+
|
3155
|
+
// name_loc
|
3156
|
+
#line 173 "api_node.c.erb"
|
3157
|
+
argv[1] = cast->name_loc.start == NULL ? Qnil : pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3158
|
+
|
3159
|
+
// operator_loc
|
3160
|
+
#line 170 "api_node.c.erb"
|
3161
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3162
|
+
|
3163
|
+
// location
|
3164
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3165
|
+
|
3166
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismKeywordRestParameterNode));
|
3167
|
+
break;
|
3168
|
+
}
|
3169
|
+
#line 134 "api_node.c.erb"
|
3170
|
+
case PM_LAMBDA_NODE: {
|
3171
|
+
pm_lambda_node_t *cast = (pm_lambda_node_t *) node;
|
3172
|
+
VALUE argv[7];
|
3173
|
+
|
3174
|
+
// locals
|
3175
|
+
#line 163 "api_node.c.erb"
|
3176
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
3177
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
3178
|
+
assert(cast->locals.ids[index] != 0);
|
3179
|
+
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3180
|
+
}
|
3181
|
+
|
3182
|
+
// operator_loc
|
3183
|
+
#line 170 "api_node.c.erb"
|
3184
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3185
|
+
|
3186
|
+
// opening_loc
|
3187
|
+
#line 170 "api_node.c.erb"
|
3188
|
+
argv[2] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3189
|
+
|
3190
|
+
// closing_loc
|
3191
|
+
#line 170 "api_node.c.erb"
|
3192
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3193
|
+
|
3194
|
+
// parameters
|
3195
|
+
#line 145 "api_node.c.erb"
|
3196
|
+
argv[4] = rb_ary_pop(value_stack);
|
3197
|
+
|
3198
|
+
// body
|
3199
|
+
#line 145 "api_node.c.erb"
|
3200
|
+
argv[5] = rb_ary_pop(value_stack);
|
3201
|
+
|
3202
|
+
// location
|
3203
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3204
|
+
|
3205
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismLambdaNode));
|
3206
|
+
break;
|
3207
|
+
}
|
3208
|
+
#line 134 "api_node.c.erb"
|
3209
|
+
case PM_LOCAL_VARIABLE_AND_WRITE_NODE: {
|
3210
|
+
pm_local_variable_and_write_node_t *cast = (pm_local_variable_and_write_node_t *) node;
|
3211
|
+
VALUE argv[6];
|
3212
|
+
|
3213
|
+
// name_loc
|
3214
|
+
#line 170 "api_node.c.erb"
|
3215
|
+
argv[0] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3216
|
+
|
3217
|
+
// operator_loc
|
3218
|
+
#line 170 "api_node.c.erb"
|
3219
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3220
|
+
|
3221
|
+
// value
|
3222
|
+
#line 145 "api_node.c.erb"
|
3223
|
+
argv[2] = rb_ary_pop(value_stack);
|
3224
|
+
|
3225
|
+
// name
|
3226
|
+
#line 157 "api_node.c.erb"
|
3227
|
+
assert(cast->name != 0);
|
3228
|
+
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
3229
|
+
|
3230
|
+
// depth
|
3231
|
+
#line 176 "api_node.c.erb"
|
3232
|
+
argv[4] = ULONG2NUM(cast->depth);
|
3233
|
+
|
3234
|
+
// location
|
3235
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3236
|
+
|
3237
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismLocalVariableAndWriteNode));
|
3238
|
+
break;
|
3239
|
+
}
|
3240
|
+
#line 134 "api_node.c.erb"
|
3241
|
+
case PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
3242
|
+
pm_local_variable_operator_write_node_t *cast = (pm_local_variable_operator_write_node_t *) node;
|
3243
|
+
VALUE argv[7];
|
3244
|
+
|
3245
|
+
// name_loc
|
3246
|
+
#line 170 "api_node.c.erb"
|
3247
|
+
argv[0] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3248
|
+
|
3249
|
+
// operator_loc
|
3250
|
+
#line 170 "api_node.c.erb"
|
3251
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3252
|
+
|
3253
|
+
// value
|
3254
|
+
#line 145 "api_node.c.erb"
|
3255
|
+
argv[2] = rb_ary_pop(value_stack);
|
3256
|
+
|
3257
|
+
// name
|
3258
|
+
#line 157 "api_node.c.erb"
|
3259
|
+
assert(cast->name != 0);
|
3260
|
+
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
3261
|
+
|
3262
|
+
// operator
|
3263
|
+
#line 157 "api_node.c.erb"
|
3264
|
+
assert(cast->operator != 0);
|
3265
|
+
argv[4] = rb_id2sym(constants[cast->operator - 1]);
|
3266
|
+
|
3267
|
+
// depth
|
3268
|
+
#line 176 "api_node.c.erb"
|
3269
|
+
argv[5] = ULONG2NUM(cast->depth);
|
3270
|
+
|
3271
|
+
// location
|
3272
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3273
|
+
|
3274
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismLocalVariableOperatorWriteNode));
|
3275
|
+
break;
|
3276
|
+
}
|
3277
|
+
#line 134 "api_node.c.erb"
|
3278
|
+
case PM_LOCAL_VARIABLE_OR_WRITE_NODE: {
|
3279
|
+
pm_local_variable_or_write_node_t *cast = (pm_local_variable_or_write_node_t *) node;
|
3280
|
+
VALUE argv[6];
|
3281
|
+
|
3282
|
+
// name_loc
|
3283
|
+
#line 170 "api_node.c.erb"
|
3284
|
+
argv[0] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3285
|
+
|
3286
|
+
// operator_loc
|
3287
|
+
#line 170 "api_node.c.erb"
|
3288
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3289
|
+
|
3290
|
+
// value
|
3291
|
+
#line 145 "api_node.c.erb"
|
3292
|
+
argv[2] = rb_ary_pop(value_stack);
|
3293
|
+
|
3294
|
+
// name
|
3295
|
+
#line 157 "api_node.c.erb"
|
3296
|
+
assert(cast->name != 0);
|
3297
|
+
argv[3] = rb_id2sym(constants[cast->name - 1]);
|
3298
|
+
|
3299
|
+
// depth
|
3300
|
+
#line 176 "api_node.c.erb"
|
3301
|
+
argv[4] = ULONG2NUM(cast->depth);
|
3302
|
+
|
3303
|
+
// location
|
3304
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3305
|
+
|
3306
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismLocalVariableOrWriteNode));
|
3307
|
+
break;
|
3308
|
+
}
|
3309
|
+
#line 134 "api_node.c.erb"
|
3310
|
+
case PM_LOCAL_VARIABLE_READ_NODE: {
|
3311
|
+
pm_local_variable_read_node_t *cast = (pm_local_variable_read_node_t *) node;
|
3312
|
+
VALUE argv[3];
|
3313
|
+
|
3314
|
+
// name
|
3315
|
+
#line 157 "api_node.c.erb"
|
3316
|
+
assert(cast->name != 0);
|
3317
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3318
|
+
|
3319
|
+
// depth
|
3320
|
+
#line 176 "api_node.c.erb"
|
3321
|
+
argv[1] = ULONG2NUM(cast->depth);
|
3322
|
+
|
3323
|
+
// location
|
3324
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3325
|
+
|
3326
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismLocalVariableReadNode));
|
3327
|
+
break;
|
3328
|
+
}
|
3329
|
+
#line 134 "api_node.c.erb"
|
3330
|
+
case PM_LOCAL_VARIABLE_TARGET_NODE: {
|
3331
|
+
pm_local_variable_target_node_t *cast = (pm_local_variable_target_node_t *) node;
|
3332
|
+
VALUE argv[3];
|
3333
|
+
|
3334
|
+
// name
|
3335
|
+
#line 157 "api_node.c.erb"
|
3336
|
+
assert(cast->name != 0);
|
3337
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3338
|
+
|
3339
|
+
// depth
|
3340
|
+
#line 176 "api_node.c.erb"
|
3341
|
+
argv[1] = ULONG2NUM(cast->depth);
|
3342
|
+
|
3343
|
+
// location
|
3344
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3345
|
+
|
3346
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismLocalVariableTargetNode));
|
3347
|
+
break;
|
3348
|
+
}
|
3349
|
+
#line 134 "api_node.c.erb"
|
3350
|
+
case PM_LOCAL_VARIABLE_WRITE_NODE: {
|
3351
|
+
pm_local_variable_write_node_t *cast = (pm_local_variable_write_node_t *) node;
|
3352
|
+
VALUE argv[6];
|
3353
|
+
|
3354
|
+
// name
|
3355
|
+
#line 157 "api_node.c.erb"
|
3356
|
+
assert(cast->name != 0);
|
3357
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3358
|
+
|
3359
|
+
// depth
|
3360
|
+
#line 176 "api_node.c.erb"
|
3361
|
+
argv[1] = ULONG2NUM(cast->depth);
|
3362
|
+
|
3363
|
+
// name_loc
|
3364
|
+
#line 170 "api_node.c.erb"
|
3365
|
+
argv[2] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3366
|
+
|
3367
|
+
// value
|
3368
|
+
#line 145 "api_node.c.erb"
|
3369
|
+
argv[3] = rb_ary_pop(value_stack);
|
3370
|
+
|
3371
|
+
// operator_loc
|
3372
|
+
#line 170 "api_node.c.erb"
|
3373
|
+
argv[4] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3374
|
+
|
3375
|
+
// location
|
3376
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3377
|
+
|
3378
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismLocalVariableWriteNode));
|
3379
|
+
break;
|
3380
|
+
}
|
3381
|
+
#line 134 "api_node.c.erb"
|
3382
|
+
case PM_MATCH_LAST_LINE_NODE: {
|
3383
|
+
pm_match_last_line_node_t *cast = (pm_match_last_line_node_t *) node;
|
3384
|
+
VALUE argv[6];
|
3385
|
+
|
3386
|
+
// opening_loc
|
3387
|
+
#line 170 "api_node.c.erb"
|
3388
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3389
|
+
|
3390
|
+
// content_loc
|
3391
|
+
#line 170 "api_node.c.erb"
|
3392
|
+
argv[1] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
3393
|
+
|
3394
|
+
// closing_loc
|
3395
|
+
#line 170 "api_node.c.erb"
|
3396
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3397
|
+
|
3398
|
+
// unescaped
|
3399
|
+
#line 154 "api_node.c.erb"
|
3400
|
+
argv[3] = pm_string_new(&cast->unescaped, encoding);
|
3401
|
+
|
3402
|
+
// flags
|
3403
|
+
#line 179 "api_node.c.erb"
|
3404
|
+
argv[4] = ULONG2NUM(node->flags >> 2);
|
3405
|
+
|
3406
|
+
// location
|
3407
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3408
|
+
|
3409
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismMatchLastLineNode));
|
3410
|
+
break;
|
3411
|
+
}
|
3412
|
+
#line 134 "api_node.c.erb"
|
3413
|
+
case PM_MATCH_PREDICATE_NODE: {
|
3414
|
+
pm_match_predicate_node_t *cast = (pm_match_predicate_node_t *) node;
|
3415
|
+
VALUE argv[4];
|
3416
|
+
|
3417
|
+
// value
|
3418
|
+
#line 145 "api_node.c.erb"
|
3419
|
+
argv[0] = rb_ary_pop(value_stack);
|
3420
|
+
|
3421
|
+
// pattern
|
3422
|
+
#line 145 "api_node.c.erb"
|
3423
|
+
argv[1] = rb_ary_pop(value_stack);
|
3424
|
+
|
3425
|
+
// operator_loc
|
3426
|
+
#line 170 "api_node.c.erb"
|
3427
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3428
|
+
|
3429
|
+
// location
|
3430
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3431
|
+
|
3432
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismMatchPredicateNode));
|
3433
|
+
break;
|
3434
|
+
}
|
3435
|
+
#line 134 "api_node.c.erb"
|
3436
|
+
case PM_MATCH_REQUIRED_NODE: {
|
3437
|
+
pm_match_required_node_t *cast = (pm_match_required_node_t *) node;
|
3438
|
+
VALUE argv[4];
|
3439
|
+
|
3440
|
+
// value
|
3441
|
+
#line 145 "api_node.c.erb"
|
3442
|
+
argv[0] = rb_ary_pop(value_stack);
|
3443
|
+
|
3444
|
+
// pattern
|
3445
|
+
#line 145 "api_node.c.erb"
|
3446
|
+
argv[1] = rb_ary_pop(value_stack);
|
3447
|
+
|
3448
|
+
// operator_loc
|
3449
|
+
#line 170 "api_node.c.erb"
|
3450
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3451
|
+
|
3452
|
+
// location
|
3453
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3454
|
+
|
3455
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismMatchRequiredNode));
|
3456
|
+
break;
|
3457
|
+
}
|
3458
|
+
#line 134 "api_node.c.erb"
|
3459
|
+
case PM_MATCH_WRITE_NODE: {
|
3460
|
+
pm_match_write_node_t *cast = (pm_match_write_node_t *) node;
|
3461
|
+
VALUE argv[3];
|
3462
|
+
|
3463
|
+
// call
|
3464
|
+
#line 145 "api_node.c.erb"
|
3465
|
+
argv[0] = rb_ary_pop(value_stack);
|
3466
|
+
|
3467
|
+
// locals
|
3468
|
+
#line 163 "api_node.c.erb"
|
3469
|
+
argv[1] = rb_ary_new_capa(cast->locals.size);
|
3470
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
3471
|
+
assert(cast->locals.ids[index] != 0);
|
3472
|
+
rb_ary_push(argv[1], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3473
|
+
}
|
3474
|
+
|
3475
|
+
// location
|
3476
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3477
|
+
|
3478
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismMatchWriteNode));
|
3479
|
+
break;
|
3480
|
+
}
|
3481
|
+
#line 134 "api_node.c.erb"
|
3482
|
+
case PM_MISSING_NODE: {
|
3483
|
+
VALUE argv[1];
|
3484
|
+
|
3485
|
+
// location
|
3486
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3487
|
+
|
3488
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismMissingNode));
|
3489
|
+
break;
|
3490
|
+
}
|
3491
|
+
#line 134 "api_node.c.erb"
|
3492
|
+
case PM_MODULE_NODE: {
|
3493
|
+
pm_module_node_t *cast = (pm_module_node_t *) node;
|
3494
|
+
VALUE argv[7];
|
3495
|
+
|
3496
|
+
// locals
|
3497
|
+
#line 163 "api_node.c.erb"
|
3498
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
3499
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
3500
|
+
assert(cast->locals.ids[index] != 0);
|
3501
|
+
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3502
|
+
}
|
3503
|
+
|
3504
|
+
// module_keyword_loc
|
3505
|
+
#line 170 "api_node.c.erb"
|
3506
|
+
argv[1] = pm_location_new(parser, cast->module_keyword_loc.start, cast->module_keyword_loc.end, source);
|
3507
|
+
|
3508
|
+
// constant_path
|
3509
|
+
#line 145 "api_node.c.erb"
|
3510
|
+
argv[2] = rb_ary_pop(value_stack);
|
3511
|
+
|
3512
|
+
// body
|
3513
|
+
#line 145 "api_node.c.erb"
|
3514
|
+
argv[3] = rb_ary_pop(value_stack);
|
3515
|
+
|
3516
|
+
// end_keyword_loc
|
3517
|
+
#line 170 "api_node.c.erb"
|
3518
|
+
argv[4] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
3519
|
+
|
3520
|
+
// name
|
3521
|
+
#line 157 "api_node.c.erb"
|
3522
|
+
assert(cast->name != 0);
|
3523
|
+
argv[5] = rb_id2sym(constants[cast->name - 1]);
|
3524
|
+
|
3525
|
+
// location
|
3526
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3527
|
+
|
3528
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismModuleNode));
|
3529
|
+
break;
|
3530
|
+
}
|
3531
|
+
#line 134 "api_node.c.erb"
|
3532
|
+
case PM_MULTI_TARGET_NODE: {
|
3533
|
+
pm_multi_target_node_t *cast = (pm_multi_target_node_t *) node;
|
3534
|
+
VALUE argv[4];
|
3535
|
+
|
3536
|
+
// targets
|
3537
|
+
#line 148 "api_node.c.erb"
|
3538
|
+
argv[0] = rb_ary_new_capa(cast->targets.size);
|
3539
|
+
for (size_t index = 0; index < cast->targets.size; index++) {
|
3540
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3541
|
+
}
|
3542
|
+
|
3543
|
+
// lparen_loc
|
3544
|
+
#line 173 "api_node.c.erb"
|
3545
|
+
argv[1] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
3546
|
+
|
3547
|
+
// rparen_loc
|
3548
|
+
#line 173 "api_node.c.erb"
|
3549
|
+
argv[2] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
3550
|
+
|
3551
|
+
// location
|
3552
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3553
|
+
|
3554
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismMultiTargetNode));
|
3555
|
+
break;
|
3556
|
+
}
|
3557
|
+
#line 134 "api_node.c.erb"
|
3558
|
+
case PM_MULTI_WRITE_NODE: {
|
3559
|
+
pm_multi_write_node_t *cast = (pm_multi_write_node_t *) node;
|
3560
|
+
VALUE argv[6];
|
3561
|
+
|
3562
|
+
// targets
|
3563
|
+
#line 148 "api_node.c.erb"
|
3564
|
+
argv[0] = rb_ary_new_capa(cast->targets.size);
|
3565
|
+
for (size_t index = 0; index < cast->targets.size; index++) {
|
3566
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3567
|
+
}
|
3568
|
+
|
3569
|
+
// lparen_loc
|
3570
|
+
#line 173 "api_node.c.erb"
|
3571
|
+
argv[1] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
3572
|
+
|
3573
|
+
// rparen_loc
|
3574
|
+
#line 173 "api_node.c.erb"
|
3575
|
+
argv[2] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
3576
|
+
|
3577
|
+
// operator_loc
|
3578
|
+
#line 170 "api_node.c.erb"
|
3579
|
+
argv[3] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3580
|
+
|
3581
|
+
// value
|
3582
|
+
#line 145 "api_node.c.erb"
|
3583
|
+
argv[4] = rb_ary_pop(value_stack);
|
3584
|
+
|
3585
|
+
// location
|
3586
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3587
|
+
|
3588
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismMultiWriteNode));
|
3589
|
+
break;
|
3590
|
+
}
|
3591
|
+
#line 134 "api_node.c.erb"
|
3592
|
+
case PM_NEXT_NODE: {
|
3593
|
+
pm_next_node_t *cast = (pm_next_node_t *) node;
|
3594
|
+
VALUE argv[3];
|
3595
|
+
|
3596
|
+
// arguments
|
3597
|
+
#line 145 "api_node.c.erb"
|
3598
|
+
argv[0] = rb_ary_pop(value_stack);
|
3599
|
+
|
3600
|
+
// keyword_loc
|
3601
|
+
#line 170 "api_node.c.erb"
|
3602
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
3603
|
+
|
3604
|
+
// location
|
3605
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3606
|
+
|
3607
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismNextNode));
|
3608
|
+
break;
|
3609
|
+
}
|
3610
|
+
#line 134 "api_node.c.erb"
|
3611
|
+
case PM_NIL_NODE: {
|
3612
|
+
VALUE argv[1];
|
3613
|
+
|
3614
|
+
// location
|
3615
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3616
|
+
|
3617
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismNilNode));
|
3618
|
+
break;
|
3619
|
+
}
|
3620
|
+
#line 134 "api_node.c.erb"
|
3621
|
+
case PM_NO_KEYWORDS_PARAMETER_NODE: {
|
3622
|
+
pm_no_keywords_parameter_node_t *cast = (pm_no_keywords_parameter_node_t *) node;
|
3623
|
+
VALUE argv[3];
|
3624
|
+
|
3625
|
+
// operator_loc
|
3626
|
+
#line 170 "api_node.c.erb"
|
3627
|
+
argv[0] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3628
|
+
|
3629
|
+
// keyword_loc
|
3630
|
+
#line 170 "api_node.c.erb"
|
3631
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
3632
|
+
|
3633
|
+
// location
|
3634
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3635
|
+
|
3636
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismNoKeywordsParameterNode));
|
3637
|
+
break;
|
3638
|
+
}
|
3639
|
+
#line 134 "api_node.c.erb"
|
3640
|
+
case PM_NUMBERED_REFERENCE_READ_NODE: {
|
3641
|
+
pm_numbered_reference_read_node_t *cast = (pm_numbered_reference_read_node_t *) node;
|
3642
|
+
VALUE argv[2];
|
3643
|
+
|
3644
|
+
// number
|
3645
|
+
#line 176 "api_node.c.erb"
|
3646
|
+
argv[0] = ULONG2NUM(cast->number);
|
3647
|
+
|
3648
|
+
// location
|
3649
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3650
|
+
|
3651
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismNumberedReferenceReadNode));
|
3652
|
+
break;
|
3653
|
+
}
|
3654
|
+
#line 134 "api_node.c.erb"
|
3655
|
+
case PM_OPTIONAL_PARAMETER_NODE: {
|
3656
|
+
pm_optional_parameter_node_t *cast = (pm_optional_parameter_node_t *) node;
|
3657
|
+
VALUE argv[5];
|
3658
|
+
|
3659
|
+
// name
|
3660
|
+
#line 157 "api_node.c.erb"
|
3661
|
+
assert(cast->name != 0);
|
3662
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
3663
|
+
|
3664
|
+
// name_loc
|
3665
|
+
#line 170 "api_node.c.erb"
|
3666
|
+
argv[1] = pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
3667
|
+
|
3668
|
+
// operator_loc
|
3669
|
+
#line 170 "api_node.c.erb"
|
3670
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3671
|
+
|
3672
|
+
// value
|
3673
|
+
#line 145 "api_node.c.erb"
|
3674
|
+
argv[3] = rb_ary_pop(value_stack);
|
3675
|
+
|
3676
|
+
// location
|
3677
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3678
|
+
|
3679
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismOptionalParameterNode));
|
3680
|
+
break;
|
3681
|
+
}
|
3682
|
+
#line 134 "api_node.c.erb"
|
3683
|
+
case PM_OR_NODE: {
|
3684
|
+
pm_or_node_t *cast = (pm_or_node_t *) node;
|
3685
|
+
VALUE argv[4];
|
3686
|
+
|
3687
|
+
// left
|
3688
|
+
#line 145 "api_node.c.erb"
|
3689
|
+
argv[0] = rb_ary_pop(value_stack);
|
3690
|
+
|
3691
|
+
// right
|
3692
|
+
#line 145 "api_node.c.erb"
|
3693
|
+
argv[1] = rb_ary_pop(value_stack);
|
3694
|
+
|
3695
|
+
// operator_loc
|
3696
|
+
#line 170 "api_node.c.erb"
|
3697
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3698
|
+
|
3699
|
+
// location
|
3700
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3701
|
+
|
3702
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismOrNode));
|
3703
|
+
break;
|
3704
|
+
}
|
3705
|
+
#line 134 "api_node.c.erb"
|
3706
|
+
case PM_PARAMETERS_NODE: {
|
3707
|
+
pm_parameters_node_t *cast = (pm_parameters_node_t *) node;
|
3708
|
+
VALUE argv[8];
|
3709
|
+
|
3710
|
+
// requireds
|
3711
|
+
#line 148 "api_node.c.erb"
|
3712
|
+
argv[0] = rb_ary_new_capa(cast->requireds.size);
|
3713
|
+
for (size_t index = 0; index < cast->requireds.size; index++) {
|
3714
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3715
|
+
}
|
3716
|
+
|
3717
|
+
// optionals
|
3718
|
+
#line 148 "api_node.c.erb"
|
3719
|
+
argv[1] = rb_ary_new_capa(cast->optionals.size);
|
3720
|
+
for (size_t index = 0; index < cast->optionals.size; index++) {
|
3721
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
3722
|
+
}
|
3723
|
+
|
3724
|
+
// rest
|
3725
|
+
#line 145 "api_node.c.erb"
|
3726
|
+
argv[2] = rb_ary_pop(value_stack);
|
3727
|
+
|
3728
|
+
// posts
|
3729
|
+
#line 148 "api_node.c.erb"
|
3730
|
+
argv[3] = rb_ary_new_capa(cast->posts.size);
|
3731
|
+
for (size_t index = 0; index < cast->posts.size; index++) {
|
3732
|
+
rb_ary_push(argv[3], rb_ary_pop(value_stack));
|
3733
|
+
}
|
3734
|
+
|
3735
|
+
// keywords
|
3736
|
+
#line 148 "api_node.c.erb"
|
3737
|
+
argv[4] = rb_ary_new_capa(cast->keywords.size);
|
3738
|
+
for (size_t index = 0; index < cast->keywords.size; index++) {
|
3739
|
+
rb_ary_push(argv[4], rb_ary_pop(value_stack));
|
3740
|
+
}
|
3741
|
+
|
3742
|
+
// keyword_rest
|
3743
|
+
#line 145 "api_node.c.erb"
|
3744
|
+
argv[5] = rb_ary_pop(value_stack);
|
3745
|
+
|
3746
|
+
// block
|
3747
|
+
#line 145 "api_node.c.erb"
|
3748
|
+
argv[6] = rb_ary_pop(value_stack);
|
3749
|
+
|
3750
|
+
// location
|
3751
|
+
argv[7] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3752
|
+
|
3753
|
+
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cPrismParametersNode));
|
3754
|
+
break;
|
3755
|
+
}
|
3756
|
+
#line 134 "api_node.c.erb"
|
3757
|
+
case PM_PARENTHESES_NODE: {
|
3758
|
+
pm_parentheses_node_t *cast = (pm_parentheses_node_t *) node;
|
3759
|
+
VALUE argv[4];
|
3760
|
+
|
3761
|
+
// body
|
3762
|
+
#line 145 "api_node.c.erb"
|
3763
|
+
argv[0] = rb_ary_pop(value_stack);
|
3764
|
+
|
3765
|
+
// opening_loc
|
3766
|
+
#line 170 "api_node.c.erb"
|
3767
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3768
|
+
|
3769
|
+
// closing_loc
|
3770
|
+
#line 170 "api_node.c.erb"
|
3771
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3772
|
+
|
3773
|
+
// location
|
3774
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3775
|
+
|
3776
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismParenthesesNode));
|
3777
|
+
break;
|
3778
|
+
}
|
3779
|
+
#line 134 "api_node.c.erb"
|
3780
|
+
case PM_PINNED_EXPRESSION_NODE: {
|
3781
|
+
pm_pinned_expression_node_t *cast = (pm_pinned_expression_node_t *) node;
|
3782
|
+
VALUE argv[5];
|
3783
|
+
|
3784
|
+
// expression
|
3785
|
+
#line 145 "api_node.c.erb"
|
3786
|
+
argv[0] = rb_ary_pop(value_stack);
|
3787
|
+
|
3788
|
+
// operator_loc
|
3789
|
+
#line 170 "api_node.c.erb"
|
3790
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3791
|
+
|
3792
|
+
// lparen_loc
|
3793
|
+
#line 170 "api_node.c.erb"
|
3794
|
+
argv[2] = pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
3795
|
+
|
3796
|
+
// rparen_loc
|
3797
|
+
#line 170 "api_node.c.erb"
|
3798
|
+
argv[3] = pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
3799
|
+
|
3800
|
+
// location
|
3801
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3802
|
+
|
3803
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismPinnedExpressionNode));
|
3804
|
+
break;
|
3805
|
+
}
|
3806
|
+
#line 134 "api_node.c.erb"
|
3807
|
+
case PM_PINNED_VARIABLE_NODE: {
|
3808
|
+
pm_pinned_variable_node_t *cast = (pm_pinned_variable_node_t *) node;
|
3809
|
+
VALUE argv[3];
|
3810
|
+
|
3811
|
+
// variable
|
3812
|
+
#line 145 "api_node.c.erb"
|
3813
|
+
argv[0] = rb_ary_pop(value_stack);
|
3814
|
+
|
3815
|
+
// operator_loc
|
3816
|
+
#line 170 "api_node.c.erb"
|
3817
|
+
argv[1] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3818
|
+
|
3819
|
+
// location
|
3820
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3821
|
+
|
3822
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismPinnedVariableNode));
|
3823
|
+
break;
|
3824
|
+
}
|
3825
|
+
#line 134 "api_node.c.erb"
|
3826
|
+
case PM_POST_EXECUTION_NODE: {
|
3827
|
+
pm_post_execution_node_t *cast = (pm_post_execution_node_t *) node;
|
3828
|
+
VALUE argv[5];
|
3829
|
+
|
3830
|
+
// statements
|
3831
|
+
#line 145 "api_node.c.erb"
|
3832
|
+
argv[0] = rb_ary_pop(value_stack);
|
3833
|
+
|
3834
|
+
// keyword_loc
|
3835
|
+
#line 170 "api_node.c.erb"
|
3836
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
3837
|
+
|
3838
|
+
// opening_loc
|
3839
|
+
#line 170 "api_node.c.erb"
|
3840
|
+
argv[2] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3841
|
+
|
3842
|
+
// closing_loc
|
3843
|
+
#line 170 "api_node.c.erb"
|
3844
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3845
|
+
|
3846
|
+
// location
|
3847
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3848
|
+
|
3849
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismPostExecutionNode));
|
3850
|
+
break;
|
3851
|
+
}
|
3852
|
+
#line 134 "api_node.c.erb"
|
3853
|
+
case PM_PRE_EXECUTION_NODE: {
|
3854
|
+
pm_pre_execution_node_t *cast = (pm_pre_execution_node_t *) node;
|
3855
|
+
VALUE argv[5];
|
3856
|
+
|
3857
|
+
// statements
|
3858
|
+
#line 145 "api_node.c.erb"
|
3859
|
+
argv[0] = rb_ary_pop(value_stack);
|
3860
|
+
|
3861
|
+
// keyword_loc
|
3862
|
+
#line 170 "api_node.c.erb"
|
3863
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
3864
|
+
|
3865
|
+
// opening_loc
|
3866
|
+
#line 170 "api_node.c.erb"
|
3867
|
+
argv[2] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3868
|
+
|
3869
|
+
// closing_loc
|
3870
|
+
#line 170 "api_node.c.erb"
|
3871
|
+
argv[3] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3872
|
+
|
3873
|
+
// location
|
3874
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3875
|
+
|
3876
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismPreExecutionNode));
|
3877
|
+
break;
|
3878
|
+
}
|
3879
|
+
#line 134 "api_node.c.erb"
|
3880
|
+
case PM_PROGRAM_NODE: {
|
3881
|
+
pm_program_node_t *cast = (pm_program_node_t *) node;
|
3882
|
+
VALUE argv[3];
|
3883
|
+
|
3884
|
+
// locals
|
3885
|
+
#line 163 "api_node.c.erb"
|
3886
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
3887
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
3888
|
+
assert(cast->locals.ids[index] != 0);
|
3889
|
+
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
3890
|
+
}
|
3891
|
+
|
3892
|
+
// statements
|
3893
|
+
#line 145 "api_node.c.erb"
|
3894
|
+
argv[1] = rb_ary_pop(value_stack);
|
3895
|
+
|
3896
|
+
// location
|
3897
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3898
|
+
|
3899
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismProgramNode));
|
3900
|
+
break;
|
3901
|
+
}
|
3902
|
+
#line 134 "api_node.c.erb"
|
3903
|
+
case PM_RANGE_NODE: {
|
3904
|
+
pm_range_node_t *cast = (pm_range_node_t *) node;
|
3905
|
+
VALUE argv[5];
|
3906
|
+
|
3907
|
+
// left
|
3908
|
+
#line 145 "api_node.c.erb"
|
3909
|
+
argv[0] = rb_ary_pop(value_stack);
|
3910
|
+
|
3911
|
+
// right
|
3912
|
+
#line 145 "api_node.c.erb"
|
3913
|
+
argv[1] = rb_ary_pop(value_stack);
|
3914
|
+
|
3915
|
+
// operator_loc
|
3916
|
+
#line 170 "api_node.c.erb"
|
3917
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
3918
|
+
|
3919
|
+
// flags
|
3920
|
+
#line 179 "api_node.c.erb"
|
3921
|
+
argv[3] = ULONG2NUM(node->flags >> 2);
|
3922
|
+
|
3923
|
+
// location
|
3924
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3925
|
+
|
3926
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismRangeNode));
|
3927
|
+
break;
|
3928
|
+
}
|
3929
|
+
#line 134 "api_node.c.erb"
|
3930
|
+
case PM_RATIONAL_NODE: {
|
3931
|
+
VALUE argv[2];
|
3932
|
+
|
3933
|
+
// numeric
|
3934
|
+
#line 145 "api_node.c.erb"
|
3935
|
+
argv[0] = rb_ary_pop(value_stack);
|
3936
|
+
|
3937
|
+
// location
|
3938
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3939
|
+
|
3940
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismRationalNode));
|
3941
|
+
break;
|
3942
|
+
}
|
3943
|
+
#line 134 "api_node.c.erb"
|
3944
|
+
case PM_REDO_NODE: {
|
3945
|
+
VALUE argv[1];
|
3946
|
+
|
3947
|
+
// location
|
3948
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3949
|
+
|
3950
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismRedoNode));
|
3951
|
+
break;
|
3952
|
+
}
|
3953
|
+
#line 134 "api_node.c.erb"
|
3954
|
+
case PM_REGULAR_EXPRESSION_NODE: {
|
3955
|
+
pm_regular_expression_node_t *cast = (pm_regular_expression_node_t *) node;
|
3956
|
+
VALUE argv[6];
|
3957
|
+
|
3958
|
+
// opening_loc
|
3959
|
+
#line 170 "api_node.c.erb"
|
3960
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3961
|
+
|
3962
|
+
// content_loc
|
3963
|
+
#line 170 "api_node.c.erb"
|
3964
|
+
argv[1] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
3965
|
+
|
3966
|
+
// closing_loc
|
3967
|
+
#line 170 "api_node.c.erb"
|
3968
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
3969
|
+
|
3970
|
+
// unescaped
|
3971
|
+
#line 154 "api_node.c.erb"
|
3972
|
+
argv[3] = pm_string_new(&cast->unescaped, encoding);
|
3973
|
+
|
3974
|
+
// flags
|
3975
|
+
#line 179 "api_node.c.erb"
|
3976
|
+
argv[4] = ULONG2NUM(node->flags >> 2);
|
3977
|
+
|
3978
|
+
// location
|
3979
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
3980
|
+
|
3981
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismRegularExpressionNode));
|
3982
|
+
break;
|
3983
|
+
}
|
3984
|
+
#line 134 "api_node.c.erb"
|
3985
|
+
case PM_REQUIRED_DESTRUCTURED_PARAMETER_NODE: {
|
3986
|
+
pm_required_destructured_parameter_node_t *cast = (pm_required_destructured_parameter_node_t *) node;
|
3987
|
+
VALUE argv[4];
|
3988
|
+
|
3989
|
+
// parameters
|
3990
|
+
#line 148 "api_node.c.erb"
|
3991
|
+
argv[0] = rb_ary_new_capa(cast->parameters.size);
|
3992
|
+
for (size_t index = 0; index < cast->parameters.size; index++) {
|
3993
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
3994
|
+
}
|
3995
|
+
|
3996
|
+
// opening_loc
|
3997
|
+
#line 170 "api_node.c.erb"
|
3998
|
+
argv[1] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
3999
|
+
|
4000
|
+
// closing_loc
|
4001
|
+
#line 170 "api_node.c.erb"
|
4002
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4003
|
+
|
4004
|
+
// location
|
4005
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4006
|
+
|
4007
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismRequiredDestructuredParameterNode));
|
4008
|
+
break;
|
4009
|
+
}
|
4010
|
+
#line 134 "api_node.c.erb"
|
4011
|
+
case PM_REQUIRED_PARAMETER_NODE: {
|
4012
|
+
pm_required_parameter_node_t *cast = (pm_required_parameter_node_t *) node;
|
4013
|
+
VALUE argv[2];
|
4014
|
+
|
4015
|
+
// name
|
4016
|
+
#line 157 "api_node.c.erb"
|
4017
|
+
assert(cast->name != 0);
|
4018
|
+
argv[0] = rb_id2sym(constants[cast->name - 1]);
|
4019
|
+
|
4020
|
+
// location
|
4021
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4022
|
+
|
4023
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismRequiredParameterNode));
|
4024
|
+
break;
|
4025
|
+
}
|
4026
|
+
#line 134 "api_node.c.erb"
|
4027
|
+
case PM_RESCUE_MODIFIER_NODE: {
|
4028
|
+
pm_rescue_modifier_node_t *cast = (pm_rescue_modifier_node_t *) node;
|
4029
|
+
VALUE argv[4];
|
4030
|
+
|
4031
|
+
// expression
|
4032
|
+
#line 145 "api_node.c.erb"
|
4033
|
+
argv[0] = rb_ary_pop(value_stack);
|
4034
|
+
|
4035
|
+
// keyword_loc
|
4036
|
+
#line 170 "api_node.c.erb"
|
4037
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4038
|
+
|
4039
|
+
// rescue_expression
|
4040
|
+
#line 145 "api_node.c.erb"
|
4041
|
+
argv[2] = rb_ary_pop(value_stack);
|
4042
|
+
|
4043
|
+
// location
|
4044
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4045
|
+
|
4046
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismRescueModifierNode));
|
4047
|
+
break;
|
4048
|
+
}
|
4049
|
+
#line 134 "api_node.c.erb"
|
4050
|
+
case PM_RESCUE_NODE: {
|
4051
|
+
pm_rescue_node_t *cast = (pm_rescue_node_t *) node;
|
4052
|
+
VALUE argv[7];
|
4053
|
+
|
4054
|
+
// keyword_loc
|
4055
|
+
#line 170 "api_node.c.erb"
|
4056
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4057
|
+
|
4058
|
+
// exceptions
|
4059
|
+
#line 148 "api_node.c.erb"
|
4060
|
+
argv[1] = rb_ary_new_capa(cast->exceptions.size);
|
4061
|
+
for (size_t index = 0; index < cast->exceptions.size; index++) {
|
4062
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
4063
|
+
}
|
4064
|
+
|
4065
|
+
// operator_loc
|
4066
|
+
#line 173 "api_node.c.erb"
|
4067
|
+
argv[2] = cast->operator_loc.start == NULL ? Qnil : pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
4068
|
+
|
4069
|
+
// reference
|
4070
|
+
#line 145 "api_node.c.erb"
|
4071
|
+
argv[3] = rb_ary_pop(value_stack);
|
4072
|
+
|
4073
|
+
// statements
|
4074
|
+
#line 145 "api_node.c.erb"
|
4075
|
+
argv[4] = rb_ary_pop(value_stack);
|
4076
|
+
|
4077
|
+
// consequent
|
4078
|
+
#line 145 "api_node.c.erb"
|
4079
|
+
argv[5] = rb_ary_pop(value_stack);
|
4080
|
+
|
4081
|
+
// location
|
4082
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4083
|
+
|
4084
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismRescueNode));
|
4085
|
+
break;
|
4086
|
+
}
|
4087
|
+
#line 134 "api_node.c.erb"
|
4088
|
+
case PM_REST_PARAMETER_NODE: {
|
4089
|
+
pm_rest_parameter_node_t *cast = (pm_rest_parameter_node_t *) node;
|
4090
|
+
VALUE argv[4];
|
4091
|
+
|
4092
|
+
// name
|
4093
|
+
argv[0] = cast->name == 0 ? Qnil : rb_id2sym(constants[cast->name - 1]);
|
4094
|
+
|
4095
|
+
// name_loc
|
4096
|
+
#line 173 "api_node.c.erb"
|
4097
|
+
argv[1] = cast->name_loc.start == NULL ? Qnil : pm_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
4098
|
+
|
4099
|
+
// operator_loc
|
4100
|
+
#line 170 "api_node.c.erb"
|
4101
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
4102
|
+
|
4103
|
+
// location
|
4104
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4105
|
+
|
4106
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismRestParameterNode));
|
4107
|
+
break;
|
4108
|
+
}
|
4109
|
+
#line 134 "api_node.c.erb"
|
4110
|
+
case PM_RETRY_NODE: {
|
4111
|
+
VALUE argv[1];
|
4112
|
+
|
4113
|
+
// location
|
4114
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4115
|
+
|
4116
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismRetryNode));
|
4117
|
+
break;
|
4118
|
+
}
|
4119
|
+
#line 134 "api_node.c.erb"
|
4120
|
+
case PM_RETURN_NODE: {
|
4121
|
+
pm_return_node_t *cast = (pm_return_node_t *) node;
|
4122
|
+
VALUE argv[3];
|
4123
|
+
|
4124
|
+
// keyword_loc
|
4125
|
+
#line 170 "api_node.c.erb"
|
4126
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4127
|
+
|
4128
|
+
// arguments
|
4129
|
+
#line 145 "api_node.c.erb"
|
4130
|
+
argv[1] = rb_ary_pop(value_stack);
|
4131
|
+
|
4132
|
+
// location
|
4133
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4134
|
+
|
4135
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismReturnNode));
|
4136
|
+
break;
|
4137
|
+
}
|
4138
|
+
#line 134 "api_node.c.erb"
|
4139
|
+
case PM_SELF_NODE: {
|
4140
|
+
VALUE argv[1];
|
4141
|
+
|
4142
|
+
// location
|
4143
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4144
|
+
|
4145
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismSelfNode));
|
4146
|
+
break;
|
4147
|
+
}
|
4148
|
+
#line 134 "api_node.c.erb"
|
4149
|
+
case PM_SINGLETON_CLASS_NODE: {
|
4150
|
+
pm_singleton_class_node_t *cast = (pm_singleton_class_node_t *) node;
|
4151
|
+
VALUE argv[7];
|
4152
|
+
|
4153
|
+
// locals
|
4154
|
+
#line 163 "api_node.c.erb"
|
4155
|
+
argv[0] = rb_ary_new_capa(cast->locals.size);
|
4156
|
+
for (size_t index = 0; index < cast->locals.size; index++) {
|
4157
|
+
assert(cast->locals.ids[index] != 0);
|
4158
|
+
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
4159
|
+
}
|
4160
|
+
|
4161
|
+
// class_keyword_loc
|
4162
|
+
#line 170 "api_node.c.erb"
|
4163
|
+
argv[1] = pm_location_new(parser, cast->class_keyword_loc.start, cast->class_keyword_loc.end, source);
|
4164
|
+
|
4165
|
+
// operator_loc
|
4166
|
+
#line 170 "api_node.c.erb"
|
4167
|
+
argv[2] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
4168
|
+
|
4169
|
+
// expression
|
4170
|
+
#line 145 "api_node.c.erb"
|
4171
|
+
argv[3] = rb_ary_pop(value_stack);
|
4172
|
+
|
4173
|
+
// body
|
4174
|
+
#line 145 "api_node.c.erb"
|
4175
|
+
argv[4] = rb_ary_pop(value_stack);
|
4176
|
+
|
4177
|
+
// end_keyword_loc
|
4178
|
+
#line 170 "api_node.c.erb"
|
4179
|
+
argv[5] = pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
4180
|
+
|
4181
|
+
// location
|
4182
|
+
argv[6] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4183
|
+
|
4184
|
+
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cPrismSingletonClassNode));
|
4185
|
+
break;
|
4186
|
+
}
|
4187
|
+
#line 134 "api_node.c.erb"
|
4188
|
+
case PM_SOURCE_ENCODING_NODE: {
|
4189
|
+
VALUE argv[1];
|
4190
|
+
|
4191
|
+
// location
|
4192
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4193
|
+
|
4194
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismSourceEncodingNode));
|
4195
|
+
break;
|
4196
|
+
}
|
4197
|
+
#line 134 "api_node.c.erb"
|
4198
|
+
case PM_SOURCE_FILE_NODE: {
|
4199
|
+
pm_source_file_node_t *cast = (pm_source_file_node_t *) node;
|
4200
|
+
VALUE argv[2];
|
4201
|
+
|
4202
|
+
// filepath
|
4203
|
+
#line 154 "api_node.c.erb"
|
4204
|
+
argv[0] = pm_string_new(&cast->filepath, encoding);
|
4205
|
+
|
4206
|
+
// location
|
4207
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4208
|
+
|
4209
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismSourceFileNode));
|
4210
|
+
break;
|
4211
|
+
}
|
4212
|
+
#line 134 "api_node.c.erb"
|
4213
|
+
case PM_SOURCE_LINE_NODE: {
|
4214
|
+
VALUE argv[1];
|
4215
|
+
|
4216
|
+
// location
|
4217
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4218
|
+
|
4219
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismSourceLineNode));
|
4220
|
+
break;
|
4221
|
+
}
|
4222
|
+
#line 134 "api_node.c.erb"
|
4223
|
+
case PM_SPLAT_NODE: {
|
4224
|
+
pm_splat_node_t *cast = (pm_splat_node_t *) node;
|
4225
|
+
VALUE argv[3];
|
4226
|
+
|
4227
|
+
// operator_loc
|
4228
|
+
#line 170 "api_node.c.erb"
|
4229
|
+
argv[0] = pm_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
4230
|
+
|
4231
|
+
// expression
|
4232
|
+
#line 145 "api_node.c.erb"
|
4233
|
+
argv[1] = rb_ary_pop(value_stack);
|
4234
|
+
|
4235
|
+
// location
|
4236
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4237
|
+
|
4238
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismSplatNode));
|
4239
|
+
break;
|
4240
|
+
}
|
4241
|
+
#line 134 "api_node.c.erb"
|
4242
|
+
case PM_STATEMENTS_NODE: {
|
4243
|
+
pm_statements_node_t *cast = (pm_statements_node_t *) node;
|
4244
|
+
VALUE argv[2];
|
4245
|
+
|
4246
|
+
// body
|
4247
|
+
#line 148 "api_node.c.erb"
|
4248
|
+
argv[0] = rb_ary_new_capa(cast->body.size);
|
4249
|
+
for (size_t index = 0; index < cast->body.size; index++) {
|
4250
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
4251
|
+
}
|
4252
|
+
|
4253
|
+
// location
|
4254
|
+
argv[1] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4255
|
+
|
4256
|
+
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cPrismStatementsNode));
|
4257
|
+
break;
|
4258
|
+
}
|
4259
|
+
#line 134 "api_node.c.erb"
|
4260
|
+
case PM_STRING_CONCAT_NODE: {
|
4261
|
+
VALUE argv[3];
|
4262
|
+
|
4263
|
+
// left
|
4264
|
+
#line 145 "api_node.c.erb"
|
4265
|
+
argv[0] = rb_ary_pop(value_stack);
|
4266
|
+
|
4267
|
+
// right
|
4268
|
+
#line 145 "api_node.c.erb"
|
4269
|
+
argv[1] = rb_ary_pop(value_stack);
|
4270
|
+
|
4271
|
+
// location
|
4272
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4273
|
+
|
4274
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismStringConcatNode));
|
4275
|
+
break;
|
4276
|
+
}
|
4277
|
+
#line 134 "api_node.c.erb"
|
4278
|
+
case PM_STRING_NODE: {
|
4279
|
+
pm_string_node_t *cast = (pm_string_node_t *) node;
|
4280
|
+
VALUE argv[6];
|
4281
|
+
|
4282
|
+
// flags
|
4283
|
+
#line 179 "api_node.c.erb"
|
4284
|
+
argv[0] = ULONG2NUM(node->flags >> 2);
|
4285
|
+
|
4286
|
+
// opening_loc
|
4287
|
+
#line 173 "api_node.c.erb"
|
4288
|
+
argv[1] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
4289
|
+
|
4290
|
+
// content_loc
|
4291
|
+
#line 170 "api_node.c.erb"
|
4292
|
+
argv[2] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
4293
|
+
|
4294
|
+
// closing_loc
|
4295
|
+
#line 173 "api_node.c.erb"
|
4296
|
+
argv[3] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4297
|
+
|
4298
|
+
// unescaped
|
4299
|
+
#line 154 "api_node.c.erb"
|
4300
|
+
argv[4] = pm_string_new(&cast->unescaped, encoding);
|
4301
|
+
|
4302
|
+
// location
|
4303
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4304
|
+
|
4305
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismStringNode));
|
4306
|
+
break;
|
4307
|
+
}
|
4308
|
+
#line 134 "api_node.c.erb"
|
4309
|
+
case PM_SUPER_NODE: {
|
4310
|
+
pm_super_node_t *cast = (pm_super_node_t *) node;
|
4311
|
+
VALUE argv[6];
|
4312
|
+
|
4313
|
+
// keyword_loc
|
4314
|
+
#line 170 "api_node.c.erb"
|
4315
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4316
|
+
|
4317
|
+
// lparen_loc
|
4318
|
+
#line 173 "api_node.c.erb"
|
4319
|
+
argv[1] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
4320
|
+
|
4321
|
+
// arguments
|
4322
|
+
#line 145 "api_node.c.erb"
|
4323
|
+
argv[2] = rb_ary_pop(value_stack);
|
4324
|
+
|
4325
|
+
// rparen_loc
|
4326
|
+
#line 173 "api_node.c.erb"
|
4327
|
+
argv[3] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
4328
|
+
|
4329
|
+
// block
|
4330
|
+
#line 145 "api_node.c.erb"
|
4331
|
+
argv[4] = rb_ary_pop(value_stack);
|
4332
|
+
|
4333
|
+
// location
|
4334
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4335
|
+
|
4336
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismSuperNode));
|
4337
|
+
break;
|
4338
|
+
}
|
4339
|
+
#line 134 "api_node.c.erb"
|
4340
|
+
case PM_SYMBOL_NODE: {
|
4341
|
+
pm_symbol_node_t *cast = (pm_symbol_node_t *) node;
|
4342
|
+
VALUE argv[5];
|
4343
|
+
|
4344
|
+
// opening_loc
|
4345
|
+
#line 173 "api_node.c.erb"
|
4346
|
+
argv[0] = cast->opening_loc.start == NULL ? Qnil : pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
4347
|
+
|
4348
|
+
// value_loc
|
4349
|
+
#line 173 "api_node.c.erb"
|
4350
|
+
argv[1] = cast->value_loc.start == NULL ? Qnil : pm_location_new(parser, cast->value_loc.start, cast->value_loc.end, source);
|
4351
|
+
|
4352
|
+
// closing_loc
|
4353
|
+
#line 173 "api_node.c.erb"
|
4354
|
+
argv[2] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4355
|
+
|
4356
|
+
// unescaped
|
4357
|
+
#line 154 "api_node.c.erb"
|
4358
|
+
argv[3] = pm_string_new(&cast->unescaped, encoding);
|
4359
|
+
|
4360
|
+
// location
|
4361
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4362
|
+
|
4363
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismSymbolNode));
|
4364
|
+
break;
|
4365
|
+
}
|
4366
|
+
#line 134 "api_node.c.erb"
|
4367
|
+
case PM_TRUE_NODE: {
|
4368
|
+
VALUE argv[1];
|
4369
|
+
|
4370
|
+
// location
|
4371
|
+
argv[0] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4372
|
+
|
4373
|
+
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cPrismTrueNode));
|
4374
|
+
break;
|
4375
|
+
}
|
4376
|
+
#line 134 "api_node.c.erb"
|
4377
|
+
case PM_UNDEF_NODE: {
|
4378
|
+
pm_undef_node_t *cast = (pm_undef_node_t *) node;
|
4379
|
+
VALUE argv[3];
|
4380
|
+
|
4381
|
+
// names
|
4382
|
+
#line 148 "api_node.c.erb"
|
4383
|
+
argv[0] = rb_ary_new_capa(cast->names.size);
|
4384
|
+
for (size_t index = 0; index < cast->names.size; index++) {
|
4385
|
+
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
4386
|
+
}
|
4387
|
+
|
4388
|
+
// keyword_loc
|
4389
|
+
#line 170 "api_node.c.erb"
|
4390
|
+
argv[1] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4391
|
+
|
4392
|
+
// location
|
4393
|
+
argv[2] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4394
|
+
|
4395
|
+
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cPrismUndefNode));
|
4396
|
+
break;
|
4397
|
+
}
|
4398
|
+
#line 134 "api_node.c.erb"
|
4399
|
+
case PM_UNLESS_NODE: {
|
4400
|
+
pm_unless_node_t *cast = (pm_unless_node_t *) node;
|
4401
|
+
VALUE argv[6];
|
4402
|
+
|
4403
|
+
// keyword_loc
|
4404
|
+
#line 170 "api_node.c.erb"
|
4405
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4406
|
+
|
4407
|
+
// predicate
|
4408
|
+
#line 145 "api_node.c.erb"
|
4409
|
+
argv[1] = rb_ary_pop(value_stack);
|
4410
|
+
|
4411
|
+
// statements
|
4412
|
+
#line 145 "api_node.c.erb"
|
4413
|
+
argv[2] = rb_ary_pop(value_stack);
|
4414
|
+
|
4415
|
+
// consequent
|
4416
|
+
#line 145 "api_node.c.erb"
|
4417
|
+
argv[3] = rb_ary_pop(value_stack);
|
4418
|
+
|
4419
|
+
// end_keyword_loc
|
4420
|
+
#line 173 "api_node.c.erb"
|
4421
|
+
argv[4] = cast->end_keyword_loc.start == NULL ? Qnil : pm_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
4422
|
+
|
4423
|
+
// location
|
4424
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4425
|
+
|
4426
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismUnlessNode));
|
4427
|
+
break;
|
4428
|
+
}
|
4429
|
+
#line 134 "api_node.c.erb"
|
4430
|
+
case PM_UNTIL_NODE: {
|
4431
|
+
pm_until_node_t *cast = (pm_until_node_t *) node;
|
4432
|
+
VALUE argv[6];
|
4433
|
+
|
4434
|
+
// keyword_loc
|
4435
|
+
#line 170 "api_node.c.erb"
|
4436
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4437
|
+
|
4438
|
+
// closing_loc
|
4439
|
+
#line 173 "api_node.c.erb"
|
4440
|
+
argv[1] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4441
|
+
|
4442
|
+
// predicate
|
4443
|
+
#line 145 "api_node.c.erb"
|
4444
|
+
argv[2] = rb_ary_pop(value_stack);
|
4445
|
+
|
4446
|
+
// statements
|
4447
|
+
#line 145 "api_node.c.erb"
|
4448
|
+
argv[3] = rb_ary_pop(value_stack);
|
4449
|
+
|
4450
|
+
// flags
|
4451
|
+
#line 179 "api_node.c.erb"
|
4452
|
+
argv[4] = ULONG2NUM(node->flags >> 2);
|
4453
|
+
|
4454
|
+
// location
|
4455
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4456
|
+
|
4457
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismUntilNode));
|
4458
|
+
break;
|
4459
|
+
}
|
4460
|
+
#line 134 "api_node.c.erb"
|
4461
|
+
case PM_WHEN_NODE: {
|
4462
|
+
pm_when_node_t *cast = (pm_when_node_t *) node;
|
4463
|
+
VALUE argv[4];
|
4464
|
+
|
4465
|
+
// keyword_loc
|
4466
|
+
#line 170 "api_node.c.erb"
|
4467
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4468
|
+
|
4469
|
+
// conditions
|
4470
|
+
#line 148 "api_node.c.erb"
|
4471
|
+
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
4472
|
+
for (size_t index = 0; index < cast->conditions.size; index++) {
|
4473
|
+
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
4474
|
+
}
|
4475
|
+
|
4476
|
+
// statements
|
4477
|
+
#line 145 "api_node.c.erb"
|
4478
|
+
argv[2] = rb_ary_pop(value_stack);
|
4479
|
+
|
4480
|
+
// location
|
4481
|
+
argv[3] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4482
|
+
|
4483
|
+
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cPrismWhenNode));
|
4484
|
+
break;
|
4485
|
+
}
|
4486
|
+
#line 134 "api_node.c.erb"
|
4487
|
+
case PM_WHILE_NODE: {
|
4488
|
+
pm_while_node_t *cast = (pm_while_node_t *) node;
|
4489
|
+
VALUE argv[6];
|
4490
|
+
|
4491
|
+
// keyword_loc
|
4492
|
+
#line 170 "api_node.c.erb"
|
4493
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4494
|
+
|
4495
|
+
// closing_loc
|
4496
|
+
#line 173 "api_node.c.erb"
|
4497
|
+
argv[1] = cast->closing_loc.start == NULL ? Qnil : pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4498
|
+
|
4499
|
+
// predicate
|
4500
|
+
#line 145 "api_node.c.erb"
|
4501
|
+
argv[2] = rb_ary_pop(value_stack);
|
4502
|
+
|
4503
|
+
// statements
|
4504
|
+
#line 145 "api_node.c.erb"
|
4505
|
+
argv[3] = rb_ary_pop(value_stack);
|
4506
|
+
|
4507
|
+
// flags
|
4508
|
+
#line 179 "api_node.c.erb"
|
4509
|
+
argv[4] = ULONG2NUM(node->flags >> 2);
|
4510
|
+
|
4511
|
+
// location
|
4512
|
+
argv[5] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4513
|
+
|
4514
|
+
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cPrismWhileNode));
|
4515
|
+
break;
|
4516
|
+
}
|
4517
|
+
#line 134 "api_node.c.erb"
|
4518
|
+
case PM_X_STRING_NODE: {
|
4519
|
+
pm_x_string_node_t *cast = (pm_x_string_node_t *) node;
|
4520
|
+
VALUE argv[5];
|
4521
|
+
|
4522
|
+
// opening_loc
|
4523
|
+
#line 170 "api_node.c.erb"
|
4524
|
+
argv[0] = pm_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
4525
|
+
|
4526
|
+
// content_loc
|
4527
|
+
#line 170 "api_node.c.erb"
|
4528
|
+
argv[1] = pm_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
4529
|
+
|
4530
|
+
// closing_loc
|
4531
|
+
#line 170 "api_node.c.erb"
|
4532
|
+
argv[2] = pm_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
4533
|
+
|
4534
|
+
// unescaped
|
4535
|
+
#line 154 "api_node.c.erb"
|
4536
|
+
argv[3] = pm_string_new(&cast->unescaped, encoding);
|
4537
|
+
|
4538
|
+
// location
|
4539
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4540
|
+
|
4541
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismXStringNode));
|
4542
|
+
break;
|
4543
|
+
}
|
4544
|
+
#line 134 "api_node.c.erb"
|
4545
|
+
case PM_YIELD_NODE: {
|
4546
|
+
pm_yield_node_t *cast = (pm_yield_node_t *) node;
|
4547
|
+
VALUE argv[5];
|
4548
|
+
|
4549
|
+
// keyword_loc
|
4550
|
+
#line 170 "api_node.c.erb"
|
4551
|
+
argv[0] = pm_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
4552
|
+
|
4553
|
+
// lparen_loc
|
4554
|
+
#line 173 "api_node.c.erb"
|
4555
|
+
argv[1] = cast->lparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
4556
|
+
|
4557
|
+
// arguments
|
4558
|
+
#line 145 "api_node.c.erb"
|
4559
|
+
argv[2] = rb_ary_pop(value_stack);
|
4560
|
+
|
4561
|
+
// rparen_loc
|
4562
|
+
#line 173 "api_node.c.erb"
|
4563
|
+
argv[3] = cast->rparen_loc.start == NULL ? Qnil : pm_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
4564
|
+
|
4565
|
+
// location
|
4566
|
+
argv[4] = pm_location_new(parser, node->location.start, node->location.end, source);
|
4567
|
+
|
4568
|
+
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cPrismYieldNode));
|
4569
|
+
break;
|
4570
|
+
}
|
4571
|
+
default:
|
4572
|
+
rb_raise(rb_eRuntimeError, "unknown node type: %d", PM_NODE_TYPE(node));
|
4573
|
+
}
|
4574
|
+
}
|
4575
|
+
}
|
4576
|
+
|
4577
|
+
VALUE result = rb_ary_pop(value_stack);
|
4578
|
+
free(constants);
|
4579
|
+
return result;
|
4580
|
+
}
|
4581
|
+
|
4582
|
+
void
|
4583
|
+
Init_prism_api_node(void) {
|
4584
|
+
rb_cPrismAliasGlobalVariableNode = rb_define_class_under(rb_cPrism, "AliasGlobalVariableNode", rb_cPrismNode);
|
4585
|
+
rb_cPrismAliasMethodNode = rb_define_class_under(rb_cPrism, "AliasMethodNode", rb_cPrismNode);
|
4586
|
+
rb_cPrismAlternationPatternNode = rb_define_class_under(rb_cPrism, "AlternationPatternNode", rb_cPrismNode);
|
4587
|
+
rb_cPrismAndNode = rb_define_class_under(rb_cPrism, "AndNode", rb_cPrismNode);
|
4588
|
+
rb_cPrismArgumentsNode = rb_define_class_under(rb_cPrism, "ArgumentsNode", rb_cPrismNode);
|
4589
|
+
rb_cPrismArrayNode = rb_define_class_under(rb_cPrism, "ArrayNode", rb_cPrismNode);
|
4590
|
+
rb_cPrismArrayPatternNode = rb_define_class_under(rb_cPrism, "ArrayPatternNode", rb_cPrismNode);
|
4591
|
+
rb_cPrismAssocNode = rb_define_class_under(rb_cPrism, "AssocNode", rb_cPrismNode);
|
4592
|
+
rb_cPrismAssocSplatNode = rb_define_class_under(rb_cPrism, "AssocSplatNode", rb_cPrismNode);
|
4593
|
+
rb_cPrismBackReferenceReadNode = rb_define_class_under(rb_cPrism, "BackReferenceReadNode", rb_cPrismNode);
|
4594
|
+
rb_cPrismBeginNode = rb_define_class_under(rb_cPrism, "BeginNode", rb_cPrismNode);
|
4595
|
+
rb_cPrismBlockArgumentNode = rb_define_class_under(rb_cPrism, "BlockArgumentNode", rb_cPrismNode);
|
4596
|
+
rb_cPrismBlockLocalVariableNode = rb_define_class_under(rb_cPrism, "BlockLocalVariableNode", rb_cPrismNode);
|
4597
|
+
rb_cPrismBlockNode = rb_define_class_under(rb_cPrism, "BlockNode", rb_cPrismNode);
|
4598
|
+
rb_cPrismBlockParameterNode = rb_define_class_under(rb_cPrism, "BlockParameterNode", rb_cPrismNode);
|
4599
|
+
rb_cPrismBlockParametersNode = rb_define_class_under(rb_cPrism, "BlockParametersNode", rb_cPrismNode);
|
4600
|
+
rb_cPrismBreakNode = rb_define_class_under(rb_cPrism, "BreakNode", rb_cPrismNode);
|
4601
|
+
rb_cPrismCallAndWriteNode = rb_define_class_under(rb_cPrism, "CallAndWriteNode", rb_cPrismNode);
|
4602
|
+
rb_cPrismCallNode = rb_define_class_under(rb_cPrism, "CallNode", rb_cPrismNode);
|
4603
|
+
rb_cPrismCallOperatorWriteNode = rb_define_class_under(rb_cPrism, "CallOperatorWriteNode", rb_cPrismNode);
|
4604
|
+
rb_cPrismCallOrWriteNode = rb_define_class_under(rb_cPrism, "CallOrWriteNode", rb_cPrismNode);
|
4605
|
+
rb_cPrismCapturePatternNode = rb_define_class_under(rb_cPrism, "CapturePatternNode", rb_cPrismNode);
|
4606
|
+
rb_cPrismCaseNode = rb_define_class_under(rb_cPrism, "CaseNode", rb_cPrismNode);
|
4607
|
+
rb_cPrismClassNode = rb_define_class_under(rb_cPrism, "ClassNode", rb_cPrismNode);
|
4608
|
+
rb_cPrismClassVariableAndWriteNode = rb_define_class_under(rb_cPrism, "ClassVariableAndWriteNode", rb_cPrismNode);
|
4609
|
+
rb_cPrismClassVariableOperatorWriteNode = rb_define_class_under(rb_cPrism, "ClassVariableOperatorWriteNode", rb_cPrismNode);
|
4610
|
+
rb_cPrismClassVariableOrWriteNode = rb_define_class_under(rb_cPrism, "ClassVariableOrWriteNode", rb_cPrismNode);
|
4611
|
+
rb_cPrismClassVariableReadNode = rb_define_class_under(rb_cPrism, "ClassVariableReadNode", rb_cPrismNode);
|
4612
|
+
rb_cPrismClassVariableTargetNode = rb_define_class_under(rb_cPrism, "ClassVariableTargetNode", rb_cPrismNode);
|
4613
|
+
rb_cPrismClassVariableWriteNode = rb_define_class_under(rb_cPrism, "ClassVariableWriteNode", rb_cPrismNode);
|
4614
|
+
rb_cPrismConstantAndWriteNode = rb_define_class_under(rb_cPrism, "ConstantAndWriteNode", rb_cPrismNode);
|
4615
|
+
rb_cPrismConstantOperatorWriteNode = rb_define_class_under(rb_cPrism, "ConstantOperatorWriteNode", rb_cPrismNode);
|
4616
|
+
rb_cPrismConstantOrWriteNode = rb_define_class_under(rb_cPrism, "ConstantOrWriteNode", rb_cPrismNode);
|
4617
|
+
rb_cPrismConstantPathAndWriteNode = rb_define_class_under(rb_cPrism, "ConstantPathAndWriteNode", rb_cPrismNode);
|
4618
|
+
rb_cPrismConstantPathNode = rb_define_class_under(rb_cPrism, "ConstantPathNode", rb_cPrismNode);
|
4619
|
+
rb_cPrismConstantPathOperatorWriteNode = rb_define_class_under(rb_cPrism, "ConstantPathOperatorWriteNode", rb_cPrismNode);
|
4620
|
+
rb_cPrismConstantPathOrWriteNode = rb_define_class_under(rb_cPrism, "ConstantPathOrWriteNode", rb_cPrismNode);
|
4621
|
+
rb_cPrismConstantPathTargetNode = rb_define_class_under(rb_cPrism, "ConstantPathTargetNode", rb_cPrismNode);
|
4622
|
+
rb_cPrismConstantPathWriteNode = rb_define_class_under(rb_cPrism, "ConstantPathWriteNode", rb_cPrismNode);
|
4623
|
+
rb_cPrismConstantReadNode = rb_define_class_under(rb_cPrism, "ConstantReadNode", rb_cPrismNode);
|
4624
|
+
rb_cPrismConstantTargetNode = rb_define_class_under(rb_cPrism, "ConstantTargetNode", rb_cPrismNode);
|
4625
|
+
rb_cPrismConstantWriteNode = rb_define_class_under(rb_cPrism, "ConstantWriteNode", rb_cPrismNode);
|
4626
|
+
rb_cPrismDefNode = rb_define_class_under(rb_cPrism, "DefNode", rb_cPrismNode);
|
4627
|
+
rb_cPrismDefinedNode = rb_define_class_under(rb_cPrism, "DefinedNode", rb_cPrismNode);
|
4628
|
+
rb_cPrismElseNode = rb_define_class_under(rb_cPrism, "ElseNode", rb_cPrismNode);
|
4629
|
+
rb_cPrismEmbeddedStatementsNode = rb_define_class_under(rb_cPrism, "EmbeddedStatementsNode", rb_cPrismNode);
|
4630
|
+
rb_cPrismEmbeddedVariableNode = rb_define_class_under(rb_cPrism, "EmbeddedVariableNode", rb_cPrismNode);
|
4631
|
+
rb_cPrismEnsureNode = rb_define_class_under(rb_cPrism, "EnsureNode", rb_cPrismNode);
|
4632
|
+
rb_cPrismFalseNode = rb_define_class_under(rb_cPrism, "FalseNode", rb_cPrismNode);
|
4633
|
+
rb_cPrismFindPatternNode = rb_define_class_under(rb_cPrism, "FindPatternNode", rb_cPrismNode);
|
4634
|
+
rb_cPrismFlipFlopNode = rb_define_class_under(rb_cPrism, "FlipFlopNode", rb_cPrismNode);
|
4635
|
+
rb_cPrismFloatNode = rb_define_class_under(rb_cPrism, "FloatNode", rb_cPrismNode);
|
4636
|
+
rb_cPrismForNode = rb_define_class_under(rb_cPrism, "ForNode", rb_cPrismNode);
|
4637
|
+
rb_cPrismForwardingArgumentsNode = rb_define_class_under(rb_cPrism, "ForwardingArgumentsNode", rb_cPrismNode);
|
4638
|
+
rb_cPrismForwardingParameterNode = rb_define_class_under(rb_cPrism, "ForwardingParameterNode", rb_cPrismNode);
|
4639
|
+
rb_cPrismForwardingSuperNode = rb_define_class_under(rb_cPrism, "ForwardingSuperNode", rb_cPrismNode);
|
4640
|
+
rb_cPrismGlobalVariableAndWriteNode = rb_define_class_under(rb_cPrism, "GlobalVariableAndWriteNode", rb_cPrismNode);
|
4641
|
+
rb_cPrismGlobalVariableOperatorWriteNode = rb_define_class_under(rb_cPrism, "GlobalVariableOperatorWriteNode", rb_cPrismNode);
|
4642
|
+
rb_cPrismGlobalVariableOrWriteNode = rb_define_class_under(rb_cPrism, "GlobalVariableOrWriteNode", rb_cPrismNode);
|
4643
|
+
rb_cPrismGlobalVariableReadNode = rb_define_class_under(rb_cPrism, "GlobalVariableReadNode", rb_cPrismNode);
|
4644
|
+
rb_cPrismGlobalVariableTargetNode = rb_define_class_under(rb_cPrism, "GlobalVariableTargetNode", rb_cPrismNode);
|
4645
|
+
rb_cPrismGlobalVariableWriteNode = rb_define_class_under(rb_cPrism, "GlobalVariableWriteNode", rb_cPrismNode);
|
4646
|
+
rb_cPrismHashNode = rb_define_class_under(rb_cPrism, "HashNode", rb_cPrismNode);
|
4647
|
+
rb_cPrismHashPatternNode = rb_define_class_under(rb_cPrism, "HashPatternNode", rb_cPrismNode);
|
4648
|
+
rb_cPrismIfNode = rb_define_class_under(rb_cPrism, "IfNode", rb_cPrismNode);
|
4649
|
+
rb_cPrismImaginaryNode = rb_define_class_under(rb_cPrism, "ImaginaryNode", rb_cPrismNode);
|
4650
|
+
rb_cPrismImplicitNode = rb_define_class_under(rb_cPrism, "ImplicitNode", rb_cPrismNode);
|
4651
|
+
rb_cPrismInNode = rb_define_class_under(rb_cPrism, "InNode", rb_cPrismNode);
|
4652
|
+
rb_cPrismInstanceVariableAndWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableAndWriteNode", rb_cPrismNode);
|
4653
|
+
rb_cPrismInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableOperatorWriteNode", rb_cPrismNode);
|
4654
|
+
rb_cPrismInstanceVariableOrWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableOrWriteNode", rb_cPrismNode);
|
4655
|
+
rb_cPrismInstanceVariableReadNode = rb_define_class_under(rb_cPrism, "InstanceVariableReadNode", rb_cPrismNode);
|
4656
|
+
rb_cPrismInstanceVariableTargetNode = rb_define_class_under(rb_cPrism, "InstanceVariableTargetNode", rb_cPrismNode);
|
4657
|
+
rb_cPrismInstanceVariableWriteNode = rb_define_class_under(rb_cPrism, "InstanceVariableWriteNode", rb_cPrismNode);
|
4658
|
+
rb_cPrismIntegerNode = rb_define_class_under(rb_cPrism, "IntegerNode", rb_cPrismNode);
|
4659
|
+
rb_cPrismInterpolatedMatchLastLineNode = rb_define_class_under(rb_cPrism, "InterpolatedMatchLastLineNode", rb_cPrismNode);
|
4660
|
+
rb_cPrismInterpolatedRegularExpressionNode = rb_define_class_under(rb_cPrism, "InterpolatedRegularExpressionNode", rb_cPrismNode);
|
4661
|
+
rb_cPrismInterpolatedStringNode = rb_define_class_under(rb_cPrism, "InterpolatedStringNode", rb_cPrismNode);
|
4662
|
+
rb_cPrismInterpolatedSymbolNode = rb_define_class_under(rb_cPrism, "InterpolatedSymbolNode", rb_cPrismNode);
|
4663
|
+
rb_cPrismInterpolatedXStringNode = rb_define_class_under(rb_cPrism, "InterpolatedXStringNode", rb_cPrismNode);
|
4664
|
+
rb_cPrismKeywordHashNode = rb_define_class_under(rb_cPrism, "KeywordHashNode", rb_cPrismNode);
|
4665
|
+
rb_cPrismKeywordParameterNode = rb_define_class_under(rb_cPrism, "KeywordParameterNode", rb_cPrismNode);
|
4666
|
+
rb_cPrismKeywordRestParameterNode = rb_define_class_under(rb_cPrism, "KeywordRestParameterNode", rb_cPrismNode);
|
4667
|
+
rb_cPrismLambdaNode = rb_define_class_under(rb_cPrism, "LambdaNode", rb_cPrismNode);
|
4668
|
+
rb_cPrismLocalVariableAndWriteNode = rb_define_class_under(rb_cPrism, "LocalVariableAndWriteNode", rb_cPrismNode);
|
4669
|
+
rb_cPrismLocalVariableOperatorWriteNode = rb_define_class_under(rb_cPrism, "LocalVariableOperatorWriteNode", rb_cPrismNode);
|
4670
|
+
rb_cPrismLocalVariableOrWriteNode = rb_define_class_under(rb_cPrism, "LocalVariableOrWriteNode", rb_cPrismNode);
|
4671
|
+
rb_cPrismLocalVariableReadNode = rb_define_class_under(rb_cPrism, "LocalVariableReadNode", rb_cPrismNode);
|
4672
|
+
rb_cPrismLocalVariableTargetNode = rb_define_class_under(rb_cPrism, "LocalVariableTargetNode", rb_cPrismNode);
|
4673
|
+
rb_cPrismLocalVariableWriteNode = rb_define_class_under(rb_cPrism, "LocalVariableWriteNode", rb_cPrismNode);
|
4674
|
+
rb_cPrismMatchLastLineNode = rb_define_class_under(rb_cPrism, "MatchLastLineNode", rb_cPrismNode);
|
4675
|
+
rb_cPrismMatchPredicateNode = rb_define_class_under(rb_cPrism, "MatchPredicateNode", rb_cPrismNode);
|
4676
|
+
rb_cPrismMatchRequiredNode = rb_define_class_under(rb_cPrism, "MatchRequiredNode", rb_cPrismNode);
|
4677
|
+
rb_cPrismMatchWriteNode = rb_define_class_under(rb_cPrism, "MatchWriteNode", rb_cPrismNode);
|
4678
|
+
rb_cPrismMissingNode = rb_define_class_under(rb_cPrism, "MissingNode", rb_cPrismNode);
|
4679
|
+
rb_cPrismModuleNode = rb_define_class_under(rb_cPrism, "ModuleNode", rb_cPrismNode);
|
4680
|
+
rb_cPrismMultiTargetNode = rb_define_class_under(rb_cPrism, "MultiTargetNode", rb_cPrismNode);
|
4681
|
+
rb_cPrismMultiWriteNode = rb_define_class_under(rb_cPrism, "MultiWriteNode", rb_cPrismNode);
|
4682
|
+
rb_cPrismNextNode = rb_define_class_under(rb_cPrism, "NextNode", rb_cPrismNode);
|
4683
|
+
rb_cPrismNilNode = rb_define_class_under(rb_cPrism, "NilNode", rb_cPrismNode);
|
4684
|
+
rb_cPrismNoKeywordsParameterNode = rb_define_class_under(rb_cPrism, "NoKeywordsParameterNode", rb_cPrismNode);
|
4685
|
+
rb_cPrismNumberedReferenceReadNode = rb_define_class_under(rb_cPrism, "NumberedReferenceReadNode", rb_cPrismNode);
|
4686
|
+
rb_cPrismOptionalParameterNode = rb_define_class_under(rb_cPrism, "OptionalParameterNode", rb_cPrismNode);
|
4687
|
+
rb_cPrismOrNode = rb_define_class_under(rb_cPrism, "OrNode", rb_cPrismNode);
|
4688
|
+
rb_cPrismParametersNode = rb_define_class_under(rb_cPrism, "ParametersNode", rb_cPrismNode);
|
4689
|
+
rb_cPrismParenthesesNode = rb_define_class_under(rb_cPrism, "ParenthesesNode", rb_cPrismNode);
|
4690
|
+
rb_cPrismPinnedExpressionNode = rb_define_class_under(rb_cPrism, "PinnedExpressionNode", rb_cPrismNode);
|
4691
|
+
rb_cPrismPinnedVariableNode = rb_define_class_under(rb_cPrism, "PinnedVariableNode", rb_cPrismNode);
|
4692
|
+
rb_cPrismPostExecutionNode = rb_define_class_under(rb_cPrism, "PostExecutionNode", rb_cPrismNode);
|
4693
|
+
rb_cPrismPreExecutionNode = rb_define_class_under(rb_cPrism, "PreExecutionNode", rb_cPrismNode);
|
4694
|
+
rb_cPrismProgramNode = rb_define_class_under(rb_cPrism, "ProgramNode", rb_cPrismNode);
|
4695
|
+
rb_cPrismRangeNode = rb_define_class_under(rb_cPrism, "RangeNode", rb_cPrismNode);
|
4696
|
+
rb_cPrismRationalNode = rb_define_class_under(rb_cPrism, "RationalNode", rb_cPrismNode);
|
4697
|
+
rb_cPrismRedoNode = rb_define_class_under(rb_cPrism, "RedoNode", rb_cPrismNode);
|
4698
|
+
rb_cPrismRegularExpressionNode = rb_define_class_under(rb_cPrism, "RegularExpressionNode", rb_cPrismNode);
|
4699
|
+
rb_cPrismRequiredDestructuredParameterNode = rb_define_class_under(rb_cPrism, "RequiredDestructuredParameterNode", rb_cPrismNode);
|
4700
|
+
rb_cPrismRequiredParameterNode = rb_define_class_under(rb_cPrism, "RequiredParameterNode", rb_cPrismNode);
|
4701
|
+
rb_cPrismRescueModifierNode = rb_define_class_under(rb_cPrism, "RescueModifierNode", rb_cPrismNode);
|
4702
|
+
rb_cPrismRescueNode = rb_define_class_under(rb_cPrism, "RescueNode", rb_cPrismNode);
|
4703
|
+
rb_cPrismRestParameterNode = rb_define_class_under(rb_cPrism, "RestParameterNode", rb_cPrismNode);
|
4704
|
+
rb_cPrismRetryNode = rb_define_class_under(rb_cPrism, "RetryNode", rb_cPrismNode);
|
4705
|
+
rb_cPrismReturnNode = rb_define_class_under(rb_cPrism, "ReturnNode", rb_cPrismNode);
|
4706
|
+
rb_cPrismSelfNode = rb_define_class_under(rb_cPrism, "SelfNode", rb_cPrismNode);
|
4707
|
+
rb_cPrismSingletonClassNode = rb_define_class_under(rb_cPrism, "SingletonClassNode", rb_cPrismNode);
|
4708
|
+
rb_cPrismSourceEncodingNode = rb_define_class_under(rb_cPrism, "SourceEncodingNode", rb_cPrismNode);
|
4709
|
+
rb_cPrismSourceFileNode = rb_define_class_under(rb_cPrism, "SourceFileNode", rb_cPrismNode);
|
4710
|
+
rb_cPrismSourceLineNode = rb_define_class_under(rb_cPrism, "SourceLineNode", rb_cPrismNode);
|
4711
|
+
rb_cPrismSplatNode = rb_define_class_under(rb_cPrism, "SplatNode", rb_cPrismNode);
|
4712
|
+
rb_cPrismStatementsNode = rb_define_class_under(rb_cPrism, "StatementsNode", rb_cPrismNode);
|
4713
|
+
rb_cPrismStringConcatNode = rb_define_class_under(rb_cPrism, "StringConcatNode", rb_cPrismNode);
|
4714
|
+
rb_cPrismStringNode = rb_define_class_under(rb_cPrism, "StringNode", rb_cPrismNode);
|
4715
|
+
rb_cPrismSuperNode = rb_define_class_under(rb_cPrism, "SuperNode", rb_cPrismNode);
|
4716
|
+
rb_cPrismSymbolNode = rb_define_class_under(rb_cPrism, "SymbolNode", rb_cPrismNode);
|
4717
|
+
rb_cPrismTrueNode = rb_define_class_under(rb_cPrism, "TrueNode", rb_cPrismNode);
|
4718
|
+
rb_cPrismUndefNode = rb_define_class_under(rb_cPrism, "UndefNode", rb_cPrismNode);
|
4719
|
+
rb_cPrismUnlessNode = rb_define_class_under(rb_cPrism, "UnlessNode", rb_cPrismNode);
|
4720
|
+
rb_cPrismUntilNode = rb_define_class_under(rb_cPrism, "UntilNode", rb_cPrismNode);
|
4721
|
+
rb_cPrismWhenNode = rb_define_class_under(rb_cPrism, "WhenNode", rb_cPrismNode);
|
4722
|
+
rb_cPrismWhileNode = rb_define_class_under(rb_cPrism, "WhileNode", rb_cPrismNode);
|
4723
|
+
rb_cPrismXStringNode = rb_define_class_under(rb_cPrism, "XStringNode", rb_cPrismNode);
|
4724
|
+
rb_cPrismYieldNode = rb_define_class_under(rb_cPrism, "YieldNode", rb_cPrismNode);
|
4725
|
+
}
|