aboutsummaryrefslogtreecommitdiffstats
path: root/yarp/ast.h
diff options
context:
space:
mode:
Diffstat (limited to 'yarp/ast.h')
-rw-r--r--yarp/ast.h1416
1 files changed, 0 insertions, 1416 deletions
diff --git a/yarp/ast.h b/yarp/ast.h
deleted file mode 100644
index 0e0d320f4d..0000000000
--- a/yarp/ast.h
+++ /dev/null
@@ -1,1416 +0,0 @@
-/******************************************************************************/
-/* This file is generated by the bin/template script and should not be */
-/* modified manually. See */
-/* templates/include/yarp/ast.h.erb */
-/* if you are looking to modify the */
-/* template */
-/******************************************************************************/
-#ifndef YARP_AST_H
-#define YARP_AST_H
-
-#include "yarp/defines.h"
-#include "yarp/util/yp_constant_pool.h"
-#include "yarp/util/yp_string.h"
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdint.h>
-
-// This enum represents every type of token in the Ruby source.
-typedef enum yp_token_type {
- YP_TOKEN_EOF = 1, // final token in the file
- YP_TOKEN_MISSING, // a token that was expected but not found
- YP_TOKEN_NOT_PROVIDED, // a token that was not present but it is okay
- YP_TOKEN_AMPERSAND, // &
- YP_TOKEN_AMPERSAND_AMPERSAND, // &&
- YP_TOKEN_AMPERSAND_AMPERSAND_EQUAL, // &&=
- YP_TOKEN_AMPERSAND_DOT, // &.
- YP_TOKEN_AMPERSAND_EQUAL, // &=
- YP_TOKEN_BACKTICK, // `
- YP_TOKEN_BACK_REFERENCE, // a back reference
- YP_TOKEN_BANG, // ! or !@
- YP_TOKEN_BANG_EQUAL, // !=
- YP_TOKEN_BANG_TILDE, // !~
- YP_TOKEN_BRACE_LEFT, // {
- YP_TOKEN_BRACE_RIGHT, // }
- YP_TOKEN_BRACKET_LEFT, // [
- YP_TOKEN_BRACKET_LEFT_ARRAY, // [ for the beginning of an array
- YP_TOKEN_BRACKET_LEFT_RIGHT, // []
- YP_TOKEN_BRACKET_LEFT_RIGHT_EQUAL, // []=
- YP_TOKEN_BRACKET_RIGHT, // ]
- YP_TOKEN_CARET, // ^
- YP_TOKEN_CARET_EQUAL, // ^=
- YP_TOKEN_CHARACTER_LITERAL, // a character literal
- YP_TOKEN_CLASS_VARIABLE, // a class variable
- YP_TOKEN_COLON, // :
- YP_TOKEN_COLON_COLON, // ::
- YP_TOKEN_COMMA, // ,
- YP_TOKEN_COMMENT, // a comment
- YP_TOKEN_CONSTANT, // a constant
- YP_TOKEN_DOT, // .
- YP_TOKEN_DOT_DOT, // ..
- YP_TOKEN_DOT_DOT_DOT, // ...
- YP_TOKEN_EMBDOC_BEGIN, // =begin
- YP_TOKEN_EMBDOC_END, // =end
- YP_TOKEN_EMBDOC_LINE, // a line inside of embedded documentation
- YP_TOKEN_EMBEXPR_BEGIN, // #{
- YP_TOKEN_EMBEXPR_END, // }
- YP_TOKEN_EMBVAR, // #
- YP_TOKEN_EQUAL, // =
- YP_TOKEN_EQUAL_EQUAL, // ==
- YP_TOKEN_EQUAL_EQUAL_EQUAL, // ===
- YP_TOKEN_EQUAL_GREATER, // =>
- YP_TOKEN_EQUAL_TILDE, // =~
- YP_TOKEN_FLOAT, // a floating point number
- YP_TOKEN_FLOAT_IMAGINARY, // a floating pointer number with an imaginary suffix
- YP_TOKEN_FLOAT_RATIONAL, // a floating pointer number with a rational suffix
- YP_TOKEN_FLOAT_RATIONAL_IMAGINARY, // a floating pointer number with a rational and imaginary suffix
- YP_TOKEN_GLOBAL_VARIABLE, // a global variable
- YP_TOKEN_GREATER, // >
- YP_TOKEN_GREATER_EQUAL, // >=
- YP_TOKEN_GREATER_GREATER, // >>
- YP_TOKEN_GREATER_GREATER_EQUAL, // >>=
- YP_TOKEN_HEREDOC_END, // the end of a heredoc
- YP_TOKEN_HEREDOC_START, // the start of a heredoc
- YP_TOKEN_IDENTIFIER, // an identifier
- YP_TOKEN_IGNORED_NEWLINE, // an ignored newline
- YP_TOKEN_INSTANCE_VARIABLE, // an instance variable
- YP_TOKEN_INTEGER, // an integer (any base)
- YP_TOKEN_INTEGER_IMAGINARY, // an integer with an imaginary suffix
- YP_TOKEN_INTEGER_RATIONAL, // an integer with a rational suffix
- YP_TOKEN_INTEGER_RATIONAL_IMAGINARY, // an integer with a rational and imaginary suffix
- YP_TOKEN_KEYWORD_ALIAS, // alias
- YP_TOKEN_KEYWORD_AND, // and
- YP_TOKEN_KEYWORD_BEGIN, // begin
- YP_TOKEN_KEYWORD_BEGIN_UPCASE, // BEGIN
- YP_TOKEN_KEYWORD_BREAK, // break
- YP_TOKEN_KEYWORD_CASE, // case
- YP_TOKEN_KEYWORD_CLASS, // class
- YP_TOKEN_KEYWORD_DEF, // def
- YP_TOKEN_KEYWORD_DEFINED, // defined?
- YP_TOKEN_KEYWORD_DO, // do
- YP_TOKEN_KEYWORD_DO_LOOP, // do keyword for a predicate in a while, until, or for loop
- YP_TOKEN_KEYWORD_ELSE, // else
- YP_TOKEN_KEYWORD_ELSIF, // elsif
- YP_TOKEN_KEYWORD_END, // end
- YP_TOKEN_KEYWORD_END_UPCASE, // END
- YP_TOKEN_KEYWORD_ENSURE, // ensure
- YP_TOKEN_KEYWORD_FALSE, // false
- YP_TOKEN_KEYWORD_FOR, // for
- YP_TOKEN_KEYWORD_IF, // if
- YP_TOKEN_KEYWORD_IF_MODIFIER, // if in the modifier form
- YP_TOKEN_KEYWORD_IN, // in
- YP_TOKEN_KEYWORD_MODULE, // module
- YP_TOKEN_KEYWORD_NEXT, // next
- YP_TOKEN_KEYWORD_NIL, // nil
- YP_TOKEN_KEYWORD_NOT, // not
- YP_TOKEN_KEYWORD_OR, // or
- YP_TOKEN_KEYWORD_REDO, // redo
- YP_TOKEN_KEYWORD_RESCUE, // rescue
- YP_TOKEN_KEYWORD_RESCUE_MODIFIER, // rescue in the modifier form
- YP_TOKEN_KEYWORD_RETRY, // retry
- YP_TOKEN_KEYWORD_RETURN, // return
- YP_TOKEN_KEYWORD_SELF, // self
- YP_TOKEN_KEYWORD_SUPER, // super
- YP_TOKEN_KEYWORD_THEN, // then
- YP_TOKEN_KEYWORD_TRUE, // true
- YP_TOKEN_KEYWORD_UNDEF, // undef
- YP_TOKEN_KEYWORD_UNLESS, // unless
- YP_TOKEN_KEYWORD_UNLESS_MODIFIER, // unless in the modifier form
- YP_TOKEN_KEYWORD_UNTIL, // until
- YP_TOKEN_KEYWORD_UNTIL_MODIFIER, // until in the modifier form
- YP_TOKEN_KEYWORD_WHEN, // when
- YP_TOKEN_KEYWORD_WHILE, // while
- YP_TOKEN_KEYWORD_WHILE_MODIFIER, // while in the modifier form
- YP_TOKEN_KEYWORD_YIELD, // yield
- YP_TOKEN_KEYWORD___ENCODING__, // __ENCODING__
- YP_TOKEN_KEYWORD___FILE__, // __FILE__
- YP_TOKEN_KEYWORD___LINE__, // __LINE__
- YP_TOKEN_LABEL, // a label
- YP_TOKEN_LABEL_END, // the end of a label
- YP_TOKEN_LAMBDA_BEGIN, // {
- YP_TOKEN_LESS, // <
- YP_TOKEN_LESS_EQUAL, // <=
- YP_TOKEN_LESS_EQUAL_GREATER, // <=>
- YP_TOKEN_LESS_LESS, // <<
- YP_TOKEN_LESS_LESS_EQUAL, // <<=
- YP_TOKEN_MINUS, // -
- YP_TOKEN_MINUS_EQUAL, // -=
- YP_TOKEN_MINUS_GREATER, // ->
- YP_TOKEN_NEWLINE, // a newline character outside of other tokens
- YP_TOKEN_NUMBERED_REFERENCE, // a numbered reference to a capture group in the previous regular expression match
- YP_TOKEN_PARENTHESIS_LEFT, // (
- YP_TOKEN_PARENTHESIS_LEFT_PARENTHESES, // ( for a parentheses node
- YP_TOKEN_PARENTHESIS_RIGHT, // )
- YP_TOKEN_PERCENT, // %
- YP_TOKEN_PERCENT_EQUAL, // %=
- YP_TOKEN_PERCENT_LOWER_I, // %i
- YP_TOKEN_PERCENT_LOWER_W, // %w
- YP_TOKEN_PERCENT_LOWER_X, // %x
- YP_TOKEN_PERCENT_UPPER_I, // %I
- YP_TOKEN_PERCENT_UPPER_W, // %W
- YP_TOKEN_PIPE, // |
- YP_TOKEN_PIPE_EQUAL, // |=
- YP_TOKEN_PIPE_PIPE, // ||
- YP_TOKEN_PIPE_PIPE_EQUAL, // ||=
- YP_TOKEN_PLUS, // +
- YP_TOKEN_PLUS_EQUAL, // +=
- YP_TOKEN_QUESTION_MARK, // ?
- YP_TOKEN_REGEXP_BEGIN, // the beginning of a regular expression
- YP_TOKEN_REGEXP_END, // the end of a regular expression
- YP_TOKEN_SEMICOLON, // ;
- YP_TOKEN_SLASH, // /
- YP_TOKEN_SLASH_EQUAL, // /=
- YP_TOKEN_STAR, // *
- YP_TOKEN_STAR_EQUAL, // *=
- YP_TOKEN_STAR_STAR, // **
- YP_TOKEN_STAR_STAR_EQUAL, // **=
- YP_TOKEN_STRING_BEGIN, // the beginning of a string
- YP_TOKEN_STRING_CONTENT, // the contents of a string
- YP_TOKEN_STRING_END, // the end of a string
- YP_TOKEN_SYMBOL_BEGIN, // the beginning of a symbol
- YP_TOKEN_TILDE, // ~ or ~@
- YP_TOKEN_UAMPERSAND, // unary &
- YP_TOKEN_UCOLON_COLON, // unary ::
- YP_TOKEN_UDOT_DOT, // unary ..
- YP_TOKEN_UDOT_DOT_DOT, // unary ...
- YP_TOKEN_UMINUS, // -@
- YP_TOKEN_UMINUS_NUM, // -@ for a number
- YP_TOKEN_UPLUS, // +@
- YP_TOKEN_USTAR, // unary *
- YP_TOKEN_USTAR_STAR, // unary **
- YP_TOKEN_WORDS_SEP, // a separator between words in a list
- YP_TOKEN___END__, // marker for the point in the file at which the parser should stop
- YP_TOKEN_MAXIMUM, // the maximum token value
-} yp_token_type_t;
-
-// This struct represents a token in the Ruby source. We use it to track both
-// type and location information.
-typedef struct {
- yp_token_type_t type;
- const char *start;
- const char *end;
-} yp_token_t;
-
-// This represents a range of bytes in the source string to which a node or
-// token corresponds.
-typedef struct {
- const char *start;
- const char *end;
-} yp_location_t;
-
-typedef struct {
- yp_location_t *locations;
- size_t size;
- size_t capacity;
-} yp_location_list_t;
-
-struct yp_node;
-
-typedef struct yp_node_list {
- struct yp_node **nodes;
- size_t size;
- size_t capacity;
-} yp_node_list_t;
-
-enum yp_node_type {
- YP_NODE_ALIAS_NODE = 1,
- YP_NODE_ALTERNATION_PATTERN_NODE = 2,
- YP_NODE_AND_NODE = 3,
- YP_NODE_ARGUMENTS_NODE = 4,
- YP_NODE_ARRAY_NODE = 5,
- YP_NODE_ARRAY_PATTERN_NODE = 6,
- YP_NODE_ASSOC_NODE = 7,
- YP_NODE_ASSOC_SPLAT_NODE = 8,
- YP_NODE_BACK_REFERENCE_READ_NODE = 9,
- YP_NODE_BEGIN_NODE = 10,
- YP_NODE_BLOCK_ARGUMENT_NODE = 11,
- YP_NODE_BLOCK_NODE = 12,
- YP_NODE_BLOCK_PARAMETER_NODE = 13,
- YP_NODE_BLOCK_PARAMETERS_NODE = 14,
- YP_NODE_BREAK_NODE = 15,
- YP_NODE_CALL_NODE = 16,
- YP_NODE_CALL_OPERATOR_AND_WRITE_NODE = 17,
- YP_NODE_CALL_OPERATOR_OR_WRITE_NODE = 18,
- YP_NODE_CALL_OPERATOR_WRITE_NODE = 19,
- YP_NODE_CAPTURE_PATTERN_NODE = 20,
- YP_NODE_CASE_NODE = 21,
- YP_NODE_CLASS_NODE = 22,
- YP_NODE_CLASS_VARIABLE_OPERATOR_AND_WRITE_NODE = 23,
- YP_NODE_CLASS_VARIABLE_OPERATOR_OR_WRITE_NODE = 24,
- YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 25,
- YP_NODE_CLASS_VARIABLE_READ_NODE = 26,
- YP_NODE_CLASS_VARIABLE_WRITE_NODE = 27,
- YP_NODE_CONSTANT_OPERATOR_AND_WRITE_NODE = 28,
- YP_NODE_CONSTANT_OPERATOR_OR_WRITE_NODE = 29,
- YP_NODE_CONSTANT_OPERATOR_WRITE_NODE = 30,
- YP_NODE_CONSTANT_PATH_NODE = 31,
- YP_NODE_CONSTANT_PATH_OPERATOR_AND_WRITE_NODE = 32,
- YP_NODE_CONSTANT_PATH_OPERATOR_OR_WRITE_NODE = 33,
- YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE = 34,
- YP_NODE_CONSTANT_PATH_WRITE_NODE = 35,
- YP_NODE_CONSTANT_READ_NODE = 36,
- YP_NODE_CONSTANT_WRITE_NODE = 37,
- YP_NODE_DEF_NODE = 38,
- YP_NODE_DEFINED_NODE = 39,
- YP_NODE_ELSE_NODE = 40,
- YP_NODE_EMBEDDED_STATEMENTS_NODE = 41,
- YP_NODE_EMBEDDED_VARIABLE_NODE = 42,
- YP_NODE_ENSURE_NODE = 43,
- YP_NODE_FALSE_NODE = 44,
- YP_NODE_FIND_PATTERN_NODE = 45,
- YP_NODE_FLIP_FLOP_NODE = 46,
- YP_NODE_FLOAT_NODE = 47,
- YP_NODE_FOR_NODE = 48,
- YP_NODE_FORWARDING_ARGUMENTS_NODE = 49,
- YP_NODE_FORWARDING_PARAMETER_NODE = 50,
- YP_NODE_FORWARDING_SUPER_NODE = 51,
- YP_NODE_GLOBAL_VARIABLE_OPERATOR_AND_WRITE_NODE = 52,
- YP_NODE_GLOBAL_VARIABLE_OPERATOR_OR_WRITE_NODE = 53,
- YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 54,
- YP_NODE_GLOBAL_VARIABLE_READ_NODE = 55,
- YP_NODE_GLOBAL_VARIABLE_WRITE_NODE = 56,
- YP_NODE_HASH_NODE = 57,
- YP_NODE_HASH_PATTERN_NODE = 58,
- YP_NODE_IF_NODE = 59,
- YP_NODE_IMAGINARY_NODE = 60,
- YP_NODE_IN_NODE = 61,
- YP_NODE_INSTANCE_VARIABLE_OPERATOR_AND_WRITE_NODE = 62,
- YP_NODE_INSTANCE_VARIABLE_OPERATOR_OR_WRITE_NODE = 63,
- YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 64,
- YP_NODE_INSTANCE_VARIABLE_READ_NODE = 65,
- YP_NODE_INSTANCE_VARIABLE_WRITE_NODE = 66,
- YP_NODE_INTEGER_NODE = 67,
- YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE = 68,
- YP_NODE_INTERPOLATED_STRING_NODE = 69,
- YP_NODE_INTERPOLATED_SYMBOL_NODE = 70,
- YP_NODE_INTERPOLATED_X_STRING_NODE = 71,
- YP_NODE_KEYWORD_HASH_NODE = 72,
- YP_NODE_KEYWORD_PARAMETER_NODE = 73,
- YP_NODE_KEYWORD_REST_PARAMETER_NODE = 74,
- YP_NODE_LAMBDA_NODE = 75,
- YP_NODE_LOCAL_VARIABLE_OPERATOR_AND_WRITE_NODE = 76,
- YP_NODE_LOCAL_VARIABLE_OPERATOR_OR_WRITE_NODE = 77,
- YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 78,
- YP_NODE_LOCAL_VARIABLE_READ_NODE = 79,
- YP_NODE_LOCAL_VARIABLE_WRITE_NODE = 80,
- YP_NODE_MATCH_PREDICATE_NODE = 81,
- YP_NODE_MATCH_REQUIRED_NODE = 82,
- YP_NODE_MISSING_NODE = 83,
- YP_NODE_MODULE_NODE = 84,
- YP_NODE_MULTI_WRITE_NODE = 85,
- YP_NODE_NEXT_NODE = 86,
- YP_NODE_NIL_NODE = 87,
- YP_NODE_NO_KEYWORDS_PARAMETER_NODE = 88,
- YP_NODE_NUMBERED_REFERENCE_READ_NODE = 89,
- YP_NODE_OPTIONAL_PARAMETER_NODE = 90,
- YP_NODE_OR_NODE = 91,
- YP_NODE_PARAMETERS_NODE = 92,
- YP_NODE_PARENTHESES_NODE = 93,
- YP_NODE_PINNED_EXPRESSION_NODE = 94,
- YP_NODE_PINNED_VARIABLE_NODE = 95,
- YP_NODE_POST_EXECUTION_NODE = 96,
- YP_NODE_PRE_EXECUTION_NODE = 97,
- YP_NODE_PROGRAM_NODE = 98,
- YP_NODE_RANGE_NODE = 99,
- YP_NODE_RATIONAL_NODE = 100,
- YP_NODE_REDO_NODE = 101,
- YP_NODE_REGULAR_EXPRESSION_NODE = 102,
- YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 103,
- YP_NODE_REQUIRED_PARAMETER_NODE = 104,
- YP_NODE_RESCUE_MODIFIER_NODE = 105,
- YP_NODE_RESCUE_NODE = 106,
- YP_NODE_REST_PARAMETER_NODE = 107,
- YP_NODE_RETRY_NODE = 108,
- YP_NODE_RETURN_NODE = 109,
- YP_NODE_SELF_NODE = 110,
- YP_NODE_SINGLETON_CLASS_NODE = 111,
- YP_NODE_SOURCE_ENCODING_NODE = 112,
- YP_NODE_SOURCE_FILE_NODE = 113,
- YP_NODE_SOURCE_LINE_NODE = 114,
- YP_NODE_SPLAT_NODE = 115,
- YP_NODE_STATEMENTS_NODE = 116,
- YP_NODE_STRING_CONCAT_NODE = 117,
- YP_NODE_STRING_NODE = 118,
- YP_NODE_SUPER_NODE = 119,
- YP_NODE_SYMBOL_NODE = 120,
- YP_NODE_TRUE_NODE = 121,
- YP_NODE_UNDEF_NODE = 122,
- YP_NODE_UNLESS_NODE = 123,
- YP_NODE_UNTIL_NODE = 124,
- YP_NODE_WHEN_NODE = 125,
- YP_NODE_WHILE_NODE = 126,
- YP_NODE_X_STRING_NODE = 127,
- YP_NODE_YIELD_NODE = 128,
-};
-
-typedef uint16_t yp_node_type_t;
-typedef uint16_t yp_node_flags_t;
-
-// We store the flags enum in every node in the tree. Some flags are common to
-// all nodes (the ones listed below). Others are specific to certain node types.
-static const yp_node_flags_t YP_NODE_FLAG_NEWLINE = 0x1;
-
-// For easy access, we define some macros to check node type
-#define YP_NODE_TYPE(node) ((enum yp_node_type)node->type)
-#define YP_NODE_TYPE_P(node, type) (YP_NODE_TYPE(node) == (type))
-
-// This is the overall tagged union representing a node in the syntax tree.
-typedef struct yp_node {
- // This represents the type of the node. It somewhat maps to the nodes that
- // existed in the original grammar and ripper, but it's not a 1:1 mapping.
- yp_node_type_t type;
-
- // This represents any flags on the node. Currently, this is only a newline
- // flag
- yp_node_flags_t flags;
-
- // This is the location of the node in the source. It's a range of bytes
- // containing a start and an end.
- yp_location_t location;
-} yp_node_t;
-
-// AliasNode
-typedef struct yp_alias_node {
- yp_node_t base;
- struct yp_node *new_name;
- struct yp_node *old_name;
- yp_location_t keyword_loc;
-} yp_alias_node_t;
-
-// AlternationPatternNode
-typedef struct yp_alternation_pattern_node {
- yp_node_t base;
- struct yp_node *left;
- struct yp_node *right;
- yp_location_t operator_loc;
-} yp_alternation_pattern_node_t;
-
-// AndNode
-typedef struct yp_and_node {
- yp_node_t base;
- struct yp_node *left;
- struct yp_node *right;
- yp_location_t operator_loc;
-} yp_and_node_t;
-
-// ArgumentsNode
-typedef struct yp_arguments_node {
- yp_node_t base;
- struct yp_node_list arguments;
-} yp_arguments_node_t;
-
-// ArrayNode
-typedef struct yp_array_node {
- yp_node_t base;
- struct yp_node_list elements;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_array_node_t;
-
-// ArrayPatternNode
-typedef struct yp_array_pattern_node {
- yp_node_t base;
- struct yp_node *constant;
- struct yp_node_list requireds;
- struct yp_node *rest;
- struct yp_node_list posts;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_array_pattern_node_t;
-
-// AssocNode
-typedef struct yp_assoc_node {
- yp_node_t base;
- struct yp_node *key;
- struct yp_node *value;
- yp_location_t operator_loc;
-} yp_assoc_node_t;
-
-// AssocSplatNode
-typedef struct yp_assoc_splat_node {
- yp_node_t base;
- struct yp_node *value;
- yp_location_t operator_loc;
-} yp_assoc_splat_node_t;
-
-// BackReferenceReadNode
-typedef struct yp_back_reference_read_node {
- yp_node_t base;
-} yp_back_reference_read_node_t;
-
-// BeginNode
-typedef struct yp_begin_node {
- yp_node_t base;
- yp_location_t begin_keyword_loc;
- struct yp_statements_node *statements;
- struct yp_rescue_node *rescue_clause;
- struct yp_else_node *else_clause;
- struct yp_ensure_node *ensure_clause;
- yp_location_t end_keyword_loc;
-} yp_begin_node_t;
-
-// BlockArgumentNode
-typedef struct yp_block_argument_node {
- yp_node_t base;
- struct yp_node *expression;
- yp_location_t operator_loc;
-} yp_block_argument_node_t;
-
-// BlockNode
-typedef struct yp_block_node {
- yp_node_t base;
- yp_constant_id_list_t locals;
- struct yp_block_parameters_node *parameters;
- struct yp_node *statements;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_block_node_t;
-
-// BlockParameterNode
-typedef struct yp_block_parameter_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
-} yp_block_parameter_node_t;
-
-// BlockParametersNode
-typedef struct yp_block_parameters_node {
- yp_node_t base;
- struct yp_parameters_node *parameters;
- yp_location_list_t locals;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_block_parameters_node_t;
-
-// BreakNode
-typedef struct yp_break_node {
- yp_node_t base;
- struct yp_arguments_node *arguments;
- yp_location_t keyword_loc;
-} yp_break_node_t;
-
-// CallNode
-typedef struct yp_call_node {
- yp_node_t base;
- struct yp_node *receiver;
- yp_location_t operator_loc;
- yp_location_t message_loc;
- yp_location_t opening_loc;
- struct yp_arguments_node *arguments;
- yp_location_t closing_loc;
- struct yp_block_node *block;
- yp_string_t name;
-} yp_call_node_t;
-
-// CallOperatorAndWriteNode
-typedef struct yp_call_operator_and_write_node {
- yp_node_t base;
- struct yp_call_node *target;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_call_operator_and_write_node_t;
-
-// CallOperatorOrWriteNode
-typedef struct yp_call_operator_or_write_node {
- yp_node_t base;
- struct yp_call_node *target;
- struct yp_node *value;
- yp_location_t operator_loc;
-} yp_call_operator_or_write_node_t;
-
-// CallOperatorWriteNode
-typedef struct yp_call_operator_write_node {
- yp_node_t base;
- struct yp_call_node *target;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t operator_id;
-} yp_call_operator_write_node_t;
-
-// CapturePatternNode
-typedef struct yp_capture_pattern_node {
- yp_node_t base;
- struct yp_node *value;
- struct yp_node *target;
- yp_location_t operator_loc;
-} yp_capture_pattern_node_t;
-
-// CaseNode
-typedef struct yp_case_node {
- yp_node_t base;
- struct yp_node *predicate;
- struct yp_node_list conditions;
- struct yp_else_node *consequent;
- yp_location_t case_keyword_loc;
- yp_location_t end_keyword_loc;
-} yp_case_node_t;
-
-// ClassNode
-typedef struct yp_class_node {
- yp_node_t base;
- yp_constant_id_list_t locals;
- yp_location_t class_keyword_loc;
- struct yp_node *constant_path;
- yp_location_t inheritance_operator_loc;
- struct yp_node *superclass;
- struct yp_node *statements;
- yp_location_t end_keyword_loc;
-} yp_class_node_t;
-
-// ClassVariableOperatorAndWriteNode
-typedef struct yp_class_variable_operator_and_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_class_variable_operator_and_write_node_t;
-
-// ClassVariableOperatorOrWriteNode
-typedef struct yp_class_variable_operator_or_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_class_variable_operator_or_write_node_t;
-
-// ClassVariableOperatorWriteNode
-typedef struct yp_class_variable_operator_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t operator;
-} yp_class_variable_operator_write_node_t;
-
-// ClassVariableReadNode
-typedef struct yp_class_variable_read_node {
- yp_node_t base;
-} yp_class_variable_read_node_t;
-
-// ClassVariableWriteNode
-typedef struct yp_class_variable_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- struct yp_node *value;
- yp_location_t operator_loc;
-} yp_class_variable_write_node_t;
-
-// ConstantOperatorAndWriteNode
-typedef struct yp_constant_operator_and_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_constant_operator_and_write_node_t;
-
-// ConstantOperatorOrWriteNode
-typedef struct yp_constant_operator_or_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_constant_operator_or_write_node_t;
-
-// ConstantOperatorWriteNode
-typedef struct yp_constant_operator_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t operator;
-} yp_constant_operator_write_node_t;
-
-// ConstantPathNode
-typedef struct yp_constant_path_node {
- yp_node_t base;
- struct yp_node *parent;
- struct yp_node *child;
- yp_location_t delimiter_loc;
-} yp_constant_path_node_t;
-
-// ConstantPathOperatorAndWriteNode
-typedef struct yp_constant_path_operator_and_write_node {
- yp_node_t base;
- struct yp_constant_path_node *target;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_constant_path_operator_and_write_node_t;
-
-// ConstantPathOperatorOrWriteNode
-typedef struct yp_constant_path_operator_or_write_node {
- yp_node_t base;
- struct yp_constant_path_node *target;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_constant_path_operator_or_write_node_t;
-
-// ConstantPathOperatorWriteNode
-typedef struct yp_constant_path_operator_write_node {
- yp_node_t base;
- struct yp_constant_path_node *target;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t operator;
-} yp_constant_path_operator_write_node_t;
-
-// ConstantPathWriteNode
-typedef struct yp_constant_path_write_node {
- yp_node_t base;
- struct yp_constant_path_node *target;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_constant_path_write_node_t;
-
-// ConstantReadNode
-typedef struct yp_constant_read_node {
- yp_node_t base;
-} yp_constant_read_node_t;
-
-// ConstantWriteNode
-typedef struct yp_constant_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- struct yp_node *value;
- yp_location_t operator_loc;
-} yp_constant_write_node_t;
-
-// DefNode
-typedef struct yp_def_node {
- yp_node_t base;
- yp_location_t name_loc;
- struct yp_node *receiver;
- struct yp_parameters_node *parameters;
- struct yp_node *statements;
- yp_constant_id_list_t locals;
- yp_location_t def_keyword_loc;
- yp_location_t operator_loc;
- yp_location_t lparen_loc;
- yp_location_t rparen_loc;
- yp_location_t equal_loc;
- yp_location_t end_keyword_loc;
-} yp_def_node_t;
-
-// DefinedNode
-typedef struct yp_defined_node {
- yp_node_t base;
- yp_location_t lparen_loc;
- struct yp_node *value;
- yp_location_t rparen_loc;
- yp_location_t keyword_loc;
-} yp_defined_node_t;
-
-// ElseNode
-typedef struct yp_else_node {
- yp_node_t base;
- yp_location_t else_keyword_loc;
- struct yp_statements_node *statements;
- yp_location_t end_keyword_loc;
-} yp_else_node_t;
-
-// EmbeddedStatementsNode
-typedef struct yp_embedded_statements_node {
- yp_node_t base;
- yp_location_t opening_loc;
- struct yp_statements_node *statements;
- yp_location_t closing_loc;
-} yp_embedded_statements_node_t;
-
-// EmbeddedVariableNode
-typedef struct yp_embedded_variable_node {
- yp_node_t base;
- yp_location_t operator_loc;
- struct yp_node *variable;
-} yp_embedded_variable_node_t;
-
-// EnsureNode
-typedef struct yp_ensure_node {
- yp_node_t base;
- yp_location_t ensure_keyword_loc;
- struct yp_statements_node *statements;
- yp_location_t end_keyword_loc;
-} yp_ensure_node_t;
-
-// FalseNode
-typedef struct yp_false_node {
- yp_node_t base;
-} yp_false_node_t;
-
-// FindPatternNode
-typedef struct yp_find_pattern_node {
- yp_node_t base;
- struct yp_node *constant;
- struct yp_node *left;
- struct yp_node_list requireds;
- struct yp_node *right;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_find_pattern_node_t;
-
-// FlipFlopNode
-typedef struct yp_flip_flop_node {
- yp_node_t base;
- struct yp_node *left;
- struct yp_node *right;
- yp_location_t operator_loc;
-} yp_flip_flop_node_t;
-
-// FloatNode
-typedef struct yp_float_node {
- yp_node_t base;
-} yp_float_node_t;
-
-// ForNode
-typedef struct yp_for_node {
- yp_node_t base;
- struct yp_node *index;
- struct yp_node *collection;
- struct yp_statements_node *statements;
- yp_location_t for_keyword_loc;
- yp_location_t in_keyword_loc;
- yp_location_t do_keyword_loc;
- yp_location_t end_keyword_loc;
-} yp_for_node_t;
-
-// ForwardingArgumentsNode
-typedef struct yp_forwarding_arguments_node {
- yp_node_t base;
-} yp_forwarding_arguments_node_t;
-
-// ForwardingParameterNode
-typedef struct yp_forwarding_parameter_node {
- yp_node_t base;
-} yp_forwarding_parameter_node_t;
-
-// ForwardingSuperNode
-typedef struct yp_forwarding_super_node {
- yp_node_t base;
- struct yp_block_node *block;
-} yp_forwarding_super_node_t;
-
-// GlobalVariableOperatorAndWriteNode
-typedef struct yp_global_variable_operator_and_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_global_variable_operator_and_write_node_t;
-
-// GlobalVariableOperatorOrWriteNode
-typedef struct yp_global_variable_operator_or_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_global_variable_operator_or_write_node_t;
-
-// GlobalVariableOperatorWriteNode
-typedef struct yp_global_variable_operator_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t operator;
-} yp_global_variable_operator_write_node_t;
-
-// GlobalVariableReadNode
-typedef struct yp_global_variable_read_node {
- yp_node_t base;
-} yp_global_variable_read_node_t;
-
-// GlobalVariableWriteNode
-typedef struct yp_global_variable_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_global_variable_write_node_t;
-
-// HashNode
-typedef struct yp_hash_node {
- yp_node_t base;
- yp_location_t opening_loc;
- struct yp_node_list elements;
- yp_location_t closing_loc;
-} yp_hash_node_t;
-
-// HashPatternNode
-typedef struct yp_hash_pattern_node {
- yp_node_t base;
- struct yp_node *constant;
- struct yp_node_list assocs;
- struct yp_node *kwrest;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_hash_pattern_node_t;
-
-// IfNode
-typedef struct yp_if_node {
- yp_node_t base;
- yp_location_t if_keyword_loc;
- struct yp_node *predicate;
- struct yp_statements_node *statements;
- struct yp_node *consequent;
- yp_location_t end_keyword_loc;
-} yp_if_node_t;
-
-// ImaginaryNode
-typedef struct yp_imaginary_node {
- yp_node_t base;
- struct yp_node *numeric;
-} yp_imaginary_node_t;
-
-// InNode
-typedef struct yp_in_node {
- yp_node_t base;
- struct yp_node *pattern;
- struct yp_statements_node *statements;
- yp_location_t in_loc;
- yp_location_t then_loc;
-} yp_in_node_t;
-
-// InstanceVariableOperatorAndWriteNode
-typedef struct yp_instance_variable_operator_and_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_instance_variable_operator_and_write_node_t;
-
-// InstanceVariableOperatorOrWriteNode
-typedef struct yp_instance_variable_operator_or_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_instance_variable_operator_or_write_node_t;
-
-// InstanceVariableOperatorWriteNode
-typedef struct yp_instance_variable_operator_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t operator;
-} yp_instance_variable_operator_write_node_t;
-
-// InstanceVariableReadNode
-typedef struct yp_instance_variable_read_node {
- yp_node_t base;
-} yp_instance_variable_read_node_t;
-
-// InstanceVariableWriteNode
-typedef struct yp_instance_variable_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- struct yp_node *value;
- yp_location_t operator_loc;
-} yp_instance_variable_write_node_t;
-
-// IntegerNode
-typedef struct yp_integer_node {
- yp_node_t base;
-} yp_integer_node_t;
-
-// InterpolatedRegularExpressionNode
-typedef struct yp_interpolated_regular_expression_node {
- yp_node_t base;
- yp_location_t opening_loc;
- struct yp_node_list parts;
- yp_location_t closing_loc;
-} yp_interpolated_regular_expression_node_t;
-
-// InterpolatedStringNode
-typedef struct yp_interpolated_string_node {
- yp_node_t base;
- yp_location_t opening_loc;
- struct yp_node_list parts;
- yp_location_t closing_loc;
-} yp_interpolated_string_node_t;
-
-// InterpolatedSymbolNode
-typedef struct yp_interpolated_symbol_node {
- yp_node_t base;
- yp_location_t opening_loc;
- struct yp_node_list parts;
- yp_location_t closing_loc;
-} yp_interpolated_symbol_node_t;
-
-// InterpolatedXStringNode
-typedef struct yp_interpolated_x_string_node {
- yp_node_t base;
- yp_location_t opening_loc;
- struct yp_node_list parts;
- yp_location_t closing_loc;
-} yp_interpolated_x_string_node_t;
-
-// KeywordHashNode
-typedef struct yp_keyword_hash_node {
- yp_node_t base;
- struct yp_node_list elements;
-} yp_keyword_hash_node_t;
-
-// KeywordParameterNode
-typedef struct yp_keyword_parameter_node {
- yp_node_t base;
- yp_location_t name_loc;
- struct yp_node *value;
-} yp_keyword_parameter_node_t;
-
-// KeywordRestParameterNode
-typedef struct yp_keyword_rest_parameter_node {
- yp_node_t base;
- yp_location_t operator_loc;
- yp_location_t name_loc;
-} yp_keyword_rest_parameter_node_t;
-
-// LambdaNode
-typedef struct yp_lambda_node {
- yp_node_t base;
- yp_constant_id_list_t locals;
- yp_location_t opening_loc;
- struct yp_block_parameters_node *parameters;
- struct yp_node *statements;
-} yp_lambda_node_t;
-
-// LocalVariableOperatorAndWriteNode
-typedef struct yp_local_variable_operator_and_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t constant_id;
-} yp_local_variable_operator_and_write_node_t;
-
-// LocalVariableOperatorOrWriteNode
-typedef struct yp_local_variable_operator_or_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t constant_id;
-} yp_local_variable_operator_or_write_node_t;
-
-// LocalVariableOperatorWriteNode
-typedef struct yp_local_variable_operator_write_node {
- yp_node_t base;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_constant_id_t constant_id;
- yp_constant_id_t operator_id;
-} yp_local_variable_operator_write_node_t;
-
-// LocalVariableReadNode
-typedef struct yp_local_variable_read_node {
- yp_node_t base;
- yp_constant_id_t constant_id;
- uint32_t depth;
-} yp_local_variable_read_node_t;
-
-// LocalVariableWriteNode
-typedef struct yp_local_variable_write_node {
- yp_node_t base;
- yp_constant_id_t constant_id;
- uint32_t depth;
- struct yp_node *value;
- yp_location_t name_loc;
- yp_location_t operator_loc;
-} yp_local_variable_write_node_t;
-
-// MatchPredicateNode
-typedef struct yp_match_predicate_node {
- yp_node_t base;
- struct yp_node *value;
- struct yp_node *pattern;
- yp_location_t operator_loc;
-} yp_match_predicate_node_t;
-
-// MatchRequiredNode
-typedef struct yp_match_required_node {
- yp_node_t base;
- struct yp_node *value;
- struct yp_node *pattern;
- yp_location_t operator_loc;
-} yp_match_required_node_t;
-
-// MissingNode
-typedef struct yp_missing_node {
- yp_node_t base;
-} yp_missing_node_t;
-
-// ModuleNode
-typedef struct yp_module_node {
- yp_node_t base;
- yp_constant_id_list_t locals;
- yp_location_t module_keyword_loc;
- struct yp_node *constant_path;
- struct yp_node *statements;
- yp_location_t end_keyword_loc;
-} yp_module_node_t;
-
-// MultiWriteNode
-typedef struct yp_multi_write_node {
- yp_node_t base;
- struct yp_node_list targets;
- yp_location_t operator_loc;
- struct yp_node *value;
- yp_location_t lparen_loc;
- yp_location_t rparen_loc;
-} yp_multi_write_node_t;
-
-// NextNode
-typedef struct yp_next_node {
- yp_node_t base;
- struct yp_arguments_node *arguments;
- yp_location_t keyword_loc;
-} yp_next_node_t;
-
-// NilNode
-typedef struct yp_nil_node {
- yp_node_t base;
-} yp_nil_node_t;
-
-// NoKeywordsParameterNode
-typedef struct yp_no_keywords_parameter_node {
- yp_node_t base;
- yp_location_t operator_loc;
- yp_location_t keyword_loc;
-} yp_no_keywords_parameter_node_t;
-
-// NumberedReferenceReadNode
-typedef struct yp_numbered_reference_read_node {
- yp_node_t base;
-} yp_numbered_reference_read_node_t;
-
-// OptionalParameterNode
-typedef struct yp_optional_parameter_node {
- yp_node_t base;
- yp_constant_id_t constant_id;
- yp_location_t name_loc;
- yp_location_t operator_loc;
- struct yp_node *value;
-} yp_optional_parameter_node_t;
-
-// OrNode
-typedef struct yp_or_node {
- yp_node_t base;
- struct yp_node *left;
- struct yp_node *right;
- yp_location_t operator_loc;
-} yp_or_node_t;
-
-// ParametersNode
-typedef struct yp_parameters_node {
- yp_node_t base;
- struct yp_node_list requireds;
- struct yp_node_list optionals;
- struct yp_node_list posts;
- struct yp_rest_parameter_node *rest;
- struct yp_node_list keywords;
- struct yp_node *keyword_rest;
- struct yp_block_parameter_node *block;
-} yp_parameters_node_t;
-
-// ParenthesesNode
-typedef struct yp_parentheses_node {
- yp_node_t base;
- struct yp_node *statements;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_parentheses_node_t;
-
-// PinnedExpressionNode
-typedef struct yp_pinned_expression_node {
- yp_node_t base;
- struct yp_node *expression;
- yp_location_t operator_loc;
- yp_location_t lparen_loc;
- yp_location_t rparen_loc;
-} yp_pinned_expression_node_t;
-
-// PinnedVariableNode
-typedef struct yp_pinned_variable_node {
- yp_node_t base;
- struct yp_node *variable;
- yp_location_t operator_loc;
-} yp_pinned_variable_node_t;
-
-// PostExecutionNode
-typedef struct yp_post_execution_node {
- yp_node_t base;
- struct yp_statements_node *statements;
- yp_location_t keyword_loc;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_post_execution_node_t;
-
-// PreExecutionNode
-typedef struct yp_pre_execution_node {
- yp_node_t base;
- struct yp_statements_node *statements;
- yp_location_t keyword_loc;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_pre_execution_node_t;
-
-// ProgramNode
-typedef struct yp_program_node {
- yp_node_t base;
- yp_constant_id_list_t locals;
- struct yp_statements_node *statements;
-} yp_program_node_t;
-
-// RangeNode
-typedef struct yp_range_node {
- yp_node_t base;
- struct yp_node *left;
- struct yp_node *right;
- yp_location_t operator_loc;
-} yp_range_node_t;
-
-// RationalNode
-typedef struct yp_rational_node {
- yp_node_t base;
- struct yp_node *numeric;
-} yp_rational_node_t;
-
-// RedoNode
-typedef struct yp_redo_node {
- yp_node_t base;
-} yp_redo_node_t;
-
-// RegularExpressionNode
-typedef struct yp_regular_expression_node {
- yp_node_t base;
- yp_location_t opening_loc;
- yp_location_t content_loc;
- yp_location_t closing_loc;
- yp_string_t unescaped;
-} yp_regular_expression_node_t;
-
-// RequiredDestructuredParameterNode
-typedef struct yp_required_destructured_parameter_node {
- yp_node_t base;
- struct yp_node_list parameters;
- yp_location_t opening_loc;
- yp_location_t closing_loc;
-} yp_required_destructured_parameter_node_t;
-
-// RequiredParameterNode
-typedef struct yp_required_parameter_node {
- yp_node_t base;
- yp_constant_id_t constant_id;
-} yp_required_parameter_node_t;
-
-// RescueModifierNode
-typedef struct yp_rescue_modifier_node {
- yp_node_t base;
- struct yp_node *expression;
- yp_location_t keyword_loc;
- struct yp_node *rescue_expression;
-} yp_rescue_modifier_node_t;
-
-// RescueNode
-typedef struct yp_rescue_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- struct yp_node_list exceptions;
- yp_location_t operator_loc;
- struct yp_node *reference;
- struct yp_statements_node *statements;
- struct yp_rescue_node *consequent;
-} yp_rescue_node_t;
-
-// RestParameterNode
-typedef struct yp_rest_parameter_node {
- yp_node_t base;
- yp_location_t operator_loc;
- yp_location_t name_loc;
-} yp_rest_parameter_node_t;
-
-// RetryNode
-typedef struct yp_retry_node {
- yp_node_t base;
-} yp_retry_node_t;
-
-// ReturnNode
-typedef struct yp_return_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- struct yp_arguments_node *arguments;
-} yp_return_node_t;
-
-// SelfNode
-typedef struct yp_self_node {
- yp_node_t base;
-} yp_self_node_t;
-
-// SingletonClassNode
-typedef struct yp_singleton_class_node {
- yp_node_t base;
- yp_constant_id_list_t locals;
- yp_location_t class_keyword_loc;
- yp_location_t operator_loc;
- struct yp_node *expression;
- struct yp_node *statements;
- yp_location_t end_keyword_loc;
-} yp_singleton_class_node_t;
-
-// SourceEncodingNode
-typedef struct yp_source_encoding_node {
- yp_node_t base;
-} yp_source_encoding_node_t;
-
-// SourceFileNode
-typedef struct yp_source_file_node {
- yp_node_t base;
- yp_string_t filepath;
-} yp_source_file_node_t;
-
-// SourceLineNode
-typedef struct yp_source_line_node {
- yp_node_t base;
-} yp_source_line_node_t;
-
-// SplatNode
-typedef struct yp_splat_node {
- yp_node_t base;
- yp_location_t operator_loc;
- struct yp_node *expression;
-} yp_splat_node_t;
-
-// StatementsNode
-typedef struct yp_statements_node {
- yp_node_t base;
- struct yp_node_list body;
-} yp_statements_node_t;
-
-// StringConcatNode
-typedef struct yp_string_concat_node {
- yp_node_t base;
- struct yp_node *left;
- struct yp_node *right;
-} yp_string_concat_node_t;
-
-// StringNode
-typedef struct yp_string_node {
- yp_node_t base;
- yp_location_t opening_loc;
- yp_location_t content_loc;
- yp_location_t closing_loc;
- yp_string_t unescaped;
-} yp_string_node_t;
-
-// SuperNode
-typedef struct yp_super_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- yp_location_t lparen_loc;
- struct yp_arguments_node *arguments;
- yp_location_t rparen_loc;
- struct yp_block_node *block;
-} yp_super_node_t;
-
-// SymbolNode
-typedef struct yp_symbol_node {
- yp_node_t base;
- yp_location_t opening_loc;
- yp_location_t value_loc;
- yp_location_t closing_loc;
- yp_string_t unescaped;
-} yp_symbol_node_t;
-
-// TrueNode
-typedef struct yp_true_node {
- yp_node_t base;
-} yp_true_node_t;
-
-// UndefNode
-typedef struct yp_undef_node {
- yp_node_t base;
- struct yp_node_list names;
- yp_location_t keyword_loc;
-} yp_undef_node_t;
-
-// UnlessNode
-typedef struct yp_unless_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- struct yp_node *predicate;
- struct yp_statements_node *statements;
- struct yp_else_node *consequent;
- yp_location_t end_keyword_loc;
-} yp_unless_node_t;
-
-// UntilNode
-typedef struct yp_until_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- struct yp_node *predicate;
- struct yp_statements_node *statements;
-} yp_until_node_t;
-
-// WhenNode
-typedef struct yp_when_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- struct yp_node_list conditions;
- struct yp_statements_node *statements;
-} yp_when_node_t;
-
-// WhileNode
-typedef struct yp_while_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- struct yp_node *predicate;
- struct yp_statements_node *statements;
-} yp_while_node_t;
-
-// XStringNode
-typedef struct yp_x_string_node {
- yp_node_t base;
- yp_location_t opening_loc;
- yp_location_t content_loc;
- yp_location_t closing_loc;
- yp_string_t unescaped;
-} yp_x_string_node_t;
-
-// YieldNode
-typedef struct yp_yield_node {
- yp_node_t base;
- yp_location_t keyword_loc;
- yp_location_t lparen_loc;
- struct yp_arguments_node *arguments;
- yp_location_t rparen_loc;
-} yp_yield_node_t;
-
-// CallNodeFlags
-typedef enum {
- YP_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1 << 1,
- YP_CALL_NODE_FLAGS_VARIABLE_CALL = 1 << 2,
-} yp_call_node_flags_t;
-
-// LoopFlags
-typedef enum {
- YP_LOOP_FLAGS_BEGIN_MODIFIER = 1 << 1,
-} yp_loop_flags_t;
-
-// RangeFlags
-typedef enum {
- YP_RANGE_FLAGS_EXCLUDE_END = 1 << 1,
-} yp_range_flags_t;
-
-// RegularExpressionFlags
-typedef enum {
- YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1 << 1,
- YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 1 << 2,
- YP_REGULAR_EXPRESSION_FLAGS_EXTENDED = 1 << 3,
- YP_REGULAR_EXPRESSION_FLAGS_EUC_JP = 1 << 4,
- YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 1 << 5,
- YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 1 << 6,
- YP_REGULAR_EXPRESSION_FLAGS_UTF_8 = 1 << 7,
- YP_REGULAR_EXPRESSION_FLAGS_ONCE = 1 << 8,
-} yp_regular_expression_flags_t;
-
-#endif // YARP_AST_H