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