mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
3712 lines
170 KiB
C
3712 lines
170 KiB
C
/******************************************************************************/
|
|
/* This file is generated by the bin/template script and should not be */
|
|
/* modified manually. See */
|
|
/* templates/ext/yarp/api_node.c.erb */
|
|
/* if you are looking to modify the */
|
|
/* template */
|
|
/******************************************************************************/
|
|
#line 2 "api_node.c.erb"
|
|
#include "yarp/extension.h"
|
|
|
|
extern VALUE rb_cYARP;
|
|
extern VALUE rb_cYARPNode;
|
|
extern VALUE rb_cYARPSource;
|
|
extern VALUE rb_cYARPToken;
|
|
extern VALUE rb_cYARPLocation;
|
|
|
|
static VALUE rb_cYARPAliasNode;
|
|
static VALUE rb_cYARPAlternationPatternNode;
|
|
static VALUE rb_cYARPAndNode;
|
|
static VALUE rb_cYARPArgumentsNode;
|
|
static VALUE rb_cYARPArrayNode;
|
|
static VALUE rb_cYARPArrayPatternNode;
|
|
static VALUE rb_cYARPAssocNode;
|
|
static VALUE rb_cYARPAssocSplatNode;
|
|
static VALUE rb_cYARPBackReferenceReadNode;
|
|
static VALUE rb_cYARPBeginNode;
|
|
static VALUE rb_cYARPBlockArgumentNode;
|
|
static VALUE rb_cYARPBlockNode;
|
|
static VALUE rb_cYARPBlockParameterNode;
|
|
static VALUE rb_cYARPBlockParametersNode;
|
|
static VALUE rb_cYARPBreakNode;
|
|
static VALUE rb_cYARPCallNode;
|
|
static VALUE rb_cYARPCallOperatorAndWriteNode;
|
|
static VALUE rb_cYARPCallOperatorOrWriteNode;
|
|
static VALUE rb_cYARPCallOperatorWriteNode;
|
|
static VALUE rb_cYARPCapturePatternNode;
|
|
static VALUE rb_cYARPCaseNode;
|
|
static VALUE rb_cYARPClassNode;
|
|
static VALUE rb_cYARPClassVariableOperatorAndWriteNode;
|
|
static VALUE rb_cYARPClassVariableOperatorOrWriteNode;
|
|
static VALUE rb_cYARPClassVariableOperatorWriteNode;
|
|
static VALUE rb_cYARPClassVariableReadNode;
|
|
static VALUE rb_cYARPClassVariableWriteNode;
|
|
static VALUE rb_cYARPConstantOperatorAndWriteNode;
|
|
static VALUE rb_cYARPConstantOperatorOrWriteNode;
|
|
static VALUE rb_cYARPConstantOperatorWriteNode;
|
|
static VALUE rb_cYARPConstantPathNode;
|
|
static VALUE rb_cYARPConstantPathOperatorAndWriteNode;
|
|
static VALUE rb_cYARPConstantPathOperatorOrWriteNode;
|
|
static VALUE rb_cYARPConstantPathOperatorWriteNode;
|
|
static VALUE rb_cYARPConstantPathWriteNode;
|
|
static VALUE rb_cYARPConstantReadNode;
|
|
static VALUE rb_cYARPConstantWriteNode;
|
|
static VALUE rb_cYARPDefNode;
|
|
static VALUE rb_cYARPDefinedNode;
|
|
static VALUE rb_cYARPElseNode;
|
|
static VALUE rb_cYARPEmbeddedStatementsNode;
|
|
static VALUE rb_cYARPEmbeddedVariableNode;
|
|
static VALUE rb_cYARPEnsureNode;
|
|
static VALUE rb_cYARPFalseNode;
|
|
static VALUE rb_cYARPFindPatternNode;
|
|
static VALUE rb_cYARPFlipFlopNode;
|
|
static VALUE rb_cYARPFloatNode;
|
|
static VALUE rb_cYARPForNode;
|
|
static VALUE rb_cYARPForwardingArgumentsNode;
|
|
static VALUE rb_cYARPForwardingParameterNode;
|
|
static VALUE rb_cYARPForwardingSuperNode;
|
|
static VALUE rb_cYARPGlobalVariableOperatorAndWriteNode;
|
|
static VALUE rb_cYARPGlobalVariableOperatorOrWriteNode;
|
|
static VALUE rb_cYARPGlobalVariableOperatorWriteNode;
|
|
static VALUE rb_cYARPGlobalVariableReadNode;
|
|
static VALUE rb_cYARPGlobalVariableWriteNode;
|
|
static VALUE rb_cYARPHashNode;
|
|
static VALUE rb_cYARPHashPatternNode;
|
|
static VALUE rb_cYARPIfNode;
|
|
static VALUE rb_cYARPImaginaryNode;
|
|
static VALUE rb_cYARPInNode;
|
|
static VALUE rb_cYARPInstanceVariableOperatorAndWriteNode;
|
|
static VALUE rb_cYARPInstanceVariableOperatorOrWriteNode;
|
|
static VALUE rb_cYARPInstanceVariableOperatorWriteNode;
|
|
static VALUE rb_cYARPInstanceVariableReadNode;
|
|
static VALUE rb_cYARPInstanceVariableWriteNode;
|
|
static VALUE rb_cYARPIntegerNode;
|
|
static VALUE rb_cYARPInterpolatedRegularExpressionNode;
|
|
static VALUE rb_cYARPInterpolatedStringNode;
|
|
static VALUE rb_cYARPInterpolatedSymbolNode;
|
|
static VALUE rb_cYARPInterpolatedXStringNode;
|
|
static VALUE rb_cYARPKeywordHashNode;
|
|
static VALUE rb_cYARPKeywordParameterNode;
|
|
static VALUE rb_cYARPKeywordRestParameterNode;
|
|
static VALUE rb_cYARPLambdaNode;
|
|
static VALUE rb_cYARPLocalVariableOperatorAndWriteNode;
|
|
static VALUE rb_cYARPLocalVariableOperatorOrWriteNode;
|
|
static VALUE rb_cYARPLocalVariableOperatorWriteNode;
|
|
static VALUE rb_cYARPLocalVariableReadNode;
|
|
static VALUE rb_cYARPLocalVariableWriteNode;
|
|
static VALUE rb_cYARPMatchPredicateNode;
|
|
static VALUE rb_cYARPMatchRequiredNode;
|
|
static VALUE rb_cYARPMissingNode;
|
|
static VALUE rb_cYARPModuleNode;
|
|
static VALUE rb_cYARPMultiWriteNode;
|
|
static VALUE rb_cYARPNextNode;
|
|
static VALUE rb_cYARPNilNode;
|
|
static VALUE rb_cYARPNoKeywordsParameterNode;
|
|
static VALUE rb_cYARPNumberedReferenceReadNode;
|
|
static VALUE rb_cYARPOptionalParameterNode;
|
|
static VALUE rb_cYARPOrNode;
|
|
static VALUE rb_cYARPParametersNode;
|
|
static VALUE rb_cYARPParenthesesNode;
|
|
static VALUE rb_cYARPPinnedExpressionNode;
|
|
static VALUE rb_cYARPPinnedVariableNode;
|
|
static VALUE rb_cYARPPostExecutionNode;
|
|
static VALUE rb_cYARPPreExecutionNode;
|
|
static VALUE rb_cYARPProgramNode;
|
|
static VALUE rb_cYARPRangeNode;
|
|
static VALUE rb_cYARPRationalNode;
|
|
static VALUE rb_cYARPRedoNode;
|
|
static VALUE rb_cYARPRegularExpressionNode;
|
|
static VALUE rb_cYARPRequiredDestructuredParameterNode;
|
|
static VALUE rb_cYARPRequiredParameterNode;
|
|
static VALUE rb_cYARPRescueModifierNode;
|
|
static VALUE rb_cYARPRescueNode;
|
|
static VALUE rb_cYARPRestParameterNode;
|
|
static VALUE rb_cYARPRetryNode;
|
|
static VALUE rb_cYARPReturnNode;
|
|
static VALUE rb_cYARPSelfNode;
|
|
static VALUE rb_cYARPSingletonClassNode;
|
|
static VALUE rb_cYARPSourceEncodingNode;
|
|
static VALUE rb_cYARPSourceFileNode;
|
|
static VALUE rb_cYARPSourceLineNode;
|
|
static VALUE rb_cYARPSplatNode;
|
|
static VALUE rb_cYARPStatementsNode;
|
|
static VALUE rb_cYARPStringConcatNode;
|
|
static VALUE rb_cYARPStringNode;
|
|
static VALUE rb_cYARPSuperNode;
|
|
static VALUE rb_cYARPSymbolNode;
|
|
static VALUE rb_cYARPTrueNode;
|
|
static VALUE rb_cYARPUndefNode;
|
|
static VALUE rb_cYARPUnlessNode;
|
|
static VALUE rb_cYARPUntilNode;
|
|
static VALUE rb_cYARPWhenNode;
|
|
static VALUE rb_cYARPWhileNode;
|
|
static VALUE rb_cYARPXStringNode;
|
|
static VALUE rb_cYARPYieldNode;
|
|
|
|
static VALUE
|
|
yp_location_new(yp_parser_t *parser, const char *start, const char *end, VALUE source) {
|
|
VALUE argv[] = { source, LONG2FIX(start - parser->start), LONG2FIX(end - start) };
|
|
return rb_class_new_instance(3, argv, rb_cYARPLocation);
|
|
}
|
|
|
|
VALUE
|
|
yp_token_new(yp_parser_t *parser, yp_token_t *token, rb_encoding *encoding, VALUE source) {
|
|
ID type = rb_intern(yp_token_type_to_str(token->type));
|
|
VALUE location = yp_location_new(parser, token->start, token->end, source);
|
|
|
|
VALUE argv[] = {
|
|
ID2SYM(type),
|
|
rb_enc_str_new(token->start, token->end - token->start, encoding),
|
|
location
|
|
};
|
|
|
|
return rb_class_new_instance(3, argv, rb_cYARPToken);
|
|
}
|
|
|
|
static VALUE
|
|
yp_string_new(yp_string_t *string, rb_encoding *encoding) {
|
|
return rb_enc_str_new(yp_string_source(string), yp_string_length(string), encoding);
|
|
}
|
|
|
|
// Create a YARP::Source object from the given parser.
|
|
VALUE
|
|
yp_source_new(yp_parser_t *parser) {
|
|
VALUE source = rb_str_new(parser->start, parser->end - parser->start);
|
|
VALUE offsets = rb_ary_new_capa(parser->newline_list.size);
|
|
|
|
for (size_t index = 0; index < parser->newline_list.size; index++) {
|
|
rb_ary_push(offsets, INT2FIX(parser->newline_list.offsets[index]));
|
|
}
|
|
|
|
VALUE source_argv[] = { source, offsets };
|
|
return rb_class_new_instance(2, source_argv, rb_cYARPSource);
|
|
}
|
|
|
|
typedef struct yp_node_stack_node {
|
|
struct yp_node_stack_node *prev;
|
|
yp_node_t *visit;
|
|
bool visited;
|
|
} yp_node_stack_node_t;
|
|
|
|
static void
|
|
yp_node_stack_push(yp_node_stack_node_t **stack, yp_node_t *visit) {
|
|
yp_node_stack_node_t *node = malloc(sizeof(yp_node_stack_node_t));
|
|
node->prev = *stack;
|
|
node->visit = visit;
|
|
node->visited = false;
|
|
*stack = node;
|
|
}
|
|
|
|
static yp_node_t *
|
|
yp_node_stack_pop(yp_node_stack_node_t **stack) {
|
|
yp_node_stack_node_t *current = *stack;
|
|
yp_node_t *visit = current->visit;
|
|
|
|
*stack = current->prev;
|
|
free(current);
|
|
|
|
return visit;
|
|
}
|
|
|
|
VALUE
|
|
yp_ast_new(yp_parser_t *parser, yp_node_t *node, rb_encoding *encoding) {
|
|
VALUE source = yp_source_new(parser);
|
|
ID *constants = calloc(parser->constant_pool.size, sizeof(ID));
|
|
|
|
for (size_t index = 0; index < parser->constant_pool.capacity; index++) {
|
|
yp_constant_t constant = parser->constant_pool.constants[index];
|
|
|
|
if (constant.id != 0) {
|
|
constants[constant.id - 1] = rb_intern3(constant.start, constant.length, encoding);
|
|
}
|
|
}
|
|
|
|
yp_node_stack_node_t *node_stack = NULL;
|
|
yp_node_stack_push(&node_stack, node);
|
|
VALUE value_stack = rb_ary_new();
|
|
|
|
while (node_stack != NULL) {
|
|
if (!node_stack->visited) {
|
|
if (node_stack->visit == NULL) {
|
|
yp_node_stack_pop(&node_stack);
|
|
rb_ary_push(value_stack, Qnil);
|
|
continue;
|
|
}
|
|
|
|
yp_node_t *node = node_stack->visit;
|
|
node_stack->visited = true;
|
|
|
|
switch (YP_NODE_TYPE(node)) {
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ALIAS_NODE: {
|
|
yp_alias_node_t *cast = (yp_alias_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->new_name);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->old_name);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ALTERNATION_PATTERN_NODE: {
|
|
yp_alternation_pattern_node_t *cast = (yp_alternation_pattern_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_AND_NODE: {
|
|
yp_and_node_t *cast = (yp_and_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ARGUMENTS_NODE: {
|
|
yp_arguments_node_t *cast = (yp_arguments_node_t *) node;
|
|
for (size_t index = 0; index < cast->arguments.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ARRAY_NODE: {
|
|
yp_array_node_t *cast = (yp_array_node_t *) node;
|
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->elements.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ARRAY_PATTERN_NODE: {
|
|
yp_array_pattern_node_t *cast = (yp_array_pattern_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant);
|
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->requireds.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->rest);
|
|
for (size_t index = 0; index < cast->posts.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->posts.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ASSOC_NODE: {
|
|
yp_assoc_node_t *cast = (yp_assoc_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->key);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ASSOC_SPLAT_NODE: {
|
|
yp_assoc_splat_node_t *cast = (yp_assoc_splat_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_BEGIN_NODE: {
|
|
yp_begin_node_t *cast = (yp_begin_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->rescue_clause);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->else_clause);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->ensure_clause);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_ARGUMENT_NODE: {
|
|
yp_block_argument_node_t *cast = (yp_block_argument_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_NODE: {
|
|
yp_block_node_t *cast = (yp_block_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_PARAMETERS_NODE: {
|
|
yp_block_parameters_node_t *cast = (yp_block_parameters_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_BREAK_NODE: {
|
|
yp_break_node_t *cast = (yp_break_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CALL_NODE: {
|
|
yp_call_node_t *cast = (yp_call_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->receiver);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->block);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CALL_OPERATOR_AND_WRITE_NODE: {
|
|
yp_call_operator_and_write_node_t *cast = (yp_call_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CALL_OPERATOR_OR_WRITE_NODE: {
|
|
yp_call_operator_or_write_node_t *cast = (yp_call_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CALL_OPERATOR_WRITE_NODE: {
|
|
yp_call_operator_write_node_t *cast = (yp_call_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CAPTURE_PATTERN_NODE: {
|
|
yp_capture_pattern_node_t *cast = (yp_capture_pattern_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CASE_NODE: {
|
|
yp_case_node_t *cast = (yp_case_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->predicate);
|
|
for (size_t index = 0; index < cast->conditions.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->conditions.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->consequent);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CLASS_NODE: {
|
|
yp_class_node_t *cast = (yp_class_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->superclass);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_class_variable_operator_and_write_node_t *cast = (yp_class_variable_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_class_variable_operator_or_write_node_t *cast = (yp_class_variable_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_class_variable_operator_write_node_t *cast = (yp_class_variable_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_WRITE_NODE: {
|
|
yp_class_variable_write_node_t *cast = (yp_class_variable_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
|
|
yp_constant_operator_and_write_node_t *cast = (yp_constant_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
|
|
yp_constant_operator_or_write_node_t *cast = (yp_constant_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
|
|
yp_constant_operator_write_node_t *cast = (yp_constant_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_NODE: {
|
|
yp_constant_path_node_t *cast = (yp_constant_path_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parent);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->child);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
|
|
yp_constant_path_operator_and_write_node_t *cast = (yp_constant_path_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
|
|
yp_constant_path_operator_or_write_node_t *cast = (yp_constant_path_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
|
yp_constant_path_operator_write_node_t *cast = (yp_constant_path_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
|
|
yp_constant_path_write_node_t *cast = (yp_constant_path_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->target);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_WRITE_NODE: {
|
|
yp_constant_write_node_t *cast = (yp_constant_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_DEF_NODE: {
|
|
yp_def_node_t *cast = (yp_def_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->receiver);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_DEFINED_NODE: {
|
|
yp_defined_node_t *cast = (yp_defined_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ELSE_NODE: {
|
|
yp_else_node_t *cast = (yp_else_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_EMBEDDED_STATEMENTS_NODE: {
|
|
yp_embedded_statements_node_t *cast = (yp_embedded_statements_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_EMBEDDED_VARIABLE_NODE: {
|
|
yp_embedded_variable_node_t *cast = (yp_embedded_variable_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->variable);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_ENSURE_NODE: {
|
|
yp_ensure_node_t *cast = (yp_ensure_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_FIND_PATTERN_NODE: {
|
|
yp_find_pattern_node_t *cast = (yp_find_pattern_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->requireds.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_FLIP_FLOP_NODE: {
|
|
yp_flip_flop_node_t *cast = (yp_flip_flop_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_FOR_NODE: {
|
|
yp_for_node_t *cast = (yp_for_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->index);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->collection);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_FORWARDING_SUPER_NODE: {
|
|
yp_forwarding_super_node_t *cast = (yp_forwarding_super_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->block);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_global_variable_operator_and_write_node_t *cast = (yp_global_variable_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_global_variable_operator_or_write_node_t *cast = (yp_global_variable_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_global_variable_operator_write_node_t *cast = (yp_global_variable_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_WRITE_NODE: {
|
|
yp_global_variable_write_node_t *cast = (yp_global_variable_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_HASH_NODE: {
|
|
yp_hash_node_t *cast = (yp_hash_node_t *) node;
|
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->elements.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_HASH_PATTERN_NODE: {
|
|
yp_hash_pattern_node_t *cast = (yp_hash_pattern_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant);
|
|
for (size_t index = 0; index < cast->assocs.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->assocs.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->kwrest);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_IF_NODE: {
|
|
yp_if_node_t *cast = (yp_if_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->predicate);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->consequent);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_IMAGINARY_NODE: {
|
|
yp_imaginary_node_t *cast = (yp_imaginary_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->numeric);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_IN_NODE: {
|
|
yp_in_node_t *cast = (yp_in_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->pattern);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_instance_variable_operator_and_write_node_t *cast = (yp_instance_variable_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_instance_variable_operator_or_write_node_t *cast = (yp_instance_variable_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_instance_variable_operator_write_node_t *cast = (yp_instance_variable_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_WRITE_NODE: {
|
|
yp_instance_variable_write_node_t *cast = (yp_instance_variable_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
|
yp_interpolated_regular_expression_node_t *cast = (yp_interpolated_regular_expression_node_t *) node;
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parts.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_STRING_NODE: {
|
|
yp_interpolated_string_node_t *cast = (yp_interpolated_string_node_t *) node;
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parts.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_SYMBOL_NODE: {
|
|
yp_interpolated_symbol_node_t *cast = (yp_interpolated_symbol_node_t *) node;
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parts.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_X_STRING_NODE: {
|
|
yp_interpolated_x_string_node_t *cast = (yp_interpolated_x_string_node_t *) node;
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parts.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_KEYWORD_HASH_NODE: {
|
|
yp_keyword_hash_node_t *cast = (yp_keyword_hash_node_t *) node;
|
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->elements.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_KEYWORD_PARAMETER_NODE: {
|
|
yp_keyword_parameter_node_t *cast = (yp_keyword_parameter_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_LAMBDA_NODE: {
|
|
yp_lambda_node_t *cast = (yp_lambda_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_local_variable_operator_and_write_node_t *cast = (yp_local_variable_operator_and_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_local_variable_operator_or_write_node_t *cast = (yp_local_variable_operator_or_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_local_variable_operator_write_node_t *cast = (yp_local_variable_operator_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_WRITE_NODE: {
|
|
yp_local_variable_write_node_t *cast = (yp_local_variable_write_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_MATCH_PREDICATE_NODE: {
|
|
yp_match_predicate_node_t *cast = (yp_match_predicate_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->pattern);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_MATCH_REQUIRED_NODE: {
|
|
yp_match_required_node_t *cast = (yp_match_required_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->pattern);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_MODULE_NODE: {
|
|
yp_module_node_t *cast = (yp_module_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->constant_path);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_MULTI_WRITE_NODE: {
|
|
yp_multi_write_node_t *cast = (yp_multi_write_node_t *) node;
|
|
for (size_t index = 0; index < cast->targets.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->targets.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_NEXT_NODE: {
|
|
yp_next_node_t *cast = (yp_next_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_OPTIONAL_PARAMETER_NODE: {
|
|
yp_optional_parameter_node_t *cast = (yp_optional_parameter_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->value);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_OR_NODE: {
|
|
yp_or_node_t *cast = (yp_or_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_PARAMETERS_NODE: {
|
|
yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
|
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->requireds.nodes[index]);
|
|
}
|
|
for (size_t index = 0; index < cast->optionals.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->optionals.nodes[index]);
|
|
}
|
|
for (size_t index = 0; index < cast->posts.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->posts.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->rest);
|
|
for (size_t index = 0; index < cast->keywords.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->keywords.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->keyword_rest);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->block);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_PARENTHESES_NODE: {
|
|
yp_parentheses_node_t *cast = (yp_parentheses_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_PINNED_EXPRESSION_NODE: {
|
|
yp_pinned_expression_node_t *cast = (yp_pinned_expression_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_PINNED_VARIABLE_NODE: {
|
|
yp_pinned_variable_node_t *cast = (yp_pinned_variable_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->variable);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_POST_EXECUTION_NODE: {
|
|
yp_post_execution_node_t *cast = (yp_post_execution_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_PRE_EXECUTION_NODE: {
|
|
yp_pre_execution_node_t *cast = (yp_pre_execution_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_PROGRAM_NODE: {
|
|
yp_program_node_t *cast = (yp_program_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_RANGE_NODE: {
|
|
yp_range_node_t *cast = (yp_range_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_RATIONAL_NODE: {
|
|
yp_rational_node_t *cast = (yp_rational_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->numeric);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE: {
|
|
yp_required_destructured_parameter_node_t *cast = (yp_required_destructured_parameter_node_t *) node;
|
|
for (size_t index = 0; index < cast->parameters.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->parameters.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_RESCUE_MODIFIER_NODE: {
|
|
yp_rescue_modifier_node_t *cast = (yp_rescue_modifier_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->rescue_expression);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_RESCUE_NODE: {
|
|
yp_rescue_node_t *cast = (yp_rescue_node_t *) node;
|
|
for (size_t index = 0; index < cast->exceptions.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->exceptions.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->reference);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->consequent);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_RETURN_NODE: {
|
|
yp_return_node_t *cast = (yp_return_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_SINGLETON_CLASS_NODE: {
|
|
yp_singleton_class_node_t *cast = (yp_singleton_class_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_SPLAT_NODE: {
|
|
yp_splat_node_t *cast = (yp_splat_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->expression);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_STATEMENTS_NODE: {
|
|
yp_statements_node_t *cast = (yp_statements_node_t *) node;
|
|
for (size_t index = 0; index < cast->body.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->body.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_STRING_CONCAT_NODE: {
|
|
yp_string_concat_node_t *cast = (yp_string_concat_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->left);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->right);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_SUPER_NODE: {
|
|
yp_super_node_t *cast = (yp_super_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->block);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_UNDEF_NODE: {
|
|
yp_undef_node_t *cast = (yp_undef_node_t *) node;
|
|
for (size_t index = 0; index < cast->names.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->names.nodes[index]);
|
|
}
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_UNLESS_NODE: {
|
|
yp_unless_node_t *cast = (yp_unless_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->predicate);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->consequent);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_UNTIL_NODE: {
|
|
yp_until_node_t *cast = (yp_until_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->predicate);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_WHEN_NODE: {
|
|
yp_when_node_t *cast = (yp_when_node_t *) node;
|
|
for (size_t index = 0; index < cast->conditions.size; index++) {
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->conditions.nodes[index]);
|
|
}
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_WHILE_NODE: {
|
|
yp_while_node_t *cast = (yp_while_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->predicate);
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->statements);
|
|
break;
|
|
}
|
|
#line 111 "api_node.c.erb"
|
|
case YP_NODE_YIELD_NODE: {
|
|
yp_yield_node_t *cast = (yp_yield_node_t *) node;
|
|
yp_node_stack_push(&node_stack, (yp_node_t *) cast->arguments);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
#line 131 "api_node.c.erb"
|
|
} else {
|
|
yp_node_t *node = yp_node_stack_pop(&node_stack);
|
|
|
|
switch (YP_NODE_TYPE(node)) {
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ALIAS_NODE: {
|
|
yp_alias_node_t *cast = (yp_alias_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// new_name
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// old_name
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// keyword_loc
|
|
argv[2] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAliasNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ALTERNATION_PATTERN_NODE: {
|
|
yp_alternation_pattern_node_t *cast = (yp_alternation_pattern_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// left
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// right
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAlternationPatternNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_AND_NODE: {
|
|
yp_and_node_t *cast = (yp_and_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// left
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// right
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAndNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ARGUMENTS_NODE: {
|
|
yp_arguments_node_t *cast = (yp_arguments_node_t *) node;
|
|
VALUE argv[2];
|
|
|
|
// arguments
|
|
argv[0] = rb_ary_new_capa(cast->arguments.size);
|
|
for (size_t index = 0; index < cast->arguments.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPArgumentsNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ARRAY_NODE: {
|
|
yp_array_node_t *cast = (yp_array_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// elements
|
|
argv[0] = rb_ary_new_capa(cast->elements.size);
|
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// opening_loc
|
|
argv[1] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPArrayNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ARRAY_PATTERN_NODE: {
|
|
yp_array_pattern_node_t *cast = (yp_array_pattern_node_t *) node;
|
|
VALUE argv[7];
|
|
|
|
// constant
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// requireds
|
|
argv[1] = rb_ary_new_capa(cast->requireds.size);
|
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// rest
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// posts
|
|
argv[3] = rb_ary_new_capa(cast->posts.size);
|
|
for (size_t index = 0; index < cast->posts.size; index++) {
|
|
rb_ary_push(argv[3], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// opening_loc
|
|
argv[4] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[5] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[6] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cYARPArrayPatternNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ASSOC_NODE: {
|
|
yp_assoc_node_t *cast = (yp_assoc_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// key
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPAssocNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ASSOC_SPLAT_NODE: {
|
|
yp_assoc_splat_node_t *cast = (yp_assoc_splat_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// value
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPAssocSplatNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BACK_REFERENCE_READ_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPBackReferenceReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BEGIN_NODE: {
|
|
yp_begin_node_t *cast = (yp_begin_node_t *) node;
|
|
VALUE argv[7];
|
|
|
|
// begin_keyword_loc
|
|
argv[0] = cast->begin_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->begin_keyword_loc.start, cast->begin_keyword_loc.end, source);
|
|
|
|
// statements
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// rescue_clause
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// else_clause
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// ensure_clause
|
|
argv[4] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[5] = cast->end_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[6] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cYARPBeginNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_ARGUMENT_NODE: {
|
|
yp_block_argument_node_t *cast = (yp_block_argument_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// expression
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPBlockArgumentNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_NODE: {
|
|
yp_block_node_t *cast = (yp_block_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// locals
|
|
argv[0] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// parameters
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// opening_loc
|
|
argv[3] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[4] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPBlockNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_PARAMETER_NODE: {
|
|
yp_block_parameter_node_t *cast = (yp_block_parameter_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// name_loc
|
|
argv[0] = cast->name_loc.start == NULL ? Qnil : yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPBlockParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BLOCK_PARAMETERS_NODE: {
|
|
yp_block_parameters_node_t *cast = (yp_block_parameters_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// parameters
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// locals
|
|
argv[1] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
yp_location_t location = cast->locals.locations[index];
|
|
rb_ary_push(argv[1], yp_location_new(parser, location.start, location.end, source));
|
|
}
|
|
|
|
// opening_loc
|
|
argv[2] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[3] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPBlockParametersNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_BREAK_NODE: {
|
|
yp_break_node_t *cast = (yp_break_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// arguments
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPBreakNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CALL_NODE: {
|
|
yp_call_node_t *cast = (yp_call_node_t *) node;
|
|
VALUE argv[10];
|
|
|
|
// receiver
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// message_loc
|
|
argv[2] = cast->message_loc.start == NULL ? Qnil : yp_location_new(parser, cast->message_loc.start, cast->message_loc.end, source);
|
|
|
|
// opening_loc
|
|
argv[3] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// arguments
|
|
argv[4] = rb_ary_pop(value_stack);
|
|
|
|
// closing_loc
|
|
argv[5] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// block
|
|
argv[6] = rb_ary_pop(value_stack);
|
|
|
|
// flags
|
|
argv[7] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// name
|
|
argv[8] = yp_string_new(&cast->name, encoding);
|
|
|
|
// location
|
|
argv[9] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(10, argv, rb_cYARPCallNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CALL_OPERATOR_AND_WRITE_NODE: {
|
|
yp_call_operator_and_write_node_t *cast = (yp_call_operator_and_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPCallOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CALL_OPERATOR_OR_WRITE_NODE: {
|
|
yp_call_operator_or_write_node_t *cast = (yp_call_operator_or_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPCallOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CALL_OPERATOR_WRITE_NODE: {
|
|
yp_call_operator_write_node_t *cast = (yp_call_operator_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// operator_id
|
|
argv[3] = rb_id2sym(constants[cast->operator_id - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPCallOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CAPTURE_PATTERN_NODE: {
|
|
yp_capture_pattern_node_t *cast = (yp_capture_pattern_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// value
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// target
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPCapturePatternNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CASE_NODE: {
|
|
yp_case_node_t *cast = (yp_case_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// predicate
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// conditions
|
|
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
|
for (size_t index = 0; index < cast->conditions.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// consequent
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// case_keyword_loc
|
|
argv[3] = yp_location_new(parser, cast->case_keyword_loc.start, cast->case_keyword_loc.end, source);
|
|
|
|
// end_keyword_loc
|
|
argv[4] = yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPCaseNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CLASS_NODE: {
|
|
yp_class_node_t *cast = (yp_class_node_t *) node;
|
|
VALUE argv[8];
|
|
|
|
// locals
|
|
argv[0] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// class_keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->class_keyword_loc.start, cast->class_keyword_loc.end, source);
|
|
|
|
// constant_path
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// inheritance_operator_loc
|
|
argv[3] = cast->inheritance_operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->inheritance_operator_loc.start, cast->inheritance_operator_loc.end, source);
|
|
|
|
// superclass
|
|
argv[4] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[5] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[6] = yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[7] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cYARPClassNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_class_variable_operator_and_write_node_t *cast = (yp_class_variable_operator_and_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_class_variable_operator_or_write_node_t *cast = (yp_class_variable_operator_or_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_class_variable_operator_write_node_t *cast = (yp_class_variable_operator_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// operator
|
|
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPClassVariableOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_READ_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPClassVariableReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CLASS_VARIABLE_WRITE_NODE: {
|
|
yp_class_variable_write_node_t *cast = (yp_class_variable_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPClassVariableWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE: {
|
|
yp_constant_operator_and_write_node_t *cast = (yp_constant_operator_and_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE: {
|
|
yp_constant_operator_or_write_node_t *cast = (yp_constant_operator_or_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_OPERATOR_WRITE_NODE: {
|
|
yp_constant_operator_write_node_t *cast = (yp_constant_operator_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// operator
|
|
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPConstantOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_NODE: {
|
|
yp_constant_path_node_t *cast = (yp_constant_path_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// parent
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// child
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// delimiter_loc
|
|
argv[2] = yp_location_new(parser, cast->delimiter_loc.start, cast->delimiter_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE: {
|
|
yp_constant_path_operator_and_write_node_t *cast = (yp_constant_path_operator_and_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE: {
|
|
yp_constant_path_operator_or_write_node_t *cast = (yp_constant_path_operator_or_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE: {
|
|
yp_constant_path_operator_write_node_t *cast = (yp_constant_path_operator_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// operator
|
|
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPConstantPathOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_PATH_WRITE_NODE: {
|
|
yp_constant_path_write_node_t *cast = (yp_constant_path_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// target
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantPathWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_READ_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPConstantReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_CONSTANT_WRITE_NODE: {
|
|
yp_constant_write_node_t *cast = (yp_constant_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPConstantWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_DEF_NODE: {
|
|
yp_def_node_t *cast = (yp_def_node_t *) node;
|
|
VALUE argv[12];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// receiver
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// parameters
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// locals
|
|
argv[4] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[4], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// def_keyword_loc
|
|
argv[5] = yp_location_new(parser, cast->def_keyword_loc.start, cast->def_keyword_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[6] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// lparen_loc
|
|
argv[7] = cast->lparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
|
|
|
// rparen_loc
|
|
argv[8] = cast->rparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
|
|
|
// equal_loc
|
|
argv[9] = cast->equal_loc.start == NULL ? Qnil : yp_location_new(parser, cast->equal_loc.start, cast->equal_loc.end, source);
|
|
|
|
// end_keyword_loc
|
|
argv[10] = cast->end_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[11] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(12, argv, rb_cYARPDefNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_DEFINED_NODE: {
|
|
yp_defined_node_t *cast = (yp_defined_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// lparen_loc
|
|
argv[0] = cast->lparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// rparen_loc
|
|
argv[2] = cast->rparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
|
|
|
// keyword_loc
|
|
argv[3] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPDefinedNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ELSE_NODE: {
|
|
yp_else_node_t *cast = (yp_else_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// else_keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->else_keyword_loc.start, cast->else_keyword_loc.end, source);
|
|
|
|
// statements
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[2] = cast->end_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPElseNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_EMBEDDED_STATEMENTS_NODE: {
|
|
yp_embedded_statements_node_t *cast = (yp_embedded_statements_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// opening_loc
|
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// statements
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPEmbeddedStatementsNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_EMBEDDED_VARIABLE_NODE: {
|
|
yp_embedded_variable_node_t *cast = (yp_embedded_variable_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// operator_loc
|
|
argv[0] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// variable
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPEmbeddedVariableNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_ENSURE_NODE: {
|
|
yp_ensure_node_t *cast = (yp_ensure_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// ensure_keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->ensure_keyword_loc.start, cast->ensure_keyword_loc.end, source);
|
|
|
|
// statements
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[2] = yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPEnsureNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FALSE_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPFalseNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FIND_PATTERN_NODE: {
|
|
yp_find_pattern_node_t *cast = (yp_find_pattern_node_t *) node;
|
|
VALUE argv[7];
|
|
|
|
// constant
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// left
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// requireds
|
|
argv[2] = rb_ary_new_capa(cast->requireds.size);
|
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
|
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// right
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// opening_loc
|
|
argv[4] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[5] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[6] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cYARPFindPatternNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FLIP_FLOP_NODE: {
|
|
yp_flip_flop_node_t *cast = (yp_flip_flop_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// left
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// right
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// flags
|
|
argv[3] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPFlipFlopNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FLOAT_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPFloatNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FOR_NODE: {
|
|
yp_for_node_t *cast = (yp_for_node_t *) node;
|
|
VALUE argv[8];
|
|
|
|
// index
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// collection
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// for_keyword_loc
|
|
argv[3] = yp_location_new(parser, cast->for_keyword_loc.start, cast->for_keyword_loc.end, source);
|
|
|
|
// in_keyword_loc
|
|
argv[4] = yp_location_new(parser, cast->in_keyword_loc.start, cast->in_keyword_loc.end, source);
|
|
|
|
// do_keyword_loc
|
|
argv[5] = cast->do_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->do_keyword_loc.start, cast->do_keyword_loc.end, source);
|
|
|
|
// end_keyword_loc
|
|
argv[6] = yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[7] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cYARPForNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FORWARDING_ARGUMENTS_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPForwardingArgumentsNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FORWARDING_PARAMETER_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPForwardingParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_FORWARDING_SUPER_NODE: {
|
|
VALUE argv[2];
|
|
|
|
// block
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPForwardingSuperNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_global_variable_operator_and_write_node_t *cast = (yp_global_variable_operator_and_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_global_variable_operator_or_write_node_t *cast = (yp_global_variable_operator_or_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_global_variable_operator_write_node_t *cast = (yp_global_variable_operator_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// operator
|
|
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPGlobalVariableOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_READ_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPGlobalVariableReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_GLOBAL_VARIABLE_WRITE_NODE: {
|
|
yp_global_variable_write_node_t *cast = (yp_global_variable_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPGlobalVariableWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_HASH_NODE: {
|
|
yp_hash_node_t *cast = (yp_hash_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// opening_loc
|
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// elements
|
|
argv[1] = rb_ary_new_capa(cast->elements.size);
|
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPHashNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_HASH_PATTERN_NODE: {
|
|
yp_hash_pattern_node_t *cast = (yp_hash_pattern_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// constant
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// assocs
|
|
argv[1] = rb_ary_new_capa(cast->assocs.size);
|
|
for (size_t index = 0; index < cast->assocs.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// kwrest
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// opening_loc
|
|
argv[3] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[4] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPHashPatternNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_IF_NODE: {
|
|
yp_if_node_t *cast = (yp_if_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// if_keyword_loc
|
|
argv[0] = cast->if_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->if_keyword_loc.start, cast->if_keyword_loc.end, source);
|
|
|
|
// predicate
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// consequent
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[4] = cast->end_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPIfNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_IMAGINARY_NODE: {
|
|
VALUE argv[2];
|
|
|
|
// numeric
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPImaginaryNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_IN_NODE: {
|
|
yp_in_node_t *cast = (yp_in_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// pattern
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// in_loc
|
|
argv[2] = yp_location_new(parser, cast->in_loc.start, cast->in_loc.end, source);
|
|
|
|
// then_loc
|
|
argv[3] = cast->then_loc.start == NULL ? Qnil : yp_location_new(parser, cast->then_loc.start, cast->then_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_instance_variable_operator_and_write_node_t *cast = (yp_instance_variable_operator_and_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_instance_variable_operator_or_write_node_t *cast = (yp_instance_variable_operator_or_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_instance_variable_operator_write_node_t *cast = (yp_instance_variable_operator_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// operator
|
|
argv[3] = rb_id2sym(constants[cast->operator - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInstanceVariableOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_READ_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPInstanceVariableReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INSTANCE_VARIABLE_WRITE_NODE: {
|
|
yp_instance_variable_write_node_t *cast = (yp_instance_variable_write_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInstanceVariableWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INTEGER_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPIntegerNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE: {
|
|
yp_interpolated_regular_expression_node_t *cast = (yp_interpolated_regular_expression_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// opening_loc
|
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// parts
|
|
argv[1] = rb_ary_new_capa(cast->parts.size);
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// flags
|
|
argv[3] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPInterpolatedRegularExpressionNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_STRING_NODE: {
|
|
yp_interpolated_string_node_t *cast = (yp_interpolated_string_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// opening_loc
|
|
argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// parts
|
|
argv[1] = rb_ary_new_capa(cast->parts.size);
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// closing_loc
|
|
argv[2] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInterpolatedStringNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_SYMBOL_NODE: {
|
|
yp_interpolated_symbol_node_t *cast = (yp_interpolated_symbol_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// opening_loc
|
|
argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// parts
|
|
argv[1] = rb_ary_new_capa(cast->parts.size);
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// closing_loc
|
|
argv[2] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInterpolatedSymbolNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_INTERPOLATED_X_STRING_NODE: {
|
|
yp_interpolated_x_string_node_t *cast = (yp_interpolated_x_string_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// opening_loc
|
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// parts
|
|
argv[1] = rb_ary_new_capa(cast->parts.size);
|
|
for (size_t index = 0; index < cast->parts.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPInterpolatedXStringNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_KEYWORD_HASH_NODE: {
|
|
yp_keyword_hash_node_t *cast = (yp_keyword_hash_node_t *) node;
|
|
VALUE argv[2];
|
|
|
|
// elements
|
|
argv[0] = rb_ary_new_capa(cast->elements.size);
|
|
for (size_t index = 0; index < cast->elements.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPKeywordHashNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_KEYWORD_PARAMETER_NODE: {
|
|
yp_keyword_parameter_node_t *cast = (yp_keyword_parameter_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// value
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPKeywordParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_KEYWORD_REST_PARAMETER_NODE: {
|
|
yp_keyword_rest_parameter_node_t *cast = (yp_keyword_rest_parameter_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// operator_loc
|
|
argv[0] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// name_loc
|
|
argv[1] = cast->name_loc.start == NULL ? Qnil : yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPKeywordRestParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_LAMBDA_NODE: {
|
|
yp_lambda_node_t *cast = (yp_lambda_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// locals
|
|
argv[0] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// opening_loc
|
|
argv[1] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// parameters
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLambdaNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE: {
|
|
yp_local_variable_operator_and_write_node_t *cast = (yp_local_variable_operator_and_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// constant_id
|
|
argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLocalVariableOperatorAndWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE: {
|
|
yp_local_variable_operator_or_write_node_t *cast = (yp_local_variable_operator_or_write_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// constant_id
|
|
argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPLocalVariableOperatorOrWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE: {
|
|
yp_local_variable_operator_write_node_t *cast = (yp_local_variable_operator_write_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// name_loc
|
|
argv[0] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// constant_id
|
|
argv[3] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// operator_id
|
|
argv[4] = rb_id2sym(constants[cast->operator_id - 1]);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPLocalVariableOperatorWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_READ_NODE: {
|
|
yp_local_variable_read_node_t *cast = (yp_local_variable_read_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// constant_id
|
|
argv[0] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// depth
|
|
argv[1] = ULONG2NUM(cast->depth);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPLocalVariableReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_LOCAL_VARIABLE_WRITE_NODE: {
|
|
yp_local_variable_write_node_t *cast = (yp_local_variable_write_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// constant_id
|
|
argv[0] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// depth
|
|
argv[1] = ULONG2NUM(cast->depth);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// name_loc
|
|
argv[3] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[4] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPLocalVariableWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_MATCH_PREDICATE_NODE: {
|
|
yp_match_predicate_node_t *cast = (yp_match_predicate_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// value
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// pattern
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPMatchPredicateNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_MATCH_REQUIRED_NODE: {
|
|
yp_match_required_node_t *cast = (yp_match_required_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// value
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// pattern
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPMatchRequiredNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_MISSING_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPMissingNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_MODULE_NODE: {
|
|
yp_module_node_t *cast = (yp_module_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// locals
|
|
argv[0] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// module_keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->module_keyword_loc.start, cast->module_keyword_loc.end, source);
|
|
|
|
// constant_path
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[4] = yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPModuleNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_MULTI_WRITE_NODE: {
|
|
yp_multi_write_node_t *cast = (yp_multi_write_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// targets
|
|
argv[0] = rb_ary_new_capa(cast->targets.size);
|
|
for (size_t index = 0; index < cast->targets.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// operator_loc
|
|
argv[1] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// lparen_loc
|
|
argv[3] = cast->lparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
|
|
|
// rparen_loc
|
|
argv[4] = cast->rparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPMultiWriteNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_NEXT_NODE: {
|
|
yp_next_node_t *cast = (yp_next_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// arguments
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPNextNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_NIL_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPNilNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_NO_KEYWORDS_PARAMETER_NODE: {
|
|
yp_no_keywords_parameter_node_t *cast = (yp_no_keywords_parameter_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// operator_loc
|
|
argv[0] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPNoKeywordsParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_NUMBERED_REFERENCE_READ_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPNumberedReferenceReadNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_OPTIONAL_PARAMETER_NODE: {
|
|
yp_optional_parameter_node_t *cast = (yp_optional_parameter_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// constant_id
|
|
argv[0] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// name_loc
|
|
argv[1] = yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// value
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPOptionalParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_OR_NODE: {
|
|
yp_or_node_t *cast = (yp_or_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// left
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// right
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPOrNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_PARAMETERS_NODE: {
|
|
yp_parameters_node_t *cast = (yp_parameters_node_t *) node;
|
|
VALUE argv[8];
|
|
|
|
// requireds
|
|
argv[0] = rb_ary_new_capa(cast->requireds.size);
|
|
for (size_t index = 0; index < cast->requireds.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// optionals
|
|
argv[1] = rb_ary_new_capa(cast->optionals.size);
|
|
for (size_t index = 0; index < cast->optionals.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// posts
|
|
argv[2] = rb_ary_new_capa(cast->posts.size);
|
|
for (size_t index = 0; index < cast->posts.size; index++) {
|
|
rb_ary_push(argv[2], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// rest
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// keywords
|
|
argv[4] = rb_ary_new_capa(cast->keywords.size);
|
|
for (size_t index = 0; index < cast->keywords.size; index++) {
|
|
rb_ary_push(argv[4], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// keyword_rest
|
|
argv[5] = rb_ary_pop(value_stack);
|
|
|
|
// block
|
|
argv[6] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[7] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(8, argv, rb_cYARPParametersNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_PARENTHESES_NODE: {
|
|
yp_parentheses_node_t *cast = (yp_parentheses_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// statements
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// opening_loc
|
|
argv[1] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPParenthesesNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_PINNED_EXPRESSION_NODE: {
|
|
yp_pinned_expression_node_t *cast = (yp_pinned_expression_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// expression
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// lparen_loc
|
|
argv[2] = yp_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
|
|
|
// rparen_loc
|
|
argv[3] = yp_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPPinnedExpressionNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_PINNED_VARIABLE_NODE: {
|
|
yp_pinned_variable_node_t *cast = (yp_pinned_variable_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// variable
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[1] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPPinnedVariableNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_POST_EXECUTION_NODE: {
|
|
yp_post_execution_node_t *cast = (yp_post_execution_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// statements
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// opening_loc
|
|
argv[2] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[3] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPPostExecutionNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_PRE_EXECUTION_NODE: {
|
|
yp_pre_execution_node_t *cast = (yp_pre_execution_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// statements
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// opening_loc
|
|
argv[2] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[3] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPPreExecutionNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_PROGRAM_NODE: {
|
|
yp_program_node_t *cast = (yp_program_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// locals
|
|
argv[0] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// statements
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPProgramNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_RANGE_NODE: {
|
|
yp_range_node_t *cast = (yp_range_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// left
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// right
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// flags
|
|
argv[3] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPRangeNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_RATIONAL_NODE: {
|
|
VALUE argv[2];
|
|
|
|
// numeric
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPRationalNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_REDO_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPRedoNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_REGULAR_EXPRESSION_NODE: {
|
|
yp_regular_expression_node_t *cast = (yp_regular_expression_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// opening_loc
|
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// content_loc
|
|
argv[1] = yp_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// unescaped
|
|
argv[3] = yp_string_new(&cast->unescaped, encoding);
|
|
|
|
// flags
|
|
argv[4] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPRegularExpressionNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE: {
|
|
yp_required_destructured_parameter_node_t *cast = (yp_required_destructured_parameter_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// parameters
|
|
argv[0] = rb_ary_new_capa(cast->parameters.size);
|
|
for (size_t index = 0; index < cast->parameters.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// opening_loc
|
|
argv[1] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPRequiredDestructuredParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_REQUIRED_PARAMETER_NODE: {
|
|
yp_required_parameter_node_t *cast = (yp_required_parameter_node_t *) node;
|
|
VALUE argv[2];
|
|
|
|
// constant_id
|
|
argv[0] = rb_id2sym(constants[cast->constant_id - 1]);
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPRequiredParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_RESCUE_MODIFIER_NODE: {
|
|
yp_rescue_modifier_node_t *cast = (yp_rescue_modifier_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// expression
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// rescue_expression
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPRescueModifierNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_RESCUE_NODE: {
|
|
yp_rescue_node_t *cast = (yp_rescue_node_t *) node;
|
|
VALUE argv[7];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// exceptions
|
|
argv[1] = rb_ary_new_capa(cast->exceptions.size);
|
|
for (size_t index = 0; index < cast->exceptions.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// operator_loc
|
|
argv[2] = cast->operator_loc.start == NULL ? Qnil : yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// reference
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[4] = rb_ary_pop(value_stack);
|
|
|
|
// consequent
|
|
argv[5] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[6] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cYARPRescueNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_REST_PARAMETER_NODE: {
|
|
yp_rest_parameter_node_t *cast = (yp_rest_parameter_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// operator_loc
|
|
argv[0] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// name_loc
|
|
argv[1] = cast->name_loc.start == NULL ? Qnil : yp_location_new(parser, cast->name_loc.start, cast->name_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPRestParameterNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_RETRY_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPRetryNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_RETURN_NODE: {
|
|
yp_return_node_t *cast = (yp_return_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// arguments
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPReturnNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SELF_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPSelfNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SINGLETON_CLASS_NODE: {
|
|
yp_singleton_class_node_t *cast = (yp_singleton_class_node_t *) node;
|
|
VALUE argv[7];
|
|
|
|
// locals
|
|
argv[0] = rb_ary_new_capa(cast->locals.size);
|
|
for (size_t index = 0; index < cast->locals.size; index++) {
|
|
rb_ary_push(argv[0], rb_id2sym(constants[cast->locals.ids[index] - 1]));
|
|
}
|
|
|
|
// class_keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->class_keyword_loc.start, cast->class_keyword_loc.end, source);
|
|
|
|
// operator_loc
|
|
argv[2] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// expression
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[4] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[5] = yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[6] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(7, argv, rb_cYARPSingletonClassNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SOURCE_ENCODING_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPSourceEncodingNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SOURCE_FILE_NODE: {
|
|
yp_source_file_node_t *cast = (yp_source_file_node_t *) node;
|
|
VALUE argv[2];
|
|
|
|
// filepath
|
|
argv[0] = yp_string_new(&cast->filepath, encoding);
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPSourceFileNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SOURCE_LINE_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPSourceLineNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SPLAT_NODE: {
|
|
yp_splat_node_t *cast = (yp_splat_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// operator_loc
|
|
argv[0] = yp_location_new(parser, cast->operator_loc.start, cast->operator_loc.end, source);
|
|
|
|
// expression
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPSplatNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_STATEMENTS_NODE: {
|
|
yp_statements_node_t *cast = (yp_statements_node_t *) node;
|
|
VALUE argv[2];
|
|
|
|
// body
|
|
argv[0] = rb_ary_new_capa(cast->body.size);
|
|
for (size_t index = 0; index < cast->body.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// location
|
|
argv[1] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(2, argv, rb_cYARPStatementsNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_STRING_CONCAT_NODE: {
|
|
VALUE argv[3];
|
|
|
|
// left
|
|
argv[0] = rb_ary_pop(value_stack);
|
|
|
|
// right
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPStringConcatNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_STRING_NODE: {
|
|
yp_string_node_t *cast = (yp_string_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// opening_loc
|
|
argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// content_loc
|
|
argv[1] = yp_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// unescaped
|
|
argv[3] = yp_string_new(&cast->unescaped, encoding);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPStringNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SUPER_NODE: {
|
|
yp_super_node_t *cast = (yp_super_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// lparen_loc
|
|
argv[1] = cast->lparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
|
|
|
// arguments
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// rparen_loc
|
|
argv[3] = cast->rparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
|
|
|
// block
|
|
argv[4] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPSuperNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_SYMBOL_NODE: {
|
|
yp_symbol_node_t *cast = (yp_symbol_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// opening_loc
|
|
argv[0] = cast->opening_loc.start == NULL ? Qnil : yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// value_loc
|
|
argv[1] = yp_location_new(parser, cast->value_loc.start, cast->value_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = cast->closing_loc.start == NULL ? Qnil : yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// unescaped
|
|
argv[3] = yp_string_new(&cast->unescaped, encoding);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPSymbolNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_TRUE_NODE: {
|
|
VALUE argv[1];
|
|
|
|
// location
|
|
argv[0] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(1, argv, rb_cYARPTrueNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_UNDEF_NODE: {
|
|
yp_undef_node_t *cast = (yp_undef_node_t *) node;
|
|
VALUE argv[3];
|
|
|
|
// names
|
|
argv[0] = rb_ary_new_capa(cast->names.size);
|
|
for (size_t index = 0; index < cast->names.size; index++) {
|
|
rb_ary_push(argv[0], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// keyword_loc
|
|
argv[1] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[2] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(3, argv, rb_cYARPUndefNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_UNLESS_NODE: {
|
|
yp_unless_node_t *cast = (yp_unless_node_t *) node;
|
|
VALUE argv[6];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// predicate
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// consequent
|
|
argv[3] = rb_ary_pop(value_stack);
|
|
|
|
// end_keyword_loc
|
|
argv[4] = cast->end_keyword_loc.start == NULL ? Qnil : yp_location_new(parser, cast->end_keyword_loc.start, cast->end_keyword_loc.end, source);
|
|
|
|
// location
|
|
argv[5] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(6, argv, rb_cYARPUnlessNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_UNTIL_NODE: {
|
|
yp_until_node_t *cast = (yp_until_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// predicate
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// flags
|
|
argv[3] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPUntilNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_WHEN_NODE: {
|
|
yp_when_node_t *cast = (yp_when_node_t *) node;
|
|
VALUE argv[4];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// conditions
|
|
argv[1] = rb_ary_new_capa(cast->conditions.size);
|
|
for (size_t index = 0; index < cast->conditions.size; index++) {
|
|
rb_ary_push(argv[1], rb_ary_pop(value_stack));
|
|
}
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// location
|
|
argv[3] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(4, argv, rb_cYARPWhenNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_WHILE_NODE: {
|
|
yp_while_node_t *cast = (yp_while_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// predicate
|
|
argv[1] = rb_ary_pop(value_stack);
|
|
|
|
// statements
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// flags
|
|
argv[3] = ULONG2NUM(node->flags >> 1);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPWhileNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_X_STRING_NODE: {
|
|
yp_x_string_node_t *cast = (yp_x_string_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// opening_loc
|
|
argv[0] = yp_location_new(parser, cast->opening_loc.start, cast->opening_loc.end, source);
|
|
|
|
// content_loc
|
|
argv[1] = yp_location_new(parser, cast->content_loc.start, cast->content_loc.end, source);
|
|
|
|
// closing_loc
|
|
argv[2] = yp_location_new(parser, cast->closing_loc.start, cast->closing_loc.end, source);
|
|
|
|
// unescaped
|
|
argv[3] = yp_string_new(&cast->unescaped, encoding);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPXStringNode));
|
|
break;
|
|
}
|
|
#line 137 "api_node.c.erb"
|
|
case YP_NODE_YIELD_NODE: {
|
|
yp_yield_node_t *cast = (yp_yield_node_t *) node;
|
|
VALUE argv[5];
|
|
|
|
// keyword_loc
|
|
argv[0] = yp_location_new(parser, cast->keyword_loc.start, cast->keyword_loc.end, source);
|
|
|
|
// lparen_loc
|
|
argv[1] = cast->lparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->lparen_loc.start, cast->lparen_loc.end, source);
|
|
|
|
// arguments
|
|
argv[2] = rb_ary_pop(value_stack);
|
|
|
|
// rparen_loc
|
|
argv[3] = cast->rparen_loc.start == NULL ? Qnil : yp_location_new(parser, cast->rparen_loc.start, cast->rparen_loc.end, source);
|
|
|
|
// location
|
|
argv[4] = yp_location_new(parser, node->location.start, node->location.end, source);
|
|
|
|
rb_ary_push(value_stack, rb_class_new_instance(5, argv, rb_cYARPYieldNode));
|
|
break;
|
|
}
|
|
default:
|
|
rb_raise(rb_eRuntimeError, "unknown node type: %d", YP_NODE_TYPE(node));
|
|
}
|
|
}
|
|
}
|
|
|
|
VALUE result = rb_ary_pop(value_stack);
|
|
free(constants);
|
|
return result;
|
|
}
|
|
|
|
void
|
|
Init_yarp_api_node(void) {
|
|
rb_cYARPAliasNode = rb_define_class_under(rb_cYARP, "AliasNode", rb_cYARPNode);
|
|
rb_cYARPAlternationPatternNode = rb_define_class_under(rb_cYARP, "AlternationPatternNode", rb_cYARPNode);
|
|
rb_cYARPAndNode = rb_define_class_under(rb_cYARP, "AndNode", rb_cYARPNode);
|
|
rb_cYARPArgumentsNode = rb_define_class_under(rb_cYARP, "ArgumentsNode", rb_cYARPNode);
|
|
rb_cYARPArrayNode = rb_define_class_under(rb_cYARP, "ArrayNode", rb_cYARPNode);
|
|
rb_cYARPArrayPatternNode = rb_define_class_under(rb_cYARP, "ArrayPatternNode", rb_cYARPNode);
|
|
rb_cYARPAssocNode = rb_define_class_under(rb_cYARP, "AssocNode", rb_cYARPNode);
|
|
rb_cYARPAssocSplatNode = rb_define_class_under(rb_cYARP, "AssocSplatNode", rb_cYARPNode);
|
|
rb_cYARPBackReferenceReadNode = rb_define_class_under(rb_cYARP, "BackReferenceReadNode", rb_cYARPNode);
|
|
rb_cYARPBeginNode = rb_define_class_under(rb_cYARP, "BeginNode", rb_cYARPNode);
|
|
rb_cYARPBlockArgumentNode = rb_define_class_under(rb_cYARP, "BlockArgumentNode", rb_cYARPNode);
|
|
rb_cYARPBlockNode = rb_define_class_under(rb_cYARP, "BlockNode", rb_cYARPNode);
|
|
rb_cYARPBlockParameterNode = rb_define_class_under(rb_cYARP, "BlockParameterNode", rb_cYARPNode);
|
|
rb_cYARPBlockParametersNode = rb_define_class_under(rb_cYARP, "BlockParametersNode", rb_cYARPNode);
|
|
rb_cYARPBreakNode = rb_define_class_under(rb_cYARP, "BreakNode", rb_cYARPNode);
|
|
rb_cYARPCallNode = rb_define_class_under(rb_cYARP, "CallNode", rb_cYARPNode);
|
|
rb_cYARPCallOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "CallOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPCallOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "CallOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPCallOperatorWriteNode = rb_define_class_under(rb_cYARP, "CallOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPCapturePatternNode = rb_define_class_under(rb_cYARP, "CapturePatternNode", rb_cYARPNode);
|
|
rb_cYARPCaseNode = rb_define_class_under(rb_cYARP, "CaseNode", rb_cYARPNode);
|
|
rb_cYARPClassNode = rb_define_class_under(rb_cYARP, "ClassNode", rb_cYARPNode);
|
|
rb_cYARPClassVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPClassVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPClassVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPClassVariableReadNode = rb_define_class_under(rb_cYARP, "ClassVariableReadNode", rb_cYARPNode);
|
|
rb_cYARPClassVariableWriteNode = rb_define_class_under(rb_cYARP, "ClassVariableWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantOperatorWriteNode = rb_define_class_under(rb_cYARP, "ConstantOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantPathNode = rb_define_class_under(rb_cYARP, "ConstantPathNode", rb_cYARPNode);
|
|
rb_cYARPConstantPathOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantPathOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantPathOperatorWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantPathWriteNode = rb_define_class_under(rb_cYARP, "ConstantPathWriteNode", rb_cYARPNode);
|
|
rb_cYARPConstantReadNode = rb_define_class_under(rb_cYARP, "ConstantReadNode", rb_cYARPNode);
|
|
rb_cYARPConstantWriteNode = rb_define_class_under(rb_cYARP, "ConstantWriteNode", rb_cYARPNode);
|
|
rb_cYARPDefNode = rb_define_class_under(rb_cYARP, "DefNode", rb_cYARPNode);
|
|
rb_cYARPDefinedNode = rb_define_class_under(rb_cYARP, "DefinedNode", rb_cYARPNode);
|
|
rb_cYARPElseNode = rb_define_class_under(rb_cYARP, "ElseNode", rb_cYARPNode);
|
|
rb_cYARPEmbeddedStatementsNode = rb_define_class_under(rb_cYARP, "EmbeddedStatementsNode", rb_cYARPNode);
|
|
rb_cYARPEmbeddedVariableNode = rb_define_class_under(rb_cYARP, "EmbeddedVariableNode", rb_cYARPNode);
|
|
rb_cYARPEnsureNode = rb_define_class_under(rb_cYARP, "EnsureNode", rb_cYARPNode);
|
|
rb_cYARPFalseNode = rb_define_class_under(rb_cYARP, "FalseNode", rb_cYARPNode);
|
|
rb_cYARPFindPatternNode = rb_define_class_under(rb_cYARP, "FindPatternNode", rb_cYARPNode);
|
|
rb_cYARPFlipFlopNode = rb_define_class_under(rb_cYARP, "FlipFlopNode", rb_cYARPNode);
|
|
rb_cYARPFloatNode = rb_define_class_under(rb_cYARP, "FloatNode", rb_cYARPNode);
|
|
rb_cYARPForNode = rb_define_class_under(rb_cYARP, "ForNode", rb_cYARPNode);
|
|
rb_cYARPForwardingArgumentsNode = rb_define_class_under(rb_cYARP, "ForwardingArgumentsNode", rb_cYARPNode);
|
|
rb_cYARPForwardingParameterNode = rb_define_class_under(rb_cYARP, "ForwardingParameterNode", rb_cYARPNode);
|
|
rb_cYARPForwardingSuperNode = rb_define_class_under(rb_cYARP, "ForwardingSuperNode", rb_cYARPNode);
|
|
rb_cYARPGlobalVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPGlobalVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPGlobalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPGlobalVariableReadNode = rb_define_class_under(rb_cYARP, "GlobalVariableReadNode", rb_cYARPNode);
|
|
rb_cYARPGlobalVariableWriteNode = rb_define_class_under(rb_cYARP, "GlobalVariableWriteNode", rb_cYARPNode);
|
|
rb_cYARPHashNode = rb_define_class_under(rb_cYARP, "HashNode", rb_cYARPNode);
|
|
rb_cYARPHashPatternNode = rb_define_class_under(rb_cYARP, "HashPatternNode", rb_cYARPNode);
|
|
rb_cYARPIfNode = rb_define_class_under(rb_cYARP, "IfNode", rb_cYARPNode);
|
|
rb_cYARPImaginaryNode = rb_define_class_under(rb_cYARP, "ImaginaryNode", rb_cYARPNode);
|
|
rb_cYARPInNode = rb_define_class_under(rb_cYARP, "InNode", rb_cYARPNode);
|
|
rb_cYARPInstanceVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPInstanceVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPInstanceVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPInstanceVariableReadNode = rb_define_class_under(rb_cYARP, "InstanceVariableReadNode", rb_cYARPNode);
|
|
rb_cYARPInstanceVariableWriteNode = rb_define_class_under(rb_cYARP, "InstanceVariableWriteNode", rb_cYARPNode);
|
|
rb_cYARPIntegerNode = rb_define_class_under(rb_cYARP, "IntegerNode", rb_cYARPNode);
|
|
rb_cYARPInterpolatedRegularExpressionNode = rb_define_class_under(rb_cYARP, "InterpolatedRegularExpressionNode", rb_cYARPNode);
|
|
rb_cYARPInterpolatedStringNode = rb_define_class_under(rb_cYARP, "InterpolatedStringNode", rb_cYARPNode);
|
|
rb_cYARPInterpolatedSymbolNode = rb_define_class_under(rb_cYARP, "InterpolatedSymbolNode", rb_cYARPNode);
|
|
rb_cYARPInterpolatedXStringNode = rb_define_class_under(rb_cYARP, "InterpolatedXStringNode", rb_cYARPNode);
|
|
rb_cYARPKeywordHashNode = rb_define_class_under(rb_cYARP, "KeywordHashNode", rb_cYARPNode);
|
|
rb_cYARPKeywordParameterNode = rb_define_class_under(rb_cYARP, "KeywordParameterNode", rb_cYARPNode);
|
|
rb_cYARPKeywordRestParameterNode = rb_define_class_under(rb_cYARP, "KeywordRestParameterNode", rb_cYARPNode);
|
|
rb_cYARPLambdaNode = rb_define_class_under(rb_cYARP, "LambdaNode", rb_cYARPNode);
|
|
rb_cYARPLocalVariableOperatorAndWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorAndWriteNode", rb_cYARPNode);
|
|
rb_cYARPLocalVariableOperatorOrWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorOrWriteNode", rb_cYARPNode);
|
|
rb_cYARPLocalVariableOperatorWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableOperatorWriteNode", rb_cYARPNode);
|
|
rb_cYARPLocalVariableReadNode = rb_define_class_under(rb_cYARP, "LocalVariableReadNode", rb_cYARPNode);
|
|
rb_cYARPLocalVariableWriteNode = rb_define_class_under(rb_cYARP, "LocalVariableWriteNode", rb_cYARPNode);
|
|
rb_cYARPMatchPredicateNode = rb_define_class_under(rb_cYARP, "MatchPredicateNode", rb_cYARPNode);
|
|
rb_cYARPMatchRequiredNode = rb_define_class_under(rb_cYARP, "MatchRequiredNode", rb_cYARPNode);
|
|
rb_cYARPMissingNode = rb_define_class_under(rb_cYARP, "MissingNode", rb_cYARPNode);
|
|
rb_cYARPModuleNode = rb_define_class_under(rb_cYARP, "ModuleNode", rb_cYARPNode);
|
|
rb_cYARPMultiWriteNode = rb_define_class_under(rb_cYARP, "MultiWriteNode", rb_cYARPNode);
|
|
rb_cYARPNextNode = rb_define_class_under(rb_cYARP, "NextNode", rb_cYARPNode);
|
|
rb_cYARPNilNode = rb_define_class_under(rb_cYARP, "NilNode", rb_cYARPNode);
|
|
rb_cYARPNoKeywordsParameterNode = rb_define_class_under(rb_cYARP, "NoKeywordsParameterNode", rb_cYARPNode);
|
|
rb_cYARPNumberedReferenceReadNode = rb_define_class_under(rb_cYARP, "NumberedReferenceReadNode", rb_cYARPNode);
|
|
rb_cYARPOptionalParameterNode = rb_define_class_under(rb_cYARP, "OptionalParameterNode", rb_cYARPNode);
|
|
rb_cYARPOrNode = rb_define_class_under(rb_cYARP, "OrNode", rb_cYARPNode);
|
|
rb_cYARPParametersNode = rb_define_class_under(rb_cYARP, "ParametersNode", rb_cYARPNode);
|
|
rb_cYARPParenthesesNode = rb_define_class_under(rb_cYARP, "ParenthesesNode", rb_cYARPNode);
|
|
rb_cYARPPinnedExpressionNode = rb_define_class_under(rb_cYARP, "PinnedExpressionNode", rb_cYARPNode);
|
|
rb_cYARPPinnedVariableNode = rb_define_class_under(rb_cYARP, "PinnedVariableNode", rb_cYARPNode);
|
|
rb_cYARPPostExecutionNode = rb_define_class_under(rb_cYARP, "PostExecutionNode", rb_cYARPNode);
|
|
rb_cYARPPreExecutionNode = rb_define_class_under(rb_cYARP, "PreExecutionNode", rb_cYARPNode);
|
|
rb_cYARPProgramNode = rb_define_class_under(rb_cYARP, "ProgramNode", rb_cYARPNode);
|
|
rb_cYARPRangeNode = rb_define_class_under(rb_cYARP, "RangeNode", rb_cYARPNode);
|
|
rb_cYARPRationalNode = rb_define_class_under(rb_cYARP, "RationalNode", rb_cYARPNode);
|
|
rb_cYARPRedoNode = rb_define_class_under(rb_cYARP, "RedoNode", rb_cYARPNode);
|
|
rb_cYARPRegularExpressionNode = rb_define_class_under(rb_cYARP, "RegularExpressionNode", rb_cYARPNode);
|
|
rb_cYARPRequiredDestructuredParameterNode = rb_define_class_under(rb_cYARP, "RequiredDestructuredParameterNode", rb_cYARPNode);
|
|
rb_cYARPRequiredParameterNode = rb_define_class_under(rb_cYARP, "RequiredParameterNode", rb_cYARPNode);
|
|
rb_cYARPRescueModifierNode = rb_define_class_under(rb_cYARP, "RescueModifierNode", rb_cYARPNode);
|
|
rb_cYARPRescueNode = rb_define_class_under(rb_cYARP, "RescueNode", rb_cYARPNode);
|
|
rb_cYARPRestParameterNode = rb_define_class_under(rb_cYARP, "RestParameterNode", rb_cYARPNode);
|
|
rb_cYARPRetryNode = rb_define_class_under(rb_cYARP, "RetryNode", rb_cYARPNode);
|
|
rb_cYARPReturnNode = rb_define_class_under(rb_cYARP, "ReturnNode", rb_cYARPNode);
|
|
rb_cYARPSelfNode = rb_define_class_under(rb_cYARP, "SelfNode", rb_cYARPNode);
|
|
rb_cYARPSingletonClassNode = rb_define_class_under(rb_cYARP, "SingletonClassNode", rb_cYARPNode);
|
|
rb_cYARPSourceEncodingNode = rb_define_class_under(rb_cYARP, "SourceEncodingNode", rb_cYARPNode);
|
|
rb_cYARPSourceFileNode = rb_define_class_under(rb_cYARP, "SourceFileNode", rb_cYARPNode);
|
|
rb_cYARPSourceLineNode = rb_define_class_under(rb_cYARP, "SourceLineNode", rb_cYARPNode);
|
|
rb_cYARPSplatNode = rb_define_class_under(rb_cYARP, "SplatNode", rb_cYARPNode);
|
|
rb_cYARPStatementsNode = rb_define_class_under(rb_cYARP, "StatementsNode", rb_cYARPNode);
|
|
rb_cYARPStringConcatNode = rb_define_class_under(rb_cYARP, "StringConcatNode", rb_cYARPNode);
|
|
rb_cYARPStringNode = rb_define_class_under(rb_cYARP, "StringNode", rb_cYARPNode);
|
|
rb_cYARPSuperNode = rb_define_class_under(rb_cYARP, "SuperNode", rb_cYARPNode);
|
|
rb_cYARPSymbolNode = rb_define_class_under(rb_cYARP, "SymbolNode", rb_cYARPNode);
|
|
rb_cYARPTrueNode = rb_define_class_under(rb_cYARP, "TrueNode", rb_cYARPNode);
|
|
rb_cYARPUndefNode = rb_define_class_under(rb_cYARP, "UndefNode", rb_cYARPNode);
|
|
rb_cYARPUnlessNode = rb_define_class_under(rb_cYARP, "UnlessNode", rb_cYARPNode);
|
|
rb_cYARPUntilNode = rb_define_class_under(rb_cYARP, "UntilNode", rb_cYARPNode);
|
|
rb_cYARPWhenNode = rb_define_class_under(rb_cYARP, "WhenNode", rb_cYARPNode);
|
|
rb_cYARPWhileNode = rb_define_class_under(rb_cYARP, "WhileNode", rb_cYARPNode);
|
|
rb_cYARPXStringNode = rb_define_class_under(rb_cYARP, "XStringNode", rb_cYARPNode);
|
|
rb_cYARPYieldNode = rb_define_class_under(rb_cYARP, "YieldNode", rb_cYARPNode);
|
|
}
|