include/yarp/ast.h in yarp-0.11.0 vs include/yarp/ast.h in yarp-0.12.0
- old
+ new
@@ -206,294 +206,161 @@
size_t size;
size_t capacity;
} yp_node_list_t;
enum yp_node_type {
- YP_ALIAS_NODE = 1,
- YP_ALTERNATION_PATTERN_NODE = 2,
- YP_AND_NODE = 3,
- YP_ARGUMENTS_NODE = 4,
- YP_ARRAY_NODE = 5,
- YP_ARRAY_PATTERN_NODE = 6,
- YP_ASSOC_NODE = 7,
- YP_ASSOC_SPLAT_NODE = 8,
- YP_BACK_REFERENCE_READ_NODE = 9,
- YP_BEGIN_NODE = 10,
- YP_BLOCK_ARGUMENT_NODE = 11,
- YP_BLOCK_LOCAL_VARIABLE_NODE = 12,
- YP_BLOCK_NODE = 13,
- YP_BLOCK_PARAMETER_NODE = 14,
- YP_BLOCK_PARAMETERS_NODE = 15,
- YP_BREAK_NODE = 16,
- YP_CALL_AND_WRITE_NODE = 17,
- YP_CALL_NODE = 18,
- YP_CALL_OPERATOR_WRITE_NODE = 19,
- YP_CALL_OR_WRITE_NODE = 20,
- YP_CAPTURE_PATTERN_NODE = 21,
- YP_CASE_NODE = 22,
- YP_CLASS_NODE = 23,
- YP_CLASS_VARIABLE_AND_WRITE_NODE = 24,
- YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 25,
- YP_CLASS_VARIABLE_OR_WRITE_NODE = 26,
- YP_CLASS_VARIABLE_READ_NODE = 27,
- YP_CLASS_VARIABLE_TARGET_NODE = 28,
- YP_CLASS_VARIABLE_WRITE_NODE = 29,
- YP_CONSTANT_AND_WRITE_NODE = 30,
- YP_CONSTANT_OPERATOR_WRITE_NODE = 31,
- YP_CONSTANT_OR_WRITE_NODE = 32,
- YP_CONSTANT_PATH_AND_WRITE_NODE = 33,
- YP_CONSTANT_PATH_NODE = 34,
- YP_CONSTANT_PATH_OPERATOR_WRITE_NODE = 35,
- YP_CONSTANT_PATH_OR_WRITE_NODE = 36,
- YP_CONSTANT_PATH_TARGET_NODE = 37,
- YP_CONSTANT_PATH_WRITE_NODE = 38,
- YP_CONSTANT_READ_NODE = 39,
- YP_CONSTANT_TARGET_NODE = 40,
- YP_CONSTANT_WRITE_NODE = 41,
- YP_DEF_NODE = 42,
- YP_DEFINED_NODE = 43,
- YP_ELSE_NODE = 44,
- YP_EMBEDDED_STATEMENTS_NODE = 45,
- YP_EMBEDDED_VARIABLE_NODE = 46,
- YP_ENSURE_NODE = 47,
- YP_FALSE_NODE = 48,
- YP_FIND_PATTERN_NODE = 49,
- YP_FLIP_FLOP_NODE = 50,
- YP_FLOAT_NODE = 51,
- YP_FOR_NODE = 52,
- YP_FORWARDING_ARGUMENTS_NODE = 53,
- YP_FORWARDING_PARAMETER_NODE = 54,
- YP_FORWARDING_SUPER_NODE = 55,
- YP_GLOBAL_VARIABLE_AND_WRITE_NODE = 56,
- YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 57,
- YP_GLOBAL_VARIABLE_OR_WRITE_NODE = 58,
- YP_GLOBAL_VARIABLE_READ_NODE = 59,
- YP_GLOBAL_VARIABLE_TARGET_NODE = 60,
- YP_GLOBAL_VARIABLE_WRITE_NODE = 61,
- YP_HASH_NODE = 62,
- YP_HASH_PATTERN_NODE = 63,
- YP_IF_NODE = 64,
- YP_IMAGINARY_NODE = 65,
- YP_IN_NODE = 66,
- YP_INSTANCE_VARIABLE_AND_WRITE_NODE = 67,
- YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 68,
- YP_INSTANCE_VARIABLE_OR_WRITE_NODE = 69,
- YP_INSTANCE_VARIABLE_READ_NODE = 70,
- YP_INSTANCE_VARIABLE_TARGET_NODE = 71,
- YP_INSTANCE_VARIABLE_WRITE_NODE = 72,
- YP_INTEGER_NODE = 73,
- YP_INTERPOLATED_REGULAR_EXPRESSION_NODE = 74,
- YP_INTERPOLATED_STRING_NODE = 75,
- YP_INTERPOLATED_SYMBOL_NODE = 76,
- YP_INTERPOLATED_X_STRING_NODE = 77,
- YP_KEYWORD_HASH_NODE = 78,
- YP_KEYWORD_PARAMETER_NODE = 79,
- YP_KEYWORD_REST_PARAMETER_NODE = 80,
- YP_LAMBDA_NODE = 81,
- YP_LOCAL_VARIABLE_AND_WRITE_NODE = 82,
- YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 83,
- YP_LOCAL_VARIABLE_OR_WRITE_NODE = 84,
- YP_LOCAL_VARIABLE_READ_NODE = 85,
- YP_LOCAL_VARIABLE_TARGET_NODE = 86,
- YP_LOCAL_VARIABLE_WRITE_NODE = 87,
- YP_MATCH_PREDICATE_NODE = 88,
- YP_MATCH_REQUIRED_NODE = 89,
- YP_MISSING_NODE = 90,
- YP_MODULE_NODE = 91,
- YP_MULTI_TARGET_NODE = 92,
- YP_MULTI_WRITE_NODE = 93,
- YP_NEXT_NODE = 94,
- YP_NIL_NODE = 95,
- YP_NO_KEYWORDS_PARAMETER_NODE = 96,
- YP_NUMBERED_REFERENCE_READ_NODE = 97,
- YP_OPTIONAL_PARAMETER_NODE = 98,
- YP_OR_NODE = 99,
- YP_PARAMETERS_NODE = 100,
- YP_PARENTHESES_NODE = 101,
- YP_PINNED_EXPRESSION_NODE = 102,
- YP_PINNED_VARIABLE_NODE = 103,
- YP_POST_EXECUTION_NODE = 104,
- YP_PRE_EXECUTION_NODE = 105,
- YP_PROGRAM_NODE = 106,
- YP_RANGE_NODE = 107,
- YP_RATIONAL_NODE = 108,
- YP_REDO_NODE = 109,
- YP_REGULAR_EXPRESSION_NODE = 110,
- YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 111,
- YP_REQUIRED_PARAMETER_NODE = 112,
- YP_RESCUE_MODIFIER_NODE = 113,
- YP_RESCUE_NODE = 114,
- YP_REST_PARAMETER_NODE = 115,
- YP_RETRY_NODE = 116,
- YP_RETURN_NODE = 117,
- YP_SELF_NODE = 118,
- YP_SINGLETON_CLASS_NODE = 119,
- YP_SOURCE_ENCODING_NODE = 120,
- YP_SOURCE_FILE_NODE = 121,
- YP_SOURCE_LINE_NODE = 122,
- YP_SPLAT_NODE = 123,
- YP_STATEMENTS_NODE = 124,
- YP_STRING_CONCAT_NODE = 125,
- YP_STRING_NODE = 126,
- YP_SUPER_NODE = 127,
- YP_SYMBOL_NODE = 128,
- YP_TRUE_NODE = 129,
- YP_UNDEF_NODE = 130,
- YP_UNLESS_NODE = 131,
- YP_UNTIL_NODE = 132,
- YP_WHEN_NODE = 133,
- YP_WHILE_NODE = 134,
- YP_X_STRING_NODE = 135,
- YP_YIELD_NODE = 136,
+ YP_ALIAS_GLOBAL_VARIABLE_NODE = 1,
+ YP_ALIAS_METHOD_NODE = 2,
+ YP_ALTERNATION_PATTERN_NODE = 3,
+ YP_AND_NODE = 4,
+ YP_ARGUMENTS_NODE = 5,
+ YP_ARRAY_NODE = 6,
+ YP_ARRAY_PATTERN_NODE = 7,
+ YP_ASSOC_NODE = 8,
+ YP_ASSOC_SPLAT_NODE = 9,
+ YP_BACK_REFERENCE_READ_NODE = 10,
+ YP_BEGIN_NODE = 11,
+ YP_BLOCK_ARGUMENT_NODE = 12,
+ YP_BLOCK_LOCAL_VARIABLE_NODE = 13,
+ YP_BLOCK_NODE = 14,
+ YP_BLOCK_PARAMETER_NODE = 15,
+ YP_BLOCK_PARAMETERS_NODE = 16,
+ YP_BREAK_NODE = 17,
+ YP_CALL_AND_WRITE_NODE = 18,
+ YP_CALL_NODE = 19,
+ YP_CALL_OPERATOR_WRITE_NODE = 20,
+ YP_CALL_OR_WRITE_NODE = 21,
+ YP_CAPTURE_PATTERN_NODE = 22,
+ YP_CASE_NODE = 23,
+ YP_CLASS_NODE = 24,
+ YP_CLASS_VARIABLE_AND_WRITE_NODE = 25,
+ YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 26,
+ YP_CLASS_VARIABLE_OR_WRITE_NODE = 27,
+ YP_CLASS_VARIABLE_READ_NODE = 28,
+ YP_CLASS_VARIABLE_TARGET_NODE = 29,
+ YP_CLASS_VARIABLE_WRITE_NODE = 30,
+ YP_CONSTANT_AND_WRITE_NODE = 31,
+ YP_CONSTANT_OPERATOR_WRITE_NODE = 32,
+ YP_CONSTANT_OR_WRITE_NODE = 33,
+ YP_CONSTANT_PATH_AND_WRITE_NODE = 34,
+ YP_CONSTANT_PATH_NODE = 35,
+ YP_CONSTANT_PATH_OPERATOR_WRITE_NODE = 36,
+ YP_CONSTANT_PATH_OR_WRITE_NODE = 37,
+ YP_CONSTANT_PATH_TARGET_NODE = 38,
+ YP_CONSTANT_PATH_WRITE_NODE = 39,
+ YP_CONSTANT_READ_NODE = 40,
+ YP_CONSTANT_TARGET_NODE = 41,
+ YP_CONSTANT_WRITE_NODE = 42,
+ YP_DEF_NODE = 43,
+ YP_DEFINED_NODE = 44,
+ YP_ELSE_NODE = 45,
+ YP_EMBEDDED_STATEMENTS_NODE = 46,
+ YP_EMBEDDED_VARIABLE_NODE = 47,
+ YP_ENSURE_NODE = 48,
+ YP_FALSE_NODE = 49,
+ YP_FIND_PATTERN_NODE = 50,
+ YP_FLIP_FLOP_NODE = 51,
+ YP_FLOAT_NODE = 52,
+ YP_FOR_NODE = 53,
+ YP_FORWARDING_ARGUMENTS_NODE = 54,
+ YP_FORWARDING_PARAMETER_NODE = 55,
+ YP_FORWARDING_SUPER_NODE = 56,
+ YP_GLOBAL_VARIABLE_AND_WRITE_NODE = 57,
+ YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 58,
+ YP_GLOBAL_VARIABLE_OR_WRITE_NODE = 59,
+ YP_GLOBAL_VARIABLE_READ_NODE = 60,
+ YP_GLOBAL_VARIABLE_TARGET_NODE = 61,
+ YP_GLOBAL_VARIABLE_WRITE_NODE = 62,
+ YP_HASH_NODE = 63,
+ YP_HASH_PATTERN_NODE = 64,
+ YP_IF_NODE = 65,
+ YP_IMAGINARY_NODE = 66,
+ YP_IMPLICIT_NODE = 67,
+ YP_IN_NODE = 68,
+ YP_INSTANCE_VARIABLE_AND_WRITE_NODE = 69,
+ YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 70,
+ YP_INSTANCE_VARIABLE_OR_WRITE_NODE = 71,
+ YP_INSTANCE_VARIABLE_READ_NODE = 72,
+ YP_INSTANCE_VARIABLE_TARGET_NODE = 73,
+ YP_INSTANCE_VARIABLE_WRITE_NODE = 74,
+ YP_INTEGER_NODE = 75,
+ YP_INTERPOLATED_MATCH_LAST_LINE_NODE = 76,
+ YP_INTERPOLATED_REGULAR_EXPRESSION_NODE = 77,
+ YP_INTERPOLATED_STRING_NODE = 78,
+ YP_INTERPOLATED_SYMBOL_NODE = 79,
+ YP_INTERPOLATED_X_STRING_NODE = 80,
+ YP_KEYWORD_HASH_NODE = 81,
+ YP_KEYWORD_PARAMETER_NODE = 82,
+ YP_KEYWORD_REST_PARAMETER_NODE = 83,
+ YP_LAMBDA_NODE = 84,
+ YP_LOCAL_VARIABLE_AND_WRITE_NODE = 85,
+ YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 86,
+ YP_LOCAL_VARIABLE_OR_WRITE_NODE = 87,
+ YP_LOCAL_VARIABLE_READ_NODE = 88,
+ YP_LOCAL_VARIABLE_TARGET_NODE = 89,
+ YP_LOCAL_VARIABLE_WRITE_NODE = 90,
+ YP_MATCH_LAST_LINE_NODE = 91,
+ YP_MATCH_PREDICATE_NODE = 92,
+ YP_MATCH_REQUIRED_NODE = 93,
+ YP_MATCH_WRITE_NODE = 94,
+ YP_MISSING_NODE = 95,
+ YP_MODULE_NODE = 96,
+ YP_MULTI_TARGET_NODE = 97,
+ YP_MULTI_WRITE_NODE = 98,
+ YP_NEXT_NODE = 99,
+ YP_NIL_NODE = 100,
+ YP_NO_KEYWORDS_PARAMETER_NODE = 101,
+ YP_NUMBERED_REFERENCE_READ_NODE = 102,
+ YP_OPTIONAL_PARAMETER_NODE = 103,
+ YP_OR_NODE = 104,
+ YP_PARAMETERS_NODE = 105,
+ YP_PARENTHESES_NODE = 106,
+ YP_PINNED_EXPRESSION_NODE = 107,
+ YP_PINNED_VARIABLE_NODE = 108,
+ YP_POST_EXECUTION_NODE = 109,
+ YP_PRE_EXECUTION_NODE = 110,
+ YP_PROGRAM_NODE = 111,
+ YP_RANGE_NODE = 112,
+ YP_RATIONAL_NODE = 113,
+ YP_REDO_NODE = 114,
+ YP_REGULAR_EXPRESSION_NODE = 115,
+ YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 116,
+ YP_REQUIRED_PARAMETER_NODE = 117,
+ YP_RESCUE_MODIFIER_NODE = 118,
+ YP_RESCUE_NODE = 119,
+ YP_REST_PARAMETER_NODE = 120,
+ YP_RETRY_NODE = 121,
+ YP_RETURN_NODE = 122,
+ YP_SELF_NODE = 123,
+ YP_SINGLETON_CLASS_NODE = 124,
+ YP_SOURCE_ENCODING_NODE = 125,
+ YP_SOURCE_FILE_NODE = 126,
+ YP_SOURCE_LINE_NODE = 127,
+ YP_SPLAT_NODE = 128,
+ YP_STATEMENTS_NODE = 129,
+ YP_STRING_CONCAT_NODE = 130,
+ YP_STRING_NODE = 131,
+ YP_SUPER_NODE = 132,
+ YP_SYMBOL_NODE = 133,
+ YP_TRUE_NODE = 134,
+ YP_UNDEF_NODE = 135,
+ YP_UNLESS_NODE = 136,
+ YP_UNTIL_NODE = 137,
+ YP_WHEN_NODE = 138,
+ YP_WHILE_NODE = 139,
+ YP_X_STRING_NODE = 140,
+ YP_YIELD_NODE = 141,
YP_SCOPE_NODE
};
-// Deprecated aliases
-#define YP_NODE_SCOPE_NODE YP_SCOPE_NODE
-#define YP_NODE_ALIAS_NODE YP_ALIAS_NODE
-#define YP_NODE_ALTERNATION_PATTERN_NODE YP_ALTERNATION_PATTERN_NODE
-#define YP_NODE_AND_NODE YP_AND_NODE
-#define YP_NODE_ARGUMENTS_NODE YP_ARGUMENTS_NODE
-#define YP_NODE_ARRAY_NODE YP_ARRAY_NODE
-#define YP_NODE_ARRAY_PATTERN_NODE YP_ARRAY_PATTERN_NODE
-#define YP_NODE_ASSOC_NODE YP_ASSOC_NODE
-#define YP_NODE_ASSOC_SPLAT_NODE YP_ASSOC_SPLAT_NODE
-#define YP_NODE_BACK_REFERENCE_READ_NODE YP_BACK_REFERENCE_READ_NODE
-#define YP_NODE_BEGIN_NODE YP_BEGIN_NODE
-#define YP_NODE_BLOCK_ARGUMENT_NODE YP_BLOCK_ARGUMENT_NODE
-#define YP_NODE_BLOCK_LOCAL_VARIABLE_NODE YP_BLOCK_LOCAL_VARIABLE_NODE
-#define YP_NODE_BLOCK_NODE YP_BLOCK_NODE
-#define YP_NODE_BLOCK_PARAMETER_NODE YP_BLOCK_PARAMETER_NODE
-#define YP_NODE_BLOCK_PARAMETERS_NODE YP_BLOCK_PARAMETERS_NODE
-#define YP_NODE_BREAK_NODE YP_BREAK_NODE
-#define YP_NODE_CALL_AND_WRITE_NODE YP_CALL_AND_WRITE_NODE
-#define YP_NODE_CALL_NODE YP_CALL_NODE
-#define YP_NODE_CALL_OPERATOR_WRITE_NODE YP_CALL_OPERATOR_WRITE_NODE
-#define YP_NODE_CALL_OR_WRITE_NODE YP_CALL_OR_WRITE_NODE
-#define YP_NODE_CAPTURE_PATTERN_NODE YP_CAPTURE_PATTERN_NODE
-#define YP_NODE_CASE_NODE YP_CASE_NODE
-#define YP_NODE_CLASS_NODE YP_CLASS_NODE
-#define YP_NODE_CLASS_VARIABLE_AND_WRITE_NODE YP_CLASS_VARIABLE_AND_WRITE_NODE
-#define YP_NODE_CLASS_VARIABLE_OPERATOR_WRITE_NODE YP_CLASS_VARIABLE_OPERATOR_WRITE_NODE
-#define YP_NODE_CLASS_VARIABLE_OR_WRITE_NODE YP_CLASS_VARIABLE_OR_WRITE_NODE
-#define YP_NODE_CLASS_VARIABLE_READ_NODE YP_CLASS_VARIABLE_READ_NODE
-#define YP_NODE_CLASS_VARIABLE_TARGET_NODE YP_CLASS_VARIABLE_TARGET_NODE
-#define YP_NODE_CLASS_VARIABLE_WRITE_NODE YP_CLASS_VARIABLE_WRITE_NODE
-#define YP_NODE_CONSTANT_AND_WRITE_NODE YP_CONSTANT_AND_WRITE_NODE
-#define YP_NODE_CONSTANT_OPERATOR_WRITE_NODE YP_CONSTANT_OPERATOR_WRITE_NODE
-#define YP_NODE_CONSTANT_OR_WRITE_NODE YP_CONSTANT_OR_WRITE_NODE
-#define YP_NODE_CONSTANT_PATH_AND_WRITE_NODE YP_CONSTANT_PATH_AND_WRITE_NODE
-#define YP_NODE_CONSTANT_PATH_NODE YP_CONSTANT_PATH_NODE
-#define YP_NODE_CONSTANT_PATH_OPERATOR_WRITE_NODE YP_CONSTANT_PATH_OPERATOR_WRITE_NODE
-#define YP_NODE_CONSTANT_PATH_OR_WRITE_NODE YP_CONSTANT_PATH_OR_WRITE_NODE
-#define YP_NODE_CONSTANT_PATH_TARGET_NODE YP_CONSTANT_PATH_TARGET_NODE
-#define YP_NODE_CONSTANT_PATH_WRITE_NODE YP_CONSTANT_PATH_WRITE_NODE
-#define YP_NODE_CONSTANT_READ_NODE YP_CONSTANT_READ_NODE
-#define YP_NODE_CONSTANT_TARGET_NODE YP_CONSTANT_TARGET_NODE
-#define YP_NODE_CONSTANT_WRITE_NODE YP_CONSTANT_WRITE_NODE
-#define YP_NODE_DEF_NODE YP_DEF_NODE
-#define YP_NODE_DEFINED_NODE YP_DEFINED_NODE
-#define YP_NODE_ELSE_NODE YP_ELSE_NODE
-#define YP_NODE_EMBEDDED_STATEMENTS_NODE YP_EMBEDDED_STATEMENTS_NODE
-#define YP_NODE_EMBEDDED_VARIABLE_NODE YP_EMBEDDED_VARIABLE_NODE
-#define YP_NODE_ENSURE_NODE YP_ENSURE_NODE
-#define YP_NODE_FALSE_NODE YP_FALSE_NODE
-#define YP_NODE_FIND_PATTERN_NODE YP_FIND_PATTERN_NODE
-#define YP_NODE_FLIP_FLOP_NODE YP_FLIP_FLOP_NODE
-#define YP_NODE_FLOAT_NODE YP_FLOAT_NODE
-#define YP_NODE_FOR_NODE YP_FOR_NODE
-#define YP_NODE_FORWARDING_ARGUMENTS_NODE YP_FORWARDING_ARGUMENTS_NODE
-#define YP_NODE_FORWARDING_PARAMETER_NODE YP_FORWARDING_PARAMETER_NODE
-#define YP_NODE_FORWARDING_SUPER_NODE YP_FORWARDING_SUPER_NODE
-#define YP_NODE_GLOBAL_VARIABLE_AND_WRITE_NODE YP_GLOBAL_VARIABLE_AND_WRITE_NODE
-#define YP_NODE_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE YP_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
-#define YP_NODE_GLOBAL_VARIABLE_OR_WRITE_NODE YP_GLOBAL_VARIABLE_OR_WRITE_NODE
-#define YP_NODE_GLOBAL_VARIABLE_READ_NODE YP_GLOBAL_VARIABLE_READ_NODE
-#define YP_NODE_GLOBAL_VARIABLE_TARGET_NODE YP_GLOBAL_VARIABLE_TARGET_NODE
-#define YP_NODE_GLOBAL_VARIABLE_WRITE_NODE YP_GLOBAL_VARIABLE_WRITE_NODE
-#define YP_NODE_HASH_NODE YP_HASH_NODE
-#define YP_NODE_HASH_PATTERN_NODE YP_HASH_PATTERN_NODE
-#define YP_NODE_IF_NODE YP_IF_NODE
-#define YP_NODE_IMAGINARY_NODE YP_IMAGINARY_NODE
-#define YP_NODE_IN_NODE YP_IN_NODE
-#define YP_NODE_INSTANCE_VARIABLE_AND_WRITE_NODE YP_INSTANCE_VARIABLE_AND_WRITE_NODE
-#define YP_NODE_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE YP_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
-#define YP_NODE_INSTANCE_VARIABLE_OR_WRITE_NODE YP_INSTANCE_VARIABLE_OR_WRITE_NODE
-#define YP_NODE_INSTANCE_VARIABLE_READ_NODE YP_INSTANCE_VARIABLE_READ_NODE
-#define YP_NODE_INSTANCE_VARIABLE_TARGET_NODE YP_INSTANCE_VARIABLE_TARGET_NODE
-#define YP_NODE_INSTANCE_VARIABLE_WRITE_NODE YP_INSTANCE_VARIABLE_WRITE_NODE
-#define YP_NODE_INTEGER_NODE YP_INTEGER_NODE
-#define YP_NODE_INTERPOLATED_REGULAR_EXPRESSION_NODE YP_INTERPOLATED_REGULAR_EXPRESSION_NODE
-#define YP_NODE_INTERPOLATED_STRING_NODE YP_INTERPOLATED_STRING_NODE
-#define YP_NODE_INTERPOLATED_SYMBOL_NODE YP_INTERPOLATED_SYMBOL_NODE
-#define YP_NODE_INTERPOLATED_X_STRING_NODE YP_INTERPOLATED_X_STRING_NODE
-#define YP_NODE_KEYWORD_HASH_NODE YP_KEYWORD_HASH_NODE
-#define YP_NODE_KEYWORD_PARAMETER_NODE YP_KEYWORD_PARAMETER_NODE
-#define YP_NODE_KEYWORD_REST_PARAMETER_NODE YP_KEYWORD_REST_PARAMETER_NODE
-#define YP_NODE_LAMBDA_NODE YP_LAMBDA_NODE
-#define YP_NODE_LOCAL_VARIABLE_AND_WRITE_NODE YP_LOCAL_VARIABLE_AND_WRITE_NODE
-#define YP_NODE_LOCAL_VARIABLE_OPERATOR_WRITE_NODE YP_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
-#define YP_NODE_LOCAL_VARIABLE_OR_WRITE_NODE YP_LOCAL_VARIABLE_OR_WRITE_NODE
-#define YP_NODE_LOCAL_VARIABLE_READ_NODE YP_LOCAL_VARIABLE_READ_NODE
-#define YP_NODE_LOCAL_VARIABLE_TARGET_NODE YP_LOCAL_VARIABLE_TARGET_NODE
-#define YP_NODE_LOCAL_VARIABLE_WRITE_NODE YP_LOCAL_VARIABLE_WRITE_NODE
-#define YP_NODE_MATCH_PREDICATE_NODE YP_MATCH_PREDICATE_NODE
-#define YP_NODE_MATCH_REQUIRED_NODE YP_MATCH_REQUIRED_NODE
-#define YP_NODE_MISSING_NODE YP_MISSING_NODE
-#define YP_NODE_MODULE_NODE YP_MODULE_NODE
-#define YP_NODE_MULTI_TARGET_NODE YP_MULTI_TARGET_NODE
-#define YP_NODE_MULTI_WRITE_NODE YP_MULTI_WRITE_NODE
-#define YP_NODE_NEXT_NODE YP_NEXT_NODE
-#define YP_NODE_NIL_NODE YP_NIL_NODE
-#define YP_NODE_NO_KEYWORDS_PARAMETER_NODE YP_NO_KEYWORDS_PARAMETER_NODE
-#define YP_NODE_NUMBERED_REFERENCE_READ_NODE YP_NUMBERED_REFERENCE_READ_NODE
-#define YP_NODE_OPTIONAL_PARAMETER_NODE YP_OPTIONAL_PARAMETER_NODE
-#define YP_NODE_OR_NODE YP_OR_NODE
-#define YP_NODE_PARAMETERS_NODE YP_PARAMETERS_NODE
-#define YP_NODE_PARENTHESES_NODE YP_PARENTHESES_NODE
-#define YP_NODE_PINNED_EXPRESSION_NODE YP_PINNED_EXPRESSION_NODE
-#define YP_NODE_PINNED_VARIABLE_NODE YP_PINNED_VARIABLE_NODE
-#define YP_NODE_POST_EXECUTION_NODE YP_POST_EXECUTION_NODE
-#define YP_NODE_PRE_EXECUTION_NODE YP_PRE_EXECUTION_NODE
-#define YP_NODE_PROGRAM_NODE YP_PROGRAM_NODE
-#define YP_NODE_RANGE_NODE YP_RANGE_NODE
-#define YP_NODE_RATIONAL_NODE YP_RATIONAL_NODE
-#define YP_NODE_REDO_NODE YP_REDO_NODE
-#define YP_NODE_REGULAR_EXPRESSION_NODE YP_REGULAR_EXPRESSION_NODE
-#define YP_NODE_REQUIRED_DESTRUCTURED_PARAMETER_NODE YP_REQUIRED_DESTRUCTURED_PARAMETER_NODE
-#define YP_NODE_REQUIRED_PARAMETER_NODE YP_REQUIRED_PARAMETER_NODE
-#define YP_NODE_RESCUE_MODIFIER_NODE YP_RESCUE_MODIFIER_NODE
-#define YP_NODE_RESCUE_NODE YP_RESCUE_NODE
-#define YP_NODE_REST_PARAMETER_NODE YP_REST_PARAMETER_NODE
-#define YP_NODE_RETRY_NODE YP_RETRY_NODE
-#define YP_NODE_RETURN_NODE YP_RETURN_NODE
-#define YP_NODE_SELF_NODE YP_SELF_NODE
-#define YP_NODE_SINGLETON_CLASS_NODE YP_SINGLETON_CLASS_NODE
-#define YP_NODE_SOURCE_ENCODING_NODE YP_SOURCE_ENCODING_NODE
-#define YP_NODE_SOURCE_FILE_NODE YP_SOURCE_FILE_NODE
-#define YP_NODE_SOURCE_LINE_NODE YP_SOURCE_LINE_NODE
-#define YP_NODE_SPLAT_NODE YP_SPLAT_NODE
-#define YP_NODE_STATEMENTS_NODE YP_STATEMENTS_NODE
-#define YP_NODE_STRING_CONCAT_NODE YP_STRING_CONCAT_NODE
-#define YP_NODE_STRING_NODE YP_STRING_NODE
-#define YP_NODE_SUPER_NODE YP_SUPER_NODE
-#define YP_NODE_SYMBOL_NODE YP_SYMBOL_NODE
-#define YP_NODE_TRUE_NODE YP_TRUE_NODE
-#define YP_NODE_UNDEF_NODE YP_UNDEF_NODE
-#define YP_NODE_UNLESS_NODE YP_UNLESS_NODE
-#define YP_NODE_UNTIL_NODE YP_UNTIL_NODE
-#define YP_NODE_WHEN_NODE YP_WHEN_NODE
-#define YP_NODE_WHILE_NODE YP_WHILE_NODE
-#define YP_NODE_X_STRING_NODE YP_X_STRING_NODE
-#define YP_NODE_YIELD_NODE YP_YIELD_NODE
-
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;
+static const yp_node_flags_t YP_NODE_FLAG_STATIC_LITERAL = 0x2;
// 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))
@@ -509,20 +376,30 @@
// 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
+// AliasGlobalVariableNode
//
-// Type: YP_ALIAS_NODE
-typedef struct yp_alias_node {
+// Type: YP_ALIAS_GLOBAL_VARIABLE_NODE
+typedef struct yp_alias_global_variable_node {
yp_node_t base;
struct yp_node *new_name;
struct yp_node *old_name;
yp_location_t keyword_loc;
-} yp_alias_node_t;
+} yp_alias_global_variable_node_t;
+// AliasMethodNode
+//
+// Type: YP_ALIAS_METHOD_NODE
+typedef struct yp_alias_method_node {
+ yp_node_t base;
+ struct yp_node *new_name;
+ struct yp_node *old_name;
+ yp_location_t keyword_loc;
+} yp_alias_method_node_t;
+
// AlternationPatternNode
//
// Type: YP_ALTERNATION_PATTERN_NODE
typedef struct yp_alternation_pattern_node {
yp_node_t base;
@@ -1214,10 +1091,18 @@
typedef struct yp_imaginary_node {
yp_node_t base;
struct yp_node *numeric;
} yp_imaginary_node_t;
+// ImplicitNode
+//
+// Type: YP_IMPLICIT_NODE
+typedef struct yp_implicit_node {
+ yp_node_t base;
+ struct yp_node *value;
+} yp_implicit_node_t;
+
// InNode
//
// Type: YP_IN_NODE
typedef struct yp_in_node {
yp_node_t base;
@@ -1289,21 +1174,45 @@
} yp_instance_variable_write_node_t;
// IntegerNode
//
// Type: YP_INTEGER_NODE
+// Flags:
+// YP_INTEGER_BASE_FLAGS_BINARY
+// YP_INTEGER_BASE_FLAGS_OCTAL
+// YP_INTEGER_BASE_FLAGS_DECIMAL
+// YP_INTEGER_BASE_FLAGS_HEXADECIMAL
typedef struct yp_integer_node {
yp_node_t base;
} yp_integer_node_t;
+// InterpolatedMatchLastLineNode
+//
+// Type: YP_INTERPOLATED_MATCH_LAST_LINE_NODE
+// Flags:
+// YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
+// YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
+// YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
+// YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
+// YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
+// YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
+// YP_REGULAR_EXPRESSION_FLAGS_UTF_8
+// YP_REGULAR_EXPRESSION_FLAGS_ONCE
+typedef struct yp_interpolated_match_last_line_node {
+ yp_node_t base;
+ yp_location_t opening_loc;
+ struct yp_node_list parts;
+ yp_location_t closing_loc;
+} yp_interpolated_match_last_line_node_t;
+
// InterpolatedRegularExpressionNode
//
// Type: YP_INTERPOLATED_REGULAR_EXPRESSION_NODE
// Flags:
// YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
-// YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
// YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
+// YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
// YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
// YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
// YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
// YP_REGULAR_EXPRESSION_FLAGS_UTF_8
// YP_REGULAR_EXPRESSION_FLAGS_ONCE
@@ -1450,10 +1359,30 @@
yp_location_t name_loc;
struct yp_node *value;
yp_location_t operator_loc;
} yp_local_variable_write_node_t;
+// MatchLastLineNode
+//
+// Type: YP_MATCH_LAST_LINE_NODE
+// Flags:
+// YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
+// YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
+// YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
+// YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
+// YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
+// YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
+// YP_REGULAR_EXPRESSION_FLAGS_UTF_8
+// YP_REGULAR_EXPRESSION_FLAGS_ONCE
+typedef struct yp_match_last_line_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_match_last_line_node_t;
+
// MatchPredicateNode
//
// Type: YP_MATCH_PREDICATE_NODE
typedef struct yp_match_predicate_node {
yp_node_t base;
@@ -1470,10 +1399,19 @@
struct yp_node *value;
struct yp_node *pattern;
yp_location_t operator_loc;
} yp_match_required_node_t;
+// MatchWriteNode
+//
+// Type: YP_MATCH_WRITE_NODE
+typedef struct yp_match_write_node {
+ yp_node_t base;
+ struct yp_call_node *call;
+ yp_constant_id_list_t locals;
+} yp_match_write_node_t;
+
// MissingNode
//
// Type: YP_MISSING_NODE
typedef struct yp_missing_node {
yp_node_t base;
@@ -1573,12 +1511,12 @@
// Type: YP_PARAMETERS_NODE
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 posts;
struct yp_node_list keywords;
struct yp_node *keyword_rest;
struct yp_block_parameter_node *block;
} yp_parameters_node_t;
@@ -1673,12 +1611,12 @@
// RegularExpressionNode
//
// Type: YP_REGULAR_EXPRESSION_NODE
// Flags:
// YP_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
-// YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
// YP_REGULAR_EXPRESSION_FLAGS_EXTENDED
+// YP_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
// YP_REGULAR_EXPRESSION_FLAGS_EUC_JP
// YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
// YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
// YP_REGULAR_EXPRESSION_FLAGS_UTF_8
// YP_REGULAR_EXPRESSION_FLAGS_ONCE
@@ -1826,10 +1764,12 @@
} yp_string_concat_node_t;
// StringNode
//
// Type: YP_STRING_NODE
+// Flags:
+// YP_STRING_FLAGS_FROZEN
typedef struct yp_string_node {
yp_node_t base;
yp_location_t opening_loc;
yp_location_t content_loc;
yp_location_t closing_loc;
@@ -1945,32 +1885,45 @@
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_SAFE_NAVIGATION = 1 << 2,
+ YP_CALL_NODE_FLAGS_VARIABLE_CALL = 1 << 3,
} yp_call_node_flags_t;
+// IntegerBaseFlags
+typedef enum {
+ YP_INTEGER_BASE_FLAGS_BINARY = 1 << 2,
+ YP_INTEGER_BASE_FLAGS_OCTAL = 1 << 3,
+ YP_INTEGER_BASE_FLAGS_DECIMAL = 1 << 4,
+ YP_INTEGER_BASE_FLAGS_HEXADECIMAL = 1 << 5,
+} yp_integer_base_flags_t;
+
// LoopFlags
typedef enum {
- YP_LOOP_FLAGS_BEGIN_MODIFIER = 1 << 1,
+ YP_LOOP_FLAGS_BEGIN_MODIFIER = 1 << 2,
} yp_loop_flags_t;
// RangeFlags
typedef enum {
- YP_RANGE_FLAGS_EXCLUDE_END = 1 << 1,
+ YP_RANGE_FLAGS_EXCLUDE_END = 1 << 2,
} 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_IGNORE_CASE = 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_MULTI_LINE = 1 << 4,
+ YP_REGULAR_EXPRESSION_FLAGS_EUC_JP = 1 << 5,
+ YP_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 1 << 6,
+ YP_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 1 << 7,
+ YP_REGULAR_EXPRESSION_FLAGS_UTF_8 = 1 << 8,
+ YP_REGULAR_EXPRESSION_FLAGS_ONCE = 1 << 9,
} yp_regular_expression_flags_t;
+
+// StringFlags
+typedef enum {
+ YP_STRING_FLAGS_FROZEN = 1 << 2,
+} yp_string_flags_t;
#endif // YARP_AST_H