/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define YYBISON 30802 /* Bison version string. */ #define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 2 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse cppyyparse #define yylex cppyylex #define yyerror cppyyerror #define yydebug cppyydebug #define yynerrs cppyynerrs /* First part of user prologue. */ #line 7 "dtool/src/cppparser/cppBison.yxx" #include "cppBisonDefs.h" #include "cppParser.h" #include "cppClosureType.h" #include "cppExpression.h" #include "cppSimpleType.h" #include "cppExtensionType.h" #include "cppStructType.h" #include "cppEnumType.h" #include "cppFunctionType.h" #include "cppTBDType.h" #include "cppMakeProperty.h" #include "cppMakeSeq.h" #include "cppParameterList.h" #include "cppInstance.h" #include "cppClassTemplateParameter.h" #include "cppTemplateParameterList.h" #include "cppInstanceIdentifier.h" #include "cppTypedefType.h" #include "cppTypeDeclaration.h" #include "cppVisibility.h" #include "cppIdentifier.h" #include "cppScope.h" #include "cppTemplateScope.h" #include "cppNamespace.h" #include "cppUsing.h" using std::stringstream; using std::string; //////////////////////////////////////////////////////////////////// // Defining the interface to the parser. //////////////////////////////////////////////////////////////////// CPPScope *current_scope = nullptr; CPPScope *global_scope = nullptr; CPPPreprocessor *current_lexer = nullptr; static CPPStructType *current_struct = nullptr; static CPPEnumType *current_enum = nullptr; static int current_storage_class = 0; static CPPType *current_type = nullptr; static CPPExpression *current_expr = nullptr; static int publish_nest_level = 0; static CPPVisibility publish_previous; static YYLTYPE publish_loc; static std::vector last_scopes; static std::vector last_storage_classes; static std::vector last_structs; int yyparse(); #define YYERROR_VERBOSE static void yyerror(const string &msg) { current_lexer->error(msg, current_lexer->_last_token_loc); } static void yyerror(YYLTYPE *loc, const string &msg) { current_lexer->error(msg, *loc); } static void yyerror(const string &msg, YYLTYPE &loc) { current_lexer->error(msg, loc); } static void yywarning(const string &msg, YYLTYPE &loc) { current_lexer->warning(msg, loc); } static int yylex(YYSTYPE *lval, YYLTYPE *lloc) { CPPToken token = current_lexer->get_next_token(); *lval = token._lval; *lloc = token._lloc; return token._token; } void parse_cpp(CPPParser *cp) { CPPScope *old_scope = current_scope; CPPScope *old_global_scope = global_scope; CPPPreprocessor *old_lexer = current_lexer; current_scope = cp; global_scope = cp; current_lexer = cp; publish_nest_level = 0; yyparse(); if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); publish_nest_level = 0; } current_scope = old_scope; global_scope = old_global_scope; current_lexer = old_lexer; } CPPExpression * parse_const_expr(CPPPreprocessor *pp, CPPScope *new_current_scope, CPPScope *new_global_scope) { CPPScope *old_scope = current_scope; CPPScope *old_global_scope = global_scope; CPPPreprocessor *old_lexer = current_lexer; CPPExpression *old_expr = current_expr; current_scope = new_current_scope; global_scope = new_global_scope; current_expr = nullptr; current_lexer = pp; yyparse(); CPPExpression *result = current_expr; current_scope = old_scope; global_scope = old_global_scope; current_lexer = old_lexer; current_expr = old_expr; return result; } CPPType * parse_type(CPPPreprocessor *pp, CPPScope *new_current_scope, CPPScope *new_global_scope) { CPPScope *old_scope = current_scope; CPPScope *old_global_scope = global_scope; CPPPreprocessor *old_lexer = current_lexer; CPPType *old_type = current_type; current_scope = new_current_scope; global_scope = new_global_scope; current_type = nullptr; current_lexer = pp; yyparse(); CPPType *result = current_type; current_scope = old_scope; global_scope = old_global_scope; current_lexer = old_lexer; current_type = old_type; return result; } static void push_scope(CPPScope *new_scope) { last_scopes.push_back(current_scope); if (new_scope != nullptr) { current_scope = new_scope; } } static void pop_scope() { assert(!last_scopes.empty()); current_scope = last_scopes.back(); last_scopes.pop_back(); } static void push_storage_class(int new_storage_class) { last_storage_classes.push_back(current_storage_class); current_storage_class = new_storage_class; } static void pop_storage_class() { assert(!last_storage_classes.empty()); current_storage_class = last_storage_classes.back(); last_storage_classes.pop_back(); } static void push_struct(CPPStructType *new_struct) { last_structs.push_back(current_struct); current_struct = new_struct; } static void pop_struct() { assert(!last_structs.empty()); current_struct = last_structs.back(); last_structs.pop_back(); } #line 274 "built/tmp/cppBison.yxx.c" # ifndef YY_CAST # ifdef __cplusplus # define YY_CAST(Type, Val) static_cast (Val) # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define YY_CAST(Type, Val) ((Type) (Val)) # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # else # define YY_NULLPTR ((void*)0) # endif # endif #include "cppBison.yxx.h" /* Symbol kind. */ enum yysymbol_kind_t { YYSYMBOL_YYEMPTY = -2, YYSYMBOL_YYEOF = 0, /* "end of file" */ YYSYMBOL_YYerror = 1, /* error */ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ YYSYMBOL_REAL = 3, /* REAL */ YYSYMBOL_INTEGER = 4, /* INTEGER */ YYSYMBOL_CHAR_TOK = 5, /* CHAR_TOK */ YYSYMBOL_SIMPLE_STRING = 6, /* SIMPLE_STRING */ YYSYMBOL_SIMPLE_IDENTIFIER = 7, /* SIMPLE_IDENTIFIER */ YYSYMBOL_STRING_LITERAL = 8, /* STRING_LITERAL */ YYSYMBOL_CUSTOM_LITERAL = 9, /* CUSTOM_LITERAL */ YYSYMBOL_IDENTIFIER = 10, /* IDENTIFIER */ YYSYMBOL_TYPENAME_IDENTIFIER = 11, /* TYPENAME_IDENTIFIER */ YYSYMBOL_TYPEPACK_IDENTIFIER = 12, /* TYPEPACK_IDENTIFIER */ YYSYMBOL_SCOPING = 13, /* SCOPING */ YYSYMBOL_TYPEDEFNAME = 14, /* TYPEDEFNAME */ YYSYMBOL_ELLIPSIS = 15, /* ELLIPSIS */ YYSYMBOL_OROR = 16, /* OROR */ YYSYMBOL_ANDAND = 17, /* ANDAND */ YYSYMBOL_EQCOMPARE = 18, /* EQCOMPARE */ YYSYMBOL_NECOMPARE = 19, /* NECOMPARE */ YYSYMBOL_LECOMPARE = 20, /* LECOMPARE */ YYSYMBOL_GECOMPARE = 21, /* GECOMPARE */ YYSYMBOL_LSHIFT = 22, /* LSHIFT */ YYSYMBOL_RSHIFT = 23, /* RSHIFT */ YYSYMBOL_POINTSAT_STAR = 24, /* POINTSAT_STAR */ YYSYMBOL_DOT_STAR = 25, /* DOT_STAR */ YYSYMBOL_UNARY = 26, /* UNARY */ YYSYMBOL_UNARY_NOT = 27, /* UNARY_NOT */ YYSYMBOL_UNARY_NEGATE = 28, /* UNARY_NEGATE */ YYSYMBOL_UNARY_MINUS = 29, /* UNARY_MINUS */ YYSYMBOL_UNARY_PLUS = 30, /* UNARY_PLUS */ YYSYMBOL_UNARY_STAR = 31, /* UNARY_STAR */ YYSYMBOL_UNARY_REF = 32, /* UNARY_REF */ YYSYMBOL_POINTSAT = 33, /* POINTSAT */ YYSYMBOL_SCOPE = 34, /* SCOPE */ YYSYMBOL_PLUSPLUS = 35, /* PLUSPLUS */ YYSYMBOL_MINUSMINUS = 36, /* MINUSMINUS */ YYSYMBOL_TIMESEQUAL = 37, /* TIMESEQUAL */ YYSYMBOL_DIVIDEEQUAL = 38, /* DIVIDEEQUAL */ YYSYMBOL_MODEQUAL = 39, /* MODEQUAL */ YYSYMBOL_PLUSEQUAL = 40, /* PLUSEQUAL */ YYSYMBOL_MINUSEQUAL = 41, /* MINUSEQUAL */ YYSYMBOL_OREQUAL = 42, /* OREQUAL */ YYSYMBOL_ANDEQUAL = 43, /* ANDEQUAL */ YYSYMBOL_XOREQUAL = 44, /* XOREQUAL */ YYSYMBOL_LSHIFTEQUAL = 45, /* LSHIFTEQUAL */ YYSYMBOL_RSHIFTEQUAL = 46, /* RSHIFTEQUAL */ YYSYMBOL_ATTR_LEFT = 47, /* ATTR_LEFT */ YYSYMBOL_ATTR_RIGHT = 48, /* ATTR_RIGHT */ YYSYMBOL_KW_ALIGNAS = 49, /* KW_ALIGNAS */ YYSYMBOL_KW_ALIGNOF = 50, /* KW_ALIGNOF */ YYSYMBOL_KW_AUTO = 51, /* KW_AUTO */ YYSYMBOL_KW_BEGIN_PUBLISH = 52, /* KW_BEGIN_PUBLISH */ YYSYMBOL_KW_BLOCKING = 53, /* KW_BLOCKING */ YYSYMBOL_KW_BOOL = 54, /* KW_BOOL */ YYSYMBOL_KW_CATCH = 55, /* KW_CATCH */ YYSYMBOL_KW_CHAR = 56, /* KW_CHAR */ YYSYMBOL_KW_CHAR16_T = 57, /* KW_CHAR16_T */ YYSYMBOL_KW_CHAR32_T = 58, /* KW_CHAR32_T */ YYSYMBOL_KW_CLASS = 59, /* KW_CLASS */ YYSYMBOL_KW_CONST = 60, /* KW_CONST */ YYSYMBOL_KW_CONSTEXPR = 61, /* KW_CONSTEXPR */ YYSYMBOL_KW_CONST_CAST = 62, /* KW_CONST_CAST */ YYSYMBOL_KW_DECLTYPE = 63, /* KW_DECLTYPE */ YYSYMBOL_KW_DEFAULT = 64, /* KW_DEFAULT */ YYSYMBOL_KW_DELETE = 65, /* KW_DELETE */ YYSYMBOL_KW_DOUBLE = 66, /* KW_DOUBLE */ YYSYMBOL_KW_DYNAMIC_CAST = 67, /* KW_DYNAMIC_CAST */ YYSYMBOL_KW_ELSE = 68, /* KW_ELSE */ YYSYMBOL_KW_END_PUBLISH = 69, /* KW_END_PUBLISH */ YYSYMBOL_KW_ENUM = 70, /* KW_ENUM */ YYSYMBOL_KW_EXTENSION = 71, /* KW_EXTENSION */ YYSYMBOL_KW_EXTERN = 72, /* KW_EXTERN */ YYSYMBOL_KW_EXPLICIT = 73, /* KW_EXPLICIT */ YYSYMBOL_KW_PUBLISHED = 74, /* KW_PUBLISHED */ YYSYMBOL_KW_FALSE = 75, /* KW_FALSE */ YYSYMBOL_KW_FINAL = 76, /* KW_FINAL */ YYSYMBOL_KW_FLOAT = 77, /* KW_FLOAT */ YYSYMBOL_KW_FRIEND = 78, /* KW_FRIEND */ YYSYMBOL_KW_FOR = 79, /* KW_FOR */ YYSYMBOL_KW_GOTO = 80, /* KW_GOTO */ YYSYMBOL_KW_HAS_VIRTUAL_DESTRUCTOR = 81, /* KW_HAS_VIRTUAL_DESTRUCTOR */ YYSYMBOL_KW_IF = 82, /* KW_IF */ YYSYMBOL_KW_INLINE = 83, /* KW_INLINE */ YYSYMBOL_KW_INT = 84, /* KW_INT */ YYSYMBOL_KW_IS_ABSTRACT = 85, /* KW_IS_ABSTRACT */ YYSYMBOL_KW_IS_BASE_OF = 86, /* KW_IS_BASE_OF */ YYSYMBOL_KW_IS_CLASS = 87, /* KW_IS_CLASS */ YYSYMBOL_KW_IS_CONSTRUCTIBLE = 88, /* KW_IS_CONSTRUCTIBLE */ YYSYMBOL_KW_IS_CONVERTIBLE_TO = 89, /* KW_IS_CONVERTIBLE_TO */ YYSYMBOL_KW_IS_DESTRUCTIBLE = 90, /* KW_IS_DESTRUCTIBLE */ YYSYMBOL_KW_IS_EMPTY = 91, /* KW_IS_EMPTY */ YYSYMBOL_KW_IS_ENUM = 92, /* KW_IS_ENUM */ YYSYMBOL_KW_IS_FINAL = 93, /* KW_IS_FINAL */ YYSYMBOL_KW_IS_FUNDAMENTAL = 94, /* KW_IS_FUNDAMENTAL */ YYSYMBOL_KW_IS_POD = 95, /* KW_IS_POD */ YYSYMBOL_KW_IS_POLYMORPHIC = 96, /* KW_IS_POLYMORPHIC */ YYSYMBOL_KW_IS_STANDARD_LAYOUT = 97, /* KW_IS_STANDARD_LAYOUT */ YYSYMBOL_KW_IS_TRIVIAL = 98, /* KW_IS_TRIVIAL */ YYSYMBOL_KW_IS_UNION = 99, /* KW_IS_UNION */ YYSYMBOL_KW_LONG = 100, /* KW_LONG */ YYSYMBOL_KW_MAKE_MAP_KEYS_SEQ = 101, /* KW_MAKE_MAP_KEYS_SEQ */ YYSYMBOL_KW_MAKE_MAP_PROPERTY = 102, /* KW_MAKE_MAP_PROPERTY */ YYSYMBOL_KW_MAKE_PROPERTY = 103, /* KW_MAKE_PROPERTY */ YYSYMBOL_KW_MAKE_PROPERTY2 = 104, /* KW_MAKE_PROPERTY2 */ YYSYMBOL_KW_MAKE_SEQ = 105, /* KW_MAKE_SEQ */ YYSYMBOL_KW_MAKE_SEQ_PROPERTY = 106, /* KW_MAKE_SEQ_PROPERTY */ YYSYMBOL_KW_MUTABLE = 107, /* KW_MUTABLE */ YYSYMBOL_KW_NAMESPACE = 108, /* KW_NAMESPACE */ YYSYMBOL_KW_NEW = 109, /* KW_NEW */ YYSYMBOL_KW_NOEXCEPT = 110, /* KW_NOEXCEPT */ YYSYMBOL_KW_NULLPTR = 111, /* KW_NULLPTR */ YYSYMBOL_KW_OPERATOR = 112, /* KW_OPERATOR */ YYSYMBOL_KW_OVERRIDE = 113, /* KW_OVERRIDE */ YYSYMBOL_KW_PRIVATE = 114, /* KW_PRIVATE */ YYSYMBOL_KW_PROTECTED = 115, /* KW_PROTECTED */ YYSYMBOL_KW_PUBLIC = 116, /* KW_PUBLIC */ YYSYMBOL_KW_REGISTER = 117, /* KW_REGISTER */ YYSYMBOL_KW_REINTERPRET_CAST = 118, /* KW_REINTERPRET_CAST */ YYSYMBOL_KW_RETURN = 119, /* KW_RETURN */ YYSYMBOL_KW_SHORT = 120, /* KW_SHORT */ YYSYMBOL_KW_SIGNED = 121, /* KW_SIGNED */ YYSYMBOL_KW_SIZEOF = 122, /* KW_SIZEOF */ YYSYMBOL_KW_STATIC = 123, /* KW_STATIC */ YYSYMBOL_KW_STATIC_ASSERT = 124, /* KW_STATIC_ASSERT */ YYSYMBOL_KW_STATIC_CAST = 125, /* KW_STATIC_CAST */ YYSYMBOL_KW_STRUCT = 126, /* KW_STRUCT */ YYSYMBOL_KW_TEMPLATE = 127, /* KW_TEMPLATE */ YYSYMBOL_KW_THREAD_LOCAL = 128, /* KW_THREAD_LOCAL */ YYSYMBOL_KW_THROW = 129, /* KW_THROW */ YYSYMBOL_KW_TRUE = 130, /* KW_TRUE */ YYSYMBOL_KW_TRY = 131, /* KW_TRY */ YYSYMBOL_KW_TYPEDEF = 132, /* KW_TYPEDEF */ YYSYMBOL_KW_TYPEID = 133, /* KW_TYPEID */ YYSYMBOL_KW_TYPENAME = 134, /* KW_TYPENAME */ YYSYMBOL_KW_UNDERLYING_TYPE = 135, /* KW_UNDERLYING_TYPE */ YYSYMBOL_KW_UNION = 136, /* KW_UNION */ YYSYMBOL_KW_UNSIGNED = 137, /* KW_UNSIGNED */ YYSYMBOL_KW_USING = 138, /* KW_USING */ YYSYMBOL_KW_VIRTUAL = 139, /* KW_VIRTUAL */ YYSYMBOL_KW_VOID = 140, /* KW_VOID */ YYSYMBOL_KW_VOLATILE = 141, /* KW_VOLATILE */ YYSYMBOL_KW_WCHAR_T = 142, /* KW_WCHAR_T */ YYSYMBOL_KW_WHILE = 143, /* KW_WHILE */ YYSYMBOL_START_CPP = 144, /* START_CPP */ YYSYMBOL_START_CONST_EXPR = 145, /* START_CONST_EXPR */ YYSYMBOL_START_TYPE = 146, /* START_TYPE */ YYSYMBOL_147_ = 147, /* '{' */ YYSYMBOL_148_ = 148, /* ',' */ YYSYMBOL_149_ = 149, /* ';' */ YYSYMBOL_150_ = 150, /* ':' */ YYSYMBOL_151_ = 151, /* '=' */ YYSYMBOL_152_ = 152, /* '?' */ YYSYMBOL_153_ = 153, /* '|' */ YYSYMBOL_154_ = 154, /* '^' */ YYSYMBOL_155_ = 155, /* '&' */ YYSYMBOL_156_ = 156, /* '<' */ YYSYMBOL_157_ = 157, /* '>' */ YYSYMBOL_158_ = 158, /* '+' */ YYSYMBOL_159_ = 159, /* '-' */ YYSYMBOL_160_ = 160, /* '*' */ YYSYMBOL_161_ = 161, /* '/' */ YYSYMBOL_162_ = 162, /* '%' */ YYSYMBOL_163_ = 163, /* '~' */ YYSYMBOL_164_ = 164, /* '.' */ YYSYMBOL_165_ = 165, /* '(' */ YYSYMBOL_166_ = 166, /* '[' */ YYSYMBOL_167_ = 167, /* ')' */ YYSYMBOL_168_ = 168, /* '}' */ YYSYMBOL_169_ = 169, /* '!' */ YYSYMBOL_170_ = 170, /* ']' */ YYSYMBOL_YYACCEPT = 171, /* $accept */ YYSYMBOL_grammar = 172, /* grammar */ YYSYMBOL_cpp = 173, /* cpp */ YYSYMBOL_constructor_inits = 174, /* constructor_inits */ YYSYMBOL_constructor_init = 175, /* constructor_init */ YYSYMBOL_extern_c = 176, /* extern_c */ YYSYMBOL_177_1 = 177, /* $@1 */ YYSYMBOL_declaration = 178, /* declaration */ YYSYMBOL_friend_declaration = 179, /* friend_declaration */ YYSYMBOL_180_2 = 180, /* $@2 */ YYSYMBOL_storage_class = 181, /* storage_class */ YYSYMBOL_optional_attributes = 182, /* optional_attributes */ YYSYMBOL_attribute_specifiers = 183, /* attribute_specifiers */ YYSYMBOL_attribute_specifier = 184, /* attribute_specifier */ YYSYMBOL_type_like_declaration = 185, /* type_like_declaration */ YYSYMBOL_186_3 = 186, /* $@3 */ YYSYMBOL_187_4 = 187, /* $@4 */ YYSYMBOL_multiple_instance_identifiers = 188, /* multiple_instance_identifiers */ YYSYMBOL_typedef_declaration = 189, /* typedef_declaration */ YYSYMBOL_190_5 = 190, /* $@5 */ YYSYMBOL_typedef_instance_identifiers = 191, /* typedef_instance_identifiers */ YYSYMBOL_constructor_prototype = 192, /* constructor_prototype */ YYSYMBOL_193_6 = 193, /* $@6 */ YYSYMBOL_194_7 = 194, /* $@7 */ YYSYMBOL_195_8 = 195, /* $@8 */ YYSYMBOL_function_prototype = 196, /* function_prototype */ YYSYMBOL_197_9 = 197, /* $@9 */ YYSYMBOL_198_10 = 198, /* $@10 */ YYSYMBOL_199_11 = 199, /* $@11 */ YYSYMBOL_200_12 = 200, /* $@12 */ YYSYMBOL_201_13 = 201, /* $@13 */ YYSYMBOL_function_post = 202, /* function_post */ YYSYMBOL_function_operator = 203, /* function_operator */ YYSYMBOL_more_template_declaration = 204, /* more_template_declaration */ YYSYMBOL_template_declaration = 205, /* template_declaration */ YYSYMBOL_206_14 = 206, /* $@14 */ YYSYMBOL_template_formal_parameters = 207, /* template_formal_parameters */ YYSYMBOL_template_nonempty_formal_parameters = 208, /* template_nonempty_formal_parameters */ YYSYMBOL_typename_keyword = 209, /* typename_keyword */ YYSYMBOL_template_formal_parameter = 210, /* template_formal_parameter */ YYSYMBOL_template_formal_parameter_type = 211, /* template_formal_parameter_type */ YYSYMBOL_instance_identifier = 212, /* instance_identifier */ YYSYMBOL_213_15 = 213, /* $@15 */ YYSYMBOL_instance_identifier_and_maybe_trailing_return_type = 214, /* instance_identifier_and_maybe_trailing_return_type */ YYSYMBOL_maybe_trailing_return_type = 215, /* maybe_trailing_return_type */ YYSYMBOL_maybe_comma_identifier = 216, /* maybe_comma_identifier */ YYSYMBOL_function_parameter_list = 217, /* function_parameter_list */ YYSYMBOL_function_parameters = 218, /* function_parameters */ YYSYMBOL_formal_parameter_list = 219, /* formal_parameter_list */ YYSYMBOL_formal_parameters = 220, /* formal_parameters */ YYSYMBOL_template_parameter_maybe_initialize = 221, /* template_parameter_maybe_initialize */ YYSYMBOL_maybe_initialize = 222, /* maybe_initialize */ YYSYMBOL_maybe_initialize_or_constructor_body = 223, /* maybe_initialize_or_constructor_body */ YYSYMBOL_maybe_initialize_or_function_body = 224, /* maybe_initialize_or_function_body */ YYSYMBOL_structure_init = 225, /* structure_init */ YYSYMBOL_structure_init_body = 226, /* structure_init_body */ YYSYMBOL_function_parameter = 227, /* function_parameter */ YYSYMBOL_formal_parameter = 228, /* formal_parameter */ YYSYMBOL_not_paren_formal_parameter_identifier = 229, /* not_paren_formal_parameter_identifier */ YYSYMBOL_formal_parameter_identifier = 230, /* formal_parameter_identifier */ YYSYMBOL_parameter_pack_identifier = 231, /* parameter_pack_identifier */ YYSYMBOL_not_paren_empty_instance_identifier = 232, /* not_paren_empty_instance_identifier */ YYSYMBOL_empty_instance_identifier = 233, /* empty_instance_identifier */ YYSYMBOL_type = 234, /* type */ YYSYMBOL_type_pack = 235, /* type_pack */ YYSYMBOL_type_decl = 236, /* type_decl */ YYSYMBOL_predefined_type = 237, /* predefined_type */ YYSYMBOL_var_type_decl = 238, /* var_type_decl */ YYSYMBOL_full_type = 239, /* full_type */ YYSYMBOL_struct_attributes = 240, /* struct_attributes */ YYSYMBOL_anonymous_struct = 241, /* anonymous_struct */ YYSYMBOL_242_16 = 242, /* $@16 */ YYSYMBOL_named_struct = 243, /* named_struct */ YYSYMBOL_244_17 = 244, /* $@17 */ YYSYMBOL_maybe_final = 245, /* maybe_final */ YYSYMBOL_maybe_class_derivation = 246, /* maybe_class_derivation */ YYSYMBOL_class_derivation = 247, /* class_derivation */ YYSYMBOL_base_specification = 248, /* base_specification */ YYSYMBOL_enum = 249, /* enum */ YYSYMBOL_enum_decl = 250, /* enum_decl */ YYSYMBOL_enum_element_type = 251, /* enum_element_type */ YYSYMBOL_enum_body_trailing_comma = 252, /* enum_body_trailing_comma */ YYSYMBOL_enum_body = 253, /* enum_body */ YYSYMBOL_enum_keyword = 254, /* enum_keyword */ YYSYMBOL_struct_keyword = 255, /* struct_keyword */ YYSYMBOL_namespace_declaration = 256, /* namespace_declaration */ YYSYMBOL_257_18 = 257, /* $@18 */ YYSYMBOL_258_19 = 258, /* $@19 */ YYSYMBOL_using_declaration = 259, /* using_declaration */ YYSYMBOL_simple_type = 260, /* simple_type */ YYSYMBOL_simple_int_type = 261, /* simple_int_type */ YYSYMBOL_simple_float_type = 262, /* simple_float_type */ YYSYMBOL_simple_void_type = 263, /* simple_void_type */ YYSYMBOL_code = 264, /* code */ YYSYMBOL_265_20 = 265, /* $@20 */ YYSYMBOL_code_block = 266, /* code_block */ YYSYMBOL_element = 267, /* element */ YYSYMBOL_optional_const_expr = 268, /* optional_const_expr */ YYSYMBOL_optional_const_expr_comma = 269, /* optional_const_expr_comma */ YYSYMBOL_const_expr_comma = 270, /* const_expr_comma */ YYSYMBOL_no_angle_bracket_const_expr = 271, /* no_angle_bracket_const_expr */ YYSYMBOL_const_expr = 272, /* const_expr */ YYSYMBOL_const_operand = 273, /* const_operand */ YYSYMBOL_formal_const_expr = 274, /* formal_const_expr */ YYSYMBOL_formal_const_operand = 275, /* formal_const_operand */ YYSYMBOL_capture_list = 276, /* capture_list */ YYSYMBOL_capture = 277, /* capture */ YYSYMBOL_class_derivation_name = 278, /* class_derivation_name */ YYSYMBOL_name = 279, /* name */ YYSYMBOL_name_no_final = 280, /* name_no_final */ YYSYMBOL_string_literal = 281, /* string_literal */ YYSYMBOL_empty = 282 /* empty */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ yytype_int8; #elif defined YY_STDINT_H typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ yytype_int16; #elif defined YY_STDINT_H typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t yytype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char yytype_uint8; #else typedef short yytype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ yytype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t yytype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short yytype_uint16; #else typedef int yytype_uint16; #endif #ifndef YYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define YYPTRDIFF_T __PTRDIFF_TYPE__ # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define YYPTRDIFF_T ptrdiff_t # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define YYPTRDIFF_T long # define YYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned # endif #endif #define YYSIZE_MAXIMUM \ YY_CAST (YYPTRDIFF_T, \ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ? YYPTRDIFF_MAXIMUM \ : YY_CAST (YYSIZE_T, -1))) #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef yytype_int16 yy_state_t; /* State numbers in computations. */ typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define YY_ATTRIBUTE_PURE # endif #endif #ifndef YY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YY_USE(E) ((void) (E)) #else # define YY_USE(E) /* empty */ #endif /* Suppress an incorrect diagnostic about yylval being uninitialized. */ #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ # if __GNUC__ * 100 + __GNUC_MINOR__ < 407 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") # else # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define YY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define YY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_END #endif #define YY_ASSERT(E) ((void) (0 && (E))) #if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; YYLTYPE yyls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \ + YYSIZEOF (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 104 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 7707 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 171 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 112 /* YYNRULES -- Number of rules. */ #define YYNRULES 769 /* YYNSTATES -- Number of states. */ #define YYNSTATES 1632 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 401 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 169, 2, 2, 2, 162, 155, 2, 165, 167, 160, 158, 148, 159, 164, 161, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 150, 149, 156, 151, 157, 152, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 166, 2, 170, 154, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, 153, 168, 163, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 452, 452, 453, 457, 464, 465, 466, 470, 471, 475, 479, 483, 496, 495, 507, 508, 509, 510, 511, 512, 513, 526, 535, 539, 547, 551, 555, 576, 603, 624, 653, 689, 732, 744, 765, 801, 835, 857, 893, 915, 926, 940, 939, 954, 958, 963, 967, 978, 982, 986, 990, 994, 998, 1002, 1006, 1010, 1014, 1018, 1022, 1027, 1031, 1038, 1039, 1040, 1041, 1045, 1046, 1050, 1051, 1052, 1057, 1056, 1072, 1082, 1081, 1098, 1106, 1114, 1125, 1141, 1140, 1155, 1170, 1179, 1194, 1193, 1233, 1232, 1260, 1259, 1296, 1295, 1326, 1325, 1344, 1343, 1364, 1363, 1395, 1394, 1420, 1433, 1437, 1441, 1445, 1458, 1462, 1466, 1470, 1474, 1479, 1484, 1488, 1492, 1496, 1503, 1507, 1511, 1515, 1519, 1523, 1527, 1531, 1535, 1539, 1543, 1547, 1551, 1555, 1559, 1563, 1567, 1571, 1575, 1579, 1583, 1587, 1591, 1595, 1599, 1603, 1607, 1611, 1615, 1619, 1623, 1627, 1631, 1635, 1639, 1643, 1647, 1651, 1655, 1662, 1663, 1664, 1668, 1670, 1669, 1677, 1678, 1682, 1683, 1687, 1693, 1702, 1703, 1707, 1711, 1715, 1719, 1725, 1731, 1737, 1744, 1749, 1758, 1762, 1767, 1775, 1787, 1791, 1805, 1820, 1825, 1830, 1835, 1840, 1845, 1850, 1855, 1861, 1860, 1891, 1901, 1911, 1915, 1919, 1928, 1932, 1940, 1944, 1949, 1953, 1958, 1966, 1971, 1979, 1983, 1988, 1992, 1997, 2005, 2010, 2018, 2022, 2029, 2033, 2040, 2044, 2048, 2052, 2056, 2063, 2067, 2071, 2075, 2079, 2083, 2090, 2091, 2092, 2096, 2099, 2100, 2101, 2105, 2110, 2116, 2122, 2127, 2133, 2139, 2143, 2154, 2158, 2168, 2172, 2176, 2181, 2186, 2191, 2196, 2201, 2206, 2214, 2218, 2222, 2227, 2232, 2237, 2242, 2247, 2252, 2257, 2263, 2271, 2276, 2281, 2286, 2291, 2296, 2301, 2306, 2311, 2316, 2322, 2330, 2334, 2339, 2344, 2349, 2354, 2359, 2364, 2369, 2374, 2382, 2386, 2391, 2396, 2401, 2406, 2411, 2416, 2421, 2426, 2431, 2437, 2444, 2451, 2461, 2465, 2473, 2477, 2481, 2485, 2489, 2505, 2521, 2530, 2534, 2544, 2551, 2562, 2566, 2574, 2578, 2582, 2586, 2590, 2606, 2622, 2640, 2649, 2653, 2663, 2670, 2674, 2682, 2686, 2702, 2718, 2727, 2737, 2744, 2748, 2756, 2760, 2765, 2769, 2777, 2778, 2779, 2780, 2785, 2784, 2809, 2808, 2838, 2839, 2846, 2847, 2851, 2852, 2856, 2860, 2864, 2868, 2872, 2876, 2880, 2884, 2888, 2892, 2899, 2907, 2911, 2915, 2920, 2928, 2932, 2939, 2940, 2945, 2952, 2953, 2958, 2966, 2970, 2974, 2981, 2985, 2989, 2997, 2996, 3019, 3018, 3041, 3042, 3046, 3052, 3059, 3068, 3069, 3070, 3074, 3078, 3082, 3086, 3090, 3094, 3099, 3104, 3109, 3114, 3118, 3123, 3132, 3137, 3145, 3149, 3153, 3161, 3171, 3171, 3181, 3182, 3186, 3187, 3188, 3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196, 3197, 3197, 3197, 3198, 3198, 3198, 3198, 3199, 3199, 3199, 3199, 3199, 3200, 3200, 3200, 3201, 3201, 3201, 3201, 3201, 3202, 3202, 3202, 3202, 3202, 3203, 3203, 3204, 3204, 3204, 3204, 3204, 3205, 3205, 3205, 3205, 3205, 3206, 3206, 3206, 3206, 3207, 3207, 3207, 3207, 3207, 3208, 3208, 3208, 3208, 3208, 3209, 3209, 3209, 3209, 3209, 3209, 3210, 3210, 3210, 3210, 3210, 3211, 3211, 3211, 3211, 3212, 3212, 3212, 3212, 3213, 3213, 3213, 3213, 3213, 3214, 3214, 3214, 3214, 3215, 3215, 3215, 3215, 3215, 3216, 3216, 3216, 3216, 3217, 3217, 3217, 3217, 3217, 3218, 3218, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3223, 3223, 3227, 3231, 3238, 3242, 3249, 3253, 3260, 3264, 3268, 3272, 3276, 3280, 3284, 3288, 3292, 3296, 3300, 3304, 3308, 3312, 3316, 3320, 3324, 3328, 3332, 3336, 3340, 3344, 3348, 3352, 3356, 3360, 3364, 3368, 3372, 3376, 3380, 3384, 3388, 3392, 3396, 3400, 3404, 3408, 3412, 3420, 3424, 3428, 3432, 3436, 3440, 3444, 3454, 3464, 3470, 3476, 3482, 3488, 3494, 3500, 3507, 3514, 3521, 3528, 3534, 3540, 3544, 3548, 3552, 3556, 3560, 3564, 3575, 3586, 3590, 3594, 3598, 3602, 3606, 3610, 3614, 3618, 3622, 3626, 3630, 3634, 3638, 3642, 3646, 3650, 3654, 3658, 3662, 3666, 3670, 3674, 3678, 3682, 3686, 3690, 3694, 3698, 3702, 3706, 3713, 3717, 3721, 3725, 3729, 3733, 3737, 3741, 3745, 3751, 3757, 3761, 3767, 3774, 3778, 3782, 3786, 3790, 3794, 3798, 3802, 3806, 3810, 3814, 3818, 3822, 3826, 3830, 3834, 3838, 3852, 3856, 3860, 3864, 3868, 3872, 3876, 3880, 3884, 3888, 3892, 3896, 3900, 3911, 3922, 3926, 3930, 3934, 3938, 3942, 3946, 3950, 3954, 3958, 3962, 3966, 3970, 3974, 3978, 3982, 3986, 3990, 3994, 3998, 4002, 4006, 4010, 4014, 4018, 4022, 4026, 4030, 4034, 4038, 4045, 4049, 4053, 4057, 4061, 4065, 4069, 4073, 4077, 4083, 4089, 4097, 4101, 4105, 4109, 4116, 4126, 4132, 4138, 4148, 4160, 4168, 4172, 4202, 4206, 4210, 4214, 4218, 4222, 4228, 4232, 4236, 4240, 4244, 4255, 4259, 4263, 4267, 4275, 4279, 4283, 4289, 4300 }; #endif /** Accessing symbol of state STATE. */ #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) #if YYDEBUG || 0 /* The user-facing name of the symbol whose (internal) number is YYSYMBOL. No bounds checking. */ static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "\"end of file\"", "error", "\"invalid token\"", "REAL", "INTEGER", "CHAR_TOK", "SIMPLE_STRING", "SIMPLE_IDENTIFIER", "STRING_LITERAL", "CUSTOM_LITERAL", "IDENTIFIER", "TYPENAME_IDENTIFIER", "TYPEPACK_IDENTIFIER", "SCOPING", "TYPEDEFNAME", "ELLIPSIS", "OROR", "ANDAND", "EQCOMPARE", "NECOMPARE", "LECOMPARE", "GECOMPARE", "LSHIFT", "RSHIFT", "POINTSAT_STAR", "DOT_STAR", "UNARY", "UNARY_NOT", "UNARY_NEGATE", "UNARY_MINUS", "UNARY_PLUS", "UNARY_STAR", "UNARY_REF", "POINTSAT", "SCOPE", "PLUSPLUS", "MINUSMINUS", "TIMESEQUAL", "DIVIDEEQUAL", "MODEQUAL", "PLUSEQUAL", "MINUSEQUAL", "OREQUAL", "ANDEQUAL", "XOREQUAL", "LSHIFTEQUAL", "RSHIFTEQUAL", "ATTR_LEFT", "ATTR_RIGHT", "KW_ALIGNAS", "KW_ALIGNOF", "KW_AUTO", "KW_BEGIN_PUBLISH", "KW_BLOCKING", "KW_BOOL", "KW_CATCH", "KW_CHAR", "KW_CHAR16_T", "KW_CHAR32_T", "KW_CLASS", "KW_CONST", "KW_CONSTEXPR", "KW_CONST_CAST", "KW_DECLTYPE", "KW_DEFAULT", "KW_DELETE", "KW_DOUBLE", "KW_DYNAMIC_CAST", "KW_ELSE", "KW_END_PUBLISH", "KW_ENUM", "KW_EXTENSION", "KW_EXTERN", "KW_EXPLICIT", "KW_PUBLISHED", "KW_FALSE", "KW_FINAL", "KW_FLOAT", "KW_FRIEND", "KW_FOR", "KW_GOTO", "KW_HAS_VIRTUAL_DESTRUCTOR", "KW_IF", "KW_INLINE", "KW_INT", "KW_IS_ABSTRACT", "KW_IS_BASE_OF", "KW_IS_CLASS", "KW_IS_CONSTRUCTIBLE", "KW_IS_CONVERTIBLE_TO", "KW_IS_DESTRUCTIBLE", "KW_IS_EMPTY", "KW_IS_ENUM", "KW_IS_FINAL", "KW_IS_FUNDAMENTAL", "KW_IS_POD", "KW_IS_POLYMORPHIC", "KW_IS_STANDARD_LAYOUT", "KW_IS_TRIVIAL", "KW_IS_UNION", "KW_LONG", "KW_MAKE_MAP_KEYS_SEQ", "KW_MAKE_MAP_PROPERTY", "KW_MAKE_PROPERTY", "KW_MAKE_PROPERTY2", "KW_MAKE_SEQ", "KW_MAKE_SEQ_PROPERTY", "KW_MUTABLE", "KW_NAMESPACE", "KW_NEW", "KW_NOEXCEPT", "KW_NULLPTR", "KW_OPERATOR", "KW_OVERRIDE", "KW_PRIVATE", "KW_PROTECTED", "KW_PUBLIC", "KW_REGISTER", "KW_REINTERPRET_CAST", "KW_RETURN", "KW_SHORT", "KW_SIGNED", "KW_SIZEOF", "KW_STATIC", "KW_STATIC_ASSERT", "KW_STATIC_CAST", "KW_STRUCT", "KW_TEMPLATE", "KW_THREAD_LOCAL", "KW_THROW", "KW_TRUE", "KW_TRY", "KW_TYPEDEF", "KW_TYPEID", "KW_TYPENAME", "KW_UNDERLYING_TYPE", "KW_UNION", "KW_UNSIGNED", "KW_USING", "KW_VIRTUAL", "KW_VOID", "KW_VOLATILE", "KW_WCHAR_T", "KW_WHILE", "START_CPP", "START_CONST_EXPR", "START_TYPE", "'{'", "','", "';'", "':'", "'='", "'?'", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'.'", "'('", "'['", "')'", "'}'", "'!'", "']'", "$accept", "grammar", "cpp", "constructor_inits", "constructor_init", "extern_c", "$@1", "declaration", "friend_declaration", "$@2", "storage_class", "optional_attributes", "attribute_specifiers", "attribute_specifier", "type_like_declaration", "$@3", "$@4", "multiple_instance_identifiers", "typedef_declaration", "$@5", "typedef_instance_identifiers", "constructor_prototype", "$@6", "$@7", "$@8", "function_prototype", "$@9", "$@10", "$@11", "$@12", "$@13", "function_post", "function_operator", "more_template_declaration", "template_declaration", "$@14", "template_formal_parameters", "template_nonempty_formal_parameters", "typename_keyword", "template_formal_parameter", "template_formal_parameter_type", "instance_identifier", "$@15", "instance_identifier_and_maybe_trailing_return_type", "maybe_trailing_return_type", "maybe_comma_identifier", "function_parameter_list", "function_parameters", "formal_parameter_list", "formal_parameters", "template_parameter_maybe_initialize", "maybe_initialize", "maybe_initialize_or_constructor_body", "maybe_initialize_or_function_body", "structure_init", "structure_init_body", "function_parameter", "formal_parameter", "not_paren_formal_parameter_identifier", "formal_parameter_identifier", "parameter_pack_identifier", "not_paren_empty_instance_identifier", "empty_instance_identifier", "type", "type_pack", "type_decl", "predefined_type", "var_type_decl", "full_type", "struct_attributes", "anonymous_struct", "$@16", "named_struct", "$@17", "maybe_final", "maybe_class_derivation", "class_derivation", "base_specification", "enum", "enum_decl", "enum_element_type", "enum_body_trailing_comma", "enum_body", "enum_keyword", "struct_keyword", "namespace_declaration", "$@18", "$@19", "using_declaration", "simple_type", "simple_int_type", "simple_float_type", "simple_void_type", "code", "$@20", "code_block", "element", "optional_const_expr", "optional_const_expr_comma", "const_expr_comma", "no_angle_bracket_const_expr", "const_expr", "const_operand", "formal_const_expr", "formal_const_operand", "capture_list", "capture", "class_derivation_name", "name", "name_no_final", "string_literal", "empty", YY_NULLPTR }; static const char * yysymbol_name (yysymbol_kind_t yysymbol) { return yytname[yysymbol]; } #endif #define YYPACT_NINF (-937) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) #define YYTABLE_NINF (-765) #define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 244, -937, 4264, 6409, 71, 5678, -937, -937, -937, -937, -937, -937, -937, -937, -55, 45, 63, 73, 81, 101, -41, 109, -12, -937, -937, 114, 119, 143, 148, 152, 156, 164, 169, 176, 186, 209, 221, 240, 245, 251, 257, 267, 270, 282, 6660, -937, -937, -2, 298, 306, 2561, 215, -937, 317, 319, 333, 4264, 4264, 4264, 4264, 4264, 2904, 554, 4264, 5515, -937, 87, -937, -937, -937, -937, -937, -937, -937, -937, 6520, 339, -937, -6, -937, -937, 5170, 5582, 5582, -937, 5373, 343, -937, 5582, -937, -937, 323, 323, -937, -937, -937, -937, 366, 77, -937, -937, -937, -937, -937, -937, 6442, 355, -937, 7566, 7566, 7566, -937, 7566, 5998, 7566, 373, -937, 2485, 362, 368, 369, 371, 372, 375, 7566, 4368, 385, 391, 393, 7566, 7566, 379, 7391, 7566, 7566, 5879, 7566, 7566, -937, -937, -937, -937, 5097, -937, -937, -937, -937, -937, 4264, 4264, 6409, 4264, 4264, 4264, 4264, 6409, 4264, 6409, 4264, 6409, 4264, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 4264, -937, -937, 381, 5373, 383, 388, 5373, -937, -937, 6409, 4264, 4264, 390, 2904, 132, 6409, 2904, 4264, 4264, 132, 132, 132, 132, 132, -55, 63, 73, 81, 101, 109, 114, 143, 337, 3091, 6420, 6808, 333, 348, -104, 5515, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, 5373, 5373, -108, 399, -937, -937, 132, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 5373, 3319, 4264, -937, -937, 323, 323, 3454, -937, -937, -937, 5582, -937, -937, -937, -937, 6409, -937, 396, 320, 332, 323, 323, 332, 332, 5792, 403, -937, 405, -937, -937, -937, -937, -937, -937, 5238, 407, 3378, -937, 5373, 524, 426, 410, 3044, 6025, 7566, -937, -937, -937, -937, 7566, -937, -937, -937, -937, 7484, 4643, -937, 5373, 5373, 5373, 5373, 5373, 5373, -937, -937, 429, -937, -937, -937, -937, -937, 4264, -937, 5189, -937, 423, -937, 5276, -937, 5373, 301, -937, -937, 160, 415, -937, 416, 6549, 5373, 420, -937, 5373, -937, 17, 437, -937, -937, -937, -937, 1627, -937, -937, 419, 440, -937, 427, 428, 430, 431, 435, 438, 433, 439, 447, 442, 445, 446, 452, 459, 453, -88, 475, 457, 460, 461, 465, 468, 469, 472, 473, 478, 484, 489, 4264, -937, 6409, 4264, -937, 7372, 485, 490, 492, 5373, 493, 504, 496, 4418, 497, 509, 4264, 4264, -937, 614, -937, 1364, 506, 4264, -937, -937, 1514, 5676, 5119, 5119, 927, 927, 704, 704, -937, 3202, 1693, 5722, 5852, 927, 927, 92, 92, 132, 132, 132, -937, -937, -73, 2082, -937, -937, 511, 4693, 512, 332, 332, 6442, 515, 436, -937, 403, -937, 403, -937, 436, 436, -937, 332, 6442, 6433, 6322, 332, 332, 514, 36, -937, 413, 532, -937, 4264, 5373, 520, -937, -937, -937, -937, 5238, -50, -33, -29, 6442, 517, -28, -937, -937, -937, 540, 7566, 6442, 4399, -55, 526, 5345, -937, -937, -937, 527, 543, 546, 550, 551, 552, 553, 6852, -937, 1990, 6101, 268, 537, 17, -937, -937, 555, -937, 6409, -937, 14, 3589, 6747, 1222, -937, 6409, -937, 538, 350, -937, -937, 3184, -937, -937, 128, -937, 556, 3378, -937, -937, -937, -937, -937, -937, -937, 547, -937, 548, -937, -937, -937, -937, 6409, -937, 6409, -937, 6409, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, 5403, 544, 558, -937, 559, -937, -937, 562, 4539, 568, -937, -937, -937, -937, 132, 5515, -937, 5373, 399, 6201, 1891, -937, 5515, 4264, -937, -937, -937, -937, -937, 436, 549, 669, 3044, 561, 5373, 332, 436, 436, 332, 332, 573, -937, 573, 573, 436, 670, 6520, 413, 532, -937, 436, 436, -937, -937, 6293, 581, 332, 413, 413, 332, 332, 413, 79, 332, -937, 583, 5373, 332, 532, 532, 332, 332, 532, 206, 576, 5515, -937, -83, -937, 572, 699, 3044, -937, 672, 6442, -937, -937, -937, -937, -937, -937, -937, -937, 584, 594, 596, -937, -937, 6660, -937, -937, 597, 1831, 598, -937, 599, 4264, 4264, 4264, 4264, 2904, 4264, 592, 44, -937, -937, 5612, -937, 87, -937, 7566, 7566, 6925, -937, 751, 752, 755, 756, 760, 761, -937, -937, 462, 618, -937, -937, -937, -937, 6133, -937, 616, 626, 7366, -937, 222, -937, -937, 9, -937, 128, -937, 628, 6201, 608, 620, 128, 6201, 611, 5424, 1222, 623, 332, 1222, 1222, 332, 332, -84, 332, -937, 617, 6998, -937, -937, -937, 5373, -7, -937, 619, -937, 640, 643, 3724, 3611, 637, 332, 128, 5029, 128, 332, 332, 128, -937, 178, 358, 332, 5238, -937, 4264, 4264, 634, 635, 641, -937, -937, -937, 4264, -937, 4264, -937, 645, -937, 6636, 6442, -937, -937, -937, -937, -937, -937, 649, -937, -937, 663, -937, 5515, 573, 332, 648, 5442, 332, 332, 436, 573, 573, 436, 436, 4264, -64, 6322, 413, 532, 79, 206, 4, 54, 1891, -937, -937, 332, 413, 654, 654, 413, 413, 273, 4264, -937, -937, 332, 332, 532, 655, 655, 532, 532, 310, 4264, -937, 332, -937, 4264, -937, 656, 5460, 7071, -937, 677, -937, -937, 6409, 6409, 6409, 657, 6409, 664, 2904, 234, 6409, 2904, 132, 132, 132, 132, 665, -62, 132, -937, -937, 4674, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 5373, 3859, 4264, -937, -937, -937, -937, 683, -24, 685, 688, 689, 693, 7144, 48, -937, 222, 7557, 6101, 5373, 691, 684, 332, 222, 222, 332, 332, 222, 214, 655, -937, 358, -937, 676, 681, 128, 262, 680, -937, -937, 345, 332, 1222, 690, 690, 1222, 1222, -937, 4264, -937, -937, -937, 6201, 682, 370, -937, 13, 700, 702, -937, 2736, -937, -937, -937, 3724, 686, 712, 5515, -937, -937, 332, 128, 365, 851, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, 705, 697, -937, 332, 365, 128, 128, 279, 4264, -937, 4264, -937, 3184, 725, -937, -937, 572, -21, -18, -937, -937, -937, -11, 47, -937, 6660, 323, 826, 239, -937, -937, 332, 332, 436, -937, 573, 573, 573, 706, 710, -937, 79, 206, -937, -937, 713, 714, -937, 413, 654, 654, 654, 716, 717, 532, -937, 655, 655, 655, 718, 720, 727, 3881, -937, -937, -937, 6015, 735, 738, -937, 724, 737, 740, 4264, 746, 5373, 728, 747, 741, 5497, 4264, -937, -937, -937, 1514, 5676, 5119, 5119, 927, 927, 704, 704, -937, 4151, 1693, 5722, 5852, 927, 927, 92, 92, 132, 132, 132, -937, -937, 51, 2425, 7217, 895, 899, 763, 903, 753, -937, 914, 916, 920, -937, 783, 214, 655, -937, -937, -937, -937, -937, -937, 6409, 332, 222, 222, 222, 4814, -937, -937, 785, -937, -937, -937, 295, 771, -937, -937, 1222, 690, 690, 690, 6201, 770, 774, -937, -937, 5373, 4264, 4264, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, 777, -937, 3994, 128, 365, 332, -937, -937, -937, 365, 365, -937, 5515, 4399, 772, 3611, 128, -937, -937, -937, -937, 1891, 323, -937, -937, -937, 6, 780, -937, -937, 573, 332, 6201, -937, -937, 6201, 6201, 654, 6201, 332, 655, 6201, 332, -937, 6163, 6284, 6735, 5373, 376, -937, -937, 936, -937, 6015, -937, 787, 790, 789, 792, 794, 4539, 799, -937, -937, 132, 4264, -937, -937, -937, 798, 52, -937, 811, 822, 75, 813, 76, -937, -937, -937, 222, 816, 827, 829, 830, 2183, 831, 4814, 4814, 4814, 4814, 4814, 2904, 4814, 4937, -937, 128, 1020, 6201, 817, -937, 1020, 6201, 690, 821, 332, -937, 825, -937, 828, 823, 2353, -937, 3724, 5515, 365, -937, 835, 332, -937, 847, -937, 838, -937, -937, -937, 842, 843, 848, 849, -937, 853, -937, 6777, -937, 6777, -937, 6777, -937, -937, 6777, 6777, 6777, -937, 7290, -937, 4264, 4264, -937, 4264, -937, 4264, 5515, 869, 1011, 874, 1019, -937, 1021, 881, 887, 1022, 894, 6409, 6409, 6409, 6409, 896, 2904, 248, 6409, 248, 248, 248, 248, 248, 893, 88, 248, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 5373, 4129, 4264, -937, 897, -937, 6201, 898, -937, -937, 1020, -937, -937, 1047, -937, 900, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, -937, 111, 122, 123, 127, -937, 915, -937, 904, 922, -937, -937, 139, -937, 905, 917, 921, 925, 5373, 912, 937, 4814, -937, 1435, 5103, 2019, 2019, 1384, 1384, 757, 757, -937, 956, 5875, 5902, 1347, 488, 488, 248, 248, 248, -937, -937, 166, 2923, -937, 6201, 930, -937, 1020, -937, -937, 1020, 931, 1891, 1891, 1891, 1020, 1020, -937, -937, -937, -937, 1088, 933, 953, 1093, 1094, 958, -937, 940, 947, 954, 961, 4914, 964, 248, 4814, -937, -937, 1020, 965, -937, 1020, -937, -937, -937, -937, -937, 987, -937, 971, 170, -937, 4264, 4264, 4264, -937, 4264, 4937, -937, 1891, -937, 990, 1130, 993, 175, 191, 211, 218, 1891, -937, -937, 976, -937, -937, -937, -937, -937, -937, 995, -937 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_int16 yydefact[] = { 0, 769, 0, 0, 0, 769, 5, 657, 653, 656, 765, 766, 659, 660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, 661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, 662, 0, 0, 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 0, 3, 594, 658, 304, 315, 314, 398, 399, 401, 402, 383, 0, 0, 413, 380, 412, 407, 404, 403, 406, 384, 0, 0, 385, 405, 415, 400, 769, 769, 4, 306, 307, 308, 0, 369, 769, 303, 395, 396, 397, 1, 0, 0, 21, 769, 769, 769, 22, 769, 769, 769, 0, 42, 769, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 0, 769, 769, 0, 769, 769, 769, 0, 769, 769, 6, 17, 7, 19, 0, 15, 16, 18, 77, 44, 769, 769, 0, 769, 769, 769, 769, 0, 769, 0, 769, 0, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769, 330, 336, 0, 0, 0, 618, 0, 769, 329, 0, 769, 769, 0, 0, 615, 0, 0, 769, 769, 627, 625, 624, 626, 623, 304, 398, 399, 401, 402, 413, 412, 407, 404, 403, 406, 405, 400, 0, 0, 553, 750, 751, 752, 760, 753, 756, 754, 758, 757, 755, 759, 739, 740, 0, 0, 769, 745, 738, 622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 767, 768, 769, 769, 0, 381, 382, 414, 404, 409, 408, 411, 305, 0, 410, 0, 290, 769, 769, 769, 769, 769, 769, 0, 339, 289, 341, 769, 761, 762, 763, 764, 0, 371, 0, 343, 0, 0, 66, 68, 0, 769, 769, 56, 45, 55, 57, 769, 46, 158, 51, 23, 769, 0, 49, 0, 0, 0, 0, 0, 0, 54, 769, 0, 26, 25, 24, 52, 48, 0, 162, 0, 161, 0, 58, 0, 20, 0, 0, 50, 53, 338, 317, 328, 0, 0, 0, 0, 13, 0, 74, 0, 337, 71, 319, 320, 321, 369, 769, 316, 0, 552, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, 769, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 743, 746, 0, 769, 0, 741, 218, 636, 637, 638, 639, 640, 641, 644, 645, 651, 0, 633, 634, 635, 642, 643, 631, 632, 628, 629, 630, 650, 649, 0, 0, 340, 342, 0, 0, 0, 769, 769, 0, 0, 769, 62, 0, 292, 0, 293, 769, 769, 203, 769, 0, 0, 0, 769, 769, 0, 204, 207, 769, 0, 202, 769, 377, 0, 374, 373, 368, 372, 0, 750, 751, 752, 0, 0, 754, 347, 309, 349, 0, 769, 0, 769, 317, 0, 0, 47, 43, 769, 0, 0, 0, 0, 0, 0, 0, 769, 386, 0, 769, 338, 317, 0, 337, 80, 0, 392, 0, 85, 89, 0, 0, 769, 318, 0, 769, 0, 0, 416, 225, 0, 76, 73, 0, 324, 371, 0, 601, 600, 617, 607, 603, 605, 606, 0, 613, 0, 612, 666, 602, 667, 0, 669, 0, 670, 0, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 609, 0, 0, 0, 332, 0, 608, 611, 0, 614, 0, 620, 621, 610, 604, 595, 554, 744, 0, 769, 769, 769, 102, 219, 0, 648, 647, 312, 311, 313, 769, 291, 0, 0, 0, 280, 769, 769, 769, 769, 769, 296, 279, 295, 294, 769, 0, 0, 769, 0, 244, 769, 769, 769, 206, 0, 0, 769, 769, 769, 769, 769, 769, 769, 769, 257, 0, 268, 769, 0, 0, 769, 769, 0, 769, 0, 550, 549, 378, 367, 310, 0, 0, 769, 769, 0, 59, 67, 731, 727, 730, 733, 734, 210, 0, 0, 0, 729, 735, 0, 737, 736, 0, 0, 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, 211, 246, 214, 247, 683, 732, 209, 769, 769, 769, 388, 0, 0, 0, 0, 0, 0, 390, 769, 0, 0, 179, 180, 181, 167, 0, 168, 0, 164, 169, 165, 769, 178, 163, 0, 82, 0, 394, 0, 769, 0, 0, 0, 769, 0, 0, 769, 0, 769, 769, 769, 769, 769, 0, 769, 248, 0, 769, 91, 416, 220, 0, 0, 75, 0, 769, 0, 0, 769, 0, 0, 769, 0, 0, 0, 769, 769, 0, 72, 769, 769, 769, 0, 322, 0, 0, 0, 0, 0, 334, 335, 619, 0, 616, 0, 742, 0, 109, 0, 0, 103, 111, 106, 110, 105, 107, 0, 104, 108, 0, 197, 646, 297, 769, 0, 0, 769, 769, 769, 282, 283, 769, 769, 769, 0, 0, 769, 0, 769, 769, 0, 0, 769, 205, 208, 769, 769, 259, 260, 769, 769, 0, 769, 238, 258, 769, 769, 0, 270, 271, 0, 0, 0, 769, 241, 769, 375, 0, 344, 0, 0, 769, 352, 769, 351, 70, 0, 0, 0, 693, 0, 0, 0, 690, 0, 0, 701, 700, 699, 698, 0, 0, 697, 69, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 60, 391, 769, 0, 0, 769, 0, 0, 0, 769, 0, 41, 769, 769, 0, 172, 170, 0, 769, 769, 769, 769, 769, 769, 769, 176, 81, 769, 393, 0, 0, 0, 0, 0, 326, 325, 0, 769, 769, 250, 251, 769, 769, 97, 769, 249, 327, 14, 769, 0, 0, 8, 0, 0, 0, 226, 417, 418, 228, 229, 769, 0, 232, 234, 231, 227, 769, 0, 185, 0, 126, 127, 128, 129, 130, 131, 134, 135, 150, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 154, 153, 137, 136, 123, 125, 124, 132, 133, 121, 122, 118, 119, 120, 117, 0, 0, 116, 769, 186, 0, 0, 0, 0, 193, 769, 195, 0, 0, 78, 182, 323, 0, 0, 668, 671, 672, 0, 0, 769, 0, 769, 0, 0, 416, 63, 769, 769, 769, 281, 286, 285, 284, 0, 0, 245, 769, 769, 239, 242, 0, 0, 299, 769, 263, 262, 261, 267, 0, 0, 269, 274, 273, 272, 278, 0, 298, 379, 346, 345, 348, 0, 0, 354, 353, 0, 0, 0, 769, 0, 0, 0, 0, 0, 0, 0, 726, 212, 215, 710, 711, 712, 713, 714, 715, 718, 719, 725, 0, 707, 708, 709, 716, 717, 705, 706, 702, 703, 704, 724, 723, 0, 0, 769, 0, 0, 0, 0, 0, 200, 0, 0, 0, 387, 0, 769, 177, 157, 155, 160, 156, 166, 173, 0, 769, 769, 769, 769, 0, 174, 216, 0, 83, 769, 87, 0, 0, 769, 99, 769, 254, 253, 252, 769, 0, 0, 221, 416, 0, 769, 769, 223, 224, 420, 421, 425, 422, 430, 423, 424, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 498, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 769, 542, 543, 544, 535, 547, 531, 532, 530, 537, 538, 526, 527, 528, 529, 536, 534, 541, 539, 545, 540, 533, 546, 419, 0, 230, 233, 0, 189, 769, 152, 151, 183, 188, 187, 192, 196, 769, 0, 219, 0, 598, 597, 599, 596, 769, 769, 198, 115, 112, 0, 0, 65, 64, 287, 769, 769, 240, 243, 769, 769, 264, 769, 769, 275, 769, 769, 376, 758, 0, 757, 0, 0, 355, 357, 747, 769, 0, 692, 0, 0, 0, 0, 0, 689, 0, 695, 696, 684, 0, 722, 721, 389, 0, 0, 33, 201, 0, 0, 0, 0, 40, 175, 171, 769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 555, 0, 86, 769, 0, 93, 90, 769, 255, 0, 769, 769, 0, 9, 0, 0, 0, 235, 769, 236, 190, 184, 0, 769, 79, 0, 199, 0, 113, 664, 288, 0, 0, 0, 0, 265, 0, 276, 0, 360, 0, 359, 0, 358, 748, 0, 0, 0, 749, 769, 356, 0, 0, 694, 0, 691, 0, 720, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 562, 0, 570, 568, 567, 569, 566, 0, 0, 565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 95, 769, 0, 769, 256, 92, 222, 12, 10, 548, 0, 769, 191, 416, 114, 769, 769, 769, 769, 769, 366, 365, 364, 363, 362, 361, 350, 0, 0, 0, 0, 36, 769, 34, 0, 0, 37, 39, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 593, 579, 580, 581, 582, 583, 584, 585, 586, 592, 0, 576, 577, 578, 574, 575, 571, 572, 573, 591, 590, 0, 0, 769, 769, 0, 769, 98, 11, 237, 194, 0, 769, 769, 769, 266, 277, 687, 686, 688, 685, 0, 0, 0, 0, 0, 0, 564, 0, 0, 0, 0, 561, 0, 556, 0, 589, 588, 88, 0, 769, 100, 665, 302, 301, 300, 201, 0, 28, 0, 0, 30, 0, 0, 0, 563, 0, 587, 769, 769, 35, 0, 0, 0, 0, 0, 0, 0, 769, 94, 38, 0, 31, 559, 558, 560, 557, 96, 0, 32 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -937, -937, -320, -937, 3, -937, -937, 834, -129, -937, 1175, 1301, -409, 503, -125, -937, -937, -145, -937, -937, -224, -937, -937, -937, -937, 833, -937, -937, -937, -937, -937, -533, -937, -937, -107, -937, -937, -937, -937, 254, 454, -651, -937, -706, -740, -356, -532, -937, -133, -937, 49, -542, -937, -495, -936, -937, -456, 302, -682, 84, -267, 557, -81, -52, -59, -285, -650, 836, 883, -166, -132, -937, -122, -937, -937, -937, -937, -171, -117, -937, -458, -937, -937, -8, 20, -937, -937, -937, -937, 182, -5, -937, -937, -728, -937, -90, -937, -659, -121, -32, 698, 941, 507, 502, -937, -937, 765, -79, 1310, 8, -488, -1 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 4, 5, 938, 939, 139, 523, 140, 141, 311, 142, 449, 296, 297, 143, 531, 525, 756, 335, 714, 914, 349, 717, 1380, 721, 350, 936, 1485, 1556, 1142, 1384, 585, 997, 1118, 144, 332, 705, 706, 707, 708, 709, 757, 1295, 758, 787, 1107, 464, 465, 677, 678, 1128, 414, 741, 529, 949, 950, 466, 680, 731, 815, 826, 282, 283, 91, 92, 351, 182, 352, 93, 293, 94, 647, 95, 648, 841, 1061, 1062, 1331, 96, 97, 475, 471, 472, 98, 99, 145, 696, 890, 146, 100, 101, 102, 103, 742, 743, 944, 1281, 639, 359, 360, 1586, 216, 65, 681, 682, 231, 232, 1332, 1333, 628, 66, 450 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 6, 504, 683, 329, 147, 614, 308, 331, 915, 937, 353, 285, 1282, 847, 492, 713, 262, 1005, 395, 644, 354, 1404, 719, 261, 718, 355, -761, 719, 362, 215, 364, 365, 366, 367, 679, 369, 183, 371, 596, 373, 411, 773, 924, -762, 407, 927, 928, -763, -764, 511, 610, 618, 774, 264, 259, 389, 260, 941, 942, 862, 551, 234, 412, 408, 184, 834, 397, 398, 835, 920, 1041, 104, 645, 404, 405, 407, 268, 269, 270, 552, 651, 931, 932, 273, 810, 821, 407, 287, 288, 289, 284, 284, 148, 259, 589, 260, 832, -761, 294, 956, -761, 998, 801, 1033, 1001, 1075, 292, 147, 147, 147, 149, 147, 147, 147, -762, 155, 147, -762, -763, -764, 265, -763, -764, 147, 1104, 244, 1020, 407, 147, 147, 407, 147, 147, 147, 356, 147, 147, 407, 287, 288, 289, 748, 1032, 1105, 157, 749, 1299, 361, 361, 1300, 361, 361, 361, 361, 186, 361, 1301, 361, 215, 361, 1148, 1047, 357, 812, 526, 244, 527, 353, 528, 720, 801, 1039, 1054, 1405, 720, 361, 687, 354, 1149, 683, 440, 441, 355, 294, 619, 917, 361, 361, 750, 921, 290, 534, 863, 361, 361, 407, 452, 454, 353, 407, 1436, 638, 353, 735, 268, 269, 270, 273, 354, 898, 150, 776, 354, 355, 1302, 1113, 1007, 355, 1348, 1437, 801, 1040, 468, 1440, 1443, 438, 185, 291, 151, 467, 413, 415, 287, 288, 289, 905, 407, 631, 152, 906, 751, 290, 1441, 1444, 1139, 820, 153, 1140, 1141, 217, 218, 219, 253, 254, 255, 1532, 256, 257, 258, 407, 284, 284, 268, 1008, 1037, 1038, 154, 872, 1134, 752, 407, 407, 567, 1143, 156, 407, 284, 284, 1569, 158, 469, 1469, 907, 753, 159, 473, 476, 1577, 754, 1570, 1571, 356, 520, 755, 1572, 1309, 256, 257, 258, 147, 147, 486, 1010, 220, 1286, 147, 1578, -101, 160, -101, 147, -101, 792, 161, 407, 221, 222, 162, 1614, 357, 6, 163, 356, 407, 358, 516, 356, 839, 1002, 164, 217, 218, 219, 1588, 165, 290, 274, 1615, 275, 407, 276, 166, 1625, 1003, 1004, 1296, 807, 1034, 1291, 1292, 357, 167, 223, 224, 357, 225, 294, 413, 1626, 407, 226, 837, 227, 908, 533, 1127, 407, 827, 1021, 1304, 830, 192, 831, 1130, 168, 683, 897, 909, 1627, 447, 820, 448, 910, 277, 220, 1628, 169, 911, 1, 2, 3, 70, 361, 71, 72, 73, 221, 222, 884, 885, 886, 613, 468, 266, 1144, 170, 1307, 679, 612, 467, 171, 586, 1479, 1480, 1481, -101, 172, -101, 1389, -101, 1131, 80, 173, 287, 288, 289, 620, 1003, 1004, 1135, 621, 468, 174, 223, 224, 175, 225, 267, 467, 820, 1046, 226, 913, 227, 1003, 1004, 1293, 176, 606, 598, 514, 599, 515, 600, 606, 606, 1385, 82, 83, 1494, 1003, 1004, 1381, 187, 278, 353, 629, 724, 10, 641, 11, 188, 476, 622, 88, 354, 831, 1053, 279, 90, 355, 358, 193, 280, 194, 1303, -280, 147, 281, 684, 1422, 1423, 1424, 1315, 1316, 6, 601, 737, 195, 738, 739, 740, 176, 147, 263, 526, 711, 527, 272, 1006, 1137, 932, 358, 286, 353, 406, 358, 1146, 1147, 733, 299, 1469, 6, 310, 354, 468, 290, 314, 732, 355, 1003, 1004, 467, 315, 316, 323, 317, 318, 1036, 759, 319, 324, 486, 325, 328, 630, 390, 631, 392, 632, 413, 627, 805, 393, 623, 399, 445, 477, 1050, 804, 468, 1051, 1052, 1402, 217, 218, 219, 467, 624, 470, 1102, -279, 488, 625, 489, 490, 505, 602, 626, 507, 517, 518, 415, 469, 788, 522, 530, 535, 407, 356, 542, 603, 633, 606, 536, 537, 604, 538, 539, 1379, 606, 606, 540, 1383, 544, 541, 543, 549, 606, 545, 1386, 629, 546, 547, 606, 606, 586, 357, 220, 548, 550, 629, 629, 553, 554, 629, 415, 555, 556, 581, 221, 222, 557, 1115, 1397, 558, 559, 415, 356, 560, 561, 827, 569, 859, 830, 562, 6, 842, 1476, 1477, 1478, 563, 1479, 1480, 1481, 183, 564, 570, 468, 571, 573, 574, 468, 575, 577, 467, 357, 223, 224, 467, 225, 584, 915, 634, 688, 226, 578, 227, 591, 593, 597, 617, 646, 184, 147, 147, 147, 635, 643, 710, 649, 689, 636, 685, 690, 6, 806, 637, 691, 692, 693, 694, 712, 736, 715, 228, 760, 816, 629, 229, 819, 768, 762, 763, 230, -281, 469, 791, 803, -370, 469, 794, 759, 733, 770, 769, 733, 733, 759, 771, 1011, 1012, 732, 772, 147, 732, 732, 244, 1016, 801, 1017, 813, 945, 823, 468, 952, 833, 836, 840, 844, 845, 467, 846, 848, 852, 476, 788, 415, 759, 861, 759, 891, 892, 759, 853, 893, 894, 899, 183, 1563, 895, 896, 1116, 901, 902, 918, 1117, 916, 922, 358, 919, 1322, 1408, 925, 934, 1409, 1410, 943, 1411, 946, 1469, 1413, 947, 912, 1119, 606, 184, 954, 606, 606, 641, 1013, 1014, 629, 468, 415, 415, 683, 1015, 788, 1023, 467, 1018, 629, 1022, 1025, 629, 629, 859, 641, 820, 831, 1067, 1057, 1595, 1596, 1597, 1060, 358, 1069, 641, 1103, 1074, 1106, 451, 453, 1109, 1110, 147, 679, 1063, 1111, 1122, 1132, 1123, 185, 1133, 1136, 1483, 1150, 1145, 1151, 1486, 1100, 1283, 1489, 932, 1050, 1051, 1052, 1284, 1287, 251, 252, 253, 254, 255, 1289, 256, 257, 258, 1621, 1288, 1298, 1306, 1314, 1313, 468, 1317, 1318, 1629, 1320, 1334, 1323, 467, 710, 1335, 1321, 1035, 6, 1324, 1336, 1108, -288, 1337, 1342, 147, 1338, 1043, 629, 147, 1044, 1045, 1340, 1343, 1351, 629, 629, 1344, 1352, 629, 1129, 1353, 1354, 415, 1474, 1475, 1476, 1477, 1478, 1355, 1479, 1480, 1481, 1356, 733, 1357, 759, 733, 733, 1358, 641, 1359, 1378, 732, 469, 1382, 732, 732, 1305, 1387, 1388, 1400, 64, 214, 1394, 1339, 952, 1406, 242, 243, 1425, 1428, 1557, 1559, 1429, 1430, 1431, 185, 1438, 244, 1432, 1562, 759, 1433, 1435, 1564, 1565, 1566, 1567, 1568, 1439, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1442, 1445, 1484, 1446, 1114, 1447, 1448, 1452, 1487, 1469, 1492, 191, 816, 1490, 1497, 819, 1491, 196, 197, 198, 199, 200, 1495, 641, 235, 1498, 605, 759, 759, 1499, 1500, 183, 607, 608, 1426, 1501, 1502, 586, 1515, 284, 1503, 1516, 1590, 1517, 1591, 1593, 606, 1391, 1392, 1518, 1520, 1519, 1522, 363, 415, 415, 1521, 775, 368, 184, 370, 629, 372, 1523, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 1611, 1531, 1528, 1560, 1573, 1555, 1558, 361, 777, 1561, 396, 1576, 1575, 1579, 400, 1580, 401, 402, 1620, 1581, 1584, 778, 779, 1582, 468, 710, 251, 252, 253, 254, 255, 467, 256, 257, 258, 1585, 1322, 780, 1592, 1598, 1594, 1599, 147, 1600, 1601, 1602, 1604, 1587, 1603, 1470, 1471, 1472, 1473, 1605, 1129, 1474, 1475, 1476, 1477, 1478, 1606, 1479, 1480, 1481, 629, 629, 629, 1319, 781, 1607, 1608, 782, 586, 1610, 783, 403, 586, 1612, 733, 1613, 1622, 1623, 469, 1624, 1630, 1631, 495, 732, 361, 361, 784, 1390, 790, 843, 1401, 1482, 444, 1120, 900, 797, 798, 1574, 785, 1399, 1360, 1427, 1077, 802, 510, 1393, 851, 512, 0, 808, 809, 0, 786, 583, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 0, 0, 439, 0, 185, 0, 0, 443, 0, 0, 0, 1043, 1044, 1045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1403, 0, 0, 0, 0, 0, 0, 0, 0, 287, 288, 289, 725, 468, 0, 0, 726, 493, 0, 0, 467, 0, 0, 0, 1416, 1418, 1420, 0, 0, 0, 0, 0, 468, 0, 945, 468, 468, 0, 468, 467, 0, 468, 467, 467, 0, 467, 506, 0, 467, 0, 0, 0, 566, 0, 0, 0, 0, 0, 0, 727, 302, 303, 304, 0, 305, 307, 309, 0, 0, 313, 759, 684, 0, 0, 0, 0, 320, 0, 0, 788, 284, 326, 327, 759, 330, 333, 334, 0, 338, 339, 469, 0, 0, 469, 469, 0, 469, 0, 468, 469, 0, 0, 468, 0, 0, 467, 0, 0, 565, 467, 6, 0, 290, 1504, 0, 1505, 0, 1506, 0, 1459, 1507, 1508, 1509, 0, 579, 580, 0, 0, 0, 0, 1029, 587, 0, 1030, 1031, 0, 0, 0, 629, 0, 728, 0, 1463, 1464, 1465, 1466, 1467, 1468, 0, 233, 0, 217, 218, 219, 729, 0, 469, 1469, 0, 730, 469, 0, 0, 759, 586, 0, 0, 0, 0, 0, 0, 952, 271, 1511, 1512, 716, 1513, 0, 1514, 0, 0, 0, 734, 1467, 1468, 0, 0, 0, 640, 0, 0, 0, 298, 0, 1469, 1459, 0, 0, 0, 0, 0, 0, 147, 468, 0, 220, 0, 0, 0, 764, 467, 765, 322, 766, 0, 0, 0, 221, 222, 0, 0, 0, 337, 1319, 0, 1553, 0, 0, 0, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 723, 0, 0, 0, 0, 0, 0, 0, 0, 1469, 747, 0, 0, 0, 0, 0, 307, 313, 223, 224, 0, 225, 494, 0, 0, 469, 226, 586, 227, 0, 0, 391, 0, 0, 394, 586, 0, 0, 468, 586, 586, 586, 586, 586, 0, 467, 1474, 1475, 1476, 1477, 1478, 0, 1479, 1480, 1481, 579, 1108, 0, 0, 0, 582, 0, 0, 0, 0, 230, 0, 0, 0, 0, 789, 0, 237, 238, 239, 240, 241, 242, 243, 793, 409, 410, 0, 1474, 1475, 1476, 1477, 1478, 244, 1479, 1480, 1481, 0, 0, 0, 586, 469, 0, 586, 858, 0, 0, 0, 0, 788, 788, 788, 436, 0, 0, 0, 0, 0, 1616, 1617, 1618, 0, 1619, 0, 0, 0, 455, 456, 0, 0, 1312, 446, 0, 838, 1471, 1472, 1473, 586, 0, 1474, 1475, 1476, 1477, 1478, 0, 1479, 1480, 1481, 0, 485, 0, 487, 0, 0, 0, 586, 788, 0, 854, 855, 856, 857, 0, 860, 0, 788, 0, 0, 497, 0, 498, 499, 500, 501, 502, 503, 0, 0, 0, 0, 1377, 0, 0, 478, 479, 480, 0, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 521, 0, 0, 524, 0, 0, 0, 0, 650, 0, 0, 532, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 0, 0, 0, 0, 0, 0, 951, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 222, 568, 0, 0, 0, 572, 0, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 233, 0, 0, 0, 0, 244, 1064, 1065, 1066, 0, 1068, 0, 1070, 0, 1071, 1072, 0, 0, 0, 483, 224, 640, 225, 0, 0, 594, 595, 226, 0, 227, 0, 0, 0, 0, 0, 0, 298, 0, 609, 0, 640, 0, 615, 616, 0, 0, 0, 0, 298, 0, 0, 640, 0, 0, 0, 1056, 291, 0, 0, 0, 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, 1073, 0, 0, 0, 0, 298, 0, 0, 0, 0, 0, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1376, 0, 1101, 0, 0, 0, 0, 0, 0, 652, 653, 654, 10, 0, 11, 655, 656, 0, 0, 761, 0, 849, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 887, 888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 1377, 0, 1377, 1377, 1377, 1377, 1377, 658, 1377, 0, 0, 0, 0, 0, 0, 951, 0, 0, 409, 659, 0, 0, 0, 0, 660, 0, 0, 796, 0, 0, 799, 800, 661, 662, 775, 795, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 814, 0, 776, 817, 818, 0, 0, 822, 0, 0, 0, 825, 0, 0, 828, 829, 777, 0, 663, 824, 664, 1294, 665, 640, 0, 1297, 0, 666, 0, 778, 779, 667, 0, 0, 668, 0, 0, 298, 0, 669, 0, 0, 670, 0, 0, 780, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 671, 0, 0, 672, 673, 0, 0, 0, 674, 0, 850, 0, 781, 0, 676, 782, 0, 0, 783, 1361, 236, 237, 238, 239, 240, 241, 242, 243, 0, 1346, 0, 904, 0, 0, 784, 0, 0, 244, 0, 0, 0, 926, 0, 0, 929, 930, 785, 933, 0, 0, 0, 0, 1377, 1465, 1466, 1467, 1468, 0, 0, 0, 786, 0, 0, 940, 955, 0, 1469, 0, 999, 1000, 0, 0, 0, 0, 1009, 0, 0, 0, 0, 1451, 0, 1453, 1454, 1455, 1456, 1457, 0, 1460, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 1377, 1024, 0, 1377, 1027, 1028, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 0, 0, 1042, 244, 0, 0, 0, 0, 0, 0, 0, 0, 1048, 1049, 0, 0, 0, 0, 0, 0, 0, 0, 1055, 0, 0, 0, 697, 0, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 698, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1474, 1475, 1476, 1477, 1478, 0, 1479, 1480, 1481, 7, 8, 9, 10, 0, 11, 12, 13, 1098, 0, 0, 0, 1449, 0, 0, 0, 0, 0, 0, 0, 0, 1124, 0, 0, 1125, 1126, 0, 1121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1396, 1138, 0, 0, 0, 0, 0, 0, 1363, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 1364, 256, 257, 258, 0, 1365, 0, 590, 0, 0, 1285, 0, 1458, 23, 24, 0, 0, 0, 0, 26, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 1346, 0, 1609, 0, 0, 1434, 0, 0, 0, 0, 0, 45, 0, 46, 0, 1290, 0, 0, 1366, 0, 0, 0, 1367, 0, 0, 1368, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1310, 1311, 1524, 1525, 1526, 1527, 1308, 1529, 0, 1530, 951, 0, 1369, 0, 0, 1370, 1371, 1372, 0, 0, 1373, 0, 1450, 62, 0, 0, 1375, 0, 0, 0, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 0, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1341, 0, 0, 0, 0, 0, 0, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 0, 0, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1554, 1208, 1362, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 0, 1218, 1219, 1220, 0, 0, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 1221, 0, 0, 0, 940, 244, 0, 1222, 1223, 1224, 0, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 0, 0, 0, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1493, 1279, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 300, 114, 0, 0, 0, 0, 0, 7, 8, 9, 10, 301, 11, 12, 13, 14, 0, 0, 0, 189, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 1398, 256, 257, 258, 124, 312, 0, 1349, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 130, 0, 0, 15, 0, 133, 1407, 16, 0, 17, 18, 19, 0, 0, 1412, 20, 136, 1414, 137, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 1421, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 1488, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 0, 0, 1496, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 190, 62, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 0, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 0, 0, 0, 0, 0, 0, 0, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 0, 1551, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 0, 1208, 0, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 0, 1218, 1219, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1221, 0, 1583, 0, 0, 0, 0, 1222, 1223, 1224, 0, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 0, 0, 0, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 0, 1279, 1280, 7, 8, 9, 10, 0, 11, 12, 13, 201, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 0, 15, 69, 244, 0, 202, 0, 203, 204, 205, 74, 75, 0, 20, 76, 0, 0, 206, 22, 0, 0, 78, 0, 0, 0, 0, 23, 24, 207, 0, 0, 0, 26, 0, 0, 208, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 209, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 210, 211, 50, 0, 0, 51, 84, 0, 0, 0, 52, 0, 0, 53, 85, 86, 87, 212, 0, 0, 89, 0, 213, 7, 8, 9, 10, 0, 11, 12, 13, 491, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 0, 0, 0, 1589, 15, 342, 0, 0, 202, 0, 203, 204, 205, 74, 0, 0, 20, 343, 0, 0, 206, 22, 0, 0, 78, 0, 0, 0, 0, 23, 24, 207, 0, 0, 0, 26, 0, 0, 208, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 209, 70, 0, 71, 72, 73, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 210, 211, 50, 0, 0, 51, 84, 0, 0, 0, 52, 80, 0, 53, 345, 346, 87, 212, 0, 0, 89, 0, 213, 7, 8, 9, 10, 267, 11, 12, 13, 14, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 82, 83, 63, 0, 0, 0, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 88, 0, 0, 0, 0, 90, 15, 244, 0, 0, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 744, 745, 21, 22, 0, 0, 0, 0, 187, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 746, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 588, 63, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 15, 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 478, 479, 480, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 481, 0, 482, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 220, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 221, 222, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 437, 0, 63, 0, 0, 483, 224, 0, 225, 0, 0, 0, 0, 226, 0, 227, 0, 0, 15, 442, 0, 0, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 484, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, 0, 0, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 15, 722, 0, 0, 16, 244, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, 0, 953, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 15, 256, 257, 258, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 948, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, 0, 0, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 15, 0, 0, 0, 16, 244, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 1099, 0, 63, 1325, 0, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 15, 256, 257, 258, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 1395, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, 0, 0, 0, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 15, 0, 0, 0, 16, 244, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 1552, 0, 63, 0, 0, 1347, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 15, 256, 257, 258, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 217, 218, 219, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 652, 653, 654, 10, 55, 11, 655, 656, 67, 68, 0, 0, 657, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, 220, 63, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 221, 222, 459, 0, 0, 658, 69, 244, 0, 70, 0, 71, 72, 73, 74, 460, 0, 659, 76, 0, 0, 77, 660, 0, 0, 78, 0, 0, 0, 0, 661, 662, 79, 0, 0, 0, 0, 223, 224, 80, 225, 0, 0, 0, 0, 226, 0, 227, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 663, 0, 664, 0, 665, 0, 0, 321, 461, 666, 0, 82, 83, 667, 0, 0, 668, 84, 0, 0, 0, 669, 0, 0, 670, 85, 86, 87, 88, 0, 0, 89, 0, 90, 7, 8, 9, 10, 0, 11, 12, 13, 14, 0, 0, 0, 671, 0, 0, 672, 673, 0, 0, 0, 674, 0, 675, 0, 0, 0, 676, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 576, 0, 0, 0, 15, 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 217, 218, 219, 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, 652, 653, 654, 10, 55, 11, 655, 656, 67, 68, 0, 0, 1076, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 61, 62, 0, 220, 63, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 221, 222, 459, 0, 0, 658, 69, 244, 0, 70, 0, 71, 72, 73, 74, 460, 0, 659, 76, 0, 0, 77, 660, 0, 0, 78, 0, 0, 0, 0, 661, 662, 79, 0, 0, 0, 0, 223, 224, 80, 225, 0, 0, 0, 0, 226, 0, 227, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 663, 0, 664, 0, 665, 0, 0, 496, 461, 666, 0, 82, 83, 667, 0, 0, 668, 84, 0, 0, 0, 669, 0, 0, 670, 85, 86, 87, 88, 0, 0, 89, 0, 90, 7, 8, 9, 10, 0, 11, 12, 13, 0, 0, 0, 0, 671, 0, 0, 672, 673, 0, 0, 0, 674, 0, 675, 0, 0, 0, 676, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 592, 0, 0, 0, 1363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1364, 0, 0, 0, 0, 1365, 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 26, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 0, 0, 7, 8, 9, 10, 0, 11, 12, 13, 45, 0, 46, 0, 0, 0, 0, 1366, 0, 0, 0, 1367, 0, 0, 1368, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 0, 0, 0, 1363, 0, 0, 0, 0, 1369, 1469, 0, 1370, 1371, 1372, 0, 1364, 1373, 0, 1374, 62, 1365, 0, 1375, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 26, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 46, 0, 0, 0, 0, 1366, 0, 0, 957, 1367, 0, 0, 1368, 0, 0, 0, 0, 52, 958, 959, 960, 961, 962, 963, 964, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 966, 0, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 0, 1373, 0, 1374, 62, 0, 0, 1375, 0, 0, 0, 0, 0, 1470, 1471, 1472, 1473, 0, 979, 1474, 1475, 1476, 1477, 1478, 0, 1479, 1480, 1481, 0, 0, 0, 340, 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1463, 1464, 1465, 1466, 1467, 1468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1469, 0, 980, 240, 241, 242, 243, 0, 0, 0, 0, 0, 342, 0, 0, 70, 244, 71, 72, 73, 74, 0, 0, 0, 343, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, 0, 0, 981, 0, 0, 982, 80, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 0, 994, 995, 0, 81, 996, 340, 341, 0, 0, 0, 0, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, 70, 0, 71, 72, 73, 0, 0, 345, 346, 87, 88, 0, 266, 89, 0, 90, 342, 0, 0, 70, 347, 71, 72, 73, 74, 474, 0, 0, 343, 0, 80, 77, 1471, 1472, 1473, 78, 348, 1474, 1475, 1476, 1477, 1478, 79, 1479, 1480, 1481, 267, 0, 0, 80, 0, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 508, 509, 0, 81, 82, 83, 70, 0, 71, 72, 73, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0, 88, 0, 82, 83, 0, 90, 0, 0, 84, 0, 0, 0, 0, 0, 0, 80, 345, 346, 87, 88, 342, 0, 89, 70, 90, 71, 72, 73, 74, 0, 0, 267, 343, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 348, 79, 0, 0, 0, 0, 82, 83, 80, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 88, 81, 0, 244, 0, 90, 0, 0, 217, 218, 219, 0, 0, 344, 0, 0, 0, 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 345, 346, 87, 88, 0, 0, 89, 0, 90, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 220, 0, 348, 236, 237, 238, 239, 240, 241, 242, 243, 0, 221, 222, 0, 0, 0, 0, 0, 0, 244, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 223, 224, 0, 225, 0, 0, 0, 244, 226, 0, 227, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 686, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 236, 237, 238, 239, 240, 241, 242, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 767, 0, 0, 0, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 923, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 1026, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 1058, 864, 865, 866, 867, 868, 869, 870, 871, 70, 0, 71, 72, 73, 0, 0, 0, 0, 872, 0, 0, 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 1345, 0, 80, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, -2, 256, 257, 258, 267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, 241, 242, 243, 0, 0, 82, 83, 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 90, 105, 0, 106, 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, 109, 110, 238, 239, 240, 241, 242, 243, 0, 111, 0, 112, 113, 114, 115, 0, 0, 244, 116, 0, 0, 0, 0, 117, 0, 0, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 0, 884, 885, 886, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 0, 0, 0, 130, 131, 67, 68, 132, 133, 457, 0, 458, 134, 0, 0, 0, 0, 0, 135, 136, 0, 137, 0, 0, 0, 0, 0, 0, 0, 138, 0, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 459, 256, 257, 258, 69, 0, 0, 70, 0, 71, 72, 73, 74, 460, 0, 0, 76, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, 238, 239, 240, 241, 242, 243, 80, 248, 249, 250, 251, 252, 253, 254, 255, 244, 256, 257, 258, 217, 218, 219, 81, 1463, 1464, 1465, 1466, 1467, 1468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1469, 461, 0, 0, 82, 83, 0, 0, 0, 0, 84, 0, 1463, 1464, 1465, 1466, 1467, 1468, 85, 86, 87, 88, 0, 0, 89, 0, 90, 1469, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 462, 0, 0, 0, 0, 463, 0, 0, 221, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 223, 224, 0, 225, 0, 0, 0, 0, 226, 0, 227, 0, 306, 0, 0, 0, 249, 250, 251, 252, 253, 254, 255, 0, 256, 257, 258, 0, 0, 0, 0, 0, 0, 217, 218, 219, 0, 1472, 1473, 306, 0, 1474, 1475, 1476, 1477, 1478, 0, 1479, 1480, 1481, 0, 0, 0, 105, 0, 106, 0, 0, 0, 108, 0, 0, 0, 0, 0, 1473, 109, 110, 1474, 1475, 1476, 1477, 1478, 0, 1479, 1480, 1481, 112, 113, 114, 105, 0, 106, 0, 0, 0, 108, 220, 0, 301, 0, 0, 0, 109, 110, 0, 0, 0, 0, 221, 222, 0, 0, 0, 112, 300, 114, 0, 0, 0, 0, 0, 0, 124, 0, 0, 301, 0, 0, 699, 700, 701, 0, 129, 0, 0, 0, 0, 0, 130, 0, 0, 0, 132, 133, 0, 223, 1326, 1327, 1328, 124, 0, 0, 0, 226, 136, 227, 137, 0, 0, 129, 699, 700, 701, 0, 0, 130, 1329, 0, 0, 0, 133, 1330, 70, 0, 71, 72, 73, 702, 703, 0, 0, 136, 0, 137, 77, 0, 0, 0, 0, 0, 217, 218, 219, 0, 0, 79, 0, 0, 0, 0, 0, 0, 80, 0, 70, 0, 71, 72, 73, 0, 0, 0, 0, 0, 0, 0, 77, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 67, 68, 0, 0, 457, 80, 0, 0, 0, 82, 83, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 81, 0, 704, 0, 0, 88, 221, 222, 89, 0, 90, 0, 0, 0, 0, 459, 0, 0, 0, 69, 82, 83, 70, 0, 71, 72, 73, 74, 460, 0, 0, 76, 0, 0, 77, 0, 0, 88, 78, 0, 89, 0, 90, 223, 224, 79, 225, 0, 0, 0, 0, 226, 80, 227, 0, 0, 0, 0, 0, 0, 0, 217, 218, 219, 1329, 0, 0, 0, 81, 1415, 0, 67, 68, 0, 0, 811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 461, 0, 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 67, 68, 85, 86, 87, 88, 0, 459, 89, 0, 90, 69, 0, 0, 70, 220, 71, 72, 73, 74, 460, 0, 0, 76, 0, 0, 77, 221, 222, 0, 78, 0, 0, 0, 0, 0, 459, 79, 0, 0, 69, 0, 0, 70, 80, 71, 72, 73, 74, 460, 0, 0, 76, 0, 0, 77, 0, 0, 0, 78, 81, 0, 0, 0, 223, 224, 79, 225, 0, 0, 0, 0, 226, 80, 227, 0, 0, 461, 0, 0, 82, 83, 0, 0, 0, 1329, 84, 67, 68, 81, 1417, 0, 0, 0, 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, 0, 0, 461, 0, 0, 82, 83, 67, 68, 0, 0, 84, 0, 0, 0, 217, 218, 219, 0, 85, 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, 73, 74, 75, 0, 0, 76, 0, 70, 77, 71, 72, 73, 78, 0, 0, 0, 0, 69, 0, 79, 70, 0, 71, 72, 73, 74, 80, 0, 0, 76, 0, 0, 77, 0, 0, 0, 78, 80, 0, 220, 0, 0, 81, 79, 0, 0, 0, 0, 0, 0, 80, 221, 222, 267, 0, 0, 0, 0, 0, 0, 0, 0, 82, 83, 67, 68, 81, 0, 84, 0, 0, 0, 0, 82, 83, 0, 85, 86, 87, 88, 0, 0, 89, 611, 90, 0, 82, 83, 223, 224, 88, 225, 84, 67, 0, 90, 226, 0, 227, 0, 85, 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, 73, 74, 295, 0, 0, 76, 0, 188, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, 0, 0, 69, 0, 0, 70, 80, 71, 72, 73, 74, 519, 0, 0, 76, 0, 0, 77, 0, 0, 0, 78, 81, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, 177, 0, 81, 0, 0, 0, 0, 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, 82, 83, 177, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, 88, 178, 0, 89, 70, 90, 71, 72, 73, 74, 1019, 0, 0, 179, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 178, 0, 79, 70, 0, 71, 72, 73, 74, 80, 0, 0, 179, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 81, 79, 0, 0, 0, 0, 0, 0, 80, 217, 218, 219, 0, 0, 0, 0, 0, 0, 0, 0, 82, 83, 67, 0, 81, 0, 84, 0, 0, 0, 0, 0, 0, 0, 180, 181, 87, 88, 0, 0, 89, 0, 90, 0, 82, 83, 0, 0, 0, 0, 84, 217, 218, 219, 0, 0, 0, 0, 180, 181, 87, 88, 69, 220, 89, 70, 90, 71, 72, 73, 74, 0, 0, 0, 76, 221, 222, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 81, 223, 224, 0, 225, 0, 221, 222, 0, 226, 0, 227, 0, 0, 0, 70, 0, 71, 72, 73, 82, 83, 1329, 0, 0, 0, 84, 1419, 0, 0, 0, 0, 0, 0, 85, 86, 87, 88, 0, 0, 89, 0, 90, 223, 224, 80, 225, 0, 0, 0, 0, 226, 105, 227, 106, 0, 0, 107, 108, 0, 0, 267, 0, 0, 1329, 109, 110, 0, 0, 0, 0, 0, 0, 0, 111, 0, 112, 113, 114, 115, 0, 82, 83, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 90, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 194, 106, 130, 131, 107, 108, 132, 133, 0, 0, 0, 134, 109, 110, 0, 0, 0, 135, 136, 0, 137, 111, 0, 112, 113, 114, 115, 0, 138, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 695, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 0, 106, 130, 131, 107, 108, 132, 133, 0, 0, 0, 134, 109, 110, 0, 0, 0, 135, 136, 0, 137, 111, 0, 112, 113, 114, 115, 0, 138, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 889, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 0, 106, 130, 131, 107, 108, 132, 133, 0, 0, 0, 134, 109, 110, 0, 0, 0, 135, 136, 0, 137, 111, 0, 112, 113, 114, 115, 0, 138, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 935, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 0, 106, 130, 131, 107, 108, 132, 133, 0, 0, 0, 134, 109, 110, 0, 0, 0, 135, 136, 0, 137, 111, 0, 112, 113, 114, 115, 0, 138, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1059, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 0, 106, 130, 131, 107, 108, 132, 133, 0, 0, 0, 134, 109, 110, 0, 0, 0, 135, 136, 0, 137, 111, 0, 112, 113, 114, 115, 0, 138, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 0, 106, 130, 131, 107, 108, 132, 133, 0, 0, 0, 134, 109, 110, 0, 0, 0, 135, 136, 0, 137, 111, 0, 112, 113, 114, 115, 0, 138, 0, 116, 0, 0, 0, 0, 117, 0, 0, 217, 218, 219, 0, 0, 903, 217, 218, 219, 1350, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 0, 0, 0, 130, 131, 0, 0, 132, 133, 481, 0, 482, 134, 0, 0, 0, 0, 0, 135, 136, 220, 137, 0, 0, 0, 0, 220, 0, 105, 138, 106, 0, 221, 222, 108, 0, 0, 0, 221, 222, 0, 109, 110, 0, 0, 0, 0, 0, 1510, 0, 0, 0, 112, 300, 114, 0, 0, 0, 0, 116, 0, 0, 0, 0, 301, 0, 0, 0, 0, 223, 224, 0, 225, 0, 0, 223, 224, 226, 225, 227, 0, 0, 0, 226, 0, 227, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, 105, 137, 106, 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, 109, 110, 0, -159, 0, 0, 0, 0, 0, 111, 0, 112, 113, 114, 115, 0, 0, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, 128, 129, 0, 0, 105, 0, 106, 130, 131, 0, 108, 132, 133, 105, 0, 106, 134, 109, 110, 108, 0, 0, 135, 136, 0, 137, 109, 110, 112, 113, 114, 0, 0, 0, 0, 116, 0, 112, 300, 114, 301, 0, 0, 0, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 124, 129, 0, 0, 0, 0, 0, 130, 0, 0, 129, 132, 133, 0, 0, 0, 130, 0, 0, 0, 0, 133, 135, 136, 0, 137, 0, 0, 0, 0, 0, 0, 136, 0, 137 }; static const yytype_int16 yycheck[] = { 1, 321, 490, 132, 5, 461, 113, 132, 714, 737, 142, 92, 948, 663, 299, 510, 75, 757, 184, 477, 142, 15, 13, 75, 10, 142, 76, 13, 149, 61, 151, 152, 153, 154, 490, 156, 44, 158, 447, 160, 148, 583, 724, 76, 148, 727, 728, 76, 76, 334, 459, 15, 584, 59, 6, 176, 8, 64, 65, 15, 148, 62, 170, 167, 44, 148, 187, 188, 151, 720, 810, 0, 481, 194, 195, 148, 81, 82, 83, 167, 489, 165, 166, 88, 617, 627, 148, 10, 11, 12, 91, 92, 147, 6, 167, 8, 638, 147, 99, 750, 150, 752, 166, 167, 755, 167, 98, 108, 109, 110, 165, 112, 113, 114, 147, 156, 117, 150, 147, 147, 126, 150, 150, 124, 148, 33, 776, 148, 129, 130, 148, 132, 133, 134, 142, 136, 137, 148, 10, 11, 12, 13, 801, 167, 156, 17, 167, 148, 149, 167, 151, 152, 153, 154, 156, 156, 167, 158, 190, 160, 147, 820, 142, 619, 147, 33, 149, 299, 151, 160, 166, 167, 831, 167, 160, 176, 496, 299, 165, 667, 261, 262, 299, 184, 148, 717, 187, 188, 60, 721, 113, 357, 148, 194, 195, 148, 277, 278, 330, 148, 148, 468, 334, 523, 209, 210, 211, 212, 330, 697, 165, 33, 334, 330, 167, 167, 758, 334, 167, 167, 166, 167, 281, 148, 148, 257, 44, 150, 165, 281, 151, 232, 10, 11, 12, 13, 148, 15, 165, 17, 112, 113, 167, 167, 926, 166, 165, 929, 930, 10, 11, 12, 160, 161, 162, 167, 164, 165, 166, 148, 261, 262, 267, 758, 806, 807, 165, 33, 919, 141, 148, 148, 393, 932, 165, 148, 277, 278, 167, 165, 281, 33, 60, 155, 165, 286, 291, 148, 160, 167, 167, 299, 344, 165, 167, 1023, 164, 165, 166, 300, 301, 293, 760, 64, 955, 306, 167, 147, 165, 149, 311, 151, 597, 165, 148, 76, 77, 165, 148, 299, 321, 165, 330, 148, 142, 165, 334, 647, 150, 165, 10, 11, 12, 167, 165, 113, 13, 167, 15, 148, 17, 165, 167, 165, 166, 1004, 613, 803, 999, 1000, 330, 165, 113, 114, 334, 116, 357, 151, 167, 148, 121, 646, 123, 141, 356, 151, 148, 634, 777, 1019, 637, 156, 166, 915, 165, 863, 696, 155, 167, 47, 166, 49, 160, 60, 64, 167, 165, 165, 144, 145, 146, 54, 393, 56, 57, 58, 76, 77, 164, 165, 166, 460, 461, 66, 936, 165, 167, 863, 460, 461, 165, 412, 164, 165, 166, 147, 165, 149, 1146, 151, 915, 84, 165, 10, 11, 12, 13, 165, 166, 167, 17, 490, 165, 113, 114, 165, 116, 100, 490, 166, 167, 121, 709, 123, 165, 166, 167, 165, 449, 13, 149, 15, 151, 17, 455, 456, 1138, 120, 121, 1395, 165, 166, 167, 165, 141, 597, 467, 519, 6, 470, 8, 165, 477, 60, 137, 597, 166, 167, 155, 142, 597, 299, 165, 160, 165, 1018, 166, 488, 165, 490, 114, 115, 116, 1035, 1036, 496, 60, 147, 165, 149, 150, 151, 165, 504, 165, 147, 507, 149, 165, 151, 165, 166, 330, 147, 646, 167, 334, 147, 148, 520, 165, 33, 523, 150, 646, 584, 113, 165, 520, 646, 165, 166, 584, 165, 165, 150, 165, 165, 805, 531, 165, 150, 534, 150, 165, 13, 165, 15, 165, 17, 151, 467, 611, 165, 141, 165, 160, 150, 825, 611, 619, 828, 829, 1303, 10, 11, 12, 619, 155, 166, 890, 166, 48, 160, 148, 165, 147, 141, 165, 156, 165, 165, 583, 584, 585, 165, 149, 168, 148, 597, 157, 155, 60, 594, 167, 167, 160, 167, 167, 1132, 601, 602, 167, 1136, 157, 167, 167, 148, 609, 167, 1142, 612, 167, 167, 615, 616, 617, 597, 64, 167, 167, 622, 623, 148, 167, 626, 627, 167, 167, 15, 76, 77, 167, 900, 1285, 167, 167, 638, 646, 167, 167, 908, 157, 675, 911, 167, 647, 648, 160, 161, 162, 167, 164, 165, 166, 663, 167, 167, 717, 167, 167, 157, 721, 167, 167, 717, 646, 113, 114, 721, 116, 165, 1378, 141, 147, 121, 167, 123, 167, 167, 165, 167, 165, 663, 685, 686, 687, 155, 168, 507, 150, 148, 160, 167, 148, 696, 612, 165, 148, 148, 148, 148, 165, 165, 149, 151, 150, 623, 709, 155, 626, 167, 165, 165, 160, 166, 717, 48, 48, 147, 721, 160, 714, 724, 165, 167, 727, 728, 720, 167, 762, 763, 724, 165, 735, 727, 728, 33, 770, 166, 772, 160, 743, 160, 803, 746, 170, 48, 76, 165, 156, 803, 156, 156, 156, 760, 757, 758, 750, 167, 752, 10, 10, 755, 165, 10, 10, 149, 776, 1497, 10, 10, 901, 157, 148, 167, 901, 149, 167, 597, 160, 1048, 1314, 160, 167, 1317, 1318, 168, 1320, 149, 33, 1323, 149, 709, 901, 796, 776, 160, 799, 800, 801, 167, 167, 804, 863, 806, 807, 1295, 167, 810, 147, 863, 167, 814, 165, 167, 817, 818, 850, 820, 166, 166, 165, 167, 1564, 1565, 1566, 150, 646, 165, 831, 148, 167, 148, 277, 278, 148, 148, 839, 1295, 841, 148, 151, 167, 160, 663, 165, 167, 1380, 149, 168, 149, 1384, 885, 168, 1388, 166, 1124, 1125, 1126, 148, 10, 158, 159, 160, 161, 162, 170, 164, 165, 166, 1611, 167, 148, 48, 165, 170, 936, 165, 165, 1620, 165, 147, 165, 936, 703, 148, 170, 804, 890, 170, 167, 893, 166, 157, 167, 897, 157, 814, 900, 901, 817, 818, 157, 157, 10, 907, 908, 167, 10, 911, 912, 149, 10, 915, 158, 159, 160, 161, 162, 167, 164, 165, 166, 10, 926, 10, 919, 929, 930, 10, 932, 149, 148, 926, 936, 165, 929, 930, 1020, 170, 167, 170, 2, 61, 168, 1067, 948, 168, 22, 23, 15, 165, 1485, 1487, 165, 167, 165, 776, 148, 33, 167, 1495, 955, 165, 167, 1499, 1500, 1501, 1502, 1503, 149, 16, 17, 18, 19, 20, 21, 22, 23, 167, 165, 165, 156, 900, 156, 156, 156, 167, 33, 167, 50, 908, 168, 147, 911, 168, 56, 57, 58, 59, 60, 167, 1004, 63, 167, 449, 999, 1000, 167, 167, 1019, 455, 456, 1334, 167, 167, 1018, 149, 1020, 167, 10, 1555, 149, 1556, 1558, 1027, 1148, 1149, 10, 149, 10, 10, 150, 1035, 1036, 149, 17, 155, 1019, 157, 1042, 159, 149, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 1592, 167, 165, 15, 148, 167, 167, 1067, 47, 168, 186, 148, 167, 167, 190, 157, 192, 193, 1610, 157, 167, 60, 61, 157, 1142, 902, 158, 159, 160, 161, 162, 1142, 164, 165, 166, 157, 1362, 76, 167, 10, 168, 167, 1102, 149, 10, 10, 165, 150, 149, 152, 153, 154, 155, 165, 1114, 158, 159, 160, 161, 162, 165, 164, 165, 166, 1124, 1125, 1126, 1042, 107, 167, 165, 110, 1132, 167, 113, 193, 1136, 149, 1138, 167, 149, 10, 1142, 149, 167, 149, 311, 1138, 1148, 1149, 129, 1147, 594, 649, 1298, 1378, 272, 902, 703, 601, 602, 1516, 141, 1295, 1114, 1335, 863, 609, 334, 1258, 667, 334, -1, 615, 616, -1, 155, 411, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, -1, -1, 258, -1, 1019, -1, -1, 263, -1, -1, -1, 1124, 1125, 1126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1304, -1, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 1295, -1, -1, 17, 299, -1, -1, 1295, -1, -1, -1, 1326, 1327, 1328, -1, -1, -1, -1, -1, 1314, -1, 1258, 1317, 1318, -1, 1320, 1314, -1, 1323, 1317, 1318, -1, 1320, 328, -1, 1323, -1, -1, -1, 392, -1, -1, -1, -1, -1, -1, 60, 108, 109, 110, -1, 112, 113, 114, -1, -1, 117, 1285, 1295, -1, -1, -1, -1, 124, -1, -1, 1303, 1304, 129, 130, 1298, 132, 133, 134, -1, 136, 137, 1314, -1, -1, 1317, 1318, -1, 1320, -1, 1380, 1323, -1, -1, 1384, -1, -1, 1380, -1, -1, 390, 1384, 1334, -1, 113, 1415, -1, 1417, -1, 1419, -1, 1374, 1422, 1423, 1424, -1, 406, 407, -1, -1, -1, -1, 796, 413, -1, 799, 800, -1, -1, -1, 1362, -1, 141, -1, 18, 19, 20, 21, 22, 23, -1, 62, -1, 10, 11, 12, 155, -1, 1380, 33, -1, 160, 1384, -1, -1, 1378, 1388, -1, -1, -1, -1, -1, -1, 1395, 85, 1428, 1429, 515, 1431, -1, 1433, -1, -1, -1, 522, 22, 23, -1, -1, -1, 470, -1, -1, -1, 105, -1, 33, 1450, -1, -1, -1, -1, -1, -1, 1426, 1485, -1, 64, -1, -1, -1, 549, 1485, 551, 125, 553, -1, -1, -1, 76, 77, -1, -1, -1, 135, 1362, -1, 1480, -1, -1, -1, 17, 18, 19, 20, 21, 22, 23, 518, -1, -1, -1, -1, -1, -1, -1, -1, 33, 528, -1, -1, -1, -1, -1, 300, 301, 113, 114, -1, 116, 306, -1, -1, 1485, 121, 1487, 123, -1, -1, 180, -1, -1, 183, 1495, -1, -1, 1556, 1499, 1500, 1501, 1502, 1503, -1, 1556, 158, 159, 160, 161, 162, -1, 164, 165, 166, 573, 1516, -1, -1, -1, 155, -1, -1, -1, -1, 160, -1, -1, -1, -1, 588, -1, 17, 18, 19, 20, 21, 22, 23, 597, 229, 230, -1, 158, 159, 160, 161, 162, 33, 164, 165, 166, -1, -1, -1, 1555, 1556, -1, 1558, 675, -1, -1, -1, -1, 1564, 1565, 1566, 256, -1, -1, -1, -1, -1, 1604, 1605, 1606, -1, 1608, -1, -1, -1, 279, 280, -1, -1, 1027, 275, -1, 646, 153, 154, 155, 1592, -1, 158, 159, 160, 161, 162, -1, 164, 165, 166, -1, 293, -1, 295, -1, -1, -1, 1610, 1611, -1, 671, 672, 673, 674, -1, 676, -1, 1620, -1, -1, 312, -1, 314, 315, 316, 317, 318, 319, -1, -1, -1, -1, 1127, -1, -1, 10, 11, 12, -1, -1, -1, -1, -1, -1, 336, -1, -1, -1, -1, -1, -1, -1, -1, 345, -1, -1, 348, -1, -1, -1, -1, 488, -1, -1, 356, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, -1, -1, -1, 746, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, 77, 395, -1, -1, -1, 399, -1, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, 411, -1, -1, -1, -1, 33, 844, 845, 846, -1, 848, -1, 850, -1, 852, 853, -1, -1, -1, 113, 114, 801, 116, -1, -1, 445, 446, 121, -1, 123, -1, -1, -1, -1, -1, -1, 447, -1, 458, -1, 820, -1, 462, 463, -1, -1, -1, -1, 459, -1, -1, 831, -1, -1, -1, 835, 150, -1, -1, -1, 471, -1, -1, -1, -1, -1, -1, -1, -1, -1, 481, -1, -1, 853, -1, -1, -1, -1, 489, -1, -1, -1, -1, -1, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 1127, -1, 886, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, -1, 8, 9, 10, -1, -1, 534, -1, 15, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 685, 686, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 932, 1367, -1, 1369, 1370, 1371, 1372, 1373, 50, 1375, -1, -1, -1, -1, -1, -1, 948, -1, -1, 582, 62, -1, -1, -1, -1, 67, -1, -1, 600, -1, -1, 603, 604, 75, 76, 17, 599, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 621, -1, 33, 624, 625, -1, -1, 628, -1, -1, -1, 632, -1, -1, 635, 636, 47, -1, 109, 631, 111, 1002, 113, 1004, -1, 1006, -1, 118, -1, 60, 61, 122, -1, -1, 125, -1, -1, 649, -1, 130, -1, -1, 133, -1, -1, 76, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 155, -1, -1, 158, 159, -1, -1, -1, 163, -1, 165, -1, 107, -1, 169, 110, -1, -1, 113, 1122, 16, 17, 18, 19, 20, 21, 22, 23, -1, 1074, -1, 707, -1, -1, 129, -1, -1, 33, -1, -1, -1, 726, -1, -1, 729, 730, 141, 732, -1, -1, -1, -1, 1531, 20, 21, 22, 23, -1, -1, -1, 155, -1, -1, 739, 749, -1, 33, -1, 753, 754, -1, -1, -1, -1, 759, -1, -1, -1, -1, 1367, -1, 1369, 1370, 1371, 1372, 1373, -1, 1375, -1, -1, 901, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 777, -1, -1, -1, 1584, 791, -1, 1587, 794, 795, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, 813, 33, -1, -1, -1, -1, -1, -1, -1, -1, 823, 824, -1, -1, -1, -1, -1, -1, -1, -1, 833, -1, -1, -1, 148, -1, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 158, 159, 160, 161, 162, -1, 164, 165, 166, 3, 4, 5, 6, -1, 8, 9, 10, 884, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, 906, -1, -1, 909, 910, -1, 903, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1284, 925, -1, -1, -1, -1, -1, -1, 50, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 62, 164, 165, 166, -1, 67, -1, 170, -1, -1, 954, -1, 1374, 75, 76, -1, -1, -1, -1, 81, -1, -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 1342, -1, 1587, -1, -1, 1347, -1, -1, -1, -1, -1, 111, -1, 113, -1, 997, -1, -1, 118, -1, -1, -1, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1025, 1026, 1445, 1446, 1447, 1448, 1022, 1450, -1, 1452, 1395, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 1069, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1481, 70, 1123, 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, 100, -1, -1, -1, 1147, 33, -1, 107, 108, 109, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, 72, 73, -1, -1, -1, -1, -1, 3, 4, 5, 6, 83, 8, 9, 10, 11, -1, -1, -1, 15, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 1287, 164, 165, 166, 107, 108, -1, 170, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 123, -1, -1, 50, -1, 128, 1313, 54, -1, 56, 57, 58, -1, -1, 1321, 62, 139, 1324, 141, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, 1329, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, 1387, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, -1, -1, 1400, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 1479, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, 1528, -1, -1, -1, -1, 107, 108, 109, -1, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, -1, -1, -1, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, -1, 169, 170, 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, 50, 51, 33, -1, 54, -1, 56, 57, 58, 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, 126, -1, -1, -1, 130, -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, -1, 142, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 170, 50, 51, -1, -1, 54, -1, 56, 57, 58, 59, -1, -1, 62, 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 54, -1, 56, 57, 58, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, 126, -1, -1, -1, 130, 84, -1, 133, 134, 135, 136, 137, -1, -1, 140, -1, 142, 3, 4, 5, 6, 100, 8, 9, 10, 11, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, 120, 121, 169, -1, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 137, -1, -1, -1, -1, 142, 50, 33, -1, -1, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, 64, 65, 66, 67, -1, -1, -1, -1, 165, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, 147, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, 150, 169, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 50, -1, -1, -1, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, 10, 11, 12, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, 47, -1, 49, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, 64, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, 76, 77, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, 167, -1, 169, -1, -1, 113, 114, -1, 116, -1, -1, -1, -1, 121, -1, 123, -1, -1, 50, 51, -1, -1, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, 147, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, 50, 51, -1, -1, 54, 33, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, 149, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 50, 164, 165, 166, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, 147, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, 50, -1, -1, -1, 54, 33, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, 167, -1, 169, 148, -1, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 50, 164, 165, 166, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, 147, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, -1, 169, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, 50, -1, -1, -1, 54, 33, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, 167, -1, 169, -1, -1, 150, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 50, 164, 165, 166, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, 10, 11, 12, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, -1, 155, -1, -1, 158, 159, 160, -1, -1, 163, -1, 165, 166, -1, 64, 169, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 76, 77, 47, -1, -1, 50, 51, 33, -1, 54, -1, 56, 57, 58, 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, -1, 113, 114, 84, 116, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, 147, 117, 118, -1, 120, 121, 122, -1, -1, 125, 126, -1, -1, -1, 130, -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, -1, 142, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, -1, -1, 155, -1, -1, 158, 159, -1, -1, -1, 163, -1, 165, -1, -1, -1, 169, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, -1, -1, 50, -1, -1, -1, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, 10, 11, 12, -1, 118, -1, 120, 121, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, 133, -1, -1, -1, 137, 3, 4, 5, 6, 142, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, 165, 166, -1, 64, 169, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 76, 77, 47, -1, -1, 50, 51, 33, -1, 54, -1, 56, 57, 58, 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, -1, 113, 114, 84, 116, -1, -1, -1, -1, 121, -1, 123, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 113, -1, -1, 147, 117, 118, -1, 120, 121, 122, -1, -1, 125, 126, -1, -1, -1, 130, -1, -1, 133, 134, 135, 136, 137, -1, -1, 140, -1, 142, 3, 4, 5, 6, -1, 8, 9, 10, -1, -1, -1, -1, 155, -1, -1, 158, 159, -1, -1, -1, 163, -1, 165, -1, -1, -1, 169, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, 81, -1, -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, -1, -1, -1, 3, 4, 5, 6, -1, 8, 9, 10, 111, -1, 113, -1, -1, -1, -1, 118, -1, -1, -1, 122, -1, -1, 125, -1, -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, 50, -1, -1, -1, -1, 155, 33, -1, 158, 159, 160, -1, 62, 163, -1, 165, 166, 67, -1, 169, -1, -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, 81, -1, -1, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, 113, -1, -1, -1, -1, 118, -1, -1, 6, 122, -1, -1, 125, -1, -1, -1, -1, 130, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, 163, -1, 165, 166, -1, -1, 169, -1, -1, -1, -1, -1, 152, 153, 154, 155, -1, 65, 158, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 109, 20, 21, 22, 23, -1, -1, -1, -1, -1, 51, -1, -1, 54, 33, 56, 57, 58, 59, -1, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, 148, -1, -1, 151, 84, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, -1, 165, 166, -1, 100, 169, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, -1, -1, -1, 126, 54, -1, 56, 57, 58, -1, -1, 134, 135, 136, 137, -1, 66, 140, -1, 142, 51, -1, -1, 54, 147, 56, 57, 58, 59, 11, -1, -1, 63, -1, 84, 66, 153, 154, 155, 70, 163, 158, 159, 160, 161, 162, 77, 164, 165, 166, 100, -1, -1, 84, -1, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 10, 11, -1, 100, 120, 121, 54, -1, 56, 57, 58, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, 137, -1, 120, 121, -1, 142, -1, -1, 126, -1, -1, -1, -1, -1, -1, 84, 134, 135, 136, 137, 51, -1, 140, 54, 142, 56, 57, 58, 59, -1, -1, 100, 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, 163, 77, -1, -1, -1, -1, 120, 121, 84, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, 137, 100, -1, 33, -1, 142, -1, -1, 10, 11, 12, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, -1, 140, -1, 142, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 64, -1, 163, 16, 17, 18, 19, 20, 21, 22, 23, -1, 76, 77, -1, -1, -1, -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, 113, 114, -1, 116, -1, -1, -1, 33, 121, -1, 123, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, -1, -1, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, 16, 17, 18, 19, 20, 21, 22, 23, 54, -1, 56, 57, 58, -1, -1, -1, -1, 33, -1, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 167, -1, 84, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 0, 164, 165, 166, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, 22, 23, -1, -1, 120, 121, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, 47, -1, 49, -1, -1, 52, 53, -1, -1, -1, -1, -1, -1, 60, 61, 18, 19, 20, 21, 22, 23, -1, 69, -1, 71, 72, 73, 74, -1, -1, 33, 78, -1, -1, -1, -1, 83, -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, -1, -1, -1, 123, 124, 11, 12, 127, 128, 15, -1, 17, 132, -1, -1, -1, -1, -1, 138, 139, -1, 141, -1, -1, -1, -1, -1, -1, -1, 149, -1, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 47, 164, 165, 166, 51, -1, -1, 54, -1, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, 18, 19, 20, 21, 22, 23, 84, 155, 156, 157, 158, 159, 160, 161, 162, 33, 164, 165, 166, 10, 11, 12, 100, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 117, -1, -1, 120, 121, -1, -1, -1, -1, 126, -1, 18, 19, 20, 21, 22, 23, 134, 135, 136, 137, -1, -1, 140, -1, 142, 33, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, 155, -1, -1, -1, -1, 160, -1, -1, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, 113, 114, -1, 116, -1, -1, -1, -1, 121, -1, 123, -1, 6, -1, -1, -1, 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, -1, -1, -1, 10, 11, 12, -1, 154, 155, 6, -1, 158, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 47, -1, 49, -1, -1, -1, 53, -1, -1, -1, -1, -1, 155, 60, 61, 158, 159, 160, 161, 162, -1, 164, 165, 166, 71, 72, 73, 47, -1, 49, -1, -1, -1, 53, 64, -1, 83, -1, -1, -1, 60, 61, -1, -1, -1, -1, 76, 77, -1, -1, -1, 71, 72, 73, -1, -1, -1, -1, -1, -1, 107, -1, -1, 83, -1, -1, 10, 11, 12, -1, 117, -1, -1, -1, -1, -1, 123, -1, -1, -1, 127, 128, -1, 113, 114, 115, 116, 107, -1, -1, -1, 121, 139, 123, 141, -1, -1, 117, 10, 11, 12, -1, -1, 123, 134, -1, -1, -1, 128, 139, 54, -1, 56, 57, 58, 59, 60, -1, -1, 139, -1, 141, 66, -1, -1, -1, -1, -1, 10, 11, 12, -1, -1, 77, -1, -1, -1, -1, -1, -1, 84, -1, 54, -1, 56, 57, 58, -1, -1, -1, -1, -1, -1, -1, 66, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, 77, -1, 11, 12, -1, -1, 15, 84, -1, -1, -1, 120, 121, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, 100, -1, 134, -1, -1, 137, 76, 77, 140, -1, 142, -1, -1, -1, -1, 47, -1, -1, -1, 51, 120, 121, 54, -1, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, 137, 70, -1, 140, -1, 142, 113, 114, 77, 116, -1, -1, -1, -1, 121, 84, 123, -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 134, -1, -1, -1, 100, 139, -1, 11, 12, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 120, 121, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, 11, 12, 134, 135, 136, 137, -1, 47, 140, -1, 142, 51, -1, -1, 54, 64, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, 76, 77, -1, 70, -1, -1, -1, -1, -1, 47, 77, -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, 100, -1, -1, -1, 113, 114, 77, 116, -1, -1, -1, -1, 121, 84, 123, -1, -1, 117, -1, -1, 120, 121, -1, -1, -1, 134, 126, 11, 12, 100, 139, -1, -1, -1, 134, 135, 136, 137, -1, -1, 140, -1, 142, -1, -1, -1, 117, -1, -1, 120, 121, 11, 12, -1, -1, 126, -1, -1, -1, 10, 11, 12, -1, 134, 135, 136, 137, 51, -1, 140, 54, 142, 56, 57, 58, 59, 60, -1, -1, 63, -1, 54, 66, 56, 57, 58, 70, -1, -1, -1, -1, 51, -1, 77, 54, -1, 56, 57, 58, 59, 84, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, 84, -1, 64, -1, -1, 100, 77, -1, -1, -1, -1, -1, -1, 84, 76, 77, 100, -1, -1, -1, -1, -1, -1, -1, -1, 120, 121, 11, 12, 100, -1, 126, -1, -1, -1, -1, 120, 121, -1, 134, 135, 136, 137, -1, -1, 140, 117, 142, -1, 120, 121, 113, 114, 137, 116, 126, 11, -1, 142, 121, -1, 123, -1, 134, 135, 136, 137, 51, -1, 140, 54, 142, 56, 57, 58, 59, 138, -1, -1, 63, -1, 165, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, 100, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 120, 121, -1, -1, -1, -1, 126, 11, -1, 100, -1, -1, -1, -1, 134, 135, 136, 137, -1, -1, 140, -1, 142, -1, -1, -1, -1, -1, -1, 120, 121, 11, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, 134, 135, 136, 137, 51, -1, 140, 54, 142, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, -1, -1, 51, -1, 77, 54, -1, 56, 57, 58, 59, 84, -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, 100, 77, -1, -1, -1, -1, -1, -1, 84, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 120, 121, 11, -1, 100, -1, 126, -1, -1, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, -1, 140, -1, 142, -1, 120, 121, -1, -1, -1, -1, 126, 10, 11, 12, -1, -1, -1, -1, 134, 135, 136, 137, 51, 64, 140, 54, 142, 56, 57, 58, 59, -1, -1, -1, 63, 76, 77, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, 100, 113, 114, -1, 116, -1, 76, 77, -1, 121, -1, 123, -1, -1, -1, 54, -1, 56, 57, 58, 120, 121, 134, -1, -1, -1, 126, 139, -1, -1, -1, -1, -1, -1, 134, 135, 136, 137, -1, -1, 140, -1, 142, 113, 114, 84, 116, -1, -1, -1, -1, 121, 47, 123, 49, -1, -1, 52, 53, -1, -1, 100, -1, -1, 134, 60, 61, -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, 72, 73, 74, -1, 120, 121, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, 165, 49, 123, 124, 52, 53, 127, 128, -1, -1, -1, 132, 60, 61, -1, -1, -1, 138, 139, -1, 141, 69, -1, 71, 72, 73, 74, -1, 149, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, -1, 49, 123, 124, 52, 53, 127, 128, -1, -1, -1, 132, 60, 61, -1, -1, -1, 138, 139, -1, 141, 69, -1, 71, 72, 73, 74, -1, 149, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, -1, 49, 123, 124, 52, 53, 127, 128, -1, -1, -1, 132, 60, 61, -1, -1, -1, 138, 139, -1, 141, 69, -1, 71, 72, 73, 74, -1, 149, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, -1, 49, 123, 124, 52, 53, 127, 128, -1, -1, -1, 132, 60, 61, -1, -1, -1, 138, 139, -1, 141, 69, -1, 71, 72, 73, 74, -1, 149, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, -1, 49, 123, 124, 52, 53, 127, 128, -1, -1, -1, 132, 60, 61, -1, -1, -1, 138, 139, -1, 141, 69, -1, 71, 72, 73, 74, -1, 149, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, -1, 49, 123, 124, 52, 53, 127, 128, -1, -1, -1, 132, 60, 61, -1, -1, -1, 138, 139, -1, 141, 69, -1, 71, 72, 73, 74, -1, 149, -1, 78, -1, -1, -1, -1, 83, -1, -1, 10, 11, 12, -1, -1, 15, 10, 11, 12, 168, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, -1, -1, -1, 123, 124, -1, -1, 127, 128, 47, -1, 49, 132, -1, -1, -1, -1, -1, 138, 139, 64, 141, -1, -1, -1, -1, 64, -1, 47, 149, 49, -1, 76, 77, 53, -1, -1, -1, 76, 77, -1, 60, 61, -1, -1, -1, -1, -1, 168, -1, -1, -1, 71, 72, 73, -1, -1, -1, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, 113, 114, -1, 116, -1, -1, 113, 114, 121, 116, 123, -1, -1, -1, 121, -1, 123, -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, 123, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, 47, 141, 49, -1, -1, 52, 53, -1, -1, -1, -1, -1, -1, 60, 61, -1, 156, -1, -1, -1, -1, -1, 69, -1, 71, 72, 73, 74, -1, -1, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, -1, -1, 47, -1, 49, 123, 124, -1, 53, 127, 128, 47, -1, 49, 132, 60, 61, 53, -1, -1, 138, 139, -1, 141, 60, 61, 71, 72, 73, -1, -1, -1, -1, 78, -1, 71, 72, 73, 83, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, 107, 117, -1, -1, -1, -1, -1, 123, -1, -1, 117, 127, 128, -1, -1, -1, 123, -1, -1, -1, -1, 128, 138, 139, -1, 141, -1, -1, -1, -1, -1, -1, 139, -1, 141 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { 0, 144, 145, 146, 172, 173, 282, 3, 4, 5, 6, 8, 9, 10, 11, 50, 54, 56, 57, 58, 62, 66, 67, 75, 76, 77, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 109, 111, 113, 118, 120, 121, 122, 125, 130, 133, 137, 142, 155, 158, 159, 160, 163, 165, 166, 169, 272, 273, 281, 11, 12, 51, 54, 56, 57, 58, 59, 60, 63, 66, 70, 77, 84, 100, 120, 121, 126, 134, 135, 136, 137, 140, 142, 234, 235, 239, 241, 243, 249, 250, 254, 255, 260, 261, 262, 263, 0, 47, 49, 52, 53, 60, 61, 69, 71, 72, 73, 74, 78, 83, 101, 102, 103, 104, 105, 106, 107, 108, 114, 115, 116, 117, 123, 124, 127, 128, 132, 138, 139, 141, 149, 176, 178, 179, 181, 185, 205, 256, 259, 282, 147, 165, 165, 165, 165, 165, 165, 156, 165, 156, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 11, 51, 63, 134, 135, 237, 254, 255, 260, 156, 165, 165, 15, 165, 272, 156, 165, 165, 165, 272, 272, 272, 272, 272, 11, 54, 56, 57, 58, 66, 77, 84, 100, 120, 121, 137, 142, 239, 270, 272, 10, 11, 12, 64, 76, 77, 113, 114, 116, 121, 123, 151, 155, 160, 276, 277, 279, 282, 272, 16, 17, 18, 19, 20, 21, 22, 23, 33, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 166, 6, 8, 234, 235, 165, 59, 126, 66, 100, 261, 261, 261, 279, 165, 261, 13, 15, 17, 60, 141, 155, 160, 165, 232, 233, 282, 233, 147, 10, 11, 12, 113, 150, 280, 240, 282, 138, 183, 184, 279, 165, 72, 83, 181, 181, 181, 181, 6, 181, 205, 181, 150, 180, 108, 181, 165, 165, 165, 165, 165, 165, 181, 147, 279, 150, 150, 150, 181, 181, 165, 179, 181, 185, 206, 181, 181, 189, 108, 279, 181, 181, 10, 11, 51, 63, 112, 134, 135, 147, 163, 192, 196, 236, 238, 241, 243, 249, 254, 255, 260, 269, 270, 282, 269, 239, 269, 269, 269, 269, 239, 269, 239, 269, 239, 269, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 269, 165, 279, 165, 165, 279, 240, 239, 269, 269, 165, 239, 239, 239, 272, 269, 269, 167, 148, 167, 279, 279, 148, 170, 151, 222, 282, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 279, 167, 270, 272, 233, 233, 51, 272, 239, 160, 279, 47, 49, 182, 282, 232, 233, 232, 233, 182, 182, 15, 17, 47, 60, 117, 155, 160, 217, 218, 227, 234, 235, 282, 166, 252, 253, 282, 11, 251, 261, 150, 10, 11, 12, 47, 49, 113, 147, 279, 280, 279, 48, 148, 165, 11, 236, 272, 181, 178, 147, 279, 279, 279, 279, 279, 279, 279, 173, 147, 272, 156, 10, 11, 196, 236, 238, 279, 149, 151, 165, 165, 165, 60, 234, 279, 165, 177, 279, 187, 147, 149, 151, 224, 149, 186, 279, 280, 240, 168, 167, 167, 167, 167, 167, 167, 157, 167, 157, 167, 167, 167, 167, 148, 167, 148, 167, 148, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 272, 239, 269, 279, 157, 167, 167, 279, 167, 157, 167, 167, 167, 167, 272, 272, 15, 155, 277, 165, 202, 282, 272, 150, 167, 170, 167, 167, 167, 182, 182, 183, 165, 13, 15, 17, 60, 141, 155, 160, 232, 282, 232, 232, 182, 183, 117, 234, 235, 227, 182, 182, 167, 15, 148, 13, 17, 60, 141, 155, 160, 165, 230, 280, 282, 13, 15, 17, 60, 141, 155, 160, 165, 231, 268, 272, 282, 279, 168, 251, 183, 165, 242, 244, 150, 181, 183, 3, 4, 5, 9, 10, 15, 50, 62, 67, 75, 76, 109, 111, 113, 118, 122, 125, 130, 133, 155, 158, 159, 163, 165, 169, 219, 220, 227, 228, 274, 275, 281, 282, 167, 167, 173, 147, 148, 148, 148, 148, 148, 148, 168, 257, 148, 167, 10, 11, 12, 59, 60, 134, 207, 208, 209, 210, 211, 260, 282, 165, 224, 190, 149, 239, 193, 10, 13, 160, 195, 51, 272, 234, 13, 17, 60, 141, 155, 160, 229, 280, 282, 239, 173, 165, 147, 149, 150, 151, 223, 264, 265, 64, 65, 147, 272, 13, 17, 60, 112, 141, 155, 160, 165, 188, 212, 214, 280, 150, 279, 165, 165, 239, 239, 239, 167, 167, 167, 165, 167, 165, 222, 217, 17, 33, 47, 60, 61, 76, 107, 110, 113, 129, 141, 155, 215, 282, 272, 232, 48, 236, 272, 160, 279, 182, 232, 232, 182, 182, 166, 232, 48, 234, 235, 230, 231, 232, 232, 202, 15, 227, 160, 182, 230, 230, 182, 182, 230, 166, 222, 182, 160, 279, 182, 231, 231, 182, 182, 231, 166, 222, 170, 148, 151, 48, 236, 272, 173, 76, 245, 282, 184, 165, 156, 156, 237, 156, 15, 165, 274, 156, 165, 272, 272, 272, 272, 239, 270, 272, 167, 15, 148, 16, 17, 18, 19, 20, 21, 22, 23, 33, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 166, 181, 181, 168, 258, 10, 10, 10, 10, 10, 10, 173, 281, 149, 211, 157, 148, 15, 279, 13, 17, 60, 141, 155, 160, 165, 230, 231, 191, 214, 149, 217, 167, 160, 212, 217, 167, 167, 229, 160, 182, 229, 229, 182, 182, 165, 166, 182, 167, 168, 197, 264, 174, 175, 279, 64, 65, 168, 266, 282, 149, 149, 147, 225, 226, 272, 282, 149, 160, 182, 212, 6, 16, 17, 18, 19, 20, 21, 22, 23, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 65, 109, 148, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 169, 203, 212, 182, 182, 212, 150, 165, 166, 215, 151, 222, 224, 182, 251, 270, 270, 167, 167, 167, 270, 270, 167, 60, 237, 183, 165, 147, 182, 167, 167, 182, 182, 232, 232, 232, 268, 167, 227, 230, 231, 222, 222, 167, 167, 215, 182, 230, 230, 230, 167, 268, 182, 182, 231, 231, 231, 167, 268, 182, 272, 167, 167, 168, 150, 246, 247, 282, 239, 239, 239, 165, 239, 165, 239, 239, 239, 272, 167, 167, 15, 228, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 279, 167, 270, 272, 173, 148, 148, 167, 148, 216, 282, 148, 148, 148, 168, 167, 230, 231, 179, 185, 204, 205, 210, 279, 151, 160, 182, 182, 182, 151, 221, 282, 222, 224, 167, 165, 212, 167, 167, 165, 182, 229, 229, 229, 200, 268, 217, 168, 147, 148, 147, 165, 149, 149, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 100, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 267, 225, 168, 148, 182, 212, 10, 167, 170, 182, 212, 212, 167, 272, 213, 268, 272, 148, 167, 167, 167, 167, 202, 237, 233, 48, 167, 279, 264, 182, 182, 232, 170, 165, 222, 222, 165, 165, 230, 165, 170, 231, 165, 170, 148, 114, 115, 116, 134, 139, 248, 278, 279, 147, 148, 167, 157, 157, 269, 157, 279, 167, 157, 167, 167, 272, 150, 167, 170, 168, 10, 10, 149, 10, 167, 10, 10, 10, 149, 221, 239, 182, 50, 62, 67, 118, 122, 125, 155, 158, 159, 160, 163, 165, 169, 271, 273, 148, 202, 194, 167, 165, 202, 201, 229, 217, 170, 167, 264, 175, 269, 269, 266, 168, 147, 272, 212, 182, 219, 170, 188, 215, 233, 15, 167, 168, 182, 217, 217, 217, 217, 182, 217, 182, 139, 278, 139, 278, 139, 278, 279, 114, 115, 116, 15, 173, 248, 165, 165, 167, 165, 167, 165, 272, 167, 148, 167, 148, 149, 148, 167, 167, 148, 167, 165, 156, 156, 156, 15, 165, 271, 156, 271, 271, 271, 271, 271, 239, 270, 271, 16, 17, 18, 19, 20, 21, 22, 23, 33, 152, 153, 154, 155, 158, 159, 160, 161, 162, 164, 165, 166, 191, 217, 165, 198, 217, 167, 182, 202, 168, 168, 167, 168, 225, 167, 182, 147, 167, 167, 167, 167, 167, 167, 278, 278, 278, 278, 278, 278, 168, 270, 270, 270, 270, 149, 10, 149, 10, 10, 149, 149, 10, 149, 239, 239, 239, 239, 165, 239, 239, 167, 167, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 279, 167, 270, 272, 167, 199, 217, 167, 202, 15, 168, 202, 264, 202, 202, 202, 202, 202, 167, 167, 167, 167, 148, 216, 167, 148, 148, 167, 167, 157, 157, 157, 279, 167, 157, 271, 150, 167, 170, 202, 217, 167, 202, 168, 215, 215, 215, 10, 167, 149, 10, 10, 149, 165, 165, 165, 167, 165, 271, 167, 202, 149, 167, 148, 167, 270, 270, 270, 270, 202, 215, 149, 10, 149, 167, 167, 167, 167, 215, 167, 149 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { 0, 171, 172, 172, 172, 173, 173, 173, 174, 174, 175, 175, 175, 177, 176, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 180, 179, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 183, 183, 184, 184, 184, 186, 185, 185, 187, 185, 185, 185, 188, 188, 190, 189, 189, 191, 191, 193, 192, 194, 192, 195, 192, 197, 196, 198, 196, 199, 196, 200, 196, 201, 196, 196, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 204, 204, 205, 206, 205, 205, 205, 207, 207, 208, 208, 209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 213, 212, 214, 214, 215, 215, 215, 216, 216, 217, 217, 217, 217, 217, 218, 218, 219, 219, 219, 219, 219, 220, 220, 221, 221, 222, 222, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, 224, 225, 225, 225, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227, 227, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 238, 238, 239, 239, 239, 239, 240, 240, 240, 240, 242, 241, 244, 243, 245, 245, 246, 246, 247, 247, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 249, 250, 250, 250, 250, 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255, 255, 255, 257, 256, 258, 256, 256, 256, 259, 259, 259, 260, 260, 260, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 262, 262, 262, 263, 265, 264, 266, 266, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 268, 268, 269, 269, 270, 270, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, 277, 277, 277, 277, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 281, 281, 281, 281, 282 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, 4, 5, 4, 0, 5, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 8, 11, 9, 11, 13, 15, 7, 9, 12, 9, 9, 13, 9, 7, 5, 0, 3, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 5, 5, 1, 4, 5, 5, 1, 3, 1, 4, 4, 0, 4, 3, 0, 4, 3, 1, 2, 4, 0, 4, 3, 2, 4, 0, 6, 0, 9, 0, 6, 0, 7, 0, 11, 0, 12, 0, 8, 0, 9, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 5, 6, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 0, 6, 2, 2, 1, 1, 1, 3, 1, 1, 1, 2, 4, 2, 3, 3, 4, 2, 3, 1, 1, 1, 1, 2, 3, 4, 2, 2, 3, 3, 3, 4, 5, 3, 0, 6, 2, 3, 1, 3, 4, 1, 2, 1, 1, 1, 3, 2, 1, 3, 1, 1, 1, 3, 2, 1, 3, 1, 2, 1, 2, 1, 3, 5, 3, 3, 1, 3, 3, 3, 3, 4, 1, 1, 2, 1, 3, 3, 5, 3, 4, 5, 3, 4, 5, 2, 4, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5, 1, 2, 2, 2, 3, 3, 3, 4, 5, 7, 3, 1, 3, 2, 2, 3, 3, 3, 4, 5, 7, 3, 1, 1, 3, 2, 2, 3, 3, 3, 4, 5, 1, 1, 3, 2, 2, 3, 3, 3, 4, 5, 5, 10, 10, 10, 1, 1, 2, 1, 1, 1, 3, 4, 4, 4, 4, 1, 1, 1, 1, 2, 1, 1, 1, 3, 4, 2, 4, 4, 4, 1, 1, 1, 2, 3, 2, 4, 4, 1, 1, 1, 2, 3, 2, 3, 1, 4, 5, 5, 0, 6, 0, 9, 1, 1, 1, 1, 2, 3, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 3, 1, 4, 2, 1, 1, 1, 3, 5, 1, 2, 4, 1, 2, 2, 1, 1, 1, 0, 6, 0, 7, 4, 5, 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 1, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1, 4, 7, 7, 7, 7, 4, 2, 5, 4, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, 3, 1, 4, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 5, 4, 2, 5, 4, 4, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 11, 4, 4, 6, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 7, 7, 7, 7, 4, 2, 5, 4, 2, 5, 4, 4, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0 }; enum { YYENOMEM = -2 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (&yylloc, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use YYerror or YYUNDEF. */ #define YYERRCODE YYUNDEF /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (N) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (0) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* YYLOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ # ifndef YYLOCATION_PRINT # if defined YY_LOCATION_PRINT /* Temporary convenience wrapper in case some people defined the undocumented and private YY_LOCATION_PRINT macros. */ # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc)) # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ YY_ATTRIBUTE_UNUSED static int yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) { int res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { res += YYFPRINTF (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) res += YYFPRINTF (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { res += YYFPRINTF (yyo, "-%d", yylocp->last_line); if (0 <= end_col) res += YYFPRINTF (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) res += YYFPRINTF (yyo, "-%d", end_col); } return res; } # define YYLOCATION_PRINT yy_location_print_ /* Temporary convenience wrapper in case some people defined the undocumented and private YY_LOCATION_PRINT macros. */ # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc)) # else # define YYLOCATION_PRINT(File, Loc) ((void) 0) /* Temporary convenience wrapper in case some people defined the undocumented and private YY_LOCATION_PRINT macros. */ # define YY_LOCATION_PRINT YYLOCATION_PRINT # endif # endif /* !defined YYLOCATION_PRINT */ # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Kind, Value, Location); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on YYO. | `-----------------------------------*/ static void yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) { FILE *yyoutput = yyo; YY_USE (yyoutput); YY_USE (yylocationp); if (!yyvaluep) return; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on YYO. | `---------------------------*/ static void yy_symbol_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) { YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); YYLOCATION_PRINT (yyo, yylocationp); YYFPRINTF (yyo, ": "); yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp); YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), &yyvsp[(yyi + 1) - (yynrhs)], &(yylsp[(yyi + 1) - (yynrhs)])); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ((void) 0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) { YY_USE (yyvaluep); YY_USE (yylocationp); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (void) { /* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Location data for the lookahead symbol. */ static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; YYLTYPE yylloc = yyloc_default; /* Number of syntax errors so far. */ int yynerrs = 0; yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus = 0; /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ YYPTRDIFF_T yystacksize = YYINITDEPTH; /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; yy_state_t *yyss = yyssa; yy_state_t *yyssp = yyss; /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp = yyvs; /* The location stack: array, bottom, top. */ YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls = yylsa; YYLTYPE *yylsp = yyls; int yyn; /* The return value of yyparse. */ int yyresult; /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; /* The locations where the error started and ended. */ YYLTYPE yyerror_range[3]; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ yylsp[0] = yylloc; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; /*--------------------------------------------------------------------. | yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; YYLTYPE *yyls1 = yyls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * YYSIZEOF (*yyssp), &yyvs1, yysize * YYSIZEOF (*yyvsp), &yyls1, yysize * YYSIZEOF (*yylsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; yyls = yyls1; } # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yy_state_t *yyss1 = yyss; union yyalloc *yyptr = YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; YY_IGNORE_USELESS_CAST_BEGIN YYDPRINTF ((stderr, "Stack size increased to %ld\n", YY_CAST (long, yystacksize))); YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (&yylval, &yylloc); } if (yychar <= YYEOF) { yychar = YYEOF; yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else if (yychar == YYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ yychar = YYUNDEF; yytoken = YYSYMBOL_YYerror; yyerror_range[1] = yylloc; goto yyerrlab1; } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END *++yylsp = yylloc; /* Discard the shifted token. */ yychar = YYEMPTY; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); yyerror_range[1] = yyloc; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: /* grammar: START_CONST_EXPR const_expr */ #line 454 "dtool/src/cppparser/cppBison.yxx" { current_expr = (yyvsp[0].u.expr); } #line 4017 "built/tmp/cppBison.yxx.c" break; case 4: /* grammar: START_TYPE full_type */ #line 458 "dtool/src/cppparser/cppBison.yxx" { current_type = (yyvsp[0].u.type); } #line 4025 "built/tmp/cppBison.yxx.c" break; case 10: /* constructor_init: name '(' optional_const_expr_comma ')' */ #line 476 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[-1].u.expr); } #line 4033 "built/tmp/cppBison.yxx.c" break; case 11: /* constructor_init: name '(' optional_const_expr_comma ')' ELLIPSIS */ #line 480 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[-2].u.expr); } #line 4041 "built/tmp/cppBison.yxx.c" break; case 12: /* constructor_init: name '{' optional_const_expr_comma '}' */ #line 484 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[-1].u.expr); } #line 4049 "built/tmp/cppBison.yxx.c" break; case 13: /* $@1: %empty */ #line 496 "dtool/src/cppparser/cppBison.yxx" { push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) | ((yyvsp[-1].u.integer) & CPPInstance::SC_c_binding)); } #line 4058 "built/tmp/cppBison.yxx.c" break; case 14: /* extern_c: storage_class '{' $@1 cpp '}' */ #line 501 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } #line 4066 "built/tmp/cppBison.yxx.c" break; case 21: /* declaration: KW_BEGIN_PUBLISH */ #line 514 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); publish_nest_level = 0; current_scope->set_current_vis(V_public); } publish_previous = current_scope->get_current_vis(); publish_loc = (yylsp[0]); publish_nest_level++; current_scope->set_current_vis(V_published); } #line 4083 "built/tmp/cppBison.yxx.c" break; case 22: /* declaration: KW_END_PUBLISH */ #line 527 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 1) { yyerror("Unmatched __end_publish", (yylsp[0])); } else { current_scope->set_current_vis(publish_previous); } publish_nest_level = 0; } #line 4096 "built/tmp/cppBison.yxx.c" break; case 23: /* declaration: KW_PUBLISHED ':' */ #line 536 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_published); } #line 4104 "built/tmp/cppBison.yxx.c" break; case 24: /* declaration: KW_PUBLIC ':' */ #line 540 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); } else { current_scope->set_current_vis(V_public); } } #line 4116 "built/tmp/cppBison.yxx.c" break; case 25: /* declaration: KW_PROTECTED ':' */ #line 548 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_protected); } #line 4124 "built/tmp/cppBison.yxx.c" break; case 26: /* declaration: KW_PRIVATE ':' */ #line 552 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_private); } #line 4132 "built/tmp/cppBison.yxx.c" break; case 27: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER maybe_comma_identifier ')' ';' */ #line 556 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-3].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); } else { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-5].u.identifier), CPPMakeProperty::T_normal, current_scope, (yylsp[-7]).file); make_property->_get_function = getter->as_function_group(); if ((yyvsp[-2].u.identifier) != nullptr) { CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_set_function = setter->as_function_group(); } } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-7])); } } #line 4157 "built/tmp/cppBison.yxx.c" break; case 28: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 577 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), CPPMakeProperty::T_normal, current_scope, (yylsp[-10]).file); make_property->_get_function = getter->as_function_group(); CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_del_function = deleter->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } #line 4188 "built/tmp/cppBison.yxx.c" break; case 29: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 604 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); getter = nullptr; } if (getter != nullptr && length_getter != nullptr) { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-8]).file); make_property->_get_function = getter->as_function_group(); make_property->_length_function = length_getter->as_function_group(); current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } #line 4213 "built/tmp/cppBison.yxx.c" break; case 30: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 625 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); getter = nullptr; } if (getter != nullptr && length_getter != nullptr) { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-10]).file); make_property->_get_function = getter->as_function_group(); make_property->_length_function = length_getter->as_function_group(); CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_set_function = setter->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } #line 4246 "built/tmp/cppBison.yxx.c" break; case 31: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 654 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); getter = nullptr; } if (getter != nullptr && length_getter != nullptr) { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-12]).file); make_property->_get_function = getter->as_function_group(); make_property->_length_function = length_getter->as_function_group(); CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_del_function = deleter->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } #line 4286 "built/tmp/cppBison.yxx.c" break; case 32: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 690 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[-10].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-10].u.identifier)->get_fully_scoped_name(), (yylsp[-10])); length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); getter = nullptr; } if (getter != nullptr && length_getter != nullptr) { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-12].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-14]).file); make_property->_get_function = getter->as_function_group(); make_property->_length_function = length_getter->as_function_group(); CPPDeclaration *setter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { make_property->_del_function = deleter->as_function_group(); } CPPDeclaration *inserter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (inserter == nullptr || inserter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid append method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_insert_function = inserter->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-14])); } } #line 4333 "built/tmp/cppBison.yxx.c" break; case 33: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ')' ';' */ #line 733 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid item getter method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-4].u.identifier), CPPMakeProperty::T_mapping, current_scope, (yylsp[-6]).file); make_property->_get_function = getter->as_function_group(); current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-6])); } } #line 4349 "built/tmp/cppBison.yxx.c" break; case 34: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 745 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { CPPMakeProperty *make_property; make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), CPPMakeProperty::T_mapping, current_scope, (yylsp[-8]).file); make_property->_get_function = getter->as_function_group(); CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { make_property->_has_function = hasser->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } #line 4374 "built/tmp/cppBison.yxx.c" break; case 35: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER maybe_comma_identifier ')' ';' */ #line 766 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-5].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-5].u.identifier)->get_fully_scoped_name(), (yylsp[-5])); } else { CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-9].u.identifier), CPPMakeProperty::T_mapping, current_scope, (yylsp[-11]).file); make_property->_get_function = getter->as_function_group(); CPPDeclaration *hasser = (yyvsp[-7].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-7].u.identifier)->get_fully_scoped_name(), (yylsp[-7])); } else { make_property->_has_function = hasser->as_function_group(); } CPPDeclaration *setter = (yyvsp[-3].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); } else { make_property->_set_function = setter->as_function_group(); } if ((yyvsp[-2].u.identifier) != nullptr) { CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_del_function = deleter->as_function_group(); } } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-11])); } } #line 4414 "built/tmp/cppBison.yxx.c" break; case 36: /* declaration: KW_MAKE_MAP_KEYS_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 802 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); getter = nullptr; } if (getter != nullptr && length_getter != nullptr) { CPPMakeProperty *make_property = nullptr; for (size_t i = 0; i < current_scope->_declarations.size(); ++i) { make_property = current_scope->_declarations[i]->as_make_property(); if (make_property != nullptr) { if (make_property->get_fully_scoped_name() == (yyvsp[-6].u.identifier)->get_fully_scoped_name()) { break; } else { make_property = nullptr; } } } if (make_property != nullptr) { make_property->_get_key_function = getter->as_function_group(); make_property->_length_function = length_getter->as_function_group(); } else { yyerror("reference to non-existent MAKE_MAP_PROPERTY: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } } } #line 4452 "built/tmp/cppBison.yxx.c" break; case 37: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 836 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { CPPMakeProperty *make_property; make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), CPPMakeProperty::T_normal, current_scope, (yylsp[-8]).file); make_property->_get_function = getter->as_function_group(); CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { make_property->_has_function = hasser->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } #line 4478 "built/tmp/cppBison.yxx.c" break; case 38: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 858 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { CPPMakeProperty *make_property; make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), CPPMakeProperty::T_normal, current_scope, (yylsp[-12]).file); make_property->_get_function = getter->as_function_group(); CPPDeclaration *hasser = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); } else { make_property->_has_function = hasser->as_function_group(); } CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { make_property->_set_function = setter->as_function_group(); } CPPDeclaration *clearer = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (clearer == nullptr || clearer->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid clear method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { make_property->_clear_function = clearer->as_function_group(); } current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } #line 4518 "built/tmp/cppBison.yxx.c" break; case 39: /* declaration: KW_MAKE_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ #line 894 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); length_getter = nullptr; } CPPDeclaration *element_getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (element_getter == nullptr || element_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid element method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); element_getter = nullptr; } if (length_getter != nullptr && element_getter != nullptr) { CPPMakeSeq *make_seq = new CPPMakeSeq((yyvsp[-6].u.identifier), length_getter->as_function_group(), element_getter->as_function_group(), current_scope, (yylsp[-8]).file); current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[-8])); } } #line 4544 "built/tmp/cppBison.yxx.c" break; case 40: /* declaration: KW_STATIC_ASSERT '(' const_expr ',' string_literal ')' ';' */ #line 916 "dtool/src/cppparser/cppBison.yxx" { CPPExpression::Result result = (yyvsp[-4].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { yywarning("static_assert requires a constant expression", (yylsp[-4])); } else if (!result.as_boolean()) { stringstream str; str << *(yyvsp[-2].u.expr); yywarning("static_assert failed: " + str.str(), (yylsp[-4])); } } #line 4559 "built/tmp/cppBison.yxx.c" break; case 41: /* declaration: KW_STATIC_ASSERT '(' const_expr ')' ';' */ #line 927 "dtool/src/cppparser/cppBison.yxx" { // This alternative version of static_assert was introduced in C++17. CPPExpression::Result result = (yyvsp[-2].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { yywarning("static_assert requires a constant expression", (yylsp[-2])); } else if (!result.as_boolean()) { yywarning("static_assert failed", (yylsp[-2])); } } #line 4573 "built/tmp/cppBison.yxx.c" break; case 42: /* $@2: %empty */ #line 940 "dtool/src/cppparser/cppBison.yxx" { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); push_scope(new_scope); } #line 4583 "built/tmp/cppBison.yxx.c" break; case 43: /* friend_declaration: KW_FRIEND $@2 declaration */ #line 946 "dtool/src/cppparser/cppBison.yxx" { delete current_scope; pop_scope(); } #line 4592 "built/tmp/cppBison.yxx.c" break; case 44: /* storage_class: empty */ #line 955 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = 0; } #line 4600 "built/tmp/cppBison.yxx.c" break; case 45: /* storage_class: KW_CONST storage_class */ #line 959 "dtool/src/cppparser/cppBison.yxx" { // This isn't really a storage class, but it helps with parsing. (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_const; } #line 4609 "built/tmp/cppBison.yxx.c" break; case 46: /* storage_class: KW_EXTERN storage_class */ #line 964 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; } #line 4617 "built/tmp/cppBison.yxx.c" break; case 47: /* storage_class: KW_EXTERN SIMPLE_STRING storage_class */ #line 968 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; if ((yyvsp[-1].str) == "C") { (yyval.u.integer) |= (int)CPPInstance::SC_c_binding; } else if ((yyvsp[-1].str) == "C++") { (yyval.u.integer) &= ~(int)CPPInstance::SC_c_binding; } else { yywarning("Ignoring unknown linkage type \"" + (yyvsp[-1].str) + "\"", (yylsp[-1])); } } #line 4632 "built/tmp/cppBison.yxx.c" break; case 48: /* storage_class: KW_STATIC storage_class */ #line 979 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; } #line 4640 "built/tmp/cppBison.yxx.c" break; case 49: /* storage_class: KW_INLINE storage_class */ #line 983 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; } #line 4648 "built/tmp/cppBison.yxx.c" break; case 50: /* storage_class: KW_VIRTUAL storage_class */ #line 987 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual; } #line 4656 "built/tmp/cppBison.yxx.c" break; case 51: /* storage_class: KW_EXPLICIT storage_class */ #line 991 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; } #line 4664 "built/tmp/cppBison.yxx.c" break; case 52: /* storage_class: KW_REGISTER storage_class */ #line 995 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register; } #line 4672 "built/tmp/cppBison.yxx.c" break; case 53: /* storage_class: KW_VOLATILE storage_class */ #line 999 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile; } #line 4680 "built/tmp/cppBison.yxx.c" break; case 54: /* storage_class: KW_MUTABLE storage_class */ #line 1003 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable; } #line 4688 "built/tmp/cppBison.yxx.c" break; case 55: /* storage_class: KW_CONSTEXPR storage_class */ #line 1007 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr; } #line 4696 "built/tmp/cppBison.yxx.c" break; case 56: /* storage_class: KW_BLOCKING storage_class */ #line 1011 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking; } #line 4704 "built/tmp/cppBison.yxx.c" break; case 57: /* storage_class: KW_EXTENSION storage_class */ #line 1015 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension; } #line 4712 "built/tmp/cppBison.yxx.c" break; case 58: /* storage_class: KW_THREAD_LOCAL storage_class */ #line 1019 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; } #line 4720 "built/tmp/cppBison.yxx.c" break; case 59: /* storage_class: ATTR_LEFT attribute_specifiers ATTR_RIGHT storage_class */ #line 1023 "dtool/src/cppparser/cppBison.yxx" { // Ignore attribute specifiers for now. (yyval.u.integer) = (yyvsp[0].u.integer); } #line 4729 "built/tmp/cppBison.yxx.c" break; case 60: /* storage_class: KW_ALIGNAS '(' const_expr ')' storage_class */ #line 1028 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer); } #line 4737 "built/tmp/cppBison.yxx.c" break; case 61: /* storage_class: KW_ALIGNAS '(' type_decl ')' storage_class */ #line 1032 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer); } #line 4745 "built/tmp/cppBison.yxx.c" break; case 71: /* $@3: %empty */ #line 1057 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // type_like_declaration. if ((yyvsp[0].u.decl)->as_type_declaration()) { current_type = (yyvsp[0].u.decl)->as_type_declaration()->_type; } else { current_type = (yyvsp[0].u.decl)->as_type(); } push_storage_class((yyvsp[-1].u.integer)); } #line 4760 "built/tmp/cppBison.yxx.c" break; case 72: /* type_like_declaration: storage_class var_type_decl $@3 multiple_instance_identifiers */ #line 1068 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } #line 4768 "built/tmp/cppBison.yxx.c" break; case 73: /* type_like_declaration: storage_class type_decl ';' */ #line 1073 "dtool/src/cppparser/cppBison.yxx" { // We don't really care about the storage class here. In fact, it's // not actually legal to define a class or struct using a particular // storage class, but we require it just to help yacc out in its // parsing. current_scope->add_declaration((yyvsp[-1].u.decl), global_scope, current_lexer, (yylsp[-1])); } #line 4781 "built/tmp/cppBison.yxx.c" break; case 74: /* $@4: %empty */ #line 1082 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[0].u.instance) != nullptr) { // Push the scope so that the initializers can make use of things defined // in the class body. push_scope((yyvsp[0].u.instance)->get_scope(current_scope, global_scope)); (yyvsp[0].u.instance)->_storage_class |= (current_storage_class | (yyvsp[-1].u.integer)); } } #line 4794 "built/tmp/cppBison.yxx.c" break; case 75: /* type_like_declaration: storage_class constructor_prototype $@4 maybe_initialize_or_constructor_body */ #line 1091 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-2].u.instance) != nullptr) { pop_scope(); current_scope->add_declaration((yyvsp[-2].u.instance), global_scope, current_lexer, (yylsp[-2])); (yyvsp[-2].u.instance)->set_initializer((yyvsp[0].u.expr)); } } #line 4806 "built/tmp/cppBison.yxx.c" break; case 76: /* type_like_declaration: storage_class function_prototype maybe_initialize_or_function_body */ #line 1099 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-1].u.instance) != nullptr) { (yyvsp[-1].u.instance)->_storage_class |= (current_storage_class | (yyvsp[-2].u.integer)); current_scope->add_declaration((yyvsp[-1].u.instance), global_scope, current_lexer, (yylsp[-1])); (yyvsp[-1].u.instance)->set_initializer((yyvsp[0].u.expr)); } } #line 4818 "built/tmp/cppBison.yxx.c" break; case 78: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */ #line 1115 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); } CPPInstance *inst = new CPPInstance(current_type, (yyvsp[-1].u.inst_ident), current_storage_class, (yylsp[-1]).file); inst->set_initializer((yyvsp[0].u.expr)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); } #line 4833 "built/tmp/cppBison.yxx.c" break; case 79: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' multiple_instance_identifiers */ #line 1126 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); } CPPInstance *inst = new CPPInstance(current_type, (yyvsp[-3].u.inst_ident), current_storage_class, (yylsp[-3]).file); inst->set_initializer((yyvsp[-2].u.expr)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-3])); } #line 4848 "built/tmp/cppBison.yxx.c" break; case 80: /* $@5: %empty */ #line 1141 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. if ((yyvsp[0].u.decl)->as_type_declaration()) { current_type = (yyvsp[0].u.decl)->as_type_declaration()->_type; } else { current_type = (yyvsp[0].u.decl)->as_type(); } push_storage_class((yyvsp[-1].u.integer)); } #line 4863 "built/tmp/cppBison.yxx.c" break; case 81: /* typedef_declaration: storage_class var_type_decl $@5 typedef_instance_identifiers */ #line 1152 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } #line 4871 "built/tmp/cppBison.yxx.c" break; case 82: /* typedef_declaration: storage_class function_prototype maybe_initialize_or_function_body */ #line 1156 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-1].u.instance) != nullptr) { CPPInstance *inst = (yyvsp[-1].u.instance)->as_instance(); if (inst != nullptr) { inst->_storage_class |= (current_storage_class | (yyvsp[-2].u.integer)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-1])); } } } #line 4887 "built/tmp/cppBison.yxx.c" break; case 83: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */ #line 1171 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); } CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[-1].u.inst_ident), current_scope, (yylsp[-1]).file); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-1])); } #line 4900 "built/tmp/cppBison.yxx.c" break; case 84: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' typedef_instance_identifiers */ #line 1180 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); } CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[-3].u.inst_ident), current_scope, (yylsp[-3]).file); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-3])); } #line 4913 "built/tmp/cppBison.yxx.c" break; case 85: /* $@6: %empty */ #line 1194 "dtool/src/cppparser/cppBison.yxx" { // Create a scope for this function. CPPScope *scope = new CPPScope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope), (yyvsp[-1].u.identifier)->_names.back(), V_private); // It still needs to be able to pick up any template arguments, if this is // a definition for a method template. Add a fake "using" declaration to // accomplish this. scope->_using.insert(current_scope); push_scope(scope); } #line 4930 "built/tmp/cppBison.yxx.c" break; case 86: /* constructor_prototype: IDENTIFIER '(' $@6 function_parameter_list ')' function_post */ #line 1207 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[-5].u.identifier)->get_scope(current_scope, global_scope); CPPType *type; std::string simple_name = (yyvsp[-5].u.identifier)->get_simple_name(); if (!simple_name.empty() && simple_name[0] == '~') { // A destructor has no return type. type = new CPPSimpleType(CPPSimpleType::T_void); } else if (scope != nullptr && simple_name == scope->get_simple_name()) { // Neither does a constructor. type = new CPPSimpleType(CPPSimpleType::T_void); } else { // This isn't a constructor, so it has an implicit return type of // int. yywarning("function has no return type, assuming int", (yylsp[-5])); type = new CPPSimpleType(CPPSimpleType::T_int); } pop_scope(); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-5].u.identifier)); ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } #line 4958 "built/tmp/cppBison.yxx.c" break; case 87: /* $@7: %empty */ #line 1233 "dtool/src/cppparser/cppBison.yxx" { // Create a scope for this function. CPPScope *scope = new CPPScope((yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope), (yyvsp[-2].u.identifier)->_names.back(), V_private); // It still needs to be able to pick up any template arguments, if this is // a definition for a method template. Add a fake "using" declaration to // accomplish this. scope->_using.insert(current_scope); push_scope(scope); } #line 4975 "built/tmp/cppBison.yxx.c" break; case 88: /* constructor_prototype: TYPENAME_IDENTIFIER '(' IDENTIFIER ')' '(' $@7 function_parameter_list ')' function_post */ #line 1246 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type = (yyvsp[-8].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); } assert(type != nullptr); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-6].u.identifier)); ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-8]).file); } #line 4993 "built/tmp/cppBison.yxx.c" break; case 89: /* $@8: %empty */ #line 1260 "dtool/src/cppparser/cppBison.yxx" { // Create a scope for this function. CPPScope *scope = new CPPScope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope), (yyvsp[-1].u.identifier)->_names.back(), V_private); // It still needs to be able to pick up any template arguments, if this is // a definition for a method template. Add a fake "using" declaration to // accomplish this. scope->_using.insert(current_scope); push_scope(scope); } #line 5010 "built/tmp/cppBison.yxx.c" break; case 90: /* constructor_prototype: TYPENAME_IDENTIFIER '(' $@8 function_parameter_list ')' function_post */ #line 1273 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type; if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name()) { // This is a constructor, and has no return. type = new CPPSimpleType(CPPSimpleType::T_void); } else { // This isn't a constructor, so it has an implicit return type of // int. type = new CPPSimpleType(CPPSimpleType::T_int); } CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-5].u.identifier)); ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } #line 5032 "built/tmp/cppBison.yxx.c" break; case 91: /* $@9: %empty */ #line 1296 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } #line 5040 "built/tmp/cppBison.yxx.c" break; case 92: /* function_prototype: '~' name '(' $@9 function_parameter_list ')' function_post */ #line 1300 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); if ((yyvsp[-5].u.identifier)->is_scoped()) { yyerror("Invalid destructor name: ~" + (yyvsp[-5].u.identifier)->get_fully_scoped_name(), (yylsp[-5])); } else { CPPIdentifier *ident = new CPPIdentifier("~" + (yyvsp[-5].u.identifier)->get_simple_name(), (yylsp[-5])); delete (yyvsp[-5].u.identifier); CPPType *type; type = new CPPSimpleType(CPPSimpleType::T_void); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier(ident); ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } } #line 5063 "built/tmp/cppBison.yxx.c" break; case 93: /* $@10: %empty */ #line 1326 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } #line 5071 "built/tmp/cppBison.yxx.c" break; case 94: /* function_prototype: TYPENAME_IDENTIFIER '(' '*' instance_identifier ')' '(' $@10 function_parameter_list ')' function_post maybe_trailing_return_type */ #line 1330 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type = (yyvsp[-10].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[-10].u.identifier)->get_fully_scoped_name(), (yylsp[-10])); } assert(type != nullptr); CPPInstanceIdentifier *ii = (yyvsp[-7].u.inst_ident); ii->add_modifier(IIT_pointer); ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-10]).file); } #line 5089 "built/tmp/cppBison.yxx.c" break; case 95: /* $@11: %empty */ #line 1344 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } #line 5097 "built/tmp/cppBison.yxx.c" break; case 96: /* function_prototype: TYPENAME_IDENTIFIER '(' SCOPING '*' instance_identifier ')' '(' $@11 function_parameter_list ')' function_post maybe_trailing_return_type */ #line 1348 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type = (yyvsp[-11].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[-11].u.identifier)->get_fully_scoped_name(), (yylsp[-11])); } assert(type != nullptr); CPPInstanceIdentifier *ii = (yyvsp[-7].u.inst_ident); ii->add_scoped_pointer_modifier((yyvsp[-9].u.identifier)); ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-11]).file); } #line 5115 "built/tmp/cppBison.yxx.c" break; case 97: /* $@12: %empty */ #line 1364 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-3].u.identifier) != nullptr) { push_scope((yyvsp[-3].u.identifier)->get_scope(current_scope, global_scope)); } } #line 5125 "built/tmp/cppBison.yxx.c" break; case 98: /* function_prototype: KW_OPERATOR type not_paren_formal_parameter_identifier '(' $@12 function_parameter_list ')' function_post */ #line 1370 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-7].u.identifier) != nullptr) { pop_scope(); } // We use formal_parameter_identifier, because that can match a type // name with or without an identifier, but especially without, which // is what follows the keyword "operator" in a typecast function. // As an added bonus, the type of the formal_parameter will be the // typecast type, i.e. the return type of the typecast function. // We give typecast operators the name "operator typecast ", // where is a simple name of the type to be typecast. Use // the method's return type to determine the full type description. string name = "operator typecast " + (yyvsp[-6].u.type)->get_simple_name(); CPPIdentifier *ident = (yyvsp[-7].u.identifier); if (ident == nullptr) { ident = new CPPIdentifier(name, (yylsp[-6])); } else { ident->add_name(name); } (yyval.u.instance) = CPPInstance::make_typecast_function (new CPPInstance((yyvsp[-6].u.type), (yyvsp[-5].u.inst_ident), 0, (yylsp[-5]).file), ident, (yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } #line 5154 "built/tmp/cppBison.yxx.c" break; case 99: /* $@13: %empty */ #line 1395 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-4].u.identifier) != nullptr) { push_scope((yyvsp[-4].u.identifier)->get_scope(current_scope, global_scope)); } } #line 5164 "built/tmp/cppBison.yxx.c" break; case 100: /* function_prototype: KW_OPERATOR KW_CONST type not_paren_formal_parameter_identifier '(' $@13 function_parameter_list ')' function_post */ #line 1401 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-8].u.identifier) != nullptr) { pop_scope(); } CPPIdentifier *ident = (yyvsp[-8].u.identifier); if (ident == nullptr) { ident = new CPPIdentifier("operator typecast", (yylsp[-5])); } else { ident->add_name("operator typecast"); } (yyvsp[-5].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = CPPInstance::make_typecast_function (new CPPInstance((yyvsp[-6].u.type), (yyvsp[-5].u.inst_ident), 0, (yylsp[-5]).file), ident, (yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } #line 5184 "built/tmp/cppBison.yxx.c" break; case 101: /* function_prototype: IDENTIFIER */ #line 1421 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *decl = (yyvsp[0].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (decl != nullptr) { (yyval.u.instance) = decl->as_instance(); } else { (yyval.u.instance) = nullptr; } } #line 5198 "built/tmp/cppBison.yxx.c" break; case 102: /* function_post: empty */ #line 1434 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = 0; } #line 5206 "built/tmp/cppBison.yxx.c" break; case 103: /* function_post: function_post KW_CONST */ #line 1438 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; } #line 5214 "built/tmp/cppBison.yxx.c" break; case 104: /* function_post: function_post KW_VOLATILE */ #line 1442 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; } #line 5222 "built/tmp/cppBison.yxx.c" break; case 105: /* function_post: function_post KW_NOEXCEPT */ #line 1446 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; } #line 5230 "built/tmp/cppBison.yxx.c" break; case 106: /* function_post: function_post KW_FINAL */ #line 1459 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; } #line 5238 "built/tmp/cppBison.yxx.c" break; case 107: /* function_post: function_post KW_OVERRIDE */ #line 1463 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; } #line 5246 "built/tmp/cppBison.yxx.c" break; case 108: /* function_post: function_post '&' */ #line 1467 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; } #line 5254 "built/tmp/cppBison.yxx.c" break; case 109: /* function_post: function_post ANDAND */ #line 1471 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; } #line 5262 "built/tmp/cppBison.yxx.c" break; case 110: /* function_post: function_post KW_MUTABLE */ #line 1475 "dtool/src/cppparser/cppBison.yxx" { // Used for lambdas, currently ignored. (yyval.u.integer) = (yyvsp[-1].u.integer); } #line 5271 "built/tmp/cppBison.yxx.c" break; case 111: /* function_post: function_post KW_CONSTEXPR */ #line 1480 "dtool/src/cppparser/cppBison.yxx" { // Used for lambdas in C++17, currently ignored. (yyval.u.integer) = (yyvsp[-1].u.integer); } #line 5280 "built/tmp/cppBison.yxx.c" break; case 112: /* function_post: function_post KW_THROW '(' ')' */ #line 1485 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-3].u.integer); } #line 5288 "built/tmp/cppBison.yxx.c" break; case 113: /* function_post: function_post KW_THROW '(' name ')' */ #line 1489 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-4].u.integer); } #line 5296 "built/tmp/cppBison.yxx.c" break; case 114: /* function_post: function_post KW_THROW '(' name ELLIPSIS ')' */ #line 1493 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-5].u.integer); } #line 5304 "built/tmp/cppBison.yxx.c" break; case 115: /* function_post: function_post ATTR_LEFT attribute_specifiers ATTR_RIGHT */ #line 1497 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-3].u.integer); } #line 5312 "built/tmp/cppBison.yxx.c" break; case 116: /* function_operator: '!' */ #line 1504 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "!"; } #line 5320 "built/tmp/cppBison.yxx.c" break; case 117: /* function_operator: '~' */ #line 1508 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "~"; } #line 5328 "built/tmp/cppBison.yxx.c" break; case 118: /* function_operator: '*' */ #line 1512 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "*"; } #line 5336 "built/tmp/cppBison.yxx.c" break; case 119: /* function_operator: '/' */ #line 1516 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "/"; } #line 5344 "built/tmp/cppBison.yxx.c" break; case 120: /* function_operator: '%' */ #line 1520 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "%"; } #line 5352 "built/tmp/cppBison.yxx.c" break; case 121: /* function_operator: '+' */ #line 1524 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "+"; } #line 5360 "built/tmp/cppBison.yxx.c" break; case 122: /* function_operator: '-' */ #line 1528 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "-"; } #line 5368 "built/tmp/cppBison.yxx.c" break; case 123: /* function_operator: '|' */ #line 1532 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "|"; } #line 5376 "built/tmp/cppBison.yxx.c" break; case 124: /* function_operator: '&' */ #line 1536 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "&"; } #line 5384 "built/tmp/cppBison.yxx.c" break; case 125: /* function_operator: '^' */ #line 1540 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "^"; } #line 5392 "built/tmp/cppBison.yxx.c" break; case 126: /* function_operator: OROR */ #line 1544 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "||"; } #line 5400 "built/tmp/cppBison.yxx.c" break; case 127: /* function_operator: ANDAND */ #line 1548 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "&&"; } #line 5408 "built/tmp/cppBison.yxx.c" break; case 128: /* function_operator: EQCOMPARE */ #line 1552 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "=="; } #line 5416 "built/tmp/cppBison.yxx.c" break; case 129: /* function_operator: NECOMPARE */ #line 1556 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "!="; } #line 5424 "built/tmp/cppBison.yxx.c" break; case 130: /* function_operator: LECOMPARE */ #line 1560 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "<="; } #line 5432 "built/tmp/cppBison.yxx.c" break; case 131: /* function_operator: GECOMPARE */ #line 1564 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = ">="; } #line 5440 "built/tmp/cppBison.yxx.c" break; case 132: /* function_operator: '<' */ #line 1568 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "<"; } #line 5448 "built/tmp/cppBison.yxx.c" break; case 133: /* function_operator: '>' */ #line 1572 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = ">"; } #line 5456 "built/tmp/cppBison.yxx.c" break; case 134: /* function_operator: LSHIFT */ #line 1576 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "<<"; } #line 5464 "built/tmp/cppBison.yxx.c" break; case 135: /* function_operator: RSHIFT */ #line 1580 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = ">>"; } #line 5472 "built/tmp/cppBison.yxx.c" break; case 136: /* function_operator: '=' */ #line 1584 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "="; } #line 5480 "built/tmp/cppBison.yxx.c" break; case 137: /* function_operator: ',' */ #line 1588 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = ","; } #line 5488 "built/tmp/cppBison.yxx.c" break; case 138: /* function_operator: PLUSPLUS */ #line 1592 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "++"; } #line 5496 "built/tmp/cppBison.yxx.c" break; case 139: /* function_operator: MINUSMINUS */ #line 1596 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "--"; } #line 5504 "built/tmp/cppBison.yxx.c" break; case 140: /* function_operator: TIMESEQUAL */ #line 1600 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "*="; } #line 5512 "built/tmp/cppBison.yxx.c" break; case 141: /* function_operator: DIVIDEEQUAL */ #line 1604 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "/="; } #line 5520 "built/tmp/cppBison.yxx.c" break; case 142: /* function_operator: MODEQUAL */ #line 1608 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "%="; } #line 5528 "built/tmp/cppBison.yxx.c" break; case 143: /* function_operator: PLUSEQUAL */ #line 1612 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "+="; } #line 5536 "built/tmp/cppBison.yxx.c" break; case 144: /* function_operator: MINUSEQUAL */ #line 1616 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "-="; } #line 5544 "built/tmp/cppBison.yxx.c" break; case 145: /* function_operator: OREQUAL */ #line 1620 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "|="; } #line 5552 "built/tmp/cppBison.yxx.c" break; case 146: /* function_operator: ANDEQUAL */ #line 1624 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "&="; } #line 5560 "built/tmp/cppBison.yxx.c" break; case 147: /* function_operator: XOREQUAL */ #line 1628 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "^="; } #line 5568 "built/tmp/cppBison.yxx.c" break; case 148: /* function_operator: LSHIFTEQUAL */ #line 1632 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "<<="; } #line 5576 "built/tmp/cppBison.yxx.c" break; case 149: /* function_operator: RSHIFTEQUAL */ #line 1636 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = ">>="; } #line 5584 "built/tmp/cppBison.yxx.c" break; case 150: /* function_operator: POINTSAT */ #line 1640 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "->"; } #line 5592 "built/tmp/cppBison.yxx.c" break; case 151: /* function_operator: '[' ']' */ #line 1644 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "[]"; } #line 5600 "built/tmp/cppBison.yxx.c" break; case 152: /* function_operator: '(' ')' */ #line 1648 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "()"; } #line 5608 "built/tmp/cppBison.yxx.c" break; case 153: /* function_operator: KW_NEW */ #line 1652 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "new"; } #line 5616 "built/tmp/cppBison.yxx.c" break; case 154: /* function_operator: KW_DELETE */ #line 1656 "dtool/src/cppparser/cppBison.yxx" { (yyval.str) = "delete"; } #line 5624 "built/tmp/cppBison.yxx.c" break; case 159: /* $@14: %empty */ #line 1670 "dtool/src/cppparser/cppBison.yxx" { push_scope(new CPPTemplateScope(current_scope)); } #line 5632 "built/tmp/cppBison.yxx.c" break; case 160: /* template_declaration: KW_TEMPLATE $@14 '<' template_formal_parameters '>' more_template_declaration */ #line 1674 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } #line 5640 "built/tmp/cppBison.yxx.c" break; case 165: /* template_nonempty_formal_parameters: template_formal_parameter */ #line 1688 "dtool/src/cppparser/cppBison.yxx" { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != nullptr); ts->add_template_parameter((yyvsp[0].u.decl)); } #line 5650 "built/tmp/cppBison.yxx.c" break; case 166: /* template_nonempty_formal_parameters: template_nonempty_formal_parameters ',' template_formal_parameter */ #line 1694 "dtool/src/cppparser/cppBison.yxx" { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != nullptr); ts->add_template_parameter((yyvsp[0].u.decl)); } #line 5660 "built/tmp/cppBison.yxx.c" break; case 169: /* template_formal_parameter: typename_keyword */ #line 1708 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter(nullptr)); } #line 5668 "built/tmp/cppBison.yxx.c" break; case 170: /* template_formal_parameter: typename_keyword name */ #line 1712 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); } #line 5676 "built/tmp/cppBison.yxx.c" break; case 171: /* template_formal_parameter: typename_keyword name '=' full_type */ #line 1716 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[-2].u.identifier), (yyvsp[0].u.type))); } #line 5684 "built/tmp/cppBison.yxx.c" break; case 172: /* template_formal_parameter: typename_keyword ELLIPSIS */ #line 1720 "dtool/src/cppparser/cppBison.yxx" { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter(nullptr); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } #line 5694 "built/tmp/cppBison.yxx.c" break; case 173: /* template_formal_parameter: typename_keyword ELLIPSIS name */ #line 1726 "dtool/src/cppparser/cppBison.yxx" { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[0].u.identifier)); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } #line 5704 "built/tmp/cppBison.yxx.c" break; case 174: /* template_formal_parameter: template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */ #line 1732 "dtool/src/cppparser/cppBison.yxx" { CPPInstance *inst = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); inst->set_initializer((yyvsp[0].u.expr)); (yyval.u.decl) = inst; } #line 5714 "built/tmp/cppBison.yxx.c" break; case 175: /* template_formal_parameter: KW_CONST template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */ #line 1738 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); inst->set_initializer((yyvsp[0].u.expr)); (yyval.u.decl) = inst; } #line 5725 "built/tmp/cppBison.yxx.c" break; case 176: /* template_formal_parameter: template_formal_parameter_type parameter_pack_identifier */ #line 1745 "dtool/src/cppparser/cppBison.yxx" { CPPInstance *inst = new CPPInstance((yyvsp[-1].u.type), (yyvsp[0].u.inst_ident), 0, (yylsp[0]).file); (yyval.u.decl) = inst; } #line 5734 "built/tmp/cppBison.yxx.c" break; case 177: /* template_formal_parameter: KW_CONST template_formal_parameter_type parameter_pack_identifier */ #line 1750 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance((yyvsp[-1].u.type), (yyvsp[0].u.inst_ident), 0, (yylsp[0]).file); (yyval.u.decl) = inst; } #line 5744 "built/tmp/cppBison.yxx.c" break; case 178: /* template_formal_parameter_type: simple_type */ #line 1759 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } #line 5752 "built/tmp/cppBison.yxx.c" break; case 179: /* template_formal_parameter_type: IDENTIFIER */ #line 1763 "dtool/src/cppparser/cppBison.yxx" { yywarning("Not a type: " + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } #line 5761 "built/tmp/cppBison.yxx.c" break; case 180: /* template_formal_parameter_type: TYPENAME_IDENTIFIER */ #line 1768 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); } assert((yyval.u.type) != nullptr); } #line 5773 "built/tmp/cppBison.yxx.c" break; case 181: /* template_formal_parameter_type: TYPEPACK_IDENTIFIER */ #line 1776 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); } assert((yyval.u.type) != nullptr); } #line 5785 "built/tmp/cppBison.yxx.c" break; case 182: /* instance_identifier: name_no_final optional_attributes */ #line 1788 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier)); } #line 5793 "built/tmp/cppBison.yxx.c" break; case 183: /* instance_identifier: KW_OPERATOR function_operator optional_attributes */ #line 1792 "dtool/src/cppparser/cppBison.yxx" { // For an operator function. We implement this simply by building a // ficticious name for the function; in other respects it's just // like a regular function. CPPIdentifier *ident = (yyvsp[-2].u.identifier); if (ident == nullptr) { ident = new CPPIdentifier("operator "+(yyvsp[-1].str), (yylsp[-1])); } else { ident->_names.push_back("operator "+(yyvsp[-1].str)); } (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } #line 5811 "built/tmp/cppBison.yxx.c" break; case 184: /* instance_identifier: KW_OPERATOR SIMPLE_STRING IDENTIFIER optional_attributes */ #line 1806 "dtool/src/cppparser/cppBison.yxx" { // A C++11 literal operator. if (!(yyvsp[-2].str).empty()) { yyerror("expected empty string", (yylsp[-2])); } CPPIdentifier *ident = (yyvsp[-3].u.identifier); if (ident == nullptr) { ident = new CPPIdentifier("operator \"\" "+(yyvsp[-1].u.identifier)->get_simple_name(), (yylsp[-1])); } else { ident->_names.push_back("operator \"\" "+(yyvsp[-1].u.identifier)->get_simple_name()); } (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } #line 5830 "built/tmp/cppBison.yxx.c" break; case 185: /* instance_identifier: KW_CONST instance_identifier */ #line 1821 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } #line 5839 "built/tmp/cppBison.yxx.c" break; case 186: /* instance_identifier: KW_VOLATILE instance_identifier */ #line 1826 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 5848 "built/tmp/cppBison.yxx.c" break; case 187: /* instance_identifier: '*' optional_attributes instance_identifier */ #line 1831 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } #line 5857 "built/tmp/cppBison.yxx.c" break; case 188: /* instance_identifier: '&' optional_attributes instance_identifier */ #line 1836 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } #line 5866 "built/tmp/cppBison.yxx.c" break; case 189: /* instance_identifier: ANDAND optional_attributes instance_identifier */ #line 1841 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } #line 5875 "built/tmp/cppBison.yxx.c" break; case 190: /* instance_identifier: SCOPING '*' optional_attributes instance_identifier */ #line 1846 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier)); } #line 5884 "built/tmp/cppBison.yxx.c" break; case 191: /* instance_identifier: instance_identifier '[' optional_const_expr ']' optional_attributes */ #line 1851 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr)); } #line 5893 "built/tmp/cppBison.yxx.c" break; case 192: /* instance_identifier: '(' instance_identifier ')' */ #line 1856 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } #line 5902 "built/tmp/cppBison.yxx.c" break; case 193: /* $@15: %empty */ #line 1861 "dtool/src/cppparser/cppBison.yxx" { // Create a scope for this function (in case it is a function) CPPScope *scope = new CPPScope((yyvsp[-1].u.inst_ident)->get_scope(current_scope, global_scope), CPPNameComponent(""), V_private); // It still needs to be able to pick up any template arguments, if this is // a definition for a method template. Add a fake "using" declaration to // accomplish this. scope->_using.insert(current_scope); push_scope(scope); } #line 5919 "built/tmp/cppBison.yxx.c" break; case 194: /* instance_identifier: instance_identifier '(' $@15 formal_parameter_list ')' function_post */ #line 1874 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); if ((yyvsp[-2].u.param_list)->is_parameter_expr() && (yyvsp[0].u.integer) == 0) { // Oops, this must have been an instance declaration with a // parameter list, not a function prototype. (yyval.u.inst_ident)->add_initializer_modifier((yyvsp[-2].u.param_list)); } else { // This was (probably) a function prototype. (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } } #line 5937 "built/tmp/cppBison.yxx.c" break; case 195: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier maybe_trailing_return_type */ #line 1892 "dtool/src/cppparser/cppBison.yxx" { // This is handled a bit awkwardly right now. Ideally it'd be wrapped // up in the instance_identifier rule, but then more needs to happen in // order to avoid shift/reduce conflicts. if ((yyvsp[0].u.type) != nullptr) { (yyvsp[-1].u.inst_ident)->add_trailing_return_type((yyvsp[0].u.type)); } (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); } #line 5951 "built/tmp/cppBison.yxx.c" break; case 196: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier ':' const_expr */ #line 1902 "dtool/src/cppparser/cppBison.yxx" { // Bitfield definition. (yyvsp[-2].u.inst_ident)->_bit_width = (yyvsp[0].u.expr); (yyval.u.inst_ident) = (yyvsp[-2].u.inst_ident); } #line 5961 "built/tmp/cppBison.yxx.c" break; case 197: /* maybe_trailing_return_type: empty */ #line 1912 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = nullptr; } #line 5969 "built/tmp/cppBison.yxx.c" break; case 198: /* maybe_trailing_return_type: POINTSAT predefined_type empty_instance_identifier */ #line 1916 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } #line 5977 "built/tmp/cppBison.yxx.c" break; case 199: /* maybe_trailing_return_type: POINTSAT KW_CONST predefined_type empty_instance_identifier */ #line 1920 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } #line 5986 "built/tmp/cppBison.yxx.c" break; case 200: /* maybe_comma_identifier: empty */ #line 1929 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = nullptr; } #line 5994 "built/tmp/cppBison.yxx.c" break; case 201: /* maybe_comma_identifier: ',' IDENTIFIER */ #line 1933 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 6002 "built/tmp/cppBison.yxx.c" break; case 202: /* function_parameter_list: empty */ #line 1941 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; } #line 6010 "built/tmp/cppBison.yxx.c" break; case 203: /* function_parameter_list: ELLIPSIS */ #line 1945 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_includes_ellipsis = true; } #line 6019 "built/tmp/cppBison.yxx.c" break; case 204: /* function_parameter_list: function_parameters */ #line 1950 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[0].u.param_list); } #line 6027 "built/tmp/cppBison.yxx.c" break; case 205: /* function_parameter_list: function_parameters ',' ELLIPSIS */ #line 1954 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-2].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } #line 6036 "built/tmp/cppBison.yxx.c" break; case 206: /* function_parameter_list: function_parameters ELLIPSIS */ #line 1959 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-1].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } #line 6045 "built/tmp/cppBison.yxx.c" break; case 207: /* function_parameters: function_parameter */ #line 1967 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } #line 6054 "built/tmp/cppBison.yxx.c" break; case 208: /* function_parameters: function_parameters ',' function_parameter */ #line 1972 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-2].u.param_list); (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } #line 6063 "built/tmp/cppBison.yxx.c" break; case 209: /* formal_parameter_list: empty */ #line 1980 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; } #line 6071 "built/tmp/cppBison.yxx.c" break; case 210: /* formal_parameter_list: ELLIPSIS */ #line 1984 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_includes_ellipsis = true; } #line 6080 "built/tmp/cppBison.yxx.c" break; case 211: /* formal_parameter_list: formal_parameters */ #line 1989 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[0].u.param_list); } #line 6088 "built/tmp/cppBison.yxx.c" break; case 212: /* formal_parameter_list: formal_parameters ',' ELLIPSIS */ #line 1993 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-2].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } #line 6097 "built/tmp/cppBison.yxx.c" break; case 213: /* formal_parameter_list: formal_parameters ELLIPSIS */ #line 1998 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-1].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } #line 6106 "built/tmp/cppBison.yxx.c" break; case 214: /* formal_parameters: formal_parameter */ #line 2006 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } #line 6115 "built/tmp/cppBison.yxx.c" break; case 215: /* formal_parameters: formal_parameters ',' formal_parameter */ #line 2011 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-2].u.param_list); (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } #line 6124 "built/tmp/cppBison.yxx.c" break; case 216: /* template_parameter_maybe_initialize: empty */ #line 2019 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6132 "built/tmp/cppBison.yxx.c" break; case 217: /* template_parameter_maybe_initialize: '=' no_angle_bracket_const_expr */ #line 2023 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 6140 "built/tmp/cppBison.yxx.c" break; case 218: /* maybe_initialize: empty */ #line 2030 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6148 "built/tmp/cppBison.yxx.c" break; case 219: /* maybe_initialize: '=' const_expr */ #line 2034 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 6156 "built/tmp/cppBison.yxx.c" break; case 220: /* maybe_initialize_or_constructor_body: ';' */ #line 2041 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6164 "built/tmp/cppBison.yxx.c" break; case 221: /* maybe_initialize_or_constructor_body: '{' code '}' */ #line 2045 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6172 "built/tmp/cppBison.yxx.c" break; case 222: /* maybe_initialize_or_constructor_body: ':' constructor_inits '{' code '}' */ #line 2049 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6180 "built/tmp/cppBison.yxx.c" break; case 223: /* maybe_initialize_or_constructor_body: '=' KW_DEFAULT ';' */ #line 2053 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } #line 6188 "built/tmp/cppBison.yxx.c" break; case 224: /* maybe_initialize_or_constructor_body: '=' KW_DELETE ';' */ #line 2057 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } #line 6196 "built/tmp/cppBison.yxx.c" break; case 225: /* maybe_initialize_or_function_body: ';' */ #line 2064 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6204 "built/tmp/cppBison.yxx.c" break; case 226: /* maybe_initialize_or_function_body: '{' code '}' */ #line 2068 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6212 "built/tmp/cppBison.yxx.c" break; case 227: /* maybe_initialize_or_function_body: '=' const_expr ';' */ #line 2072 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } #line 6220 "built/tmp/cppBison.yxx.c" break; case 228: /* maybe_initialize_or_function_body: '=' KW_DEFAULT ';' */ #line 2076 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } #line 6228 "built/tmp/cppBison.yxx.c" break; case 229: /* maybe_initialize_or_function_body: '=' KW_DELETE ';' */ #line 2080 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } #line 6236 "built/tmp/cppBison.yxx.c" break; case 230: /* maybe_initialize_or_function_body: '=' '{' structure_init '}' */ #line 2084 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 6244 "built/tmp/cppBison.yxx.c" break; case 234: /* structure_init_body: const_expr */ #line 2097 "dtool/src/cppparser/cppBison.yxx" { } #line 6251 "built/tmp/cppBison.yxx.c" break; case 238: /* function_parameter: type formal_parameter_identifier maybe_initialize */ #line 2106 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6260 "built/tmp/cppBison.yxx.c" break; case 239: /* function_parameter: KW_CONST type formal_parameter_identifier maybe_initialize */ #line 2111 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6270 "built/tmp/cppBison.yxx.c" break; case 240: /* function_parameter: KW_CONST KW_REGISTER type formal_parameter_identifier maybe_initialize */ #line 2117 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-2]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6280 "built/tmp/cppBison.yxx.c" break; case 241: /* function_parameter: type_pack parameter_pack_identifier maybe_initialize */ #line 2123 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6289 "built/tmp/cppBison.yxx.c" break; case 242: /* function_parameter: KW_CONST type_pack parameter_pack_identifier maybe_initialize */ #line 2128 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6299 "built/tmp/cppBison.yxx.c" break; case 243: /* function_parameter: KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize */ #line 2134 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-2]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6309 "built/tmp/cppBison.yxx.c" break; case 244: /* function_parameter: KW_REGISTER function_parameter */ #line 2140 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = (yyvsp[0].u.instance); } #line 6317 "built/tmp/cppBison.yxx.c" break; case 245: /* function_parameter: ATTR_LEFT attribute_specifiers ATTR_RIGHT function_parameter */ #line 2144 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = (yyvsp[0].u.instance); } #line 6325 "built/tmp/cppBison.yxx.c" break; case 246: /* formal_parameter: function_parameter */ #line 2155 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = (yyvsp[0].u.instance); } #line 6333 "built/tmp/cppBison.yxx.c" break; case 247: /* formal_parameter: formal_const_expr */ #line 2159 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_parameter)); (yyval.u.instance) = new CPPInstance(type, "expr"); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } #line 6344 "built/tmp/cppBison.yxx.c" break; case 248: /* not_paren_formal_parameter_identifier: empty */ #line 2169 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); } #line 6352 "built/tmp/cppBison.yxx.c" break; case 249: /* not_paren_formal_parameter_identifier: name_no_final optional_attributes */ #line 2173 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier)); } #line 6360 "built/tmp/cppBison.yxx.c" break; case 250: /* not_paren_formal_parameter_identifier: KW_CONST not_paren_formal_parameter_identifier */ #line 2177 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } #line 6369 "built/tmp/cppBison.yxx.c" break; case 251: /* not_paren_formal_parameter_identifier: KW_VOLATILE not_paren_formal_parameter_identifier */ #line 2182 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 6378 "built/tmp/cppBison.yxx.c" break; case 252: /* not_paren_formal_parameter_identifier: '*' optional_attributes not_paren_formal_parameter_identifier */ #line 2187 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } #line 6387 "built/tmp/cppBison.yxx.c" break; case 253: /* not_paren_formal_parameter_identifier: '&' optional_attributes not_paren_formal_parameter_identifier */ #line 2192 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } #line 6396 "built/tmp/cppBison.yxx.c" break; case 254: /* not_paren_formal_parameter_identifier: ANDAND optional_attributes not_paren_formal_parameter_identifier */ #line 2197 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } #line 6405 "built/tmp/cppBison.yxx.c" break; case 255: /* not_paren_formal_parameter_identifier: SCOPING '*' optional_attributes not_paren_formal_parameter_identifier */ #line 2202 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier)); } #line 6414 "built/tmp/cppBison.yxx.c" break; case 256: /* not_paren_formal_parameter_identifier: not_paren_formal_parameter_identifier '[' optional_const_expr ']' optional_attributes */ #line 2207 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr)); } #line 6423 "built/tmp/cppBison.yxx.c" break; case 257: /* formal_parameter_identifier: empty */ #line 2215 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); } #line 6431 "built/tmp/cppBison.yxx.c" break; case 258: /* formal_parameter_identifier: name_no_final optional_attributes */ #line 2219 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier)); } #line 6439 "built/tmp/cppBison.yxx.c" break; case 259: /* formal_parameter_identifier: KW_CONST formal_parameter_identifier */ #line 2223 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } #line 6448 "built/tmp/cppBison.yxx.c" break; case 260: /* formal_parameter_identifier: KW_VOLATILE formal_parameter_identifier */ #line 2228 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 6457 "built/tmp/cppBison.yxx.c" break; case 261: /* formal_parameter_identifier: '*' optional_attributes formal_parameter_identifier */ #line 2233 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } #line 6466 "built/tmp/cppBison.yxx.c" break; case 262: /* formal_parameter_identifier: '&' optional_attributes formal_parameter_identifier */ #line 2238 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } #line 6475 "built/tmp/cppBison.yxx.c" break; case 263: /* formal_parameter_identifier: ANDAND optional_attributes formal_parameter_identifier */ #line 2243 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } #line 6484 "built/tmp/cppBison.yxx.c" break; case 264: /* formal_parameter_identifier: SCOPING '*' optional_attributes formal_parameter_identifier */ #line 2248 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier)); } #line 6493 "built/tmp/cppBison.yxx.c" break; case 265: /* formal_parameter_identifier: formal_parameter_identifier '[' optional_const_expr ']' optional_attributes */ #line 2253 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr)); } #line 6502 "built/tmp/cppBison.yxx.c" break; case 266: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post */ #line 2258 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } #line 6512 "built/tmp/cppBison.yxx.c" break; case 267: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' */ #line 2264 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } #line 6521 "built/tmp/cppBison.yxx.c" break; case 268: /* parameter_pack_identifier: ELLIPSIS */ #line 2272 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); (yyval.u.inst_ident)->_packed = true; } #line 6530 "built/tmp/cppBison.yxx.c" break; case 269: /* parameter_pack_identifier: ELLIPSIS name optional_attributes */ #line 2277 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier)); (yyval.u.inst_ident)->_packed = true; } #line 6539 "built/tmp/cppBison.yxx.c" break; case 270: /* parameter_pack_identifier: KW_CONST parameter_pack_identifier */ #line 2282 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } #line 6548 "built/tmp/cppBison.yxx.c" break; case 271: /* parameter_pack_identifier: KW_VOLATILE parameter_pack_identifier */ #line 2287 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 6557 "built/tmp/cppBison.yxx.c" break; case 272: /* parameter_pack_identifier: '*' optional_attributes parameter_pack_identifier */ #line 2292 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } #line 6566 "built/tmp/cppBison.yxx.c" break; case 273: /* parameter_pack_identifier: '&' optional_attributes parameter_pack_identifier */ #line 2297 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } #line 6575 "built/tmp/cppBison.yxx.c" break; case 274: /* parameter_pack_identifier: ANDAND optional_attributes parameter_pack_identifier */ #line 2302 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } #line 6584 "built/tmp/cppBison.yxx.c" break; case 275: /* parameter_pack_identifier: SCOPING '*' optional_attributes parameter_pack_identifier */ #line 2307 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier)); } #line 6593 "built/tmp/cppBison.yxx.c" break; case 276: /* parameter_pack_identifier: parameter_pack_identifier '[' optional_const_expr ']' optional_attributes */ #line 2312 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr)); } #line 6602 "built/tmp/cppBison.yxx.c" break; case 277: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post */ #line 2317 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } #line 6612 "built/tmp/cppBison.yxx.c" break; case 278: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' */ #line 2323 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } #line 6621 "built/tmp/cppBison.yxx.c" break; case 279: /* not_paren_empty_instance_identifier: empty */ #line 2331 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); } #line 6629 "built/tmp/cppBison.yxx.c" break; case 280: /* not_paren_empty_instance_identifier: ELLIPSIS */ #line 2335 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); (yyval.u.inst_ident)->_packed = true; } #line 6638 "built/tmp/cppBison.yxx.c" break; case 281: /* not_paren_empty_instance_identifier: ELLIPSIS name optional_attributes */ #line 2340 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier)); (yyval.u.inst_ident)->_packed = true; } #line 6647 "built/tmp/cppBison.yxx.c" break; case 282: /* not_paren_empty_instance_identifier: KW_CONST not_paren_empty_instance_identifier */ #line 2345 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } #line 6656 "built/tmp/cppBison.yxx.c" break; case 283: /* not_paren_empty_instance_identifier: KW_VOLATILE not_paren_empty_instance_identifier */ #line 2350 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 6665 "built/tmp/cppBison.yxx.c" break; case 284: /* not_paren_empty_instance_identifier: '*' optional_attributes not_paren_empty_instance_identifier */ #line 2355 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } #line 6674 "built/tmp/cppBison.yxx.c" break; case 285: /* not_paren_empty_instance_identifier: '&' optional_attributes not_paren_empty_instance_identifier */ #line 2360 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } #line 6683 "built/tmp/cppBison.yxx.c" break; case 286: /* not_paren_empty_instance_identifier: ANDAND optional_attributes not_paren_empty_instance_identifier */ #line 2365 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } #line 6692 "built/tmp/cppBison.yxx.c" break; case 287: /* not_paren_empty_instance_identifier: SCOPING '*' optional_attributes not_paren_empty_instance_identifier */ #line 2370 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier)); } #line 6701 "built/tmp/cppBison.yxx.c" break; case 288: /* not_paren_empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' optional_attributes */ #line 2375 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr)); } #line 6710 "built/tmp/cppBison.yxx.c" break; case 289: /* empty_instance_identifier: empty */ #line 2383 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); } #line 6718 "built/tmp/cppBison.yxx.c" break; case 290: /* empty_instance_identifier: ELLIPSIS */ #line 2387 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); (yyval.u.inst_ident)->_packed = true; } #line 6727 "built/tmp/cppBison.yxx.c" break; case 291: /* empty_instance_identifier: ELLIPSIS name optional_attributes */ #line 2392 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier)); (yyval.u.inst_ident)->_packed = true; } #line 6736 "built/tmp/cppBison.yxx.c" break; case 292: /* empty_instance_identifier: KW_CONST empty_instance_identifier */ #line 2397 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } #line 6745 "built/tmp/cppBison.yxx.c" break; case 293: /* empty_instance_identifier: KW_VOLATILE empty_instance_identifier */ #line 2402 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 6754 "built/tmp/cppBison.yxx.c" break; case 294: /* empty_instance_identifier: '*' optional_attributes not_paren_empty_instance_identifier */ #line 2407 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } #line 6763 "built/tmp/cppBison.yxx.c" break; case 295: /* empty_instance_identifier: '&' optional_attributes not_paren_empty_instance_identifier */ #line 2412 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } #line 6772 "built/tmp/cppBison.yxx.c" break; case 296: /* empty_instance_identifier: ANDAND optional_attributes not_paren_empty_instance_identifier */ #line 2417 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } #line 6781 "built/tmp/cppBison.yxx.c" break; case 297: /* empty_instance_identifier: SCOPING '*' optional_attributes not_paren_empty_instance_identifier */ #line 2422 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier)); } #line 6790 "built/tmp/cppBison.yxx.c" break; case 298: /* empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' optional_attributes */ #line 2427 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr)); } #line 6799 "built/tmp/cppBison.yxx.c" break; case 299: /* empty_instance_identifier: '(' function_parameter_list ')' function_post maybe_trailing_return_type */ #line 2432 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } #line 6809 "built/tmp/cppBison.yxx.c" break; case 300: /* empty_instance_identifier: '(' '*' optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */ #line 2438 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } #line 6820 "built/tmp/cppBison.yxx.c" break; case 301: /* empty_instance_identifier: '(' '&' optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */ #line 2445 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } #line 6831 "built/tmp/cppBison.yxx.c" break; case 302: /* empty_instance_identifier: '(' ANDAND optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */ #line 2452 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } #line 6842 "built/tmp/cppBison.yxx.c" break; case 303: /* type: simple_type */ #line 2462 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } #line 6850 "built/tmp/cppBison.yxx.c" break; case 304: /* type: TYPENAME_IDENTIFIER */ #line 2466 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); } assert((yyval.u.type) != nullptr); } #line 6862 "built/tmp/cppBison.yxx.c" break; case 305: /* type: KW_TYPENAME name */ #line 2474 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } #line 6870 "built/tmp/cppBison.yxx.c" break; case 306: /* type: anonymous_struct */ #line 2478 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } #line 6878 "built/tmp/cppBison.yxx.c" break; case 307: /* type: named_struct */ #line 2482 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } #line 6886 "built/tmp/cppBison.yxx.c" break; case 308: /* type: enum */ #line 2486 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); } #line 6894 "built/tmp/cppBison.yxx.c" break; case 309: /* type: struct_keyword struct_attributes name */ #line 2490 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.type) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.type) = et; } } #line 6914 "built/tmp/cppBison.yxx.c" break; case 310: /* type: enum_keyword name_no_final ':' enum_element_type */ #line 2506 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.type) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-3]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.type) = et; } } #line 6934 "built/tmp/cppBison.yxx.c" break; case 311: /* type: KW_DECLTYPE '(' const_expr ')' */ #line 2522 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == nullptr) { stringstream str; str << *(yyvsp[-1].u.expr); yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } #line 6947 "built/tmp/cppBison.yxx.c" break; case 312: /* type: KW_DECLTYPE '(' KW_AUTO ')' */ #line 2531 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } #line 6955 "built/tmp/cppBison.yxx.c" break; case 313: /* type: KW_UNDERLYING_TYPE '(' full_type ')' */ #line 2535 "dtool/src/cppparser/cppBison.yxx" { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == nullptr) { yyerror("an enumeration type is required", (yylsp[-1])); (yyval.u.type) = (yyvsp[-1].u.type); } else { (yyval.u.type) = enum_type->get_underlying_type(); } } #line 6969 "built/tmp/cppBison.yxx.c" break; case 314: /* type: KW_AUTO */ #line 2545 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } #line 6977 "built/tmp/cppBison.yxx.c" break; case 315: /* type_pack: TYPEPACK_IDENTIFIER */ #line 2552 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); } assert((yyval.u.type) != nullptr); } #line 6989 "built/tmp/cppBison.yxx.c" break; case 316: /* type_decl: simple_type */ #line 2563 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.simple_type)); } #line 6997 "built/tmp/cppBison.yxx.c" break; case 317: /* type_decl: TYPENAME_IDENTIFIER */ #line 2567 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.decl) == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); } assert((yyval.u.decl) != nullptr); } #line 7009 "built/tmp/cppBison.yxx.c" break; case 318: /* type_decl: KW_TYPENAME name */ #line 2575 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } #line 7017 "built/tmp/cppBison.yxx.c" break; case 319: /* type_decl: anonymous_struct */ #line 2579 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); } #line 7025 "built/tmp/cppBison.yxx.c" break; case 320: /* type_decl: named_struct */ #line 2583 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type))); } #line 7033 "built/tmp/cppBison.yxx.c" break; case 321: /* type_decl: enum */ #line 2587 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type))); } #line 7041 "built/tmp/cppBison.yxx.c" break; case 322: /* type_decl: struct_keyword struct_attributes name */ #line 2591 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.decl) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.decl) = et; } } #line 7061 "built/tmp/cppBison.yxx.c" break; case 323: /* type_decl: enum_keyword name_no_final ':' enum_element_type */ #line 2607 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.decl) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-3]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.decl) = et; } } #line 7081 "built/tmp/cppBison.yxx.c" break; case 324: /* type_decl: enum_keyword name */ #line 2623 "dtool/src/cppparser/cppBison.yxx" { yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.decl) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.decl) = et; } } #line 7103 "built/tmp/cppBison.yxx.c" break; case 325: /* type_decl: KW_DECLTYPE '(' const_expr ')' */ #line 2641 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.decl) == nullptr) { stringstream str; str << *(yyvsp[-1].u.expr); yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } #line 7116 "built/tmp/cppBison.yxx.c" break; case 326: /* type_decl: KW_DECLTYPE '(' KW_AUTO ')' */ #line 2650 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } #line 7124 "built/tmp/cppBison.yxx.c" break; case 327: /* type_decl: KW_UNDERLYING_TYPE '(' full_type ')' */ #line 2654 "dtool/src/cppparser/cppBison.yxx" { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == nullptr) { yyerror("an enumeration type is required", (yylsp[-1])); (yyval.u.decl) = (yyvsp[-1].u.type); } else { (yyval.u.decl) = enum_type->get_underlying_type(); } } #line 7138 "built/tmp/cppBison.yxx.c" break; case 328: /* type_decl: KW_AUTO */ #line 2664 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } #line 7146 "built/tmp/cppBison.yxx.c" break; case 329: /* predefined_type: simple_type */ #line 2671 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } #line 7154 "built/tmp/cppBison.yxx.c" break; case 330: /* predefined_type: TYPENAME_IDENTIFIER */ #line 2675 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); } assert((yyval.u.type) != nullptr); } #line 7166 "built/tmp/cppBison.yxx.c" break; case 331: /* predefined_type: KW_TYPENAME name */ #line 2683 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } #line 7174 "built/tmp/cppBison.yxx.c" break; case 332: /* predefined_type: struct_keyword struct_attributes name */ #line 2687 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.type) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.type) = et; } } #line 7194 "built/tmp/cppBison.yxx.c" break; case 333: /* predefined_type: enum_keyword name */ #line 2703 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { (yyval.u.type) = type; } else { CPPExtensionType *et = CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } (yyval.u.type) = et; } } #line 7214 "built/tmp/cppBison.yxx.c" break; case 334: /* predefined_type: KW_DECLTYPE '(' const_expr ')' */ #line 2719 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == nullptr) { stringstream str; str << *(yyvsp[-1].u.expr); yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } #line 7227 "built/tmp/cppBison.yxx.c" break; case 335: /* predefined_type: KW_UNDERLYING_TYPE '(' full_type ')' */ #line 2728 "dtool/src/cppparser/cppBison.yxx" { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == nullptr) { yyerror("an enumeration type is required", (yylsp[-1])); (yyval.u.type) = (yyvsp[-1].u.type); } else { (yyval.u.type) = enum_type->get_underlying_type(); } } #line 7241 "built/tmp/cppBison.yxx.c" break; case 336: /* predefined_type: KW_AUTO */ #line 2738 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } #line 7249 "built/tmp/cppBison.yxx.c" break; case 337: /* var_type_decl: type_decl */ #line 2745 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[0].u.decl); } #line 7257 "built/tmp/cppBison.yxx.c" break; case 338: /* var_type_decl: IDENTIFIER */ #line 2749 "dtool/src/cppparser/cppBison.yxx" { yyerror(string("unknown type '") + (yyvsp[0].u.identifier)->get_fully_scoped_name() + "'", (yylsp[0])); (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } #line 7267 "built/tmp/cppBison.yxx.c" break; case 339: /* full_type: type empty_instance_identifier */ #line 2757 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } #line 7275 "built/tmp/cppBison.yxx.c" break; case 340: /* full_type: KW_CONST type empty_instance_identifier */ #line 2761 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } #line 7284 "built/tmp/cppBison.yxx.c" break; case 341: /* full_type: type_pack empty_instance_identifier */ #line 2766 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } #line 7292 "built/tmp/cppBison.yxx.c" break; case 342: /* full_type: KW_CONST type_pack empty_instance_identifier */ #line 2770 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } #line 7301 "built/tmp/cppBison.yxx.c" break; case 347: /* $@16: %empty */ #line 2785 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("anon"), starting_vis); CPPStructType *st = new CPPStructType((yyvsp[-2].u.extension_enum), nullptr, current_scope, new_scope, (yylsp[-2]).file); new_scope->set_struct_type(st); push_scope(new_scope); push_struct(st); } #line 7319 "built/tmp/cppBison.yxx.c" break; case 348: /* anonymous_struct: struct_keyword struct_attributes '{' $@16 cpp '}' */ #line 2799 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } #line 7330 "built/tmp/cppBison.yxx.c" break; case 349: /* $@17: %empty */ #line 2809 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope, current_lexer); if (scope == nullptr) { scope = current_scope; } CPPScope *new_scope = new CPPScope(scope, (yyvsp[0].u.identifier)->_names.back(), starting_vis); CPPStructType *st = new CPPStructType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, new_scope, (yylsp[-2]).file); new_scope->set_struct_type(st); current_scope->define_extension_type(st); push_scope(new_scope); push_struct(st); } #line 7354 "built/tmp/cppBison.yxx.c" break; case 350: /* named_struct: struct_keyword struct_attributes name_no_final $@17 maybe_final maybe_class_derivation '{' cpp '}' */ #line 2829 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } #line 7365 "built/tmp/cppBison.yxx.c" break; case 352: /* maybe_final: KW_FINAL */ #line 2840 "dtool/src/cppparser/cppBison.yxx" { current_struct->_final = true; } #line 7373 "built/tmp/cppBison.yxx.c" break; case 357: /* base_specification: class_derivation_name */ #line 2857 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); } #line 7381 "built/tmp/cppBison.yxx.c" break; case 358: /* base_specification: KW_PUBLIC class_derivation_name */ #line 2861 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_public, false); } #line 7389 "built/tmp/cppBison.yxx.c" break; case 359: /* base_specification: KW_PROTECTED class_derivation_name */ #line 2865 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); } #line 7397 "built/tmp/cppBison.yxx.c" break; case 360: /* base_specification: KW_PRIVATE class_derivation_name */ #line 2869 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_private, false); } #line 7405 "built/tmp/cppBison.yxx.c" break; case 361: /* base_specification: KW_VIRTUAL KW_PUBLIC class_derivation_name */ #line 2873 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } #line 7413 "built/tmp/cppBison.yxx.c" break; case 362: /* base_specification: KW_VIRTUAL KW_PROTECTED class_derivation_name */ #line 2877 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } #line 7421 "built/tmp/cppBison.yxx.c" break; case 363: /* base_specification: KW_VIRTUAL KW_PRIVATE class_derivation_name */ #line 2881 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } #line 7429 "built/tmp/cppBison.yxx.c" break; case 364: /* base_specification: KW_PUBLIC KW_VIRTUAL class_derivation_name */ #line 2885 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } #line 7437 "built/tmp/cppBison.yxx.c" break; case 365: /* base_specification: KW_PROTECTED KW_VIRTUAL class_derivation_name */ #line 2889 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } #line 7445 "built/tmp/cppBison.yxx.c" break; case 366: /* base_specification: KW_PRIVATE KW_VIRTUAL class_derivation_name */ #line 2893 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } #line 7453 "built/tmp/cppBison.yxx.c" break; case 367: /* enum: enum_decl '{' enum_body '}' */ #line 2900 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.enum_type) = current_enum; current_enum = nullptr; } #line 7462 "built/tmp/cppBison.yxx.c" break; case 368: /* enum_decl: enum_keyword ':' enum_element_type */ #line 2908 "dtool/src/cppparser/cppBison.yxx" { current_enum = new CPPEnumType((yyvsp[-2].u.extension_enum), nullptr, (yyvsp[0].u.type), current_scope, nullptr, (yylsp[-2]).file); } #line 7470 "built/tmp/cppBison.yxx.c" break; case 369: /* enum_decl: enum_keyword */ #line 2912 "dtool/src/cppparser/cppBison.yxx" { current_enum = new CPPEnumType((yyvsp[0].u.extension_enum), nullptr, current_scope, nullptr, (yylsp[0]).file); } #line 7478 "built/tmp/cppBison.yxx.c" break; case 370: /* enum_decl: enum_keyword name_no_final ':' enum_element_type */ #line 2916 "dtool/src/cppparser/cppBison.yxx" { CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[-2].u.identifier)->_names.back(), V_public); current_enum = new CPPEnumType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), (yyvsp[0].u.type), current_scope, new_scope, (yylsp[-3]).file); } #line 7487 "built/tmp/cppBison.yxx.c" break; case 371: /* enum_decl: enum_keyword name_no_final */ #line 2921 "dtool/src/cppparser/cppBison.yxx" { CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[0].u.identifier)->_names.back(), V_public); current_enum = new CPPEnumType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, new_scope, (yylsp[-1]).file); } #line 7496 "built/tmp/cppBison.yxx.c" break; case 372: /* enum_element_type: simple_int_type */ #line 2929 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } #line 7504 "built/tmp/cppBison.yxx.c" break; case 373: /* enum_element_type: TYPENAME_IDENTIFIER */ #line 2933 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); } #line 7512 "built/tmp/cppBison.yxx.c" break; case 375: /* enum_body_trailing_comma: enum_body_trailing_comma name ',' */ #line 2941 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != nullptr); current_enum->add_element((yyvsp[-1].u.identifier)->get_simple_name(), nullptr, current_lexer, (yylsp[-1])); } #line 7521 "built/tmp/cppBison.yxx.c" break; case 376: /* enum_body_trailing_comma: enum_body_trailing_comma name '=' const_expr ',' */ #line 2946 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != nullptr); current_enum->add_element((yyvsp[-3].u.identifier)->get_simple_name(), (yyvsp[-1].u.expr), current_lexer, (yylsp[-3])); } #line 7530 "built/tmp/cppBison.yxx.c" break; case 378: /* enum_body: enum_body_trailing_comma name */ #line 2954 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != nullptr); current_enum->add_element((yyvsp[0].u.identifier)->get_simple_name(), nullptr, current_lexer, (yylsp[0])); } #line 7539 "built/tmp/cppBison.yxx.c" break; case 379: /* enum_body: enum_body_trailing_comma name '=' const_expr */ #line 2959 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != nullptr); current_enum->add_element((yyvsp[-2].u.identifier)->get_simple_name(), (yyvsp[0].u.expr), current_lexer, (yylsp[-2])); } #line 7548 "built/tmp/cppBison.yxx.c" break; case 380: /* enum_keyword: KW_ENUM */ #line 2967 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum; } #line 7556 "built/tmp/cppBison.yxx.c" break; case 381: /* enum_keyword: KW_ENUM KW_CLASS */ #line 2971 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; } #line 7564 "built/tmp/cppBison.yxx.c" break; case 382: /* enum_keyword: KW_ENUM KW_STRUCT */ #line 2975 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; } #line 7572 "built/tmp/cppBison.yxx.c" break; case 383: /* struct_keyword: KW_CLASS */ #line 2982 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_class; } #line 7580 "built/tmp/cppBison.yxx.c" break; case 384: /* struct_keyword: KW_STRUCT */ #line 2986 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_struct; } #line 7588 "built/tmp/cppBison.yxx.c" break; case 385: /* struct_keyword: KW_UNION */ #line 2990 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_union; } #line 7596 "built/tmp/cppBison.yxx.c" break; case 386: /* $@18: %empty */ #line 2997 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == nullptr) { // This must be a new namespace declaration. CPPScope *parent_scope = (yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope, current_lexer); if (parent_scope == nullptr) { parent_scope = current_scope; } scope = new CPPScope(parent_scope, (yyvsp[-1].u.identifier)->_names.back(), V_public); } CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-2]).file); current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-2])); current_scope->define_namespace(nspace); push_scope(scope); } #line 7618 "built/tmp/cppBison.yxx.c" break; case 387: /* namespace_declaration: KW_NAMESPACE name '{' $@18 cpp '}' */ #line 3015 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } #line 7626 "built/tmp/cppBison.yxx.c" break; case 388: /* $@19: %empty */ #line 3019 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == nullptr) { // This must be a new namespace declaration. CPPScope *parent_scope = (yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope, current_lexer); if (parent_scope == nullptr) { parent_scope = current_scope; } scope = new CPPScope(parent_scope, (yyvsp[-1].u.identifier)->_names.back(), V_public); } CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-2]).file); nspace->_is_inline = true; current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-2])); current_scope->define_namespace(nspace); push_scope(scope); } #line 7649 "built/tmp/cppBison.yxx.c" break; case 389: /* namespace_declaration: KW_INLINE KW_NAMESPACE name '{' $@19 cpp '}' */ #line 3038 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } #line 7657 "built/tmp/cppBison.yxx.c" break; case 392: /* using_declaration: KW_USING name ';' */ #line 3047 "dtool/src/cppparser/cppBison.yxx" { CPPUsing *using_decl = new CPPUsing((yyvsp[-1].u.identifier), false, (yylsp[-2]).file); current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[-2])); current_scope->add_using(using_decl, global_scope, current_lexer); } #line 7667 "built/tmp/cppBison.yxx.c" break; case 393: /* using_declaration: KW_USING name '=' full_type ';' */ #line 3053 "dtool/src/cppparser/cppBison.yxx" { // This is really just an alternative way to declare a typedef. CPPTypedefType *typedef_type = new CPPTypedefType((yyvsp[-1].u.type), (yyvsp[-3].u.identifier), current_scope); typedef_type->_using = true; current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-4])); } #line 7678 "built/tmp/cppBison.yxx.c" break; case 394: /* using_declaration: KW_USING KW_NAMESPACE name ';' */ #line 3060 "dtool/src/cppparser/cppBison.yxx" { CPPUsing *using_decl = new CPPUsing((yyvsp[-1].u.identifier), true, (yylsp[-3]).file); current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[-3])); current_scope->add_using(using_decl, global_scope, current_lexer); } #line 7688 "built/tmp/cppBison.yxx.c" break; case 398: /* simple_int_type: KW_BOOL */ #line 3075 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); } #line 7696 "built/tmp/cppBison.yxx.c" break; case 399: /* simple_int_type: KW_CHAR */ #line 3079 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); } #line 7704 "built/tmp/cppBison.yxx.c" break; case 400: /* simple_int_type: KW_WCHAR_T */ #line 3083 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); } #line 7712 "built/tmp/cppBison.yxx.c" break; case 401: /* simple_int_type: KW_CHAR16_T */ #line 3087 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); } #line 7720 "built/tmp/cppBison.yxx.c" break; case 402: /* simple_int_type: KW_CHAR32_T */ #line 3091 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); } #line 7728 "built/tmp/cppBison.yxx.c" break; case 403: /* simple_int_type: KW_SHORT */ #line 3095 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } #line 7737 "built/tmp/cppBison.yxx.c" break; case 404: /* simple_int_type: KW_LONG */ #line 3100 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } #line 7746 "built/tmp/cppBison.yxx.c" break; case 405: /* simple_int_type: KW_UNSIGNED */ #line 3105 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } #line 7755 "built/tmp/cppBison.yxx.c" break; case 406: /* simple_int_type: KW_SIGNED */ #line 3110 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } #line 7764 "built/tmp/cppBison.yxx.c" break; case 407: /* simple_int_type: KW_INT */ #line 3115 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); } #line 7772 "built/tmp/cppBison.yxx.c" break; case 408: /* simple_int_type: KW_SHORT simple_int_type */ #line 3119 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_short; } #line 7781 "built/tmp/cppBison.yxx.c" break; case 409: /* simple_int_type: KW_LONG simple_int_type */ #line 3124 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); if ((yyval.u.simple_type)->_flags & CPPSimpleType::F_long) { (yyval.u.simple_type)->_flags |= CPPSimpleType::F_longlong; } else { (yyval.u.simple_type)->_flags |= CPPSimpleType::F_long; } } #line 7794 "built/tmp/cppBison.yxx.c" break; case 410: /* simple_int_type: KW_UNSIGNED simple_int_type */ #line 3133 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; } #line 7803 "built/tmp/cppBison.yxx.c" break; case 411: /* simple_int_type: KW_SIGNED simple_int_type */ #line 3138 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; } #line 7812 "built/tmp/cppBison.yxx.c" break; case 412: /* simple_float_type: KW_FLOAT */ #line 3146 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); } #line 7820 "built/tmp/cppBison.yxx.c" break; case 413: /* simple_float_type: KW_DOUBLE */ #line 3150 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); } #line 7828 "built/tmp/cppBison.yxx.c" break; case 414: /* simple_float_type: KW_LONG KW_DOUBLE */ #line 3154 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } #line 7837 "built/tmp/cppBison.yxx.c" break; case 415: /* simple_void_type: KW_VOID */ #line 3162 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); } #line 7845 "built/tmp/cppBison.yxx.c" break; case 416: /* $@20: %empty */ #line 3171 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = false; } #line 7853 "built/tmp/cppBison.yxx.c" break; case 417: /* code: $@20 code_block */ #line 3175 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = true; } #line 7861 "built/tmp/cppBison.yxx.c" break; case 525: /* element: KW_WHILE */ #line 3219 "dtool/src/cppparser/cppBison.yxx" { } #line 7868 "built/tmp/cppBison.yxx.c" break; case 549: /* optional_const_expr: empty */ #line 3228 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 7876 "built/tmp/cppBison.yxx.c" break; case 550: /* optional_const_expr: const_expr */ #line 3232 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 7884 "built/tmp/cppBison.yxx.c" break; case 551: /* optional_const_expr_comma: empty */ #line 3239 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } #line 7892 "built/tmp/cppBison.yxx.c" break; case 552: /* optional_const_expr_comma: const_expr_comma */ #line 3243 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 7900 "built/tmp/cppBison.yxx.c" break; case 553: /* const_expr_comma: const_expr */ #line 3250 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 7908 "built/tmp/cppBison.yxx.c" break; case 554: /* const_expr_comma: const_expr_comma ',' const_expr */ #line 3254 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 7916 "built/tmp/cppBison.yxx.c" break; case 555: /* no_angle_bracket_const_expr: const_operand */ #line 3261 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 7924 "built/tmp/cppBison.yxx.c" break; case 556: /* no_angle_bracket_const_expr: '(' full_type ')' no_angle_bracket_const_expr */ #line 3265 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } #line 7932 "built/tmp/cppBison.yxx.c" break; case 557: /* no_angle_bracket_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3269 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } #line 7940 "built/tmp/cppBison.yxx.c" break; case 558: /* no_angle_bracket_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3273 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); } #line 7948 "built/tmp/cppBison.yxx.c" break; case 559: /* no_angle_bracket_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3277 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); } #line 7956 "built/tmp/cppBison.yxx.c" break; case 560: /* no_angle_bracket_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3281 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); } #line 7964 "built/tmp/cppBison.yxx.c" break; case 561: /* no_angle_bracket_const_expr: KW_SIZEOF '(' full_type ')' */ #line 3285 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } #line 7972 "built/tmp/cppBison.yxx.c" break; case 562: /* no_angle_bracket_const_expr: KW_SIZEOF no_angle_bracket_const_expr */ #line 3289 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr))); } #line 7980 "built/tmp/cppBison.yxx.c" break; case 563: /* no_angle_bracket_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ #line 3293 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } #line 7988 "built/tmp/cppBison.yxx.c" break; case 564: /* no_angle_bracket_const_expr: KW_ALIGNOF '(' full_type ')' */ #line 3297 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } #line 7996 "built/tmp/cppBison.yxx.c" break; case 565: /* no_angle_bracket_const_expr: '!' no_angle_bracket_const_expr */ #line 3301 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } #line 8004 "built/tmp/cppBison.yxx.c" break; case 566: /* no_angle_bracket_const_expr: '~' no_angle_bracket_const_expr */ #line 3305 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } #line 8012 "built/tmp/cppBison.yxx.c" break; case 567: /* no_angle_bracket_const_expr: '-' no_angle_bracket_const_expr */ #line 3309 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } #line 8020 "built/tmp/cppBison.yxx.c" break; case 568: /* no_angle_bracket_const_expr: '+' no_angle_bracket_const_expr */ #line 3313 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } #line 8028 "built/tmp/cppBison.yxx.c" break; case 569: /* no_angle_bracket_const_expr: '*' no_angle_bracket_const_expr */ #line 3317 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } #line 8036 "built/tmp/cppBison.yxx.c" break; case 570: /* no_angle_bracket_const_expr: '&' no_angle_bracket_const_expr */ #line 3321 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } #line 8044 "built/tmp/cppBison.yxx.c" break; case 571: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '*' no_angle_bracket_const_expr */ #line 3325 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8052 "built/tmp/cppBison.yxx.c" break; case 572: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '/' no_angle_bracket_const_expr */ #line 3329 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8060 "built/tmp/cppBison.yxx.c" break; case 573: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '%' no_angle_bracket_const_expr */ #line 3333 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8068 "built/tmp/cppBison.yxx.c" break; case 574: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '+' no_angle_bracket_const_expr */ #line 3337 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8076 "built/tmp/cppBison.yxx.c" break; case 575: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '-' no_angle_bracket_const_expr */ #line 3341 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8084 "built/tmp/cppBison.yxx.c" break; case 576: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '|' no_angle_bracket_const_expr */ #line 3345 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8092 "built/tmp/cppBison.yxx.c" break; case 577: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '^' no_angle_bracket_const_expr */ #line 3349 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8100 "built/tmp/cppBison.yxx.c" break; case 578: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '&' no_angle_bracket_const_expr */ #line 3353 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8108 "built/tmp/cppBison.yxx.c" break; case 579: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr OROR no_angle_bracket_const_expr */ #line 3357 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8116 "built/tmp/cppBison.yxx.c" break; case 580: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr ANDAND no_angle_bracket_const_expr */ #line 3361 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8124 "built/tmp/cppBison.yxx.c" break; case 581: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr EQCOMPARE no_angle_bracket_const_expr */ #line 3365 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8132 "built/tmp/cppBison.yxx.c" break; case 582: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr NECOMPARE no_angle_bracket_const_expr */ #line 3369 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8140 "built/tmp/cppBison.yxx.c" break; case 583: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LECOMPARE no_angle_bracket_const_expr */ #line 3373 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8148 "built/tmp/cppBison.yxx.c" break; case 584: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr GECOMPARE no_angle_bracket_const_expr */ #line 3377 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8156 "built/tmp/cppBison.yxx.c" break; case 585: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LSHIFT no_angle_bracket_const_expr */ #line 3381 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8164 "built/tmp/cppBison.yxx.c" break; case 586: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr RSHIFT no_angle_bracket_const_expr */ #line 3385 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8172 "built/tmp/cppBison.yxx.c" break; case 587: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '?' no_angle_bracket_const_expr ':' no_angle_bracket_const_expr */ #line 3389 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8180 "built/tmp/cppBison.yxx.c" break; case 588: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '[' const_expr ']' */ #line 3393 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 8188 "built/tmp/cppBison.yxx.c" break; case 589: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' const_expr_comma ')' */ #line 3397 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 8196 "built/tmp/cppBison.yxx.c" break; case 590: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' ')' */ #line 3401 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } #line 8204 "built/tmp/cppBison.yxx.c" break; case 591: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '.' name */ #line 3405 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer)); } #line 8212 "built/tmp/cppBison.yxx.c" break; case 592: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr POINTSAT no_angle_bracket_const_expr */ #line 3409 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8220 "built/tmp/cppBison.yxx.c" break; case 593: /* no_angle_bracket_const_expr: '(' const_expr_comma ')' */ #line 3413 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } #line 8228 "built/tmp/cppBison.yxx.c" break; case 594: /* const_expr: const_operand */ #line 3421 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 8236 "built/tmp/cppBison.yxx.c" break; case 595: /* const_expr: '(' full_type ')' const_expr */ #line 3425 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } #line 8244 "built/tmp/cppBison.yxx.c" break; case 596: /* const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3429 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } #line 8252 "built/tmp/cppBison.yxx.c" break; case 597: /* const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3433 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); } #line 8260 "built/tmp/cppBison.yxx.c" break; case 598: /* const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3437 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); } #line 8268 "built/tmp/cppBison.yxx.c" break; case 599: /* const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3441 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); } #line 8276 "built/tmp/cppBison.yxx.c" break; case 600: /* const_expr: TYPENAME_IDENTIFIER '(' optional_const_expr_comma ')' */ #line 3445 "dtool/src/cppparser/cppBison.yxx" { // A constructor call. CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); } assert(type != nullptr); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8290 "built/tmp/cppBison.yxx.c" break; case 601: /* const_expr: TYPENAME_IDENTIFIER '{' optional_const_expr_comma '}' */ #line 3455 "dtool/src/cppparser/cppBison.yxx" { // Aggregate initialization. CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == nullptr) { yyerror(string("internal error resolving type ") + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); } assert(type != nullptr); (yyval.u.expr) = new CPPExpression(CPPExpression::aggregate_init_op(type, (yyvsp[-1].u.expr))); } #line 8304 "built/tmp/cppBison.yxx.c" break; case 602: /* const_expr: KW_INT '(' optional_const_expr_comma ')' */ #line 3465 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8314 "built/tmp/cppBison.yxx.c" break; case 603: /* const_expr: KW_CHAR '(' optional_const_expr_comma ')' */ #line 3471 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8324 "built/tmp/cppBison.yxx.c" break; case 604: /* const_expr: KW_WCHAR_T '(' optional_const_expr_comma ')' */ #line 3477 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_wchar_t)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8334 "built/tmp/cppBison.yxx.c" break; case 605: /* const_expr: KW_CHAR16_T '(' optional_const_expr_comma ')' */ #line 3483 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char16_t)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8344 "built/tmp/cppBison.yxx.c" break; case 606: /* const_expr: KW_CHAR32_T '(' optional_const_expr_comma ')' */ #line 3489 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char32_t)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8354 "built/tmp/cppBison.yxx.c" break; case 607: /* const_expr: KW_BOOL '(' optional_const_expr_comma ')' */ #line 3495 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_bool)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8364 "built/tmp/cppBison.yxx.c" break; case 608: /* const_expr: KW_SHORT '(' optional_const_expr_comma ')' */ #line 3501 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8375 "built/tmp/cppBison.yxx.c" break; case 609: /* const_expr: KW_LONG '(' optional_const_expr_comma ')' */ #line 3508 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8386 "built/tmp/cppBison.yxx.c" break; case 610: /* const_expr: KW_UNSIGNED '(' optional_const_expr_comma ')' */ #line 3515 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8397 "built/tmp/cppBison.yxx.c" break; case 611: /* const_expr: KW_SIGNED '(' optional_const_expr_comma ')' */ #line 3522 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8408 "built/tmp/cppBison.yxx.c" break; case 612: /* const_expr: KW_FLOAT '(' optional_const_expr_comma ')' */ #line 3529 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_float)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8418 "built/tmp/cppBison.yxx.c" break; case 613: /* const_expr: KW_DOUBLE '(' optional_const_expr_comma ')' */ #line 3535 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_double)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } #line 8428 "built/tmp/cppBison.yxx.c" break; case 614: /* const_expr: KW_SIZEOF '(' full_type ')' */ #line 3541 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } #line 8436 "built/tmp/cppBison.yxx.c" break; case 615: /* const_expr: KW_SIZEOF const_expr */ #line 3545 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr))); } #line 8444 "built/tmp/cppBison.yxx.c" break; case 616: /* const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ #line 3549 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } #line 8452 "built/tmp/cppBison.yxx.c" break; case 617: /* const_expr: KW_ALIGNOF '(' full_type ')' */ #line 3553 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } #line 8460 "built/tmp/cppBison.yxx.c" break; case 618: /* const_expr: KW_NEW predefined_type */ #line 3557 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); } #line 8468 "built/tmp/cppBison.yxx.c" break; case 619: /* const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */ #line 3561 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); } #line 8476 "built/tmp/cppBison.yxx.c" break; case 620: /* const_expr: KW_TYPEID '(' full_type ')' */ #line 3565 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); ident.add_name("type_info"); CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); if (!std_type_info) { yywarning("cannot use typeid before including ", (yylsp[-3])); } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } #line 8491 "built/tmp/cppBison.yxx.c" break; case 621: /* const_expr: KW_TYPEID '(' const_expr ')' */ #line 3576 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); ident.add_name("type_info"); CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); if (!std_type_info) { yywarning("cannot use typeid before including ", (yylsp[-3])); } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } #line 8506 "built/tmp/cppBison.yxx.c" break; case 622: /* const_expr: '!' const_expr */ #line 3587 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } #line 8514 "built/tmp/cppBison.yxx.c" break; case 623: /* const_expr: '~' const_expr */ #line 3591 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } #line 8522 "built/tmp/cppBison.yxx.c" break; case 624: /* const_expr: '-' const_expr */ #line 3595 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } #line 8530 "built/tmp/cppBison.yxx.c" break; case 625: /* const_expr: '+' const_expr */ #line 3599 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } #line 8538 "built/tmp/cppBison.yxx.c" break; case 626: /* const_expr: '*' const_expr */ #line 3603 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } #line 8546 "built/tmp/cppBison.yxx.c" break; case 627: /* const_expr: '&' const_expr */ #line 3607 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } #line 8554 "built/tmp/cppBison.yxx.c" break; case 628: /* const_expr: const_expr '*' const_expr */ #line 3611 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8562 "built/tmp/cppBison.yxx.c" break; case 629: /* const_expr: const_expr '/' const_expr */ #line 3615 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8570 "built/tmp/cppBison.yxx.c" break; case 630: /* const_expr: const_expr '%' const_expr */ #line 3619 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8578 "built/tmp/cppBison.yxx.c" break; case 631: /* const_expr: const_expr '+' const_expr */ #line 3623 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8586 "built/tmp/cppBison.yxx.c" break; case 632: /* const_expr: const_expr '-' const_expr */ #line 3627 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8594 "built/tmp/cppBison.yxx.c" break; case 633: /* const_expr: const_expr '|' const_expr */ #line 3631 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8602 "built/tmp/cppBison.yxx.c" break; case 634: /* const_expr: const_expr '^' const_expr */ #line 3635 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8610 "built/tmp/cppBison.yxx.c" break; case 635: /* const_expr: const_expr '&' const_expr */ #line 3639 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8618 "built/tmp/cppBison.yxx.c" break; case 636: /* const_expr: const_expr OROR const_expr */ #line 3643 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8626 "built/tmp/cppBison.yxx.c" break; case 637: /* const_expr: const_expr ANDAND const_expr */ #line 3647 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8634 "built/tmp/cppBison.yxx.c" break; case 638: /* const_expr: const_expr EQCOMPARE const_expr */ #line 3651 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8642 "built/tmp/cppBison.yxx.c" break; case 639: /* const_expr: const_expr NECOMPARE const_expr */ #line 3655 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8650 "built/tmp/cppBison.yxx.c" break; case 640: /* const_expr: const_expr LECOMPARE const_expr */ #line 3659 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8658 "built/tmp/cppBison.yxx.c" break; case 641: /* const_expr: const_expr GECOMPARE const_expr */ #line 3663 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8666 "built/tmp/cppBison.yxx.c" break; case 642: /* const_expr: const_expr '<' const_expr */ #line 3667 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8674 "built/tmp/cppBison.yxx.c" break; case 643: /* const_expr: const_expr '>' const_expr */ #line 3671 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8682 "built/tmp/cppBison.yxx.c" break; case 644: /* const_expr: const_expr LSHIFT const_expr */ #line 3675 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8690 "built/tmp/cppBison.yxx.c" break; case 645: /* const_expr: const_expr RSHIFT const_expr */ #line 3679 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8698 "built/tmp/cppBison.yxx.c" break; case 646: /* const_expr: const_expr '?' const_expr ':' const_expr */ #line 3683 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8706 "built/tmp/cppBison.yxx.c" break; case 647: /* const_expr: const_expr '[' const_expr ']' */ #line 3687 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 8714 "built/tmp/cppBison.yxx.c" break; case 648: /* const_expr: const_expr '(' const_expr_comma ')' */ #line 3691 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 8722 "built/tmp/cppBison.yxx.c" break; case 649: /* const_expr: const_expr '(' ')' */ #line 3695 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } #line 8730 "built/tmp/cppBison.yxx.c" break; case 650: /* const_expr: const_expr '.' name */ #line 3699 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer)); } #line 8738 "built/tmp/cppBison.yxx.c" break; case 651: /* const_expr: const_expr POINTSAT const_expr */ #line 3703 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 8746 "built/tmp/cppBison.yxx.c" break; case 652: /* const_expr: '(' const_expr_comma ')' */ #line 3707 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } #line 8754 "built/tmp/cppBison.yxx.c" break; case 653: /* const_operand: INTEGER */ #line 3714 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } #line 8762 "built/tmp/cppBison.yxx.c" break; case 654: /* const_operand: KW_TRUE */ #line 3718 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(true); } #line 8770 "built/tmp/cppBison.yxx.c" break; case 655: /* const_operand: KW_FALSE */ #line 3722 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(false); } #line 8778 "built/tmp/cppBison.yxx.c" break; case 656: /* const_operand: CHAR_TOK */ #line 3726 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } #line 8786 "built/tmp/cppBison.yxx.c" break; case 657: /* const_operand: REAL */ #line 3730 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); } #line 8794 "built/tmp/cppBison.yxx.c" break; case 658: /* const_operand: string_literal */ #line 3734 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 8802 "built/tmp/cppBison.yxx.c" break; case 659: /* const_operand: CUSTOM_LITERAL */ #line 3738 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 8810 "built/tmp/cppBison.yxx.c" break; case 660: /* const_operand: IDENTIFIER */ #line 3742 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); } #line 8818 "built/tmp/cppBison.yxx.c" break; case 661: /* const_operand: KW_FINAL */ #line 3746 "dtool/src/cppparser/cppBison.yxx" { // A variable named "final". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } #line 8828 "built/tmp/cppBison.yxx.c" break; case 662: /* const_operand: KW_OVERRIDE */ #line 3752 "dtool/src/cppparser/cppBison.yxx" { // A variable named "override". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } #line 8838 "built/tmp/cppBison.yxx.c" break; case 663: /* const_operand: KW_NULLPTR */ #line 3758 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } #line 8846 "built/tmp/cppBison.yxx.c" break; case 664: /* const_operand: '[' capture_list ']' function_post maybe_trailing_return_type '{' code '}' */ #line 3762 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-6].u.closure_type)->_flags = (yyvsp[-4].u.integer); (yyvsp[-6].u.closure_type)->_return_type = (yyvsp[-3].u.type); (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-6].u.closure_type))); } #line 8856 "built/tmp/cppBison.yxx.c" break; case 665: /* const_operand: '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' */ #line 3768 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[-9].u.closure_type)->_parameters = (yyvsp[-6].u.param_list); (yyvsp[-9].u.closure_type)->_flags = (yyvsp[-4].u.integer); (yyvsp[-9].u.closure_type)->_return_type = (yyvsp[-3].u.type); (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-9].u.closure_type))); } #line 8867 "built/tmp/cppBison.yxx.c" break; case 666: /* const_operand: KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' */ #line 3775 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type))); } #line 8875 "built/tmp/cppBison.yxx.c" break; case 667: /* const_operand: KW_IS_ABSTRACT '(' full_type ')' */ #line 3779 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); } #line 8883 "built/tmp/cppBison.yxx.c" break; case 668: /* const_operand: KW_IS_BASE_OF '(' full_type ',' full_type ')' */ #line 3783 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); } #line 8891 "built/tmp/cppBison.yxx.c" break; case 669: /* const_operand: KW_IS_CLASS '(' full_type ')' */ #line 3787 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); } #line 8899 "built/tmp/cppBison.yxx.c" break; case 670: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ')' */ #line 3791 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); } #line 8907 "built/tmp/cppBison.yxx.c" break; case 671: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ',' full_type ')' */ #line 3795 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); } #line 8915 "built/tmp/cppBison.yxx.c" break; case 672: /* const_operand: KW_IS_CONVERTIBLE_TO '(' full_type ',' full_type ')' */ #line 3799 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONVERTIBLE_TO, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); } #line 8923 "built/tmp/cppBison.yxx.c" break; case 673: /* const_operand: KW_IS_DESTRUCTIBLE '(' full_type ')' */ #line 3803 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type))); } #line 8931 "built/tmp/cppBison.yxx.c" break; case 674: /* const_operand: KW_IS_EMPTY '(' full_type ')' */ #line 3807 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type))); } #line 8939 "built/tmp/cppBison.yxx.c" break; case 675: /* const_operand: KW_IS_ENUM '(' full_type ')' */ #line 3811 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type))); } #line 8947 "built/tmp/cppBison.yxx.c" break; case 676: /* const_operand: KW_IS_FINAL '(' full_type ')' */ #line 3815 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type))); } #line 8955 "built/tmp/cppBison.yxx.c" break; case 677: /* const_operand: KW_IS_FUNDAMENTAL '(' full_type ')' */ #line 3819 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type))); } #line 8963 "built/tmp/cppBison.yxx.c" break; case 678: /* const_operand: KW_IS_POD '(' full_type ')' */ #line 3823 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type))); } #line 8971 "built/tmp/cppBison.yxx.c" break; case 679: /* const_operand: KW_IS_POLYMORPHIC '(' full_type ')' */ #line 3827 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type))); } #line 8979 "built/tmp/cppBison.yxx.c" break; case 680: /* const_operand: KW_IS_STANDARD_LAYOUT '(' full_type ')' */ #line 3831 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[-1].u.type))); } #line 8987 "built/tmp/cppBison.yxx.c" break; case 681: /* const_operand: KW_IS_TRIVIAL '(' full_type ')' */ #line 3835 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type))); } #line 8995 "built/tmp/cppBison.yxx.c" break; case 682: /* const_operand: KW_IS_UNION '(' full_type ')' */ #line 3839 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type))); } #line 9003 "built/tmp/cppBison.yxx.c" break; case 683: /* formal_const_expr: formal_const_operand */ #line 3853 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 9011 "built/tmp/cppBison.yxx.c" break; case 684: /* formal_const_expr: '(' full_type ')' const_expr */ #line 3857 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } #line 9019 "built/tmp/cppBison.yxx.c" break; case 685: /* formal_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3861 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } #line 9027 "built/tmp/cppBison.yxx.c" break; case 686: /* formal_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3865 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); } #line 9035 "built/tmp/cppBison.yxx.c" break; case 687: /* formal_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3869 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); } #line 9043 "built/tmp/cppBison.yxx.c" break; case 688: /* formal_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ #line 3873 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); } #line 9051 "built/tmp/cppBison.yxx.c" break; case 689: /* formal_const_expr: KW_SIZEOF '(' full_type ')' */ #line 3877 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } #line 9059 "built/tmp/cppBison.yxx.c" break; case 690: /* formal_const_expr: KW_SIZEOF formal_const_expr */ #line 3881 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr))); } #line 9067 "built/tmp/cppBison.yxx.c" break; case 691: /* formal_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ #line 3885 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } #line 9075 "built/tmp/cppBison.yxx.c" break; case 692: /* formal_const_expr: KW_ALIGNOF '(' full_type ')' */ #line 3889 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } #line 9083 "built/tmp/cppBison.yxx.c" break; case 693: /* formal_const_expr: KW_NEW predefined_type */ #line 3893 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); } #line 9091 "built/tmp/cppBison.yxx.c" break; case 694: /* formal_const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */ #line 3897 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); } #line 9099 "built/tmp/cppBison.yxx.c" break; case 695: /* formal_const_expr: KW_TYPEID '(' full_type ')' */ #line 3901 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); ident.add_name("type_info"); CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); if (!std_type_info) { yywarning("cannot use typeid before including ", (yylsp[-3])); } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } #line 9114 "built/tmp/cppBison.yxx.c" break; case 696: /* formal_const_expr: KW_TYPEID '(' const_expr ')' */ #line 3912 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); ident.add_name("type_info"); CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); if (!std_type_info) { yywarning("cannot use typeid before including ", (yylsp[-3])); } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } #line 9129 "built/tmp/cppBison.yxx.c" break; case 697: /* formal_const_expr: '!' const_expr */ #line 3923 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } #line 9137 "built/tmp/cppBison.yxx.c" break; case 698: /* formal_const_expr: '~' const_expr */ #line 3927 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } #line 9145 "built/tmp/cppBison.yxx.c" break; case 699: /* formal_const_expr: '-' const_expr */ #line 3931 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } #line 9153 "built/tmp/cppBison.yxx.c" break; case 700: /* formal_const_expr: '+' const_expr */ #line 3935 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } #line 9161 "built/tmp/cppBison.yxx.c" break; case 701: /* formal_const_expr: '&' const_expr */ #line 3939 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } #line 9169 "built/tmp/cppBison.yxx.c" break; case 702: /* formal_const_expr: formal_const_expr '*' const_expr */ #line 3943 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9177 "built/tmp/cppBison.yxx.c" break; case 703: /* formal_const_expr: formal_const_expr '/' const_expr */ #line 3947 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9185 "built/tmp/cppBison.yxx.c" break; case 704: /* formal_const_expr: formal_const_expr '%' const_expr */ #line 3951 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9193 "built/tmp/cppBison.yxx.c" break; case 705: /* formal_const_expr: formal_const_expr '+' const_expr */ #line 3955 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9201 "built/tmp/cppBison.yxx.c" break; case 706: /* formal_const_expr: formal_const_expr '-' const_expr */ #line 3959 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9209 "built/tmp/cppBison.yxx.c" break; case 707: /* formal_const_expr: formal_const_expr '|' const_expr */ #line 3963 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9217 "built/tmp/cppBison.yxx.c" break; case 708: /* formal_const_expr: formal_const_expr '^' const_expr */ #line 3967 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9225 "built/tmp/cppBison.yxx.c" break; case 709: /* formal_const_expr: formal_const_expr '&' const_expr */ #line 3971 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9233 "built/tmp/cppBison.yxx.c" break; case 710: /* formal_const_expr: formal_const_expr OROR const_expr */ #line 3975 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9241 "built/tmp/cppBison.yxx.c" break; case 711: /* formal_const_expr: formal_const_expr ANDAND const_expr */ #line 3979 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9249 "built/tmp/cppBison.yxx.c" break; case 712: /* formal_const_expr: formal_const_expr EQCOMPARE const_expr */ #line 3983 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9257 "built/tmp/cppBison.yxx.c" break; case 713: /* formal_const_expr: formal_const_expr NECOMPARE const_expr */ #line 3987 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9265 "built/tmp/cppBison.yxx.c" break; case 714: /* formal_const_expr: formal_const_expr LECOMPARE const_expr */ #line 3991 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9273 "built/tmp/cppBison.yxx.c" break; case 715: /* formal_const_expr: formal_const_expr GECOMPARE const_expr */ #line 3995 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9281 "built/tmp/cppBison.yxx.c" break; case 716: /* formal_const_expr: formal_const_expr '<' const_expr */ #line 3999 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9289 "built/tmp/cppBison.yxx.c" break; case 717: /* formal_const_expr: formal_const_expr '>' const_expr */ #line 4003 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9297 "built/tmp/cppBison.yxx.c" break; case 718: /* formal_const_expr: formal_const_expr LSHIFT const_expr */ #line 4007 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9305 "built/tmp/cppBison.yxx.c" break; case 719: /* formal_const_expr: formal_const_expr RSHIFT const_expr */ #line 4011 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9313 "built/tmp/cppBison.yxx.c" break; case 720: /* formal_const_expr: formal_const_expr '?' const_expr ':' const_expr */ #line 4015 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9321 "built/tmp/cppBison.yxx.c" break; case 721: /* formal_const_expr: formal_const_expr '[' const_expr ']' */ #line 4019 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 9329 "built/tmp/cppBison.yxx.c" break; case 722: /* formal_const_expr: formal_const_expr '(' const_expr_comma ')' */ #line 4023 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 9337 "built/tmp/cppBison.yxx.c" break; case 723: /* formal_const_expr: formal_const_expr '(' ')' */ #line 4027 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } #line 9345 "built/tmp/cppBison.yxx.c" break; case 724: /* formal_const_expr: formal_const_expr '.' name */ #line 4031 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer)); } #line 9353 "built/tmp/cppBison.yxx.c" break; case 725: /* formal_const_expr: formal_const_expr POINTSAT const_expr */ #line 4035 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } #line 9361 "built/tmp/cppBison.yxx.c" break; case 726: /* formal_const_expr: '(' const_expr_comma ')' */ #line 4039 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } #line 9369 "built/tmp/cppBison.yxx.c" break; case 727: /* formal_const_operand: INTEGER */ #line 4046 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } #line 9377 "built/tmp/cppBison.yxx.c" break; case 728: /* formal_const_operand: KW_TRUE */ #line 4050 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(true); } #line 9385 "built/tmp/cppBison.yxx.c" break; case 729: /* formal_const_operand: KW_FALSE */ #line 4054 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(false); } #line 9393 "built/tmp/cppBison.yxx.c" break; case 730: /* formal_const_operand: CHAR_TOK */ #line 4058 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } #line 9401 "built/tmp/cppBison.yxx.c" break; case 731: /* formal_const_operand: REAL */ #line 4062 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); } #line 9409 "built/tmp/cppBison.yxx.c" break; case 732: /* formal_const_operand: string_literal */ #line 4066 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 9417 "built/tmp/cppBison.yxx.c" break; case 733: /* formal_const_operand: CUSTOM_LITERAL */ #line 4070 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 9425 "built/tmp/cppBison.yxx.c" break; case 734: /* formal_const_operand: IDENTIFIER */ #line 4074 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); } #line 9433 "built/tmp/cppBison.yxx.c" break; case 735: /* formal_const_operand: KW_FINAL */ #line 4078 "dtool/src/cppparser/cppBison.yxx" { // A variable named "final". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } #line 9443 "built/tmp/cppBison.yxx.c" break; case 736: /* formal_const_operand: KW_OVERRIDE */ #line 4084 "dtool/src/cppparser/cppBison.yxx" { // A variable named "override". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } #line 9453 "built/tmp/cppBison.yxx.c" break; case 737: /* formal_const_operand: KW_NULLPTR */ #line 4090 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } #line 9461 "built/tmp/cppBison.yxx.c" break; case 738: /* capture_list: empty */ #line 4098 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(); } #line 9469 "built/tmp/cppBison.yxx.c" break; case 739: /* capture_list: '=' */ #line 4102 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); } #line 9477 "built/tmp/cppBison.yxx.c" break; case 740: /* capture_list: '&' */ #line 4106 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); } #line 9485 "built/tmp/cppBison.yxx.c" break; case 741: /* capture_list: capture maybe_initialize */ #line 4110 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(); (yyvsp[-1].u.capture)->_initializer = (yyvsp[0].u.expr); (yyval.u.closure_type)->_captures.push_back(*(yyvsp[-1].u.capture)); delete (yyvsp[-1].u.capture); } #line 9496 "built/tmp/cppBison.yxx.c" break; case 742: /* capture_list: capture_list ',' capture maybe_initialize */ #line 4117 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = (yyvsp[-3].u.closure_type); (yyvsp[-1].u.capture)->_initializer = (yyvsp[0].u.expr); (yyval.u.closure_type)->_captures.push_back(*(yyvsp[-1].u.capture)); delete (yyvsp[-1].u.capture); } #line 9507 "built/tmp/cppBison.yxx.c" break; case 743: /* capture: '&' name */ #line 4127 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } #line 9517 "built/tmp/cppBison.yxx.c" break; case 744: /* capture: '&' name ELLIPSIS */ #line 4133 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[-1].u.identifier)->get_simple_name(); (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } #line 9527 "built/tmp/cppBison.yxx.c" break; case 745: /* capture: name */ #line 4139 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); if ((yyval.u.capture)->_name == "this") { (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } else { (yyval.u.capture)->_type = CPPClosureType::CT_by_value; } } #line 9541 "built/tmp/cppBison.yxx.c" break; case 746: /* capture: '*' name */ #line 4149 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); (yyval.u.capture)->_type = CPPClosureType::CT_by_value; if ((yyval.u.capture)->_name != "this") { yywarning("only capture name 'this' may be preceded by an asterisk", (yylsp[0])); } } #line 9554 "built/tmp/cppBison.yxx.c" break; case 747: /* class_derivation_name: name */ #line 4161 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true); if (type == nullptr) { type = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } (yyval.u.type) = type; } #line 9566 "built/tmp/cppBison.yxx.c" break; case 748: /* class_derivation_name: KW_TYPENAME name */ #line 4169 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } #line 9574 "built/tmp/cppBison.yxx.c" break; case 749: /* class_derivation_name: name ELLIPSIS */ #line 4173 "dtool/src/cppparser/cppBison.yxx" { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[-1].u.identifier)); ctp->_packed = true; (yyval.u.type) = CPPType::new_type(ctp); } #line 9584 "built/tmp/cppBison.yxx.c" break; case 750: /* name: IDENTIFIER */ #line 4203 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 9592 "built/tmp/cppBison.yxx.c" break; case 751: /* name: TYPENAME_IDENTIFIER */ #line 4207 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 9600 "built/tmp/cppBison.yxx.c" break; case 752: /* name: TYPEPACK_IDENTIFIER */ #line 4211 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 9608 "built/tmp/cppBison.yxx.c" break; case 753: /* name: KW_FINAL */ #line 4215 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); } #line 9616 "built/tmp/cppBison.yxx.c" break; case 754: /* name: KW_OVERRIDE */ #line 4219 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } #line 9624 "built/tmp/cppBison.yxx.c" break; case 755: /* name: KW_SIGNED */ #line 4223 "dtool/src/cppparser/cppBison.yxx" { // This is not a keyword in Python, so it is useful to be able to use this // in MAKE_PROPERTY definitions, etc. (yyval.u.identifier) = new CPPIdentifier("signed", (yylsp[0])); } #line 9634 "built/tmp/cppBison.yxx.c" break; case 756: /* name: KW_FLOAT */ #line 4229 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); } #line 9642 "built/tmp/cppBison.yxx.c" break; case 757: /* name: KW_PUBLIC */ #line 4233 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); } #line 9650 "built/tmp/cppBison.yxx.c" break; case 758: /* name: KW_PRIVATE */ #line 4237 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); } #line 9658 "built/tmp/cppBison.yxx.c" break; case 759: /* name: KW_STATIC */ #line 4241 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); } #line 9666 "built/tmp/cppBison.yxx.c" break; case 760: /* name: KW_DEFAULT */ #line 4245 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("default", (yylsp[0])); } #line 9674 "built/tmp/cppBison.yxx.c" break; case 761: /* name_no_final: IDENTIFIER */ #line 4256 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 9682 "built/tmp/cppBison.yxx.c" break; case 762: /* name_no_final: TYPENAME_IDENTIFIER */ #line 4260 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 9690 "built/tmp/cppBison.yxx.c" break; case 763: /* name_no_final: TYPEPACK_IDENTIFIER */ #line 4264 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } #line 9698 "built/tmp/cppBison.yxx.c" break; case 764: /* name_no_final: KW_OVERRIDE */ #line 4268 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } #line 9706 "built/tmp/cppBison.yxx.c" break; case 765: /* string_literal: SIMPLE_STRING */ #line 4276 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); } #line 9714 "built/tmp/cppBison.yxx.c" break; case 766: /* string_literal: STRING_LITERAL */ #line 4280 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } #line 9722 "built/tmp/cppBison.yxx.c" break; case 767: /* string_literal: string_literal SIMPLE_STRING */ #line 4284 "dtool/src/cppparser/cppBison.yxx" { // The right string takes on the literal type of the left. (yyval.u.expr) = (yyvsp[-1].u.expr); (yyval.u.expr)->_str += (yyvsp[0].str); } #line 9732 "built/tmp/cppBison.yxx.c" break; case 768: /* string_literal: string_literal STRING_LITERAL */ #line 4290 "dtool/src/cppparser/cppBison.yxx" { // We have to check that the two literal types match up. (yyval.u.expr) = (yyvsp[-1].u.expr); if ((yyvsp[0].u.expr)->_type != CPPExpression::T_string && (yyvsp[0].u.expr)->_type != (yyvsp[-1].u.expr)->_type) { yywarning("cannot concatenate two string literals of different types", (yyloc)); } (yyval.u.expr)->_str += (yyvsp[0].u.expr)->_str; } #line 9745 "built/tmp/cppBison.yxx.c" break; #line 9749 "built/tmp/cppBison.yxx.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; *++yyvsp = yyval; *++yylsp = yyloc; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int yylhs = yyr1[yyn] - YYNTOKENS; const int yyi = yypgoto[yylhs] + *yyssp; yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ? yytable[yyi] : yydefgoto[yylhs]); } goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; yyerror (&yylloc, YY_("syntax error")); } yyerror_range[1] = yylloc; if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, &yylloc); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYSYMBOL_YYerror; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END yyerror_range[2] = yylloc; ++yylsp; YYLLOC_DEFAULT (*yylsp, yyerror_range, 2); /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturnlab; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturnlab; /*-----------------------------------------------------------. | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | `-----------------------------------------------------------*/ yyexhaustedlab: yyerror (&yylloc, YY_("memory exhausted")); yyresult = 2; goto yyreturnlab; /*----------------------------------------------------------. | yyreturnlab -- parsing is finished, clean up and return. | `----------------------------------------------------------*/ yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif return yyresult; }