open_toontown_panda3d/dtool/src/cppparser/cppBison.cxx.prebuilt

10023 lines
423 KiB
Plaintext

/* A Bison parser, made by GNU Bison 3.7.3. */
/* Bison implementation for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 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 <http://www.gnu.org/licenses/>. */
/* 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. */
#define YYBISON 1
/* Bison version. */
#define YYBISON_VERSION "3.7.3"
/* 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<CPPScope *> last_scopes;
static std::vector<int> last_storage_classes;
static std::vector<CPPStructType *> 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<Type> (Val)
# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (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_SPACESHIP = 22, /* SPACESHIP */
YYSYMBOL_LSHIFT = 23, /* LSHIFT */
YYSYMBOL_RSHIFT = 24, /* RSHIFT */
YYSYMBOL_POINTSAT_STAR = 25, /* POINTSAT_STAR */
YYSYMBOL_DOT_STAR = 26, /* DOT_STAR */
YYSYMBOL_UNARY = 27, /* UNARY */
YYSYMBOL_UNARY_NOT = 28, /* UNARY_NOT */
YYSYMBOL_UNARY_NEGATE = 29, /* UNARY_NEGATE */
YYSYMBOL_UNARY_MINUS = 30, /* UNARY_MINUS */
YYSYMBOL_UNARY_PLUS = 31, /* UNARY_PLUS */
YYSYMBOL_UNARY_STAR = 32, /* UNARY_STAR */
YYSYMBOL_UNARY_REF = 33, /* UNARY_REF */
YYSYMBOL_POINTSAT = 34, /* POINTSAT */
YYSYMBOL_SCOPE = 35, /* SCOPE */
YYSYMBOL_PLUSPLUS = 36, /* PLUSPLUS */
YYSYMBOL_MINUSMINUS = 37, /* MINUSMINUS */
YYSYMBOL_TIMESEQUAL = 38, /* TIMESEQUAL */
YYSYMBOL_DIVIDEEQUAL = 39, /* DIVIDEEQUAL */
YYSYMBOL_MODEQUAL = 40, /* MODEQUAL */
YYSYMBOL_PLUSEQUAL = 41, /* PLUSEQUAL */
YYSYMBOL_MINUSEQUAL = 42, /* MINUSEQUAL */
YYSYMBOL_OREQUAL = 43, /* OREQUAL */
YYSYMBOL_ANDEQUAL = 44, /* ANDEQUAL */
YYSYMBOL_XOREQUAL = 45, /* XOREQUAL */
YYSYMBOL_LSHIFTEQUAL = 46, /* LSHIFTEQUAL */
YYSYMBOL_RSHIFTEQUAL = 47, /* RSHIFTEQUAL */
YYSYMBOL_ATTR_LEFT = 48, /* ATTR_LEFT */
YYSYMBOL_ATTR_RIGHT = 49, /* ATTR_RIGHT */
YYSYMBOL_KW_ALIGNAS = 50, /* KW_ALIGNAS */
YYSYMBOL_KW_ALIGNOF = 51, /* KW_ALIGNOF */
YYSYMBOL_KW_AUTO = 52, /* KW_AUTO */
YYSYMBOL_KW_BEGIN_PUBLISH = 53, /* KW_BEGIN_PUBLISH */
YYSYMBOL_KW_BLOCKING = 54, /* KW_BLOCKING */
YYSYMBOL_KW_BOOL = 55, /* KW_BOOL */
YYSYMBOL_KW_CATCH = 56, /* KW_CATCH */
YYSYMBOL_KW_CHAR = 57, /* KW_CHAR */
YYSYMBOL_KW_CHAR8_T = 58, /* KW_CHAR8_T */
YYSYMBOL_KW_CHAR16_T = 59, /* KW_CHAR16_T */
YYSYMBOL_KW_CHAR32_T = 60, /* KW_CHAR32_T */
YYSYMBOL_KW_CLASS = 61, /* KW_CLASS */
YYSYMBOL_KW_CONST = 62, /* KW_CONST */
YYSYMBOL_KW_CONSTEVAL = 63, /* KW_CONSTEVAL */
YYSYMBOL_KW_CONSTEXPR = 64, /* KW_CONSTEXPR */
YYSYMBOL_KW_CONSTINIT = 65, /* KW_CONSTINIT */
YYSYMBOL_KW_CONST_CAST = 66, /* KW_CONST_CAST */
YYSYMBOL_KW_DECLTYPE = 67, /* KW_DECLTYPE */
YYSYMBOL_KW_DEFAULT = 68, /* KW_DEFAULT */
YYSYMBOL_KW_DELETE = 69, /* KW_DELETE */
YYSYMBOL_KW_DOUBLE = 70, /* KW_DOUBLE */
YYSYMBOL_KW_DYNAMIC_CAST = 71, /* KW_DYNAMIC_CAST */
YYSYMBOL_KW_ELSE = 72, /* KW_ELSE */
YYSYMBOL_KW_END_PUBLISH = 73, /* KW_END_PUBLISH */
YYSYMBOL_KW_ENUM = 74, /* KW_ENUM */
YYSYMBOL_KW_EXTENSION = 75, /* KW_EXTENSION */
YYSYMBOL_KW_EXTERN = 76, /* KW_EXTERN */
YYSYMBOL_KW_EXPLICIT = 77, /* KW_EXPLICIT */
YYSYMBOL_KW_PUBLISHED = 78, /* KW_PUBLISHED */
YYSYMBOL_KW_FALSE = 79, /* KW_FALSE */
YYSYMBOL_KW_FINAL = 80, /* KW_FINAL */
YYSYMBOL_KW_FLOAT = 81, /* KW_FLOAT */
YYSYMBOL_KW_FRIEND = 82, /* KW_FRIEND */
YYSYMBOL_KW_FOR = 83, /* KW_FOR */
YYSYMBOL_KW_GOTO = 84, /* KW_GOTO */
YYSYMBOL_KW_HAS_VIRTUAL_DESTRUCTOR = 85, /* KW_HAS_VIRTUAL_DESTRUCTOR */
YYSYMBOL_KW_IF = 86, /* KW_IF */
YYSYMBOL_KW_INLINE = 87, /* KW_INLINE */
YYSYMBOL_KW_INT = 88, /* KW_INT */
YYSYMBOL_KW_IS_ABSTRACT = 89, /* KW_IS_ABSTRACT */
YYSYMBOL_KW_IS_BASE_OF = 90, /* KW_IS_BASE_OF */
YYSYMBOL_KW_IS_CLASS = 91, /* KW_IS_CLASS */
YYSYMBOL_KW_IS_CONSTRUCTIBLE = 92, /* KW_IS_CONSTRUCTIBLE */
YYSYMBOL_KW_IS_CONVERTIBLE_TO = 93, /* KW_IS_CONVERTIBLE_TO */
YYSYMBOL_KW_IS_DESTRUCTIBLE = 94, /* KW_IS_DESTRUCTIBLE */
YYSYMBOL_KW_IS_EMPTY = 95, /* KW_IS_EMPTY */
YYSYMBOL_KW_IS_ENUM = 96, /* KW_IS_ENUM */
YYSYMBOL_KW_IS_FINAL = 97, /* KW_IS_FINAL */
YYSYMBOL_KW_IS_FUNDAMENTAL = 98, /* KW_IS_FUNDAMENTAL */
YYSYMBOL_KW_IS_POD = 99, /* KW_IS_POD */
YYSYMBOL_KW_IS_POLYMORPHIC = 100, /* KW_IS_POLYMORPHIC */
YYSYMBOL_KW_IS_STANDARD_LAYOUT = 101, /* KW_IS_STANDARD_LAYOUT */
YYSYMBOL_KW_IS_TRIVIAL = 102, /* KW_IS_TRIVIAL */
YYSYMBOL_KW_IS_UNION = 103, /* KW_IS_UNION */
YYSYMBOL_KW_LONG = 104, /* KW_LONG */
YYSYMBOL_KW_MAKE_MAP_KEYS_SEQ = 105, /* KW_MAKE_MAP_KEYS_SEQ */
YYSYMBOL_KW_MAKE_MAP_PROPERTY = 106, /* KW_MAKE_MAP_PROPERTY */
YYSYMBOL_KW_MAKE_PROPERTY = 107, /* KW_MAKE_PROPERTY */
YYSYMBOL_KW_MAKE_PROPERTY2 = 108, /* KW_MAKE_PROPERTY2 */
YYSYMBOL_KW_MAKE_SEQ = 109, /* KW_MAKE_SEQ */
YYSYMBOL_KW_MAKE_SEQ_PROPERTY = 110, /* KW_MAKE_SEQ_PROPERTY */
YYSYMBOL_KW_MUTABLE = 111, /* KW_MUTABLE */
YYSYMBOL_KW_NAMESPACE = 112, /* KW_NAMESPACE */
YYSYMBOL_KW_NEW = 113, /* KW_NEW */
YYSYMBOL_KW_NOEXCEPT = 114, /* KW_NOEXCEPT */
YYSYMBOL_KW_NULLPTR = 115, /* KW_NULLPTR */
YYSYMBOL_KW_OPERATOR = 116, /* KW_OPERATOR */
YYSYMBOL_KW_OVERRIDE = 117, /* KW_OVERRIDE */
YYSYMBOL_KW_PRIVATE = 118, /* KW_PRIVATE */
YYSYMBOL_KW_PROTECTED = 119, /* KW_PROTECTED */
YYSYMBOL_KW_PUBLIC = 120, /* KW_PUBLIC */
YYSYMBOL_KW_REGISTER = 121, /* KW_REGISTER */
YYSYMBOL_KW_REINTERPRET_CAST = 122, /* KW_REINTERPRET_CAST */
YYSYMBOL_KW_RETURN = 123, /* KW_RETURN */
YYSYMBOL_KW_SHORT = 124, /* KW_SHORT */
YYSYMBOL_KW_SIGNED = 125, /* KW_SIGNED */
YYSYMBOL_KW_SIZEOF = 126, /* KW_SIZEOF */
YYSYMBOL_KW_STATIC = 127, /* KW_STATIC */
YYSYMBOL_KW_STATIC_ASSERT = 128, /* KW_STATIC_ASSERT */
YYSYMBOL_KW_STATIC_CAST = 129, /* KW_STATIC_CAST */
YYSYMBOL_KW_STRUCT = 130, /* KW_STRUCT */
YYSYMBOL_KW_TEMPLATE = 131, /* KW_TEMPLATE */
YYSYMBOL_KW_THREAD_LOCAL = 132, /* KW_THREAD_LOCAL */
YYSYMBOL_KW_THROW = 133, /* KW_THROW */
YYSYMBOL_KW_TRUE = 134, /* KW_TRUE */
YYSYMBOL_KW_TRY = 135, /* KW_TRY */
YYSYMBOL_KW_TYPEDEF = 136, /* KW_TYPEDEF */
YYSYMBOL_KW_TYPEID = 137, /* KW_TYPEID */
YYSYMBOL_KW_TYPENAME = 138, /* KW_TYPENAME */
YYSYMBOL_KW_UNDERLYING_TYPE = 139, /* KW_UNDERLYING_TYPE */
YYSYMBOL_KW_UNION = 140, /* KW_UNION */
YYSYMBOL_KW_UNSIGNED = 141, /* KW_UNSIGNED */
YYSYMBOL_KW_USING = 142, /* KW_USING */
YYSYMBOL_KW_VIRTUAL = 143, /* KW_VIRTUAL */
YYSYMBOL_KW_VOID = 144, /* KW_VOID */
YYSYMBOL_KW_VOLATILE = 145, /* KW_VOLATILE */
YYSYMBOL_KW_WCHAR_T = 146, /* KW_WCHAR_T */
YYSYMBOL_KW_WHILE = 147, /* KW_WHILE */
YYSYMBOL_START_CPP = 148, /* START_CPP */
YYSYMBOL_START_CONST_EXPR = 149, /* START_CONST_EXPR */
YYSYMBOL_START_TYPE = 150, /* START_TYPE */
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_171_ = 171, /* ')' */
YYSYMBOL_172_ = 172, /* '}' */
YYSYMBOL_173_ = 173, /* '!' */
YYSYMBOL_174_ = 174, /* ']' */
YYSYMBOL_YYACCEPT = 175, /* $accept */
YYSYMBOL_grammar = 176, /* grammar */
YYSYMBOL_cpp = 177, /* cpp */
YYSYMBOL_constructor_inits = 178, /* constructor_inits */
YYSYMBOL_constructor_init = 179, /* constructor_init */
YYSYMBOL_extern_c = 180, /* extern_c */
YYSYMBOL_181_1 = 181, /* $@1 */
YYSYMBOL_declaration = 182, /* declaration */
YYSYMBOL_friend_declaration = 183, /* friend_declaration */
YYSYMBOL_184_2 = 184, /* $@2 */
YYSYMBOL_storage_class = 185, /* storage_class */
YYSYMBOL_attribute_specifiers = 186, /* attribute_specifiers */
YYSYMBOL_attribute_specifier = 187, /* attribute_specifier */
YYSYMBOL_type_like_declaration = 188, /* type_like_declaration */
YYSYMBOL_189_3 = 189, /* $@3 */
YYSYMBOL_190_4 = 190, /* $@4 */
YYSYMBOL_multiple_instance_identifiers = 191, /* multiple_instance_identifiers */
YYSYMBOL_typedef_declaration = 192, /* typedef_declaration */
YYSYMBOL_193_5 = 193, /* $@5 */
YYSYMBOL_typedef_instance_identifiers = 194, /* typedef_instance_identifiers */
YYSYMBOL_constructor_prototype = 195, /* constructor_prototype */
YYSYMBOL_196_6 = 196, /* $@6 */
YYSYMBOL_197_7 = 197, /* $@7 */
YYSYMBOL_198_8 = 198, /* $@8 */
YYSYMBOL_function_prototype = 199, /* function_prototype */
YYSYMBOL_200_9 = 200, /* $@9 */
YYSYMBOL_201_10 = 201, /* $@10 */
YYSYMBOL_202_11 = 202, /* $@11 */
YYSYMBOL_203_12 = 203, /* $@12 */
YYSYMBOL_204_13 = 204, /* $@13 */
YYSYMBOL_function_post = 205, /* function_post */
YYSYMBOL_function_operator = 206, /* function_operator */
YYSYMBOL_more_template_declaration = 207, /* more_template_declaration */
YYSYMBOL_template_declaration = 208, /* template_declaration */
YYSYMBOL_209_14 = 209, /* $@14 */
YYSYMBOL_template_formal_parameters = 210, /* template_formal_parameters */
YYSYMBOL_template_nonempty_formal_parameters = 211, /* template_nonempty_formal_parameters */
YYSYMBOL_typename_keyword = 212, /* typename_keyword */
YYSYMBOL_template_formal_parameter = 213, /* template_formal_parameter */
YYSYMBOL_template_formal_parameter_type = 214, /* template_formal_parameter_type */
YYSYMBOL_instance_identifier = 215, /* instance_identifier */
YYSYMBOL_216_15 = 216, /* $@15 */
YYSYMBOL_instance_identifier_and_maybe_trailing_return_type = 217, /* instance_identifier_and_maybe_trailing_return_type */
YYSYMBOL_maybe_trailing_return_type = 218, /* maybe_trailing_return_type */
YYSYMBOL_maybe_comma_identifier = 219, /* maybe_comma_identifier */
YYSYMBOL_function_parameter_list = 220, /* function_parameter_list */
YYSYMBOL_function_parameters = 221, /* function_parameters */
YYSYMBOL_formal_parameter_list = 222, /* formal_parameter_list */
YYSYMBOL_formal_parameters = 223, /* formal_parameters */
YYSYMBOL_template_parameter_maybe_initialize = 224, /* template_parameter_maybe_initialize */
YYSYMBOL_maybe_initialize = 225, /* maybe_initialize */
YYSYMBOL_maybe_initialize_or_constructor_body = 226, /* maybe_initialize_or_constructor_body */
YYSYMBOL_maybe_initialize_or_function_body = 227, /* maybe_initialize_or_function_body */
YYSYMBOL_structure_init = 228, /* structure_init */
YYSYMBOL_structure_init_body = 229, /* structure_init_body */
YYSYMBOL_function_parameter = 230, /* function_parameter */
YYSYMBOL_formal_parameter = 231, /* formal_parameter */
YYSYMBOL_not_paren_formal_parameter_identifier = 232, /* not_paren_formal_parameter_identifier */
YYSYMBOL_formal_parameter_identifier = 233, /* formal_parameter_identifier */
YYSYMBOL_parameter_pack_identifier = 234, /* parameter_pack_identifier */
YYSYMBOL_not_paren_empty_instance_identifier = 235, /* not_paren_empty_instance_identifier */
YYSYMBOL_empty_instance_identifier = 236, /* empty_instance_identifier */
YYSYMBOL_type = 237, /* type */
YYSYMBOL_type_pack = 238, /* type_pack */
YYSYMBOL_type_decl = 239, /* type_decl */
YYSYMBOL_predefined_type = 240, /* predefined_type */
YYSYMBOL_var_type_decl = 241, /* var_type_decl */
YYSYMBOL_full_type = 242, /* full_type */
YYSYMBOL_struct_attributes = 243, /* struct_attributes */
YYSYMBOL_anonymous_struct = 244, /* anonymous_struct */
YYSYMBOL_245_16 = 245, /* $@16 */
YYSYMBOL_named_struct = 246, /* named_struct */
YYSYMBOL_247_17 = 247, /* $@17 */
YYSYMBOL_maybe_final = 248, /* maybe_final */
YYSYMBOL_maybe_class_derivation = 249, /* maybe_class_derivation */
YYSYMBOL_class_derivation = 250, /* class_derivation */
YYSYMBOL_base_specification = 251, /* base_specification */
YYSYMBOL_enum = 252, /* enum */
YYSYMBOL_enum_decl = 253, /* enum_decl */
YYSYMBOL_enum_element_type = 254, /* enum_element_type */
YYSYMBOL_enum_body_trailing_comma = 255, /* enum_body_trailing_comma */
YYSYMBOL_enum_body = 256, /* enum_body */
YYSYMBOL_enum_keyword = 257, /* enum_keyword */
YYSYMBOL_struct_keyword = 258, /* struct_keyword */
YYSYMBOL_namespace_declaration = 259, /* namespace_declaration */
YYSYMBOL_260_18 = 260, /* $@18 */
YYSYMBOL_261_19 = 261, /* $@19 */
YYSYMBOL_using_declaration = 262, /* using_declaration */
YYSYMBOL_simple_type = 263, /* simple_type */
YYSYMBOL_simple_int_type = 264, /* simple_int_type */
YYSYMBOL_simple_float_type = 265, /* simple_float_type */
YYSYMBOL_simple_void_type = 266, /* simple_void_type */
YYSYMBOL_code = 267, /* code */
YYSYMBOL_268_20 = 268, /* $@20 */
YYSYMBOL_code_block = 269, /* code_block */
YYSYMBOL_element = 270, /* element */
YYSYMBOL_optional_const_expr = 271, /* optional_const_expr */
YYSYMBOL_optional_const_expr_comma = 272, /* optional_const_expr_comma */
YYSYMBOL_const_expr_comma = 273, /* const_expr_comma */
YYSYMBOL_no_angle_bracket_const_expr = 274, /* no_angle_bracket_const_expr */
YYSYMBOL_const_expr = 275, /* const_expr */
YYSYMBOL_const_operand = 276, /* const_operand */
YYSYMBOL_formal_const_expr = 277, /* formal_const_expr */
YYSYMBOL_formal_const_operand = 278, /* formal_const_operand */
YYSYMBOL_capture_list = 279, /* capture_list */
YYSYMBOL_capture = 280, /* capture */
YYSYMBOL_class_derivation_name = 281, /* class_derivation_name */
YYSYMBOL_name = 282, /* name */
YYSYMBOL_name_no_final = 283, /* name_no_final */
YYSYMBOL_string_literal = 284, /* string_literal */
YYSYMBOL_empty = 285 /* 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
<limits.h> and (if available) <stdint.h> are included
so that the code can choose integer types of a good width. */
#ifndef __PTRDIFF_MAX__
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
# include <stdint.h> /* 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
#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 <stddef.h> /* 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 <stddef.h> /* 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 <libintl.h> /* 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 YYUSE(E) ((void) (E))
#else
# define YYUSE(E) /* empty */
#endif
#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# 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 <alloca.h> /* INFRINGES ON USER NAME SPACE */
# elif defined _AIX
# define YYSTACK_ALLOC __alloca
# elif defined _MSC_VER
# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h> /* 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 <stdlib.h> /* 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 106
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 7817
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 175
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 111
/* YYNRULES -- Number of rules. */
#define YYNRULES 777
/* YYNSTATES -- Number of states. */
#define YYNSTATES 1595
/* YYMAXUTOK -- Last valid token kind. */
#define YYMAXUTOK 405
/* 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, 173, 2, 2, 2, 166, 159, 2,
169, 171, 164, 162, 152, 163, 168, 165, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 154, 153,
160, 155, 161, 156, 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, 170, 2, 174, 158, 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, 151, 157, 172, 167, 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, 147, 148, 149, 150
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
0, 457, 457, 458, 462, 469, 470, 471, 475, 476,
480, 484, 488, 501, 500, 512, 513, 514, 515, 516,
517, 518, 531, 540, 544, 552, 556, 560, 581, 608,
629, 658, 694, 737, 749, 770, 806, 840, 862, 898,
920, 931, 945, 944, 959, 963, 968, 972, 983, 987,
991, 995, 999, 1003, 1007, 1011, 1015, 1019, 1023, 1027,
1031, 1035, 1040, 1044, 1051, 1052, 1056, 1057, 1058, 1063,
1062, 1078, 1088, 1087, 1104, 1112, 1120, 1131, 1147, 1146,
1161, 1176, 1185, 1200, 1199, 1239, 1238, 1266, 1265, 1302,
1301, 1332, 1331, 1350, 1349, 1370, 1369, 1401, 1400, 1426,
1439, 1443, 1447, 1451, 1464, 1468, 1472, 1476, 1480, 1485,
1490, 1494, 1498, 1502, 1509, 1513, 1517, 1521, 1525, 1529,
1533, 1537, 1541, 1545, 1549, 1553, 1557, 1561, 1565, 1569,
1573, 1577, 1581, 1585, 1589, 1593, 1597, 1601, 1605, 1609,
1613, 1617, 1621, 1625, 1629, 1633, 1637, 1641, 1645, 1649,
1653, 1657, 1661, 1665, 1672, 1673, 1674, 1678, 1680, 1679,
1687, 1688, 1692, 1693, 1697, 1703, 1712, 1713, 1717, 1721,
1725, 1729, 1735, 1741, 1747, 1754, 1759, 1768, 1772, 1777,
1785, 1797, 1801, 1815, 1830, 1835, 1840, 1845, 1850, 1855,
1860, 1865, 1871, 1870, 1901, 1911, 1921, 1925, 1929, 1938,
1942, 1950, 1954, 1959, 1963, 1968, 1976, 1981, 1989, 1993,
1998, 2002, 2007, 2015, 2020, 2028, 2032, 2039, 2043, 2050,
2054, 2058, 2062, 2066, 2073, 2077, 2081, 2085, 2089, 2093,
2100, 2101, 2102, 2106, 2109, 2110, 2111, 2115, 2120, 2126,
2132, 2137, 2143, 2149, 2153, 2164, 2168, 2178, 2182, 2186,
2191, 2196, 2201, 2206, 2211, 2216, 2224, 2228, 2232, 2237,
2242, 2247, 2252, 2257, 2262, 2267, 2273, 2281, 2286, 2291,
2296, 2301, 2306, 2311, 2316, 2321, 2326, 2332, 2340, 2344,
2349, 2354, 2359, 2364, 2369, 2374, 2379, 2384, 2392, 2396,
2401, 2406, 2411, 2416, 2421, 2426, 2431, 2436, 2441, 2447,
2454, 2461, 2471, 2475, 2483, 2487, 2491, 2495, 2499, 2515,
2531, 2540, 2544, 2554, 2561, 2572, 2576, 2584, 2588, 2592,
2596, 2600, 2616, 2632, 2650, 2659, 2663, 2673, 2680, 2684,
2692, 2696, 2712, 2728, 2737, 2747, 2754, 2758, 2766, 2770,
2775, 2779, 2787, 2788, 2789, 2790, 2795, 2794, 2819, 2818,
2848, 2849, 2856, 2857, 2861, 2862, 2866, 2870, 2874, 2878,
2882, 2886, 2890, 2894, 2898, 2902, 2909, 2917, 2921, 2925,
2930, 2938, 2942, 2949, 2950, 2955, 2962, 2963, 2968, 2976,
2980, 2984, 2991, 2995, 2999, 3007, 3006, 3029, 3028, 3051,
3052, 3056, 3062, 3069, 3078, 3079, 3080, 3084, 3088, 3092,
3096, 3100, 3104, 3108, 3113, 3118, 3123, 3128, 3132, 3137,
3146, 3151, 3159, 3163, 3167, 3175, 3185, 3185, 3195, 3196,
3200, 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209,
3210, 3211, 3211, 3211, 3212, 3212, 3212, 3212, 3212, 3213,
3213, 3213, 3213, 3213, 3214, 3214, 3214, 3215, 3215, 3215,
3215, 3215, 3216, 3216, 3216, 3216, 3216, 3217, 3217, 3218,
3218, 3218, 3218, 3218, 3219, 3219, 3219, 3219, 3219, 3220,
3220, 3220, 3220, 3220, 3221, 3221, 3221, 3221, 3221, 3222,
3222, 3222, 3222, 3223, 3223, 3223, 3223, 3223, 3224, 3224,
3224, 3224, 3225, 3225, 3225, 3225, 3225, 3226, 3226, 3226,
3226, 3227, 3227, 3227, 3227, 3228, 3228, 3228, 3228, 3228,
3229, 3229, 3229, 3229, 3230, 3230, 3230, 3230, 3230, 3231,
3231, 3231, 3231, 3232, 3232, 3232, 3232, 3232, 3233, 3233,
3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236,
3236, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237,
3237, 3238, 3238, 3242, 3246, 3253, 3257, 3264, 3268, 3275,
3279, 3283, 3287, 3291, 3295, 3299, 3303, 3307, 3311, 3315,
3319, 3323, 3327, 3331, 3335, 3339, 3343, 3347, 3351, 3355,
3359, 3363, 3367, 3371, 3375, 3379, 3383, 3387, 3391, 3395,
3399, 3403, 3407, 3411, 3415, 3419, 3423, 3427, 3431, 3439,
3443, 3447, 3451, 3455, 3459, 3463, 3473, 3483, 3489, 3495,
3501, 3507, 3513, 3519, 3525, 3532, 3539, 3546, 3553, 3559,
3565, 3569, 3573, 3577, 3581, 3585, 3589, 3600, 3611, 3615,
3619, 3623, 3627, 3631, 3635, 3639, 3643, 3647, 3651, 3655,
3659, 3663, 3667, 3671, 3675, 3679, 3683, 3687, 3691, 3695,
3699, 3703, 3707, 3711, 3715, 3719, 3723, 3727, 3731, 3735,
3742, 3746, 3750, 3754, 3758, 3762, 3766, 3770, 3774, 3780,
3786, 3790, 3796, 3803, 3807, 3811, 3815, 3819, 3823, 3827,
3831, 3835, 3839, 3843, 3847, 3851, 3855, 3859, 3863, 3867,
3881, 3885, 3889, 3893, 3897, 3901, 3905, 3909, 3913, 3917,
3921, 3925, 3929, 3940, 3951, 3955, 3959, 3963, 3967, 3971,
3975, 3979, 3983, 3987, 3991, 3995, 3999, 4003, 4007, 4011,
4015, 4019, 4023, 4027, 4031, 4035, 4039, 4043, 4047, 4051,
4055, 4059, 4063, 4067, 4071, 4078, 4082, 4086, 4090, 4094,
4098, 4102, 4106, 4110, 4116, 4122, 4130, 4134, 4138, 4142,
4149, 4159, 4165, 4171, 4181, 4193, 4201, 4205, 4235, 4239,
4243, 4247, 4251, 4255, 4261, 4265, 4269, 4273, 4277, 4288,
4292, 4296, 4300, 4308, 4312, 4316, 4322, 4333
};
#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",
"SPACESHIP", "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_CHAR8_T",
"KW_CHAR16_T", "KW_CHAR32_T", "KW_CLASS", "KW_CONST", "KW_CONSTEVAL",
"KW_CONSTEXPR", "KW_CONSTINIT", "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",
"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
#ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
static const yytype_int16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
405, 123, 44, 59, 58, 61, 63, 124, 94, 38,
60, 62, 43, 45, 42, 47, 37, 126, 46, 40,
91, 41, 125, 33, 93
};
#endif
#define YYPACT_NINF (-942)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
#define YYTABLE_NINF (-773)
#define yytable_value_is_error(Yyn) \
0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
109, -942, 3883, 6382, 55, 5572, -942, -942, -942, -942,
-942, -942, -942, -942, -24, -40, -16, 10, 45, 61,
69, -62, 74, 131, -942, -942, 100, 124, 135, 164,
172, 174, 208, 210, 214, 262, 269, 273, 285, 288,
289, 295, 300, 301, 302, 6702, -942, -942, 199, 303,
305, 2771, 254, -942, 306, 311, 317, 3883, 3883, 3883,
3883, 3883, 2461, 1834, 3883, 5373, -942, 116, -942, -942,
-942, -942, -942, -942, -942, -942, -942, 6497, 318, -942,
-36, -942, -942, 7142, 5403, 5403, -942, 6175, 320, -942,
5403, -942, -942, 339, 339, -942, -942, -942, -942, -15,
53, -942, -942, -942, -942, -942, -942, 5125, 324, -942,
7672, 7672, 7672, 7672, 7672, -942, 7672, 5436, 7672, 12,
-942, 7407, 330, 331, 332, 333, 335, 337, 7672, 4204,
279, 299, 327, 7672, 7672, 340, 7492, 7672, 7672, 5548,
7672, 7672, -942, -942, -942, -942, 1540, -942, -942, -942,
-942, -942, 3883, 3883, 6382, 3883, 3883, 3883, 3883, 3883,
6382, 3883, 6382, 3883, 6382, 3883, 6382, 6382, 6382, 6382,
6382, 6382, 6382, 6382, 6382, 6382, 6382, 6382, 6382, 6382,
6382, 3883, -942, -942, 341, 6175, 343, 344, 6175, -942,
-942, 6382, 3883, 3883, 345, 2461, 27, 6382, 2461, 3883,
3883, 27, 27, 27, 27, 27, -24, -16, 10, 45,
61, 69, 74, 100, 135, 6968, 4616, 6024, 6976, 317,
-91, -82, 5373, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, 6175, 6175, -68, -13, -942,
-942, 27, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883,
3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883,
3883, 3883, 3883, 6175, 2910, 3883, -942, -942, 339, 339,
3049, -942, -942, -942, 5403, -942, -942, -942, -942, 6382,
-942, 351, 836, 86, 339, 339, 86, 86, 5690, 346,
-942, 350, -942, -942, -942, -942, -942, -942, 3981, 364,
1635, -942, 6175, 472, 376, 362, 1737, 6097, 7672, -942,
-942, -942, -942, -942, -942, 7672, -942, -942, -942, -942,
7567, 4521, -942, 6175, 6175, 6175, 6175, 6175, 6175, -942,
-942, 381, -942, -942, -942, -942, -942, 3883, -942, 4965,
-942, 380, -942, 5027, -942, 6175, 14, -942, -942, -35,
367, -942, 374, 6587, 6175, 375, -942, 6175, -942, 200,
392, -942, -942, -942, -942, 1463, -942, -942, 400, 423,
-942, 405, 407, 409, 410, 411, 412, 418, 432, 433,
442, 434, 435, 436, 439, 460, 443, -74, 464, 446,
448, 449, 450, 452, 453, 469, 470, 473, 478, 480,
3883, -942, 6382, 3883, -942, 7418, 482, 481, 484, 6175,
488, 492, 490, 4324, 491, 494, 3883, 3883, -942, 648,
-942, 4395, 502, 3883, -942, -942, 5709, 5779, 5954, 5954,
1757, 1757, 818, 926, 926, -942, 5256, 5803, 5821, 5879,
1757, 1757, 137, 137, 27, 27, 27, -942, -942, -57,
2166, -942, -942, 503, 4821, 505, 86, 507, 509, 6175,
86, 86, 86, 86, 86, 508, -942, 346, -942, 346,
-942, 508, 508, -942, 86, 5125, 6472, 6357, 86, 86,
513, 20, -942, 1050, 888, -942, 3883, 6175, 514, -942,
-942, -942, -942, 3981, -28, -21, -8, 5125, 518, -4,
-942, -942, -942, 534, 7672, 5125, 4022, -24, 520, 5100,
-942, -942, -942, 545, 546, 552, 555, 556, 558, 559,
6847, -942, 4041, 4823, 245, 528, 200, -942, -942, 562,
-942, 6382, -942, 41, 3188, 6727, 585, -942, 6382, -942,
543, 231, -942, -942, 2632, -942, -942, 775, -942, 563,
1635, -942, -942, -942, -942, -942, -942, -942, -942, 547,
-942, 549, -942, -942, -942, -942, 6382, -942, 6382, -942,
6382, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, 5158, 551, 553, -942, 566, -942, -942, 570,
4166, 573, -942, -942, -942, -942, 27, 5373, -942, 6175,
-13, 6220, 264, -942, 5373, 3883, -942, -942, -942, -942,
-942, 508, 86, -942, 508, 508, 508, 508, 508, 3883,
-80, 671, 6497, 1050, 888, -942, 52, 94, -942, -942,
6258, 581, 1050, 1050, 1050, 1050, 1050, 1050, -89, -942,
-942, 583, 6175, 888, 888, 888, 888, 888, 888, 8,
574, 5373, -942, -95, -942, 599, 702, 1737, -942, 672,
5125, -942, -942, -942, -942, -942, -942, -942, -942, 586,
597, 600, -942, -942, 6702, -942, -942, 603, 4739, 604,
-942, 590, 3883, 3883, 3883, 3883, 2461, 3883, 595, 29,
-942, -942, 5430, -942, 116, -942, 7672, 7672, 6934, -942,
760, 765, 766, 767, 768, 769, -942, -942, 243, 627,
-942, -942, -942, -942, 6142, -942, 620, 630, 5641, -942,
997, -942, -942, 26, -942, 775, -942, 631, 6220, 622,
632, 775, 6220, 623, 5179, 585, 633, 585, 585, 585,
585, 585, 110, -942, -942, 628, 7021, -942, -942, -942,
6175, 248, -942, 619, -942, 645, 647, 3327, 3207, 637,
775, 775, 4897, 775, 775, 775, 775, -942, 70, 271,
-942, 3981, -942, 3883, 3883, 640, 641, 643, -942, -942,
-942, 3883, -942, 3883, -942, 644, -942, 6612, 5125, -942,
-942, -942, -942, -942, -942, 639, -942, -942, 651, -942,
5373, 508, 642, 650, 6357, 1050, 888, -89, 8, 652,
653, 264, -942, -942, 1050, 654, 654, 654, 654, 654,
160, 3883, -942, 888, -942, 655, 655, 655, 655, 655,
217, 3883, -942, 657, -942, 3883, -942, 646, 5198, 7108,
-942, 669, -942, -942, 6382, 6382, 6382, 659, 6382, 660,
2461, 43, 6382, 2461, 27, 27, 27, 27, 662, -56,
27, -942, -942, 4305, 3883, 3883, 3883, 3883, 3883, 3883,
3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883,
3883, 3883, 3883, 3883, 3883, 6175, 3466, 3883, -942, -942,
-942, -942, 679, -39, 682, 683, 684, 686, 7195, 39,
-942, 997, 7642, 4823, 6175, 689, 675, 997, 997, 997,
997, 997, 997, 38, 655, -942, 271, -942, 674, 681,
775, 234, 680, -942, -942, 258, 585, 687, 687, 687,
687, 687, -942, 3883, -942, -942, 6220, 690, 284, -942,
49, 701, 703, -942, 2233, -942, -942, -942, 3327, 691,
706, 5373, -942, -942, 775, 280, 280, 849, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, 694, 692, -942, -942, 280,
280, 280, 242, 3883, -942, 3883, -942, 2632, 715, -942,
599, -33, -27, -942, -942, -942, -12, -3, -942, 6702,
339, 819, 312, -942, -942, 6220, -942, -89, 8, -942,
-942, 6220, 6220, -942, 654, 700, 697, 655, 704, 698,
3624, -942, -942, -942, 6736, 724, 725, -942, 705, 717,
719, 3883, 720, 6175, 711, 723, 714, 5217, 3883, -942,
-942, -942, 5709, 5779, 5954, 5954, 1757, 1757, 818, 926,
926, -942, 5275, 5803, 5821, 5879, 1757, 1757, 137, 137,
27, 27, 27, -942, -942, 13, 2650, 7282, 876, 884,
742, 886, 726, -942, 892, 903, 908, -942, 770, 38,
655, -942, -942, -942, -942, -942, -942, 6382, 997, 4565,
-942, -942, 772, -942, -942, -942, 275, 752, -942, -942,
687, 6220, 748, 758, -942, -942, 6175, 3883, 3883, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, -942, -942, -942, -942, -942,
-942, -942, -942, -942, -942, 761, -942, 3605, 280, -942,
-942, -942, -942, 5373, 4022, 756, 3207, 775, -942, -942,
-942, -942, 264, 339, -942, -942, -942, 6, 771, 774,
-942, -942, 777, 778, 6220, -942, 6220, -942, -942, 6342,
6572, 6801, 6175, 348, -942, -942, 923, -942, 6736, -942,
773, 782, 781, 786, 787, 4166, 788, -942, -942, 27,
3883, -942, -942, -942, 791, 54, -942, 789, 793, 82,
796, 83, -942, -942, -942, 790, 780, 804, 808, 4450,
809, 4565, 4565, 4565, 4565, 4565, 2461, 4565, 5449, -942,
775, 2366, 6220, 801, -942, 2366, 6220, 800, -942, -942,
805, -942, 813, 802, 2003, -942, 3327, 5373, 826, -942,
-942, 825, -942, 827, -942, -942, -942, -942, -942, 828,
829, 4515, -942, 4515, -942, 4515, -942, -942, 4515, 4515,
4515, -942, 7369, -942, 3883, 3883, -942, 3883, -942, 3883,
5373, 852, 1001, 860, 1005, -942, 1006, 865, 867, 1011,
869, 6382, 6382, 6382, 6382, 854, 2461, 78, 6382, 78,
78, 78, 78, 78, 857, 89, 78, 4565, 4565, 4565,
4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565, 4565,
4565, 4565, 4565, 4565, 4565, 4565, 6175, 3744, 3883, -942,
863, -942, 6220, 866, -942, 2366, -942, -942, 1021, -942,
868, -942, -942, -942, 264, 264, 264, -942, -942, -942,
-942, -942, -942, -942, -942, -942, 92, 138, 148, 156,
-942, 887, -942, 870, 890, -942, -942, 161, -942, 872,
877, 883, 885, 6175, 874, 893, 4565, -942, 5762, 5862,
5138, 5138, 4789, 4789, 2670, 940, 940, -942, 1059, 5936,
5974, 5888, 422, 422, 78, 78, 78, -942, -942, 163,
2929, -942, 6220, 878, -942, 2366, -942, -942, 2366, 879,
-942, -942, -942, 2366, 2366, -942, -942, -942, -942, 1038,
882, 902, 1046, 1048, 911, -942, 896, 901, 904, 900,
4680, 905, 78, 4565, -942, -942, 2366, 914, -942, 2366,
-942, -942, 919, -942, 915, 166, -942, 3883, 3883, 3883,
-942, 3883, 5449, -942, 264, -942, 934, 1087, 946, 168,
190, 205, 219, 264, -942, -942, 929, -942, -942, -942,
-942, -942, -942, 962, -942
};
/* 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, 777, 0, 0, 0, 777, 5, 664, 660, 663,
773, 774, 666, 667, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 662, 668, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 670, 669, 0, 0,
0, 0, 0, 661, 0, 0, 0, 0, 0, 0,
0, 0, 0, 777, 0, 3, 599, 665, 303, 314,
313, 397, 398, 400, 401, 402, 382, 0, 0, 413,
379, 412, 407, 404, 403, 406, 383, 0, 0, 384,
405, 415, 399, 777, 777, 4, 305, 306, 307, 0,
368, 777, 302, 394, 395, 396, 1, 0, 0, 21,
777, 777, 777, 777, 777, 22, 777, 777, 777, 0,
42, 777, 0, 0, 0, 0, 0, 0, 777, 0,
0, 0, 0, 777, 777, 0, 777, 777, 777, 0,
777, 777, 6, 17, 7, 19, 0, 15, 16, 18,
75, 44, 777, 777, 0, 777, 777, 777, 777, 777,
0, 777, 0, 777, 0, 777, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 777, 329, 335, 0, 0, 0, 624, 0, 777,
328, 0, 777, 777, 0, 0, 621, 0, 0, 777,
777, 633, 631, 630, 632, 629, 303, 397, 398, 400,
401, 402, 413, 412, 407, 404, 403, 406, 405, 399,
0, 0, 557, 758, 759, 760, 768, 761, 764, 762,
766, 765, 763, 767, 747, 748, 0, 0, 777, 753,
746, 628, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 775, 776, 777, 777,
0, 380, 381, 414, 404, 409, 408, 411, 304, 0,
410, 0, 289, 777, 777, 777, 777, 777, 777, 0,
338, 288, 340, 777, 769, 770, 771, 772, 0, 370,
0, 342, 0, 0, 64, 66, 0, 777, 777, 58,
45, 55, 56, 57, 59, 777, 46, 157, 51, 23,
777, 0, 49, 0, 0, 0, 0, 0, 0, 54,
777, 0, 26, 25, 24, 52, 48, 0, 161, 0,
160, 0, 60, 0, 20, 0, 0, 50, 53, 337,
316, 327, 0, 0, 0, 0, 13, 0, 72, 0,
336, 69, 318, 319, 320, 368, 777, 315, 0, 556,
555, 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, 330, 0, 777, 332, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 659, 751,
754, 0, 777, 0, 749, 217, 642, 643, 644, 645,
646, 647, 648, 651, 652, 658, 0, 639, 640, 641,
649, 650, 637, 638, 634, 635, 636, 657, 656, 0,
0, 339, 341, 0, 0, 0, 777, 290, 0, 279,
777, 777, 777, 777, 777, 295, 278, 0, 291, 0,
292, 294, 293, 202, 777, 0, 0, 0, 777, 777,
0, 203, 206, 777, 0, 201, 777, 376, 0, 373,
372, 367, 371, 0, 758, 759, 760, 0, 0, 762,
346, 308, 348, 0, 777, 0, 777, 316, 0, 0,
47, 43, 777, 0, 0, 0, 0, 0, 0, 0,
777, 385, 0, 777, 337, 316, 0, 336, 78, 0,
391, 0, 83, 87, 0, 0, 777, 317, 0, 777,
0, 0, 416, 224, 0, 74, 71, 0, 323, 370,
0, 606, 605, 623, 613, 608, 610, 611, 612, 0,
619, 0, 618, 673, 607, 674, 0, 676, 0, 677,
0, 680, 681, 682, 683, 684, 685, 686, 687, 688,
689, 615, 0, 0, 0, 331, 0, 614, 617, 0,
620, 0, 626, 627, 616, 609, 600, 558, 752, 0,
777, 777, 777, 100, 218, 0, 655, 654, 311, 310,
312, 296, 777, 280, 285, 281, 282, 284, 283, 777,
0, 0, 0, 777, 0, 243, 0, 0, 777, 205,
0, 0, 777, 777, 777, 777, 777, 777, 777, 257,
256, 0, 267, 0, 0, 0, 0, 0, 0, 777,
0, 554, 553, 377, 366, 309, 0, 0, 777, 777,
0, 61, 65, 739, 735, 738, 741, 742, 209, 0,
0, 0, 737, 743, 0, 745, 744, 0, 0, 0,
736, 0, 0, 0, 0, 0, 0, 0, 0, 210,
245, 213, 246, 690, 740, 208, 777, 777, 777, 387,
0, 0, 0, 0, 0, 0, 389, 777, 0, 0,
178, 179, 180, 166, 0, 167, 0, 163, 168, 164,
777, 177, 162, 0, 80, 0, 393, 0, 777, 0,
0, 0, 777, 0, 0, 777, 0, 777, 777, 777,
777, 777, 0, 248, 247, 0, 777, 89, 416, 219,
0, 0, 73, 0, 777, 0, 0, 777, 0, 0,
0, 0, 0, 0, 0, 0, 0, 70, 777, 777,
181, 0, 321, 0, 0, 0, 0, 0, 333, 334,
625, 0, 622, 0, 750, 0, 107, 0, 0, 101,
109, 104, 108, 103, 105, 0, 102, 106, 0, 196,
653, 286, 0, 0, 0, 777, 0, 777, 777, 0,
0, 777, 204, 207, 777, 262, 258, 259, 261, 260,
0, 777, 237, 0, 268, 273, 269, 270, 272, 271,
0, 777, 240, 297, 374, 0, 343, 0, 0, 777,
351, 777, 350, 68, 0, 0, 0, 700, 0, 0,
0, 697, 0, 0, 708, 707, 706, 705, 0, 0,
704, 67, 212, 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, 63, 62,
390, 777, 0, 0, 777, 0, 0, 0, 777, 0,
41, 777, 777, 0, 171, 169, 0, 777, 777, 777,
777, 777, 777, 777, 175, 79, 777, 392, 0, 0,
0, 0, 0, 325, 324, 0, 777, 253, 249, 250,
252, 251, 95, 777, 326, 14, 777, 0, 0, 8,
0, 0, 0, 225, 417, 418, 227, 228, 777, 0,
231, 233, 230, 226, 0, 188, 184, 0, 124, 125,
126, 127, 128, 129, 132, 133, 134, 149, 137, 138,
139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
153, 152, 136, 135, 121, 123, 122, 130, 131, 119,
120, 116, 117, 118, 115, 0, 0, 114, 182, 185,
187, 186, 0, 0, 192, 777, 194, 0, 0, 76,
322, 0, 0, 675, 678, 679, 0, 0, 777, 0,
777, 0, 0, 416, 287, 777, 244, 777, 777, 238,
241, 777, 777, 298, 263, 266, 0, 274, 277, 0,
378, 345, 344, 347, 0, 0, 353, 352, 0, 0,
0, 777, 0, 0, 0, 0, 0, 0, 0, 734,
211, 214, 717, 718, 719, 720, 721, 722, 723, 726,
727, 733, 0, 714, 715, 716, 724, 725, 712, 713,
709, 710, 711, 732, 731, 0, 0, 777, 0, 0,
0, 0, 0, 199, 0, 0, 0, 386, 0, 777,
176, 156, 154, 159, 155, 165, 172, 0, 777, 0,
173, 215, 0, 81, 777, 85, 0, 0, 777, 97,
254, 777, 0, 0, 220, 416, 0, 777, 777, 222,
223, 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,
479, 480, 481, 482, 502, 483, 484, 485, 486, 487,
488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
498, 499, 500, 501, 503, 504, 505, 506, 507, 508,
509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
529, 777, 546, 547, 548, 539, 551, 535, 536, 534,
541, 542, 530, 531, 532, 533, 540, 538, 545, 543,
549, 544, 537, 550, 419, 0, 229, 232, 189, 183,
151, 150, 191, 195, 777, 0, 218, 0, 603, 602,
604, 601, 777, 777, 197, 113, 110, 0, 0, 0,
239, 242, 0, 0, 777, 264, 777, 275, 375, 766,
0, 765, 0, 0, 354, 356, 755, 777, 0, 699,
0, 0, 0, 0, 0, 696, 0, 702, 703, 691,
0, 730, 729, 388, 0, 0, 33, 200, 0, 0,
0, 0, 40, 174, 170, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 216, 559,
0, 84, 777, 0, 91, 88, 777, 0, 255, 777,
0, 9, 0, 0, 0, 234, 777, 235, 0, 190,
77, 0, 198, 0, 111, 671, 777, 777, 777, 0,
0, 0, 359, 0, 358, 0, 357, 756, 0, 0,
0, 757, 777, 355, 0, 0, 701, 0, 698, 0,
728, 0, 0, 0, 0, 27, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 566, 0, 574,
572, 571, 573, 570, 0, 0, 569, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 82,
0, 93, 777, 0, 777, 90, 221, 12, 10, 552,
0, 777, 416, 112, 777, 777, 777, 777, 777, 365,
364, 363, 362, 361, 360, 349, 0, 0, 0, 0,
36, 777, 34, 0, 0, 37, 39, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 598, 583, 584,
585, 586, 587, 588, 589, 590, 591, 597, 0, 580,
581, 582, 578, 579, 575, 576, 577, 596, 595, 0,
0, 777, 777, 0, 777, 96, 11, 236, 193, 0,
301, 300, 299, 265, 276, 694, 693, 695, 692, 0,
0, 0, 0, 0, 0, 568, 0, 0, 0, 0,
565, 0, 560, 0, 594, 593, 86, 0, 777, 98,
672, 200, 0, 28, 0, 0, 30, 0, 0, 0,
567, 0, 592, 777, 777, 35, 0, 0, 0, 0,
0, 0, 0, 777, 92, 38, 0, 31, 563, 562,
564, 561, 94, 0, 32
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
-942, -942, -318, -942, -10, -942, -942, 798, -131, -942,
1279, -426, 459, -130, -942, -942, -156, -942, -942, -228,
-942, -942, -942, -942, 785, -942, -942, -942, -942, -942,
-489, -942, -942, -113, -942, -942, -942, -942, 220, 415,
-678, -942, -708, -765, -357, -591, -942, -149, -942, 32,
-580, -942, -517, -941, -942, -469, 270, -630, -362, -229,
63, -83, 297, 132, -293, -656, 792, 1092, -163, -124,
-942, -123, -942, -942, -942, -942, -176, -73, -942, -474,
-942, -942, -44, -18, -942, -942, -942, -942, -29, -42,
-942, -942, -734, -942, -107, -942, -595, -125, -60, 294,
309, 2, 458, -942, -942, 716, -893, 1213, -71, -491,
-1
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
-1, 4, 5, 938, 939, 143, 539, 144, 145, 320,
146, 303, 304, 147, 547, 541, 767, 344, 725, 915,
358, 728, 1352, 732, 359, 936, 1452, 1522, 1121, 1356,
602, 998, 1103, 148, 341, 716, 717, 718, 719, 720,
768, 1274, 769, 798, 1092, 480, 481, 688, 689, 1110,
424, 752, 545, 949, 950, 482, 691, 742, 815, 825,
289, 290, 93, 94, 360, 187, 361, 95, 300, 96,
658, 97, 659, 841, 1045, 1046, 1304, 98, 99, 491,
487, 488, 100, 101, 149, 707, 891, 150, 102, 103,
104, 105, 753, 754, 944, 1264, 650, 368, 369, 1552,
222, 66, 692, 693, 237, 238, 1305, 1306, 639, 67,
151
};
/* 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, 188, 221, 1006, 317, 338, 340, 1265, 625, 724,
785, 292, 520, 508, 937, 694, 190, 916, 847, 655,
784, 1373, 362, 363, 802, 271, 405, 189, 371, 299,
373, 374, 375, 376, 377, 629, 379, 690, 381, 730,
383, 275, 276, 277, 862, 266, 1033, 267, 280, 621,
527, 729, -769, 921, 730, 106, 399, 834, 822, -770,
835, 251, 240, 294, 295, 296, 423, 407, 408, 832,
417, 656, -771, 364, 414, 415, -772, 873, 568, 662,
416, 821, 955, 956, 421, 999, 1000, 1001, 1002, 418,
619, 803, 291, 291, 272, 417, 417, 569, 160, 458,
301, 459, 365, 460, 787, 925, 422, 927, 928, 929,
930, 931, 1436, 1089, 606, 1059, -99, 367, -99, 417,
-99, 638, 266, -769, 267, 417, -769, 152, 366, 154,
-770, 1020, 1090, -770, 532, 221, 293, 918, 1278, 811,
417, 922, 423, -771, 1279, 153, -771, -772, 461, 417,
-772, 370, 370, 155, 370, 370, 370, 370, 370, 1280,
370, 813, 370, 423, 370, 417, 319, 530, 1281, 531,
297, 251, 630, 275, 276, 277, 280, 1374, 831, 156,
370, 863, 362, 363, 1321, 451, 452, 694, 301, 1008,
731, 370, 370, 1109, 698, 263, 264, 265, 370, 370,
1127, 468, 470, 550, 449, 731, 1402, 298, 821, 269,
1098, 885, 886, 887, 157, 362, 363, 899, 1128, 362,
363, 746, 619, 809, 1003, 1403, 1036, 1029, 1030, 502,
158, 462, 275, 364, 1406, 1409, 1039, 425, 159, 1004,
1005, 417, 1116, 161, 417, 463, 1446, 1447, 1448, 10,
464, 11, 1009, 1407, 1410, 649, 492, 1, 2, 3,
1497, 807, 365, 1535, 619, 810, 364, 291, 291, 163,
364, 816, 817, 818, 819, 820, 1268, 367, 584, 932,
933, 786, 466, 291, 291, 466, 466, 485, 366, 1288,
417, 162, 489, 164, 549, 365, 1120, 1010, 787, 365,
417, 260, 261, 262, 165, 263, 264, 265, 417, 1536,
367, 65, 788, 1543, 367, 417, 941, 942, 1577, 1537,
417, 366, 223, 224, 225, 366, 789, 1538, 790, 6,
821, 1035, 1544, 166, 1554, 1026, 1112, 1578, 1122, 1588,
839, 167, 417, 168, 791, 1123, 465, 467, 469, 471,
472, 542, 281, 543, 282, 544, 283, 417, 913, 191,
196, 1589, 1021, 1283, 837, 301, 201, 202, 203, 204,
205, 417, 694, 241, 268, 792, 1590, 169, 793, 170,
226, 794, 748, 171, 749, 750, 751, 831, 1038, 898,
1591, 1360, 227, 228, 690, 808, -99, 795, -99, 1113,
-99, 284, 370, 1004, 1005, 1117, 1382, 1384, 1386, 796,
1275, 1004, 1005, 1272, 197, 826, 827, 828, 829, 830,
484, 603, 542, 797, 543, 1460, 1007, 1119, 933, 229,
230, 172, 231, 332, 1289, 1125, 1126, 232, 173, 233,
1292, 1293, 174, 1027, 1004, 1005, 1353, 1290, 1291, 1004,
1005, 492, 1034, 333, 175, 466, 1436, 176, 177, 466,
466, 466, 466, 466, 178, 743, 1388, 1389, 1390, 179,
180, 181, 192, 466, 193, 198, 770, 466, 466, 502,
199, 334, 640, 1286, 285, 652, 200, 270, 1469, 279,
1470, 914, 1471, 306, 721, 1472, 1473, 1474, 286, 323,
324, 325, 326, 287, 327, 695, 328, 413, 288, 337,
400, 6, 402, 403, 409, 456, 486, 1371, 493, 611,
-278, 504, 722, 614, 615, 616, 617, 618, 505, 1282,
1357, 506, 521, 362, 363, 744, 533, 620, 6, 1099,
523, 626, 627, 534, 538, 546, 816, 817, 818, 819,
820, 426, 427, 428, 429, 430, 431, 432, 433, 434,
435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
445, 446, 551, 1087, 450, 417, 552, 1028, 553, 454,
554, 555, 556, 557, 364, 483, 1443, 1444, 1445, 558,
1446, 1447, 1448, 559, 1037, 294, 295, 296, 736, 425,
485, 799, 737, 561, 560, 562, 563, 564, 624, 484,
565, 466, 566, 365, 567, 509, 570, 571, 652, 572,
573, 574, 640, 575, 576, 1351, 859, 603, 367, 1355,
188, 640, 640, 640, 640, 640, 640, 425, 484, 366,
577, 578, 916, 586, 579, 190, 522, 738, 425, 580,
536, 581, 587, 591, 770, 588, 189, 6, 842, 590,
770, 592, 594, 598, 743, 595, 743, 743, 743, 743,
743, 601, 1100, 612, 608, 801, 610, -280, 619, 826,
827, 828, 829, 830, 628, 721, 654, 657, 660, 770,
770, 696, 770, 770, 770, 770, 699, 723, 700, 1530,
1531, 1532, 297, 1379, 701, 1380, 6, 702, 703, 582,
704, 705, 747, 1011, 1012, 726, 773, 771, 774, 640,
804, 1016, 779, 1017, 780, 596, 597, 485, 1529, 492,
739, 485, 604, 484, 744, 781, 744, 744, 744, 744,
744, 782, 783, 188, 740, 814, 1034, 823, 833, 741,
-369, 836, 840, 945, 806, 844, 952, 845, 190, 853,
846, 1450, 484, 848, 852, 1453, 861, 799, 425, 189,
892, 1101, 1102, 623, 483, 893, 894, 895, 896, 897,
900, 902, 903, 694, 917, 294, 295, 296, 759, 1104,
859, 943, 760, 919, 923, 651, 920, 926, 946, 934,
947, 954, 1023, 483, 640, 690, 425, 425, 1022, 1584,
799, 1013, 1014, 640, 1015, 1018, 1024, 1041, 1592, 1025,
652, 1031, 1032, 1044, 821, 831, 1085, -287, 1051, 1053,
652, 1088, 735, 1058, 1091, 1094, 1095, 761, 1096, 1108,
1047, 249, 250, 734, 1107, 1114, 223, 224, 225, 770,
1115, 1118, 251, 758, 1129, 743, 1130, 933, 1267, 1269,
484, 1523, 1124, 1266, 484, 1270, 1271, 1277, 1285, 1294,
1455, 1295, 1297, 1296, 721, 1307, 1309, 1308, 1310, 1037,
1311, 1313, 1315, 770, 1316, 1317, 1324, 1464, 1465, 1466,
6, 762, 297, 1093, 1325, 1326, 1327, 1328, 483, 596,
640, 641, 1329, 642, 226, 643, 640, 640, 640, 640,
640, 640, 1111, 1330, 800, 425, 227, 228, 1331, 805,
763, 1354, 1358, 1332, 1350, 744, 1312, 483, 651, 1359,
1369, 1557, 652, 1365, 764, 485, 484, 1284, 1391, 765,
1412, 1404, 1394, 1375, 766, 1376, 1405, 952, 1377, 1378,
644, 1395, 1396, 229, 230, 1397, 231, 1399, 1398, 1411,
251, 232, 1401, 233, 1413, 1525, 838, 1408, 1414, 1418,
1451, 1454, 1528, 1458, 1436, 188, 1462, 1456, 1533, 1534,
258, 259, 260, 261, 262, 1457, 263, 264, 265, 1392,
190, 854, 855, 856, 857, 484, 860, 1461, 1463, 1467,
1468, 189, 1362, 1363, 652, 1480, -279, 294, 295, 296,
906, 1481, 642, 1482, 907, 1483, 1484, 603, 1485, 291,
1486, 1487, 1488, 1493, 485, 483, 425, 425, 1496, 483,
485, 485, 1556, 645, 1521, 1559, 1526, 1524, 1546, 1539,
1527, 1541, 1542, 1545, 1547, 1550, 1548, 646, 1561, 1558,
370, 1560, 647, 1562, 1551, 1563, 1564, 648, 1565, 908,
294, 295, 296, 631, 1566, 1567, 951, 632, 484, 1574,
1568, 1570, 1575, 1569, 1571, 1427, 1428, 1429, 1430, 1431,
1432, 1433, 1434, 1435, 1583, 1573, 1576, 1585, 258, 259,
260, 261, 262, 1436, 263, 264, 265, 1586, 1111, 1587,
1593, 483, 1441, 1442, 1443, 1444, 1445, 640, 1446, 1447,
1448, 1349, 633, 603, 297, 1594, 1361, 603, 511, 843,
485, 1370, 1449, 1105, 1540, 1368, 370, 370, 526, 901,
651, 1333, 1393, 1061, 1364, 528, 851, 600, 0, 0,
651, 0, 909, 0, 1040, 0, 0, 0, 0, 0,
0, 0, 0, 0, 220, 0, 910, 484, 0, 0,
483, 911, 1057, 484, 484, 0, 912, 297, 0, 0,
0, 0, 0, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
1079, 1080, 1081, 1082, 0, 634, 1086, 0, 0, 0,
1372, 0, 0, 0, 0, 0, 770, 0, 0, 635,
0, 0, 0, 1553, 636, 1437, 1438, 1439, 1440, 637,
0, 1441, 1442, 1443, 1444, 1445, 0, 1446, 1447, 1448,
0, 0, 0, 483, 0, 0, 0, 0, 0, 0,
945, 0, 651, 0, 0, 0, 372, 0, 0, 0,
0, 0, 378, 484, 380, 0, 382, 951, 384, 385,
386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
396, 397, 398, 695, 0, 0, 239, 0, 0, 770,
0, 799, 291, 406, 0, 0, 1425, 410, 0, 411,
412, 0, 0, 485, 0, 485, 0, 0, 0, 0,
278, 0, 0, 0, 0, 0, 6, 0, 0, 0,
0, 0, 1273, 0, 651, 0, 1276, 0, 0, 0,
305, 0, 483, 0, 0, 0, 0, 0, 483, 483,
0, 0, 0, 0, 1476, 1477, 0, 1478, 0, 1479,
0, 1349, 331, 1349, 1349, 1349, 1349, 1349, 0, 1349,
0, 485, 346, 0, 0, 485, 1425, 0, 603, 0,
0, 0, 0, 0, 0, 952, 0, 1319, 0, 0,
0, 455, 0, 0, 0, 603, 603, 603, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1519, 0, 309,
310, 311, 312, 313, 0, 314, 316, 318, 401, 0,
322, 404, 0, 1348, 0, 0, 484, 329, 0, 0,
0, 0, 335, 336, 0, 339, 342, 343, 483, 347,
348, 0, 0, 0, 0, 0, 484, 0, 484, 1349,
1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349,
1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 419, 420,
0, 485, 0, 603, 0, 0, 0, 0, 0, 0,
603, 0, 0, 799, 799, 799, 603, 603, 0, 0,
0, 0, 0, 494, 495, 496, 447, 0, 0, 0,
1093, 0, 0, 0, 484, 0, 0, 0, 484, 0,
0, 0, 0, 0, 583, 457, 0, 0, 1349, 0,
0, 0, 0, 0, 0, 0, 0, 1579, 1580, 1581,
0, 1582, 0, 501, 0, 503, 0, 0, 0, 0,
603, 485, 0, 603, 0, 0, 0, 0, 0, 0,
0, 226, 0, 0, 513, 0, 514, 515, 516, 517,
518, 519, 0, 227, 228, 0, 0, 0, 0, 0,
349, 350, 1349, 0, 0, 1349, 0, 603, 529, 0,
0, 0, 0, 0, 0, 0, 0, 537, 0, 0,
540, 483, 603, 799, 0, 0, 1367, 0, 548, 0,
499, 230, 799, 231, 484, 0, 316, 322, 232, 0,
233, 483, 351, 483, 510, 71, 0, 72, 73, 74,
75, 76, 0, 0, 0, 0, 0, 352, 0, 0,
79, 0, 0, 0, 80, 0, 0, 298, 585, 0,
0, 81, 589, 727, 1319, 0, 0, 0, 82, 1400,
745, 0, 0, 1417, 239, 1419, 1420, 1421, 1422, 1423,
0, 1426, 0, 0, 83, 494, 495, 496, 0, 483,
0, 0, 0, 483, 484, 0, 353, 0, 775, 0,
776, 0, 777, 0, 84, 85, 0, 0, 0, 0,
86, 0, 613, 0, 0, 951, 0, 0, 354, 355,
89, 90, 0, 497, 91, 498, 92, 0, 305, 0,
0, 356, 0, 0, 0, 0, 0, 0, 0, 0,
653, 0, 0, 226, 0, 0, 0, 357, 0, 0,
305, 0, 0, 0, 0, 227, 228, 0, 305, 0,
0, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506,
1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
7, 8, 9, 10, 0, 11, 12, 13, 507, 483,
0, 0, 499, 230, 0, 231, 0, 1520, 0, 0,
232, 0, 233, 772, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 858, 248,
249, 250, 0, 661, 0, 0, 500, 0, 15, 351,
0, 251, 207, 0, 208, 209, 210, 211, 76, 0,
0, 0, 0, 21, 352, 0, 0, 212, 23, 0,
0, 80, 419, 0, 0, 0, 24, 25, 213, 483,
0, 0, 27, 0, 0, 214, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 215, 0, 0, 223, 224, 225, 1572, 0, 0,
45, 0, 46, 0, 47, 824, 0, 0, 0, 48,
0, 216, 217, 51, 0, 0, 52, 86, 0, 0,
0, 53, 0, 305, 54, 354, 355, 89, 218, 0,
0, 91, 0, 219, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 57, 0, 0, 58,
59, 60, 226, 0, 61, 0, 62, 63, 0, 0,
64, 0, 0, 0, 227, 228, 0, 0, 0, 258,
259, 260, 261, 262, 0, 263, 264, 265, 0, 0,
0, 905, 0, 0, 0, 0, 1048, 1049, 1050, 0,
1052, 0, 1054, 0, 1055, 1056, 0, 0, 0, 0,
0, 229, 230, 0, 231, 0, 0, 0, 0, 232,
0, 233, 0, 940, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 888, 889, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 234,
0, 0, 0, 235, 0, 0, 0, 0, 236, 0,
0, 305, 0, 0, 0, 0, 1131, 1132, 1133, 1134,
1135, 1136, 1137, 1138, 1139, 1140, 1141, 0, 1142, 1143,
1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
0, 0, 0, 0, 0, 0, 0, 1154, 1155, 1156,
1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
1167, 1168, 1169, 1170, 1171, 1172, 0, 0, 1173, 1174,
1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
1185, 1186, 1187, 1188, 1189, 1190, 0, 1191, 0, 1192,
1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 0, 1201,
1202, 1203, 0, 0, 0, 0, 0, 0, 1083, 0,
0, 0, 0, 0, 0, 0, 0, 1204, 0, 0,
0, 0, 0, 0, 1205, 1206, 1207, 1106, 1208, 1209,
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219,
1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
1240, 0, 0, 0, 1241, 1242, 1243, 1244, 1245, 1246,
1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
1257, 1258, 1259, 1260, 1261, 1459, 1262, 1263, 0, 0,
0, 339, 242, 243, 244, 245, 246, 247, 248, 249,
250, 0, 0, 0, 0, 0, 0, 0, 0, 1334,
251, 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, 0, 0, 0, 0, 1287, 1131, 1132, 1133, 1134,
1135, 1136, 1137, 1138, 1139, 1140, 1141, 0, 1142, 1143,
1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
0, 0, 0, 0, 0, 0, 1314, 1154, 1155, 1156,
1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
1167, 1168, 1169, 1170, 1171, 1172, 0, 0, 1173, 1174,
1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
1185, 1186, 1187, 1188, 1189, 1190, 0, 1191, 0, 1192,
1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 0, 1201,
1202, 1203, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 0, 263, 264, 265, 1204, 0, 940,
607, 0, 0, 0, 1205, 1206, 1207, 0, 1208, 1209,
1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219,
1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
1240, 0, 0, 786, 1241, 1242, 1243, 1244, 1245, 1246,
1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
1257, 1258, 1259, 1260, 1261, 0, 1262, 1263, 0, 0,
0, 0, 0, 0, 788, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 789, 0,
790, 0, 0, 0, 0, 0, 0, 0, 1424, 0,
0, 0, 0, 0, 0, 0, 791, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 8, 9, 10, 0, 11,
12, 13, 206, 69, 0, 0, 0, 792, 0, 0,
793, 0, 0, 794, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 795,
0, 0, 0, 1489, 1490, 1491, 1492, 0, 1494, 0,
1495, 796, 15, 70, 0, 1387, 207, 0, 208, 209,
210, 211, 76, 77, 0, 797, 0, 21, 78, 0,
0, 212, 23, 0, 0, 80, 0, 0, 0, 0,
24, 25, 213, 0, 0, 0, 27, 0, 0, 214,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 215, 0, 0, 0, 0,
0, 0, 0, 0, 45, 0, 46, 0, 47, 0,
0, 0, 0, 48, 0, 216, 217, 51, 0, 0,
52, 86, 0, 0, 0, 53, 0, 0, 54, 87,
88, 89, 218, 0, 0, 91, 0, 219, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57, 0, 0, 58, 59, 60, 0, 0, 61, 0,
62, 63, 0, 0, 64, 7, 8, 9, 10, 0,
11, 12, 13, 14, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1517,
0, 0, 0, 0, 0, 0, 242, 243, 244, 245,
246, 247, 248, 249, 250, 0, 0, 0, 0, 0,
0, 0, 0, 15, 251, 0, 0, 16, 0, 17,
18, 19, 20, 1434, 1435, 0, 0, 0, 21, 0,
755, 756, 22, 23, 1436, 0, 1549, 0, 0, 0,
0, 24, 25, 26, 0, 0, 0, 27, 0, 0,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 0, 0, 0,
0, 0, 0, 0, 0, 45, 0, 46, 0, 47,
0, 0, 0, 0, 48, 0, 49, 50, 51, 0,
0, 52, 0, 0, 0, 0, 53, 0, 0, 54,
0, 0, 0, 55, 7, 8, 9, 10, 56, 11,
12, 13, 14, 757, 0, 0, 194, 0, 0, 0,
0, 57, 0, 0, 58, 59, 60, 0, 0, 61,
0, 62, 63, 0, 0, 64, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 0, 263, 264,
265, 0, 15, 0, 1322, 0, 16, 0, 17, 18,
19, 20, 1441, 1442, 1443, 1444, 1445, 21, 1446, 1447,
1448, 22, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 0, 0, 0, 27, 0, 0, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 0, 0, 0, 0,
0, 0, 0, 0, 45, 0, 46, 0, 47, 0,
0, 0, 0, 48, 0, 49, 50, 51, 0, 0,
52, 0, 0, 0, 0, 53, 0, 0, 54, 0,
0, 0, 55, 7, 8, 9, 10, 56, 11, 12,
13, 14, 0, 0, 0, 0, 0, 0, 0, 0,
57, 0, 0, 58, 59, 60, 0, 0, 61, 0,
195, 63, 0, 0, 64, 242, 243, 244, 245, 246,
247, 248, 249, 250, 0, 0, 0, 0, 0, 0,
0, 15, 0, 251, 0, 16, 0, 17, 18, 19,
20, 0, 0, 0, 0, 0, 21, 0, 0, 0,
22, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 0, 0, 0, 27, 0, 0, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 0, 0, 0, 0, 0,
0, 0, 0, 45, 0, 46, 0, 47, 0, 0,
0, 0, 48, 0, 49, 50, 51, 0, 0, 52,
0, 0, 0, 0, 53, 0, 0, 54, 0, 0,
0, 55, 7, 8, 9, 10, 56, 11, 12, 13,
14, 0, 0, 0, 0, 0, 0, 0, 0, 57,
0, 0, 58, 59, 60, 0, 0, 61, 0, 62,
63, 448, 0, 64, 0, 252, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 0, 263, 264, 265,
15, 453, 0, 1555, 16, 0, 17, 18, 19, 20,
0, 0, 0, 0, 0, 21, 0, 0, 0, 22,
23, 0, 0, 0, 0, 0, 0, 0, 24, 25,
26, 0, 0, 0, 27, 0, 0, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 0, 0, 0, 0, 0, 0,
0, 0, 45, 0, 46, 0, 47, 0, 0, 0,
0, 48, 0, 49, 50, 51, 0, 0, 52, 0,
0, 0, 0, 53, 0, 0, 54, 0, 0, 0,
55, 7, 8, 9, 10, 56, 11, 12, 13, 14,
0, 0, 0, 0, 0, 0, 0, 0, 57, 0,
0, 58, 59, 60, 0, 0, 61, 0, 62, 63,
0, 0, 64, 242, 243, 244, 245, 246, 247, 248,
249, 250, 0, 0, 0, 0, 0, 0, 0, 15,
733, 251, 0, 16, 0, 17, 18, 19, 20, 0,
0, 0, 0, 0, 21, 0, 0, 0, 22, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
0, 0, 0, 27, 0, 0, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 0, 0, 0, 0, 0, 0, 0,
0, 45, 0, 46, 0, 47, 0, 0, 0, 0,
48, 0, 49, 50, 51, 0, 0, 52, 0, 0,
0, 0, 53, 0, 0, 54, 0, 0, 0, 55,
7, 8, 9, 10, 56, 11, 12, 13, 14, 0,
0, 0, 0, 0, 0, 0, 0, 57, 0, 0,
58, 59, 60, 0, 0, 61, 0, 62, 63, 0,
953, 64, 0, 252, 253, 254, 255, 256, 257, 258,
259, 260, 261, 262, 0, 263, 264, 265, 15, 0,
0, 0, 16, 0, 17, 18, 19, 20, 0, 0,
0, 0, 0, 21, 0, 0, 0, 22, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 0,
0, 0, 27, 0, 0, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 0, 0, 0, 0, 0, 0, 0, 0,
45, 0, 46, 0, 47, 0, 0, 0, 0, 48,
0, 49, 50, 51, 0, 0, 52, 0, 0, 0,
0, 53, 0, 0, 54, 0, 0, 0, 55, 7,
8, 9, 10, 56, 11, 12, 13, 14, 948, 0,
0, 0, 0, 0, 0, 0, 57, 0, 0, 58,
59, 60, 0, 0, 61, 0, 62, 63, 0, 0,
64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 15, 0, 0,
0, 16, 0, 17, 18, 19, 20, 0, 0, 0,
0, 0, 21, 0, 0, 0, 22, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 0, 0,
0, 27, 0, 0, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 0, 0, 0, 0, 0, 0, 0, 0, 45,
0, 46, 0, 47, 0, 0, 0, 0, 48, 0,
49, 50, 51, 0, 0, 52, 0, 0, 0, 0,
53, 0, 0, 54, 0, 0, 0, 55, 7, 8,
9, 10, 56, 11, 12, 13, 14, 0, 0, 0,
0, 0, 0, 0, 0, 57, 0, 0, 58, 59,
60, 0, 0, 61, 0, 62, 63, 1084, 0, 64,
242, 243, 244, 245, 246, 247, 248, 249, 250, 0,
0, 0, 0, 0, 0, 0, 15, 0, 251, 0,
16, 0, 17, 18, 19, 20, 0, 0, 0, 0,
0, 21, 0, 0, 0, 22, 23, 0, 0, 0,
0, 0, 0, 0, 24, 25, 26, 0, 0, 0,
27, 0, 0, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
0, 0, 0, 0, 0, 0, 0, 0, 45, 0,
46, 0, 47, 0, 0, 0, 0, 48, 0, 49,
50, 51, 0, 0, 52, 0, 0, 0, 0, 53,
0, 0, 54, 0, 0, 0, 55, 7, 8, 9,
10, 56, 11, 12, 13, 14, 1366, 0, 0, 0,
0, 0, 0, 0, 57, 0, 0, 58, 59, 60,
0, 0, 61, 0, 62, 63, 1298, 0, 64, 0,
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 0, 263, 264, 265, 15, 0, 0, 0, 16,
0, 17, 18, 19, 20, 0, 0, 0, 0, 0,
21, 0, 0, 0, 22, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 0, 0, 0, 27,
0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 0,
0, 0, 0, 0, 0, 0, 0, 45, 0, 46,
0, 47, 0, 0, 0, 0, 48, 0, 49, 50,
51, 0, 0, 52, 0, 0, 0, 0, 53, 0,
0, 54, 0, 0, 0, 55, 7, 8, 9, 10,
56, 11, 12, 13, 14, 0, 0, 0, 0, 0,
0, 0, 0, 57, 0, 0, 58, 59, 60, 0,
0, 61, 0, 62, 63, 1518, 0, 64, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 15, 0, 0, 0, 16, 0,
17, 18, 19, 20, 0, 0, 0, 0, 0, 21,
0, 0, 0, 22, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 0, 0, 0, 27, 0,
0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 0, 0,
0, 0, 490, 0, 0, 0, 45, 0, 46, 0,
47, 0, 0, 0, 0, 48, 0, 49, 50, 51,
0, 0, 52, 0, 0, 0, 0, 53, 0, 0,
54, 0, 0, 0, 55, 663, 664, 665, 10, 56,
11, 666, 667, 68, 69, 0, 71, 668, 72, 73,
74, 75, 57, 0, 0, 58, 59, 60, 0, 0,
61, 0, 62, 63, 0, 0, 64, 242, 243, 244,
245, 246, 247, 248, 249, 250, 0, 0, 0, 82,
475, 0, 0, 669, 70, 251, 0, 71, 0, 72,
73, 74, 75, 76, 476, 274, 0, 0, 670, 78,
0, 0, 79, 671, 0, 0, 80, 0, 0, 0,
0, 672, 673, 81, 0, 84, 85, 0, 0, 0,
82, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 90, 0, 0, 0, 83, 92, 0, 0,
0, 0, 0, 0, 0, 674, 0, 675, 0, 676,
0, 0, 0, 477, 677, 0, 84, 85, 678, 0,
0, 679, 86, 0, 0, 0, 680, 0, 0, 681,
87, 88, 89, 90, 0, 0, 91, 0, 92, 7,
8, 9, 10, 0, 11, 12, 13, 14, 0, 0,
0, 682, 0, 0, 683, 684, 0, 0, 0, 685,
0, 686, 0, 708, 0, 687, 0, 252, 253, 254,
255, 256, 257, 258, 259, 260, 261, 262, 0, 263,
264, 265, 709, 0, 223, 224, 225, 15, 0, 0,
0, 16, 0, 17, 18, 19, 20, 0, 0, 0,
0, 0, 21, 0, 0, 0, 22, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 0, 0,
0, 27, 0, 0, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 0, 226, 0, 0, 0, 0, 0, 0, 45,
0, 46, 0, 47, 227, 228, 0, 0, 48, 0,
49, 50, 51, 0, 0, 52, 0, 0, 0, 0,
53, 0, 0, 54, 0, 0, 0, 55, 663, 664,
665, 10, 56, 11, 666, 667, 68, 69, 0, 0,
1060, 229, 230, 0, 231, 0, 0, 0, 0, 232,
0, 233, 0, 61, 0, 62, 63, 0, 0, 64,
242, 243, 244, 245, 246, 247, 248, 249, 250, 0,
0, 0, 0, 475, 0, 330, 669, 70, 251, 0,
71, 0, 72, 73, 74, 75, 76, 476, 0, 0,
0, 670, 78, 0, 0, 79, 671, 0, 0, 80,
0, 0, 0, 0, 672, 673, 81, 0, 0, 0,
0, 0, 0, 82, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 223, 224, 225, 0, 83,
0, 0, 0, 0, 0, 0, 0, 0, 674, 0,
675, 0, 676, 0, 0, 0, 477, 677, 0, 84,
85, 678, 0, 0, 679, 86, 0, 0, 0, 680,
0, 0, 681, 87, 88, 89, 90, 0, 0, 91,
0, 92, 0, 7, 8, 9, 10, 0, 11, 12,
13, 0, 0, 226, 682, 1415, 0, 683, 684, 0,
0, 0, 685, 0, 686, 227, 228, 0, 687, 0,
252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
262, 0, 263, 264, 265, 593, 0, 0, 0, 0,
0, 1335, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 229, 230, 0, 231, 1336, 0, 0, 0,
232, 1337, 233, 0, 0, 223, 224, 225, 0, 24,
25, 223, 224, 225, 0, 27, 0, 0, 0, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 599, 0, 0, 0, 0, 236,
0, 0, 0, 0, 0, 46, 0, 47, 7, 8,
9, 10, 1338, 11, 12, 13, 1339, 0, 0, 1340,
0, 0, 0, 226, 53, 0, 0, 0, 0, 226,
0, 0, 0, 0, 0, 227, 228, 0, 0, 0,
0, 227, 228, 0, 0, 0, 0, 0, 0, 1341,
0, 0, 1342, 1343, 1344, 0, 1335, 1345, 0, 1416,
63, 0, 0, 1347, 0, 0, 0, 0, 0, 0,
0, 1336, 229, 230, 0, 231, 1337, 0, 229, 230,
232, 231, 233, 0, 24, 25, 232, 0, 233, 0,
27, 0, 0, 1302, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 0,
0, 71, 512, 72, 73, 74, 75, 0, 0, 0,
46, 0, 47, 7, 8, 9, 10, 1338, 11, 12,
13, 1339, 0, 0, 1340, 0, 0, 0, 0, 53,
0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274, 0, 0, 0, 1341, 0, 0, 1342, 1343, 1344,
0, 1335, 1345, 0, 1346, 63, 0, 0, 1347, 0,
84, 85, 663, 664, 665, 10, 1336, 11, 666, 667,
0, 1337, 0, 0, 849, 0, 0, 90, 0, 24,
25, 0, 92, 0, 0, 27, 0, 0, 0, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 0, 192, 0, 0, 0, 0,
669, 0, 0, 0, 0, 46, 0, 47, 0, 0,
0, 0, 1338, 0, 0, 670, 1339, 0, 0, 1340,
671, 1433, 1434, 1435, 53, 0, 0, 0, 672, 673,
0, 0, 0, 1436, 0, 0, 0, 0, 0, 0,
0, 0, 0, 710, 711, 712, 0, 242, 243, 244,
245, 246, 247, 248, 249, 250, 0, 1345, 0, 1346,
63, 0, 674, 1347, 675, 251, 676, 0, 0, 0,
0, 677, 0, 0, 0, 678, 0, 0, 679, 0,
0, 0, 0, 680, 0, 0, 681, 0, 71, 0,
72, 73, 74, 75, 713, 714, 0, 0, 0, 0,
0, 0, 0, 79, 0, 0, 0, 0, 682, 0,
0, 683, 684, 957, 81, 0, 685, 0, 850, 0,
0, 82, 687, 958, 959, 960, 961, 962, 963, 964,
965, 966, 0, 0, 0, 0, 0, 83, 0, 0,
0, 967, 0, 968, 969, 970, 971, 972, 973, 974,
975, 976, 977, 978, 979, 0, 0, 84, 85, 0,
0, 1441, 1442, 1443, 1444, 1445, 0, 1446, 1447, 1448,
0, 715, 0, 0, 90, 0, 980, 91, 0, 92,
0, 0, 0, 0, 0, 349, 350, 252, 253, 254,
255, 256, 257, 258, 259, 260, 261, 262, 0, 263,
264, 265, 609, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
981, 0, 0, 0, 0, 0, 0, 351, 0, 0,
71, 0, 72, 73, 74, 75, 76, 0, 0, 0,
0, 0, 352, 0, 0, 79, 0, 524, 525, 80,
0, 0, 0, 0, 0, 0, 81, 0, 0, 982,
0, 0, 983, 82, 984, 985, 986, 987, 988, 989,
990, 991, 992, 993, 994, 0, 995, 996, 0, 83,
997, 0, 0, 0, 0, 0, 0, 0, 0, 351,
0, 353, 71, 0, 72, 73, 74, 75, 76, 84,
85, 0, 0, 0, 352, 86, 0, 79, 0, 0,
0, 80, 0, 354, 355, 89, 90, 0, 81, 91,
0, 92, 0, 0, 0, 82, 242, 243, 244, 245,
246, 247, 248, 249, 250, 0, 0, 0, 0, 0,
0, 83, 357, 0, 251, 223, 224, 225, 0, 0,
0, 0, 0, 353, 0, 0, 0, 0, 0, 0,
0, 84, 85, 0, 0, 0, 0, 86, 1431, 1432,
1433, 1434, 1435, 0, 0, 354, 355, 89, 90, 0,
0, 91, 1436, 92, 242, 243, 244, 245, 246, 247,
248, 249, 250, 0, 0, 0, 0, 0, 0, 0,
0, 0, 251, 226, 357, 242, 243, 244, 245, 246,
247, 248, 249, 250, 0, 227, 228, 0, 0, 0,
0, 0, 0, 251, 242, 243, 244, 245, 246, 247,
248, 249, 250, 0, 0, 0, 0, 0, 0, 0,
0, 0, 251, 242, 243, 244, 245, 246, 247, 248,
249, 250, 229, 230, 0, 231, 0, 0, 0, 0,
232, 251, 233, 0, 0, 0, 252, 253, 254, 255,
256, 257, 258, 259, 260, 261, 262, 302, 263, 264,
265, 697, 242, 243, 244, 245, 246, 247, 248, 249,
250, 0, 0, 0, 0, 0, 0, 0, 0, 0,
251, 242, 243, 244, 245, 246, 247, 248, 249, 250,
1441, 1442, 1443, 1444, 1445, 0, 1446, 1447, 1448, 251,
0, 0, 0, 0, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 0, 263, 264, 265, 778,
0, 0, 0, 0, 0, 252, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 0, 263, 264, 265,
924, 0, 0, 0, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 0, 263, 264, 265, 1042,
0, 0, 0, 252, 253, 254, 255, 256, 257, 258,
259, 260, 261, 262, 0, 263, 264, 265, 1318, 242,
243, 244, 245, 246, 247, 248, 249, 250, 0, 0,
0, 0, 0, 0, 0, 0, 0, 251, 0, 0,
605, 0, 252, 253, 254, 255, 256, 257, 258, 259,
260, 261, 262, 0, 263, 264, 265, 0, 0, 1320,
0, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 315, 263, 264, 265, 864, 865, 866, 867,
868, 869, 870, 871, 872, 0, 0, 0, 71, 0,
72, 73, 74, 75, 873, 1427, 1428, 1429, 1430, 1431,
1432, 1433, 1434, 1435, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1436, 107, 0, 108, 0, 0, 0,
110, 82, 0, 0, 0, 0, 0, 0, 111, 112,
113, 114, 0, 0, 0, 0, 0, 274, 0, 0,
0, 116, 117, 118, 0, 0, 0, 0, 0, 0,
0, 0, 0, 308, 0, 0, 0, 84, 85, 252,
253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
0, 263, 264, 265, 90, 0, 0, 128, 0, 92,
0, 0, 0, 0, 0, 0, 0, 133, 223, 224,
225, 0, 0, 134, 0, 0, 0, 136, 137, 0,
0, 0, -2, 0, 0, 0, 0, 0, 0, 140,
0, 141, 0, 0, 0, 0, 874, 875, 876, 877,
878, 879, 880, 881, 882, 883, 884, 0, 885, 886,
887, 0, 0, 0, 0, 1437, 1438, 1439, 1440, 0,
0, 1441, 1442, 1443, 1444, 1445, 226, 1446, 1447, 1448,
107, 0, 108, 0, 0, 109, 110, 0, 227, 228,
0, 0, 0, 0, 111, 112, 113, 114, 0, 0,
0, 0, 0, 0, 0, 115, 0, 116, 117, 118,
119, 223, 224, 225, 120, 0, 904, 0, 0, 121,
345, 0, 0, 0, 0, 229, 230, 0, 231, 0,
0, 0, 0, 232, 0, 233, 0, 122, 123, 124,
125, 126, 127, 128, 129, 0, 0, 0, 0, 0,
130, 131, 132, 133, 0, 0, 0, 0, 0, 134,
135, 68, 69, 136, 137, 473, 0, 474, 138, 226,
0, 0, 0, 0, 139, 140, 0, 141, 0, 0,
0, 227, 228, 0, 0, 142, 243, 244, 245, 246,
247, 248, 249, 250, 0, 0, 0, 0, 475, 0,
0, 0, 70, 251, 0, 71, 0, 72, 73, 74,
75, 76, 476, 0, 0, 0, 0, 78, 229, 230,
79, 231, 0, 0, 80, 0, 232, 0, 233, 0,
0, 81, 0, 0, 0, 0, 0, 0, 82, 1428,
1429, 1430, 1431, 1432, 1433, 1434, 1435, 0, 0, 0,
0, 0, 0, 0, 83, 0, 1436, 244, 245, 246,
247, 248, 249, 250, 0, 0, 0, 0, 0, 0,
0, 477, 0, 251, 84, 85, 0, 0, 0, 0,
86, 244, 245, 246, 247, 248, 249, 250, 87, 88,
89, 90, 0, 0, 91, 0, 92, 251, 0, 244,
245, 246, 247, 248, 249, 250, 0, 0, 0, 478,
0, 0, 0, 0, 479, 251, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 0, 263, 264, 265,
1429, 1430, 1431, 1432, 1433, 1434, 1435, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1436, 244, 245, 246,
247, 248, 249, 250, 0, 0, 1429, 1430, 1431, 1432,
1433, 1434, 1435, 251, 0, 0, 0, 0, 0, 1438,
1439, 1440, 1436, 0, 1441, 1442, 1443, 1444, 1445, 0,
1446, 1447, 1448, 0, 0, 0, 253, 254, 255, 256,
257, 258, 259, 260, 261, 262, 0, 263, 264, 265,
0, 0, 0, 0, 1429, 1430, 1431, 1432, 1433, 1434,
1435, 254, 255, 256, 257, 258, 259, 260, 261, 262,
1436, 263, 264, 265, 246, 247, 248, 249, 250, 0,
255, 256, 257, 258, 259, 260, 261, 262, 251, 263,
264, 265, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1436, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1438,
1439, 1440, 0, 0, 1441, 1442, 1443, 1444, 1445, 0,
1446, 1447, 1448, 0, 0, 0, 0, 0, 0, 256,
257, 258, 259, 260, 261, 262, 0, 263, 264, 265,
1441, 1442, 1443, 1444, 1445, 0, 1446, 1447, 1448, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 71,
0, 72, 73, 74, 75, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1439, 1440, 0, 0, 1441, 1442,
1443, 1444, 1445, 315, 1446, 1447, 1448, 0, 0, 0,
0, 0, 82, 0, 256, 257, 258, 259, 260, 261,
262, 0, 263, 264, 265, 0, 0, 0, 274, 0,
0, 0, 0, 1440, 0, 0, 1441, 1442, 1443, 1444,
1445, 0, 1446, 1447, 1448, 107, 0, 108, 84, 85,
0, 110, 710, 711, 712, 0, 0, 0, 0, 111,
112, 113, 114, 0, 0, 90, 0, 0, 0, 0,
92, 0, 116, 307, 118, 0, 0, 0, 0, 0,
0, 0, 0, 0, 308, 223, 224, 225, 0, 0,
0, 0, 0, 193, 0, 0, 0, 71, 0, 72,
73, 74, 75, 0, 0, 0, 0, 0, 128, 0,
0, 0, 79, 0, 0, 0, 0, 0, 133, 0,
0, 0, 0, 81, 134, 0, 0, 0, 0, 137,
82, 68, 69, 0, 0, 473, 0, 0, 0, 0,
140, 0, 141, 226, 0, 0, 83, 0, 0, 0,
0, 0, 0, 0, 0, 227, 228, 0, 0, 0,
0, 0, 0, 0, 0, 0, 84, 85, 475, 68,
69, 0, 70, 812, 0, 71, 0, 72, 73, 74,
75, 76, 476, 90, 0, 0, 91, 78, 92, 0,
79, 0, 229, 230, 80, 231, 0, 0, 0, 0,
232, 81, 233, 0, 0, 0, 475, 0, 82, 0,
70, 0, 0, 71, 0, 72, 73, 74, 75, 76,
476, 0, 0, 0, 83, 78, 0, 0, 79, 0,
0, 0, 80, 0, 0, 0, 0, 0, 0, 81,
0, 477, 0, 0, 84, 85, 82, 0, 0, 0,
86, 0, 223, 224, 225, 0, 0, 0, 87, 88,
89, 90, 83, 0, 91, 0, 92, 0, 68, 69,
0, 0, 0, 0, 0, 0, 0, 0, 0, 477,
0, 0, 84, 85, 0, 0, 0, 0, 86, 0,
0, 0, 0, 68, 69, 0, 87, 88, 89, 90,
0, 0, 91, 0, 92, 475, 0, 0, 0, 70,
226, 0, 71, 0, 72, 73, 74, 75, 76, 476,
0, 0, 227, 228, 78, 0, 0, 79, 0, 0,
0, 80, 0, 0, 70, 0, 0, 71, 81, 72,
73, 74, 75, 76, 77, 82, 0, 0, 0, 78,
0, 0, 79, 0, 0, 0, 80, 0, 0, 229,
230, 83, 231, 81, 0, 0, 0, 232, 0, 233,
82, 0, 0, 0, 0, 0, 0, 0, 477, 0,
1302, 84, 85, 68, 69, 1381, 83, 86, 0, 0,
0, 0, 0, 0, 0, 87, 88, 89, 90, 0,
0, 91, 0, 92, 0, 0, 84, 85, 68, 69,
0, 0, 86, 0, 0, 0, 0, 0, 0, 0,
87, 88, 89, 90, 70, 0, 91, 71, 92, 72,
73, 74, 75, 76, 0, 0, 0, 0, 0, 78,
0, 0, 79, 0, 0, 0, 80, 0, 0, 70,
0, 0, 71, 81, 72, 73, 74, 75, 76, 0,
82, 0, 0, 0, 78, 0, 0, 79, 0, 0,
0, 80, 0, 0, 0, 0, 83, 0, 81, 0,
0, 0, 223, 224, 225, 82, 0, 0, 0, 0,
0, 0, 0, 622, 0, 0, 84, 85, 68, 0,
0, 83, 86, 0, 0, 0, 0, 0, 0, 0,
87, 88, 89, 90, 0, 0, 91, 0, 92, 0,
0, 84, 85, 182, 0, 0, 0, 86, 0, 0,
0, 0, 0, 0, 0, 87, 88, 89, 90, 70,
226, 91, 71, 92, 72, 73, 74, 75, 76, 535,
0, 0, 227, 228, 78, 0, 0, 79, 0, 0,
0, 80, 0, 0, 183, 0, 0, 71, 81, 72,
73, 74, 75, 76, 1019, 82, 0, 0, 0, 184,
0, 0, 79, 0, 0, 0, 80, 0, 0, 229,
230, 83, 231, 81, 0, 0, 0, 232, 0, 233,
82, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1302, 84, 85, 182, 0, 1383, 83, 86, 0, 0,
0, 0, 0, 0, 0, 87, 88, 89, 90, 0,
0, 91, 0, 92, 0, 0, 84, 85, 68, 0,
0, 0, 86, 0, 0, 0, 223, 224, 225, 0,
185, 186, 89, 90, 183, 0, 91, 71, 92, 72,
73, 74, 75, 76, 0, 0, 0, 0, 0, 184,
0, 0, 79, 0, 0, 0, 80, 0, 0, 70,
0, 0, 71, 81, 72, 73, 74, 75, 76, 0,
82, 0, 0, 0, 78, 0, 0, 79, 0, 0,
0, 80, 0, 0, 226, 0, 83, 0, 81, 0,
0, 223, 224, 225, 0, 82, 227, 228, 0, 0,
0, 0, 0, 0, 0, 0, 84, 85, 0, 0,
0, 83, 86, 0, 0, 0, 0, 0, 0, 0,
185, 186, 89, 90, 0, 0, 91, 0, 92, 0,
0, 84, 85, 229, 1299, 1300, 1301, 86, 0, 0,
0, 232, 0, 233, 0, 87, 88, 89, 90, 226,
0, 91, 0, 92, 1302, 0, 0, 0, 0, 1303,
0, 227, 228, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 107, 0, 108, 0, 0,
109, 110, 0, 0, 0, 0, 0, 0, 0, 111,
112, 113, 114, 0, 0, 0, 0, 0, 229, 230,
115, 231, 116, 117, 118, 119, 232, 0, 233, 120,
0, 0, 0, 0, 121, 0, 0, 0, 0, 1302,
0, 0, 0, 0, 1385, 0, 0, 0, 0, 0,
0, 0, 122, 123, 124, 125, 126, 127, 128, 129,
0, 0, 0, 0, 0, 130, 131, 132, 133, 0,
0, 0, 0, 0, 134, 135, 0, 0, 136, 137,
0, 0, 107, 138, 108, 0, 0, 109, 110, 139,
140, 0, 141, 0, 0, 0, 111, 112, 113, 114,
142, 0, 0, 0, 0, 0, 0, 115, 0, 116,
117, 118, 119, 0, 0, 0, 120, 0, 0, 706,
0, 121, 0, 71, 0, 72, 73, 74, 75, 0,
0, 71, 0, 72, 73, 74, 75, 0, 273, 122,
123, 124, 125, 126, 127, 128, 129, 0, 0, 0,
0, 0, 130, 131, 132, 133, 82, 0, 0, 0,
0, 134, 135, 0, 82, 136, 137, 0, 0, 107,
138, 108, 274, 0, 109, 110, 139, 140, 0, 141,
274, 0, 0, 111, 112, 113, 114, 142, 0, 0,
0, 0, 84, 85, 115, 0, 116, 117, 118, 119,
84, 85, 0, 120, 0, 0, 890, 0, 121, 90,
0, 0, 0, 0, 92, 0, 0, 90, 0, 0,
0, 0, 92, 0, 0, 0, 122, 123, 124, 125,
126, 127, 128, 129, 0, 0, 0, 181, 0, 130,
131, 132, 133, 0, 0, 199, 0, 0, 134, 135,
0, 0, 136, 137, 0, 0, 107, 138, 108, 0,
0, 109, 110, 139, 140, 0, 141, 0, 0, 0,
111, 112, 113, 114, 142, 0, 0, 0, 0, 0,
0, 115, 0, 116, 117, 118, 119, 0, 0, 0,
120, 0, 0, 935, 0, 121, 0, 71, 0, 72,
73, 74, 75, 0, 0, 0, 0, 0, 0, 0,
0, 0, 273, 122, 123, 124, 125, 126, 127, 128,
129, 0, 0, 0, 0, 0, 130, 131, 132, 133,
82, 0, 0, 0, 0, 134, 135, 0, 0, 136,
137, 0, 0, 107, 138, 108, 274, 0, 109, 110,
139, 140, 0, 141, 0, 0, 0, 111, 112, 113,
114, 142, 0, 0, 0, 0, 84, 85, 115, 0,
116, 117, 118, 119, 0, 0, 0, 120, 0, 0,
1043, 0, 121, 90, 0, 0, 0, 0, 92, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
122, 123, 124, 125, 126, 127, 128, 129, 0, 0,
0, 0, 0, 130, 131, 132, 133, 0, 0, 0,
0, 0, 134, 135, 0, 0, 136, 137, 0, 0,
107, 138, 108, 0, 0, 109, 110, 139, 140, 0,
141, 0, 0, 0, 111, 112, 113, 114, 142, 0,
0, 0, 0, 0, 0, 115, 0, 116, 117, 118,
119, 0, 0, 0, 120, 0, 0, 1097, 0, 121,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 122, 123, 124,
125, 126, 127, 128, 129, 0, 0, 0, 0, 0,
130, 131, 132, 133, 0, 0, 0, 0, 0, 134,
135, 0, 0, 136, 137, 0, 0, 107, 138, 108,
0, 0, 109, 110, 139, 140, 0, 141, 223, 224,
225, 111, 112, 113, 114, 142, 0, 0, 0, 0,
0, 0, 115, 0, 116, 117, 118, 119, 0, 0,
0, 120, 0, 0, 1323, 107, 121, 108, 0, 0,
0, 110, 0, 0, 0, 0, 497, 0, 498, 111,
112, 113, 114, 0, 122, 123, 124, 125, 126, 127,
128, 129, 116, 307, 118, 0, 226, 130, 131, 132,
133, 0, 0, 0, 308, 0, 134, 135, 227, 228,
136, 137, 0, 0, 0, 138, 0, 0, 0, 0,
0, 139, 140, 0, 141, 0, 0, 0, 128, 321,
0, 0, 142, 0, 0, 0, 0, 0, 133, 0,
0, 0, 0, 0, 134, 229, 230, 0, 231, 137,
107, 1475, 108, 232, 0, 233, 110, 0, 0, 0,
140, 0, 141, 0, 111, 112, 113, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 116, 307, 118,
0, 0, 0, 0, 120, 0, 0, 0, 0, 308,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 128, 0, 0, 0, 0, 0, 0,
0, 0, 0, 133, 0, 107, 0, 108, 0, 134,
109, 110, 0, 0, 137, 0, 0, 0, 0, 111,
112, 113, 114, 0, 139, 140, 0, 141, 0, 0,
115, 0, 116, 117, 118, 119, 0, 0, 0, 120,
0, 0, -158, 0, 121, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 122, 123, 124, 125, 126, 127, 128, 129,
0, 0, 0, 0, 0, 130, 131, 132, 133, 0,
107, 0, 108, 0, 134, 135, 110, 0, 136, 137,
0, 0, 0, 138, 111, 112, 113, 114, 0, 139,
140, 0, 141, 0, 0, 0, 0, 116, 117, 118,
107, 0, 108, 0, 120, 0, 110, 0, 0, 308,
0, 0, 0, 0, 111, 112, 113, 114, 0, 0,
0, 0, 0, 0, 0, 0, 0, 116, 307, 118,
0, 0, 0, 128, 0, 0, 0, 0, 0, 308,
0, 0, 0, 133, 0, 0, 0, 0, 0, 134,
0, 0, 0, 136, 137, 0, 0, 0, 0, 0,
0, 0, 0, 128, 139, 140, 0, 141, 0, 0,
0, 0, 0, 133, 0, 0, 0, 0, 0, 134,
0, 0, 0, 0, 137, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 140, 0, 141
};
static const yytype_int16 yycheck[] =
{
1, 45, 62, 768, 117, 136, 136, 948, 477, 526,
601, 94, 330, 306, 748, 506, 45, 725, 674, 493,
600, 15, 146, 146, 619, 61, 189, 45, 153, 100,
155, 156, 157, 158, 159, 15, 161, 506, 163, 13,
165, 83, 84, 85, 15, 6, 811, 8, 90, 475,
343, 10, 80, 731, 13, 0, 181, 152, 638, 80,
155, 34, 63, 10, 11, 12, 155, 192, 193, 649,
152, 497, 80, 146, 199, 200, 80, 34, 152, 505,
171, 170, 760, 761, 152, 763, 764, 765, 766, 171,
170, 171, 93, 94, 130, 152, 152, 171, 160, 13,
101, 15, 146, 17, 34, 735, 174, 737, 738, 739,
740, 741, 34, 152, 171, 171, 151, 146, 153, 152,
155, 483, 6, 151, 8, 152, 154, 151, 146, 169,
151, 787, 171, 154, 169, 195, 151, 728, 171, 628,
152, 732, 155, 151, 171, 169, 154, 151, 62, 152,
154, 152, 153, 169, 155, 156, 157, 158, 159, 171,
161, 630, 163, 155, 165, 152, 154, 153, 171, 155,
117, 34, 152, 215, 216, 217, 218, 171, 170, 169,
181, 152, 306, 306, 171, 268, 269, 678, 189, 769,
164, 192, 193, 155, 512, 168, 169, 170, 199, 200,
151, 284, 285, 366, 264, 164, 152, 154, 170, 77,
171, 168, 169, 170, 169, 339, 339, 708, 169, 343,
343, 539, 170, 171, 154, 171, 821, 807, 808, 300,
169, 145, 274, 306, 152, 152, 831, 238, 169, 169,
170, 152, 920, 169, 152, 159, 168, 169, 170, 6,
164, 8, 769, 171, 171, 484, 298, 148, 149, 150,
171, 623, 306, 171, 170, 171, 339, 268, 269, 169,
343, 633, 634, 635, 636, 637, 954, 306, 403, 169,
170, 17, 283, 284, 285, 286, 287, 288, 306, 1023,
152, 160, 293, 169, 365, 339, 926, 771, 34, 343,
152, 164, 165, 166, 169, 168, 169, 170, 152, 171,
339, 2, 48, 152, 343, 152, 68, 69, 152, 171,
152, 339, 10, 11, 12, 343, 62, 171, 64, 330,
170, 171, 171, 169, 171, 804, 916, 171, 933, 171,
658, 169, 152, 169, 80, 936, 283, 284, 285, 286,
287, 151, 13, 153, 15, 155, 17, 152, 720, 160,
51, 171, 788, 1019, 657, 366, 57, 58, 59, 60,
61, 152, 863, 64, 77, 111, 171, 169, 114, 169,
68, 117, 151, 169, 153, 154, 155, 170, 171, 707,
171, 1125, 80, 81, 863, 624, 151, 133, 153, 916,
155, 62, 403, 169, 170, 171, 1299, 1300, 1301, 145,
1005, 169, 170, 171, 160, 644, 645, 646, 647, 648,
288, 422, 151, 159, 153, 1366, 155, 169, 170, 117,
118, 169, 120, 154, 1025, 151, 152, 125, 169, 127,
1031, 1032, 169, 805, 169, 170, 171, 1027, 1028, 169,
170, 493, 814, 154, 169, 456, 34, 169, 169, 460,
461, 462, 463, 464, 169, 536, 118, 119, 120, 169,
169, 169, 169, 474, 169, 169, 547, 478, 479, 550,
169, 154, 483, 171, 145, 486, 169, 169, 1381, 169,
1383, 720, 1385, 169, 523, 1388, 1389, 1390, 159, 169,
169, 169, 169, 164, 169, 506, 169, 198, 169, 169,
169, 512, 169, 169, 169, 164, 170, 1282, 154, 456,
170, 49, 523, 460, 461, 462, 463, 464, 152, 1018,
1121, 169, 151, 657, 657, 536, 169, 474, 539, 901,
160, 478, 479, 169, 169, 153, 908, 909, 910, 911,
912, 242, 243, 244, 245, 246, 247, 248, 249, 250,
251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
261, 262, 172, 891, 265, 152, 171, 806, 171, 270,
171, 171, 171, 171, 657, 288, 164, 165, 166, 171,
168, 169, 170, 161, 823, 10, 11, 12, 13, 600,
601, 602, 17, 161, 171, 171, 171, 171, 476, 477,
171, 612, 152, 657, 171, 306, 152, 171, 619, 171,
171, 171, 623, 171, 171, 1114, 686, 628, 657, 1118,
674, 632, 633, 634, 635, 636, 637, 638, 506, 657,
171, 171, 1350, 161, 171, 674, 337, 62, 649, 171,
353, 171, 171, 161, 725, 171, 674, 658, 659, 171,
731, 171, 171, 15, 735, 171, 737, 738, 739, 740,
741, 169, 901, 164, 171, 612, 171, 170, 170, 908,
909, 910, 911, 912, 171, 714, 172, 169, 154, 760,
761, 171, 763, 764, 765, 766, 151, 169, 152, 1464,
1465, 1466, 117, 1294, 152, 1296, 707, 152, 152, 400,
152, 152, 169, 773, 774, 153, 169, 154, 169, 720,
49, 781, 171, 783, 171, 416, 417, 728, 1462, 771,
145, 732, 423, 601, 735, 169, 737, 738, 739, 740,
741, 171, 169, 787, 159, 164, 1108, 164, 174, 164,
151, 49, 80, 754, 622, 169, 757, 160, 787, 169,
160, 1352, 630, 160, 160, 1356, 171, 768, 769, 787,
10, 902, 902, 476, 477, 10, 10, 10, 10, 10,
153, 161, 152, 1274, 153, 10, 11, 12, 13, 902,
850, 172, 17, 171, 171, 486, 164, 164, 153, 171,
153, 164, 151, 506, 805, 1274, 807, 808, 169, 1574,
811, 171, 171, 814, 171, 171, 174, 171, 1583, 169,
821, 169, 169, 154, 170, 170, 886, 170, 169, 169,
831, 152, 535, 171, 152, 152, 152, 62, 152, 164,
841, 23, 24, 534, 155, 171, 10, 11, 12, 920,
169, 171, 34, 544, 153, 926, 153, 170, 152, 10,
728, 1452, 172, 172, 732, 171, 174, 152, 49, 169,
1359, 174, 174, 169, 903, 151, 171, 152, 161, 1108,
161, 161, 171, 954, 161, 171, 10, 1376, 1377, 1378,
891, 116, 117, 894, 10, 153, 10, 171, 601, 590,
901, 13, 10, 15, 68, 17, 907, 908, 909, 910,
911, 912, 913, 10, 605, 916, 80, 81, 10, 622,
145, 169, 174, 153, 152, 926, 1051, 630, 619, 171,
174, 1522, 933, 172, 159, 936, 804, 1020, 15, 164,
160, 152, 169, 172, 169, 171, 153, 948, 171, 171,
62, 169, 171, 117, 118, 169, 120, 169, 171, 169,
34, 125, 171, 127, 160, 1454, 657, 171, 160, 160,
169, 171, 1461, 171, 34, 1019, 151, 172, 1467, 1468,
162, 163, 164, 165, 166, 172, 168, 169, 170, 1307,
1019, 682, 683, 684, 685, 863, 687, 171, 171, 171,
171, 1019, 1127, 1128, 1005, 153, 170, 10, 11, 12,
13, 10, 15, 153, 17, 10, 10, 1018, 153, 1020,
153, 10, 153, 169, 1025, 728, 1027, 1028, 171, 732,
1031, 1032, 1521, 145, 171, 1524, 15, 171, 161, 152,
172, 171, 152, 171, 161, 171, 161, 159, 10, 171,
1051, 172, 164, 171, 161, 153, 10, 169, 10, 62,
10, 11, 12, 13, 153, 169, 757, 17, 936, 1558,
169, 171, 153, 169, 169, 16, 17, 18, 19, 20,
21, 22, 23, 24, 1573, 171, 171, 153, 162, 163,
164, 165, 166, 34, 168, 169, 170, 10, 1099, 153,
171, 804, 162, 163, 164, 165, 166, 1108, 168, 169,
170, 1109, 62, 1114, 117, 153, 1126, 1118, 320, 660,
1121, 1277, 1350, 903, 1481, 1274, 1127, 1128, 343, 714,
821, 1099, 1308, 863, 1241, 343, 678, 421, -1, -1,
831, -1, 145, -1, 835, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 62, -1, 159, 1025, -1, -1,
863, 164, 853, 1031, 1032, -1, 169, 117, -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, 884, -1, 145, 887, -1, -1, -1,
1283, -1, -1, -1, -1, -1, 1277, -1, -1, 159,
-1, -1, -1, 154, 164, 156, 157, 158, 159, 169,
-1, 162, 163, 164, 165, 166, -1, 168, 169, 170,
-1, -1, -1, 936, -1, -1, -1, -1, -1, -1,
1241, -1, 933, -1, -1, -1, 154, -1, -1, -1,
-1, -1, 160, 1121, 162, -1, 164, 948, 166, 167,
168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
178, 179, 180, 1274, -1, -1, 63, -1, -1, 1350,
-1, 1282, 1283, 191, -1, -1, 1346, 195, -1, 197,
198, -1, -1, 1294, -1, 1296, -1, -1, -1, -1,
87, -1, -1, -1, -1, -1, 1307, -1, -1, -1,
-1, -1, 1003, -1, 1005, -1, 1007, -1, -1, -1,
107, -1, 1025, -1, -1, -1, -1, -1, 1031, 1032,
-1, -1, -1, -1, 1394, 1395, -1, 1397, -1, 1399,
-1, 1339, 129, 1341, 1342, 1343, 1344, 1345, -1, 1347,
-1, 1352, 139, -1, -1, 1356, 1416, -1, 1359, -1,
-1, -1, -1, -1, -1, 1366, -1, 1058, -1, -1,
-1, 279, -1, -1, -1, 1376, 1377, 1378, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1447, -1, 110,
111, 112, 113, 114, -1, 116, 117, 118, 185, -1,
121, 188, -1, 1109, -1, -1, 1274, 128, -1, -1,
-1, -1, 133, 134, -1, 136, 137, 138, 1121, 140,
141, -1, -1, -1, -1, -1, 1294, -1, 1296, 1427,
1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 235, 236,
-1, 1452, -1, 1454, -1, -1, -1, -1, -1, -1,
1461, -1, -1, 1464, 1465, 1466, 1467, 1468, -1, -1,
-1, -1, -1, 10, 11, 12, 263, -1, -1, -1,
1481, -1, -1, -1, 1352, -1, -1, -1, 1356, -1,
-1, -1, -1, -1, 402, 282, -1, -1, 1496, -1,
-1, -1, -1, -1, -1, -1, -1, 1567, 1568, 1569,
-1, 1571, -1, 300, -1, 302, -1, -1, -1, -1,
1521, 1522, -1, 1524, -1, -1, -1, -1, -1, -1,
-1, 68, -1, -1, 321, -1, 323, 324, 325, 326,
327, 328, -1, 80, 81, -1, -1, -1, -1, -1,
10, 11, 1550, -1, -1, 1553, -1, 1558, 345, -1,
-1, -1, -1, -1, -1, -1, -1, 354, -1, -1,
357, 1274, 1573, 1574, -1, -1, 1267, -1, 365, -1,
117, 118, 1583, 120, 1452, -1, 307, 308, 125, -1,
127, 1294, 52, 1296, 315, 55, -1, 57, 58, 59,
60, 61, -1, -1, -1, -1, -1, 67, -1, -1,
70, -1, -1, -1, 74, -1, -1, 154, 405, -1,
-1, 81, 409, 531, 1315, -1, -1, -1, 88, 1320,
538, -1, -1, 1339, 421, 1341, 1342, 1343, 1344, 1345,
-1, 1347, -1, -1, 104, 10, 11, 12, -1, 1352,
-1, -1, -1, 1356, 1522, -1, 116, -1, 566, -1,
568, -1, 570, -1, 124, 125, -1, -1, -1, -1,
130, -1, 459, -1, -1, 1366, -1, -1, 138, 139,
140, 141, -1, 48, 144, 50, 146, -1, 475, -1,
-1, 151, -1, -1, -1, -1, -1, -1, -1, -1,
487, -1, -1, 68, -1, -1, -1, 167, -1, -1,
497, -1, -1, -1, -1, 80, 81, -1, 505, -1,
-1, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435,
1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445,
3, 4, 5, 6, -1, 8, 9, 10, 11, 1452,
-1, -1, 117, 118, -1, 120, -1, 1448, -1, -1,
125, -1, 127, 550, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 686, 22,
23, 24, -1, 504, -1, -1, 151, -1, 51, 52,
-1, 34, 55, -1, 57, 58, 59, 60, 61, -1,
-1, -1, -1, 66, 67, -1, -1, 70, 71, -1,
-1, 74, 599, -1, -1, -1, 79, 80, 81, 1522,
-1, -1, 85, -1, -1, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
103, 104, -1, -1, 10, 11, 12, 1553, -1, -1,
113, -1, 115, -1, 117, 642, -1, -1, -1, 122,
-1, 124, 125, 126, -1, -1, 129, 130, -1, -1,
-1, 134, -1, 660, 137, 138, 139, 140, 141, -1,
-1, 144, -1, 146, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 159, -1, -1, 162,
163, 164, 68, -1, 167, -1, 169, 170, -1, -1,
173, -1, -1, -1, 80, 81, -1, -1, -1, 162,
163, 164, 165, 166, -1, 168, 169, 170, -1, -1,
-1, 718, -1, -1, -1, -1, 844, 845, 846, -1,
848, -1, 850, -1, 852, 853, -1, -1, -1, -1,
-1, 117, 118, -1, 120, -1, -1, -1, -1, 125,
-1, 127, -1, 750, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 696, 697, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 155,
-1, -1, -1, 159, -1, -1, -1, -1, 164, -1,
-1, 788, -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, 26,
-1, -1, -1, -1, -1, -1, -1, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, -1, -1, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, -1, 74, -1, 76,
77, 78, 79, 80, 81, 82, 83, 84, -1, 86,
87, 88, -1, -1, -1, -1, -1, -1, 885, -1,
-1, -1, -1, -1, -1, -1, -1, 104, -1, -1,
-1, -1, -1, -1, 111, 112, 113, 904, 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,
147, -1, -1, -1, 151, 152, 153, 154, 155, 156,
157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
167, 168, 169, 170, 171, 172, 173, 174, -1, -1,
-1, 902, 16, 17, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, -1, -1, -1, 1107,
34, -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, 1022, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, -1, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-1, -1, -1, -1, -1, -1, 1053, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, -1, -1, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, -1, 74, -1, 76,
77, 78, 79, 80, 81, 82, 83, 84, -1, 86,
87, 88, 156, 157, 158, 159, 160, 161, 162, 163,
164, 165, 166, -1, 168, 169, 170, 104, -1, 1126,
174, -1, -1, -1, 111, 112, 113, -1, 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,
147, -1, -1, 17, 151, 152, 153, 154, 155, 156,
157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
167, 168, 169, 170, 171, -1, 173, 174, -1, -1,
-1, -1, -1, -1, 48, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 62, -1,
64, -1, -1, -1, -1, -1, -1, -1, 1346, -1,
-1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 3, 4, 5, 6, -1, 8,
9, 10, 11, 12, -1, -1, -1, 111, -1, -1,
114, -1, -1, 117, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 133,
-1, -1, -1, 1411, 1412, 1413, 1414, -1, 1416, -1,
1418, 145, 51, 52, -1, 1302, 55, -1, 57, 58,
59, 60, 61, 62, -1, 159, -1, 66, 67, -1,
-1, 70, 71, -1, -1, 74, -1, -1, -1, -1,
79, 80, 81, -1, -1, -1, 85, -1, -1, 88,
89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
99, 100, 101, 102, 103, 104, -1, -1, -1, -1,
-1, -1, -1, -1, 113, -1, 115, -1, 117, -1,
-1, -1, -1, 122, -1, 124, 125, 126, -1, -1,
129, 130, -1, -1, -1, 134, -1, -1, 137, 138,
139, 140, 141, -1, -1, 144, -1, 146, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
159, -1, -1, 162, 163, 164, -1, -1, 167, -1,
169, 170, -1, -1, 173, 3, 4, 5, 6, -1,
8, 9, 10, 11, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 1446,
-1, -1, -1, -1, -1, -1, 16, 17, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
-1, -1, -1, 51, 34, -1, -1, 55, -1, 57,
58, 59, 60, 23, 24, -1, -1, -1, 66, -1,
68, 69, 70, 71, 34, -1, 1493, -1, -1, -1,
-1, 79, 80, 81, -1, -1, -1, 85, -1, -1,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 102, 103, 104, -1, -1, -1,
-1, -1, -1, -1, -1, 113, -1, 115, -1, 117,
-1, -1, -1, -1, 122, -1, 124, 125, 126, -1,
-1, 129, -1, -1, -1, -1, 134, -1, -1, 137,
-1, -1, -1, 141, 3, 4, 5, 6, 146, 8,
9, 10, 11, 151, -1, -1, 15, -1, -1, -1,
-1, 159, -1, -1, 162, 163, 164, -1, -1, 167,
-1, 169, 170, -1, -1, 173, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, -1, 168, 169,
170, -1, 51, -1, 174, -1, 55, -1, 57, 58,
59, 60, 162, 163, 164, 165, 166, 66, 168, 169,
170, 70, 71, -1, -1, -1, -1, -1, -1, -1,
79, 80, 81, -1, -1, -1, 85, -1, -1, 88,
89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
99, 100, 101, 102, 103, 104, -1, -1, -1, -1,
-1, -1, -1, -1, 113, -1, 115, -1, 117, -1,
-1, -1, -1, 122, -1, 124, 125, 126, -1, -1,
129, -1, -1, -1, -1, 134, -1, -1, 137, -1,
-1, -1, 141, 3, 4, 5, 6, 146, 8, 9,
10, 11, -1, -1, -1, -1, -1, -1, -1, -1,
159, -1, -1, 162, 163, 164, -1, -1, 167, -1,
169, 170, -1, -1, 173, 16, 17, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, -1,
-1, 51, -1, 34, -1, 55, -1, 57, 58, 59,
60, -1, -1, -1, -1, -1, 66, -1, -1, -1,
70, 71, -1, -1, -1, -1, -1, -1, -1, 79,
80, 81, -1, -1, -1, 85, -1, -1, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
-1, -1, -1, 113, -1, 115, -1, 117, -1, -1,
-1, -1, 122, -1, 124, 125, 126, -1, -1, 129,
-1, -1, -1, -1, 134, -1, -1, 137, -1, -1,
-1, 141, 3, 4, 5, 6, 146, 8, 9, 10,
11, -1, -1, -1, -1, -1, -1, -1, -1, 159,
-1, -1, 162, 163, 164, -1, -1, 167, -1, 169,
170, 171, -1, 173, -1, 156, 157, 158, 159, 160,
161, 162, 163, 164, 165, 166, -1, 168, 169, 170,
51, 52, -1, 174, 55, -1, 57, 58, 59, 60,
-1, -1, -1, -1, -1, 66, -1, -1, -1, 70,
71, -1, -1, -1, -1, -1, -1, -1, 79, 80,
81, -1, -1, -1, 85, -1, -1, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
101, 102, 103, 104, -1, -1, -1, -1, -1, -1,
-1, -1, 113, -1, 115, -1, 117, -1, -1, -1,
-1, 122, -1, 124, 125, 126, -1, -1, 129, -1,
-1, -1, -1, 134, -1, -1, 137, -1, -1, -1,
141, 3, 4, 5, 6, 146, 8, 9, 10, 11,
-1, -1, -1, -1, -1, -1, -1, -1, 159, -1,
-1, 162, 163, 164, -1, -1, 167, -1, 169, 170,
-1, -1, 173, 16, 17, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, -1, -1, 51,
52, 34, -1, 55, -1, 57, 58, 59, 60, -1,
-1, -1, -1, -1, 66, -1, -1, -1, 70, 71,
-1, -1, -1, -1, -1, -1, -1, 79, 80, 81,
-1, -1, -1, 85, -1, -1, 88, 89, 90, 91,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, 104, -1, -1, -1, -1, -1, -1, -1,
-1, 113, -1, 115, -1, 117, -1, -1, -1, -1,
122, -1, 124, 125, 126, -1, -1, 129, -1, -1,
-1, -1, 134, -1, -1, 137, -1, -1, -1, 141,
3, 4, 5, 6, 146, 8, 9, 10, 11, -1,
-1, -1, -1, -1, -1, -1, -1, 159, -1, -1,
162, 163, 164, -1, -1, 167, -1, 169, 170, -1,
153, 173, -1, 156, 157, 158, 159, 160, 161, 162,
163, 164, 165, 166, -1, 168, 169, 170, 51, -1,
-1, -1, 55, -1, 57, 58, 59, 60, -1, -1,
-1, -1, -1, 66, -1, -1, -1, 70, 71, -1,
-1, -1, -1, -1, -1, -1, 79, 80, 81, -1,
-1, -1, 85, -1, -1, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
103, 104, -1, -1, -1, -1, -1, -1, -1, -1,
113, -1, 115, -1, 117, -1, -1, -1, -1, 122,
-1, 124, 125, 126, -1, -1, 129, -1, -1, -1,
-1, 134, -1, -1, 137, -1, -1, -1, 141, 3,
4, 5, 6, 146, 8, 9, 10, 11, 151, -1,
-1, -1, -1, -1, -1, -1, 159, -1, -1, 162,
163, 164, -1, -1, 167, -1, 169, 170, -1, -1,
173, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 51, -1, -1,
-1, 55, -1, 57, 58, 59, 60, -1, -1, -1,
-1, -1, 66, -1, -1, -1, 70, 71, -1, -1,
-1, -1, -1, -1, -1, 79, 80, 81, -1, -1,
-1, 85, -1, -1, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, -1, -1, -1, -1, -1, -1, -1, -1, 113,
-1, 115, -1, 117, -1, -1, -1, -1, 122, -1,
124, 125, 126, -1, -1, 129, -1, -1, -1, -1,
134, -1, -1, 137, -1, -1, -1, 141, 3, 4,
5, 6, 146, 8, 9, 10, 11, -1, -1, -1,
-1, -1, -1, -1, -1, 159, -1, -1, 162, 163,
164, -1, -1, 167, -1, 169, 170, 171, -1, 173,
16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, -1, -1, 51, -1, 34, -1,
55, -1, 57, 58, 59, 60, -1, -1, -1, -1,
-1, 66, -1, -1, -1, 70, 71, -1, -1, -1,
-1, -1, -1, -1, 79, 80, 81, -1, -1, -1,
85, -1, -1, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
-1, -1, -1, -1, -1, -1, -1, -1, 113, -1,
115, -1, 117, -1, -1, -1, -1, 122, -1, 124,
125, 126, -1, -1, 129, -1, -1, -1, -1, 134,
-1, -1, 137, -1, -1, -1, 141, 3, 4, 5,
6, 146, 8, 9, 10, 11, 151, -1, -1, -1,
-1, -1, -1, -1, 159, -1, -1, 162, 163, 164,
-1, -1, 167, -1, 169, 170, 152, -1, 173, -1,
156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
166, -1, 168, 169, 170, 51, -1, -1, -1, 55,
-1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
66, -1, -1, -1, 70, 71, -1, -1, -1, -1,
-1, -1, -1, 79, 80, 81, -1, -1, -1, 85,
-1, -1, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, -1,
-1, -1, -1, -1, -1, -1, -1, 113, -1, 115,
-1, 117, -1, -1, -1, -1, 122, -1, 124, 125,
126, -1, -1, 129, -1, -1, -1, -1, 134, -1,
-1, 137, -1, -1, -1, 141, 3, 4, 5, 6,
146, 8, 9, 10, 11, -1, -1, -1, -1, -1,
-1, -1, -1, 159, -1, -1, 162, 163, 164, -1,
-1, 167, -1, 169, 170, 171, -1, 173, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 51, -1, -1, -1, 55, -1,
57, 58, 59, 60, -1, -1, -1, -1, -1, 66,
-1, -1, -1, 70, 71, -1, -1, -1, -1, -1,
-1, -1, 79, 80, 81, -1, -1, -1, 85, -1,
-1, 88, 89, 90, 91, 92, 93, 94, 95, 96,
97, 98, 99, 100, 101, 102, 103, 104, -1, -1,
-1, -1, 11, -1, -1, -1, 113, -1, 115, -1,
117, -1, -1, -1, -1, 122, -1, 124, 125, 126,
-1, -1, 129, -1, -1, -1, -1, 134, -1, -1,
137, -1, -1, -1, 141, 3, 4, 5, 6, 146,
8, 9, 10, 11, 12, -1, 55, 15, 57, 58,
59, 60, 159, -1, -1, 162, 163, 164, -1, -1,
167, -1, 169, 170, -1, -1, 173, 16, 17, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, 88,
48, -1, -1, 51, 52, 34, -1, 55, -1, 57,
58, 59, 60, 61, 62, 104, -1, -1, 66, 67,
-1, -1, 70, 71, -1, -1, 74, -1, -1, -1,
-1, 79, 80, 81, -1, 124, 125, -1, -1, -1,
88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 141, -1, -1, -1, 104, 146, -1, -1,
-1, -1, -1, -1, -1, 113, -1, 115, -1, 117,
-1, -1, -1, 121, 122, -1, 124, 125, 126, -1,
-1, 129, 130, -1, -1, -1, 134, -1, -1, 137,
138, 139, 140, 141, -1, -1, 144, -1, 146, 3,
4, 5, 6, -1, 8, 9, 10, 11, -1, -1,
-1, 159, -1, -1, 162, 163, -1, -1, -1, 167,
-1, 169, -1, 152, -1, 173, -1, 156, 157, 158,
159, 160, 161, 162, 163, 164, 165, 166, -1, 168,
169, 170, 171, -1, 10, 11, 12, 51, -1, -1,
-1, 55, -1, 57, 58, 59, 60, -1, -1, -1,
-1, -1, 66, -1, -1, -1, 70, 71, -1, -1,
-1, -1, -1, -1, -1, 79, 80, 81, -1, -1,
-1, 85, -1, -1, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, -1, 68, -1, -1, -1, -1, -1, -1, 113,
-1, 115, -1, 117, 80, 81, -1, -1, 122, -1,
124, 125, 126, -1, -1, 129, -1, -1, -1, -1,
134, -1, -1, 137, -1, -1, -1, 141, 3, 4,
5, 6, 146, 8, 9, 10, 11, 12, -1, -1,
15, 117, 118, -1, 120, -1, -1, -1, -1, 125,
-1, 127, -1, 167, -1, 169, 170, -1, -1, 173,
16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, 48, -1, 151, 51, 52, 34, -1,
55, -1, 57, 58, 59, 60, 61, 62, -1, -1,
-1, 66, 67, -1, -1, 70, 71, -1, -1, 74,
-1, -1, -1, -1, 79, 80, 81, -1, -1, -1,
-1, -1, -1, 88, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 10, 11, 12, -1, 104,
-1, -1, -1, -1, -1, -1, -1, -1, 113, -1,
115, -1, 117, -1, -1, -1, 121, 122, -1, 124,
125, 126, -1, -1, 129, 130, -1, -1, -1, 134,
-1, -1, 137, 138, 139, 140, 141, -1, -1, 144,
-1, 146, -1, 3, 4, 5, 6, -1, 8, 9,
10, -1, -1, 68, 159, 15, -1, 162, 163, -1,
-1, -1, 167, -1, 169, 80, 81, -1, 173, -1,
156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
166, -1, 168, 169, 170, 171, -1, -1, -1, -1,
-1, 51, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 117, 118, -1, 120, 66, -1, -1, -1,
125, 71, 127, -1, -1, 10, 11, 12, -1, 79,
80, 10, 11, 12, -1, 85, -1, -1, -1, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 159, -1, -1, -1, -1, 164,
-1, -1, -1, -1, -1, 115, -1, 117, 3, 4,
5, 6, 122, 8, 9, 10, 126, -1, -1, 129,
-1, -1, -1, 68, 134, -1, -1, -1, -1, 68,
-1, -1, -1, -1, -1, 80, 81, -1, -1, -1,
-1, 80, 81, -1, -1, -1, -1, -1, -1, 159,
-1, -1, 162, 163, 164, -1, 51, 167, -1, 169,
170, -1, -1, 173, -1, -1, -1, -1, -1, -1,
-1, 66, 117, 118, -1, 120, 71, -1, 117, 118,
125, 120, 127, -1, 79, 80, 125, -1, 127, -1,
85, -1, -1, 138, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
-1, 55, 151, 57, 58, 59, 60, -1, -1, -1,
115, -1, 117, 3, 4, 5, 6, 122, 8, 9,
10, 126, -1, -1, 129, -1, -1, -1, -1, 134,
-1, -1, -1, -1, 88, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
104, -1, -1, -1, 159, -1, -1, 162, 163, 164,
-1, 51, 167, -1, 169, 170, -1, -1, 173, -1,
124, 125, 3, 4, 5, 6, 66, 8, 9, 10,
-1, 71, -1, -1, 15, -1, -1, 141, -1, 79,
80, -1, 146, -1, -1, 85, -1, -1, -1, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, -1, 169, -1, -1, -1, -1,
51, -1, -1, -1, -1, 115, -1, 117, -1, -1,
-1, -1, 122, -1, -1, 66, 126, -1, -1, 129,
71, 22, 23, 24, 134, -1, -1, -1, 79, 80,
-1, -1, -1, 34, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 10, 11, 12, -1, 16, 17, 18,
19, 20, 21, 22, 23, 24, -1, 167, -1, 169,
170, -1, 113, 173, 115, 34, 117, -1, -1, -1,
-1, 122, -1, -1, -1, 126, -1, -1, 129, -1,
-1, -1, -1, 134, -1, -1, 137, -1, 55, -1,
57, 58, 59, 60, 61, 62, -1, -1, -1, -1,
-1, -1, -1, 70, -1, -1, -1, -1, 159, -1,
-1, 162, 163, 6, 81, -1, 167, -1, 169, -1,
-1, 88, 173, 16, 17, 18, 19, 20, 21, 22,
23, 24, -1, -1, -1, -1, -1, 104, -1, -1,
-1, 34, -1, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, -1, -1, 124, 125, -1,
-1, 162, 163, 164, 165, 166, -1, 168, 169, 170,
-1, 138, -1, -1, 141, -1, 69, 144, -1, 146,
-1, -1, -1, -1, -1, 10, 11, 156, 157, 158,
159, 160, 161, 162, 163, 164, 165, 166, -1, 168,
169, 170, 171, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
113, -1, -1, -1, -1, -1, -1, 52, -1, -1,
55, -1, 57, 58, 59, 60, 61, -1, -1, -1,
-1, -1, 67, -1, -1, 70, -1, 10, 11, 74,
-1, -1, -1, -1, -1, -1, 81, -1, -1, 152,
-1, -1, 155, 88, 157, 158, 159, 160, 161, 162,
163, 164, 165, 166, 167, -1, 169, 170, -1, 104,
173, -1, -1, -1, -1, -1, -1, -1, -1, 52,
-1, 116, 55, -1, 57, 58, 59, 60, 61, 124,
125, -1, -1, -1, 67, 130, -1, 70, -1, -1,
-1, 74, -1, 138, 139, 140, 141, -1, 81, 144,
-1, 146, -1, -1, -1, 88, 16, 17, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
-1, 104, 167, -1, 34, 10, 11, 12, -1, -1,
-1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
-1, 124, 125, -1, -1, -1, -1, 130, 20, 21,
22, 23, 24, -1, -1, 138, 139, 140, 141, -1,
-1, 144, 34, 146, 16, 17, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 34, 68, 167, 16, 17, 18, 19, 20,
21, 22, 23, 24, -1, 80, 81, -1, -1, -1,
-1, -1, -1, 34, 16, 17, 18, 19, 20, 21,
22, 23, 24, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 34, 16, 17, 18, 19, 20, 21, 22,
23, 24, 117, 118, -1, 120, -1, -1, -1, -1,
125, 34, 127, -1, -1, -1, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 142, 168, 169,
170, 171, 16, 17, 18, 19, 20, 21, 22, 23,
24, -1, -1, -1, -1, -1, -1, -1, -1, -1,
34, 16, 17, 18, 19, 20, 21, 22, 23, 24,
162, 163, 164, 165, 166, -1, 168, 169, 170, 34,
-1, -1, -1, -1, 156, 157, 158, 159, 160, 161,
162, 163, 164, 165, 166, -1, 168, 169, 170, 171,
-1, -1, -1, -1, -1, 156, 157, 158, 159, 160,
161, 162, 163, 164, 165, 166, -1, 168, 169, 170,
171, -1, -1, -1, 156, 157, 158, 159, 160, 161,
162, 163, 164, 165, 166, -1, 168, 169, 170, 171,
-1, -1, -1, 156, 157, 158, 159, 160, 161, 162,
163, 164, 165, 166, -1, 168, 169, 170, 171, 16,
17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 34, -1, -1,
154, -1, 156, 157, 158, 159, 160, 161, 162, 163,
164, 165, 166, -1, 168, 169, 170, -1, -1, 154,
-1, 156, 157, 158, 159, 160, 161, 162, 163, 164,
165, 166, 6, 168, 169, 170, 16, 17, 18, 19,
20, 21, 22, 23, 24, -1, -1, -1, 55, -1,
57, 58, 59, 60, 34, 16, 17, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 34, 48, -1, 50, -1, -1, -1,
54, 88, -1, -1, -1, -1, -1, -1, 62, 63,
64, 65, -1, -1, -1, -1, -1, 104, -1, -1,
-1, 75, 76, 77, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 87, -1, -1, -1, 124, 125, 156,
157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
-1, 168, 169, 170, 141, -1, -1, 111, -1, 146,
-1, -1, -1, -1, -1, -1, -1, 121, 10, 11,
12, -1, -1, 127, -1, -1, -1, 131, 132, -1,
-1, -1, 0, -1, -1, -1, -1, -1, -1, 143,
-1, 145, -1, -1, -1, -1, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, -1, 168, 169,
170, -1, -1, -1, -1, 156, 157, 158, 159, -1,
-1, 162, 163, 164, 165, 166, 68, 168, 169, 170,
48, -1, 50, -1, -1, 53, 54, -1, 80, 81,
-1, -1, -1, -1, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, 73, -1, 75, 76, 77,
78, 10, 11, 12, 82, -1, 15, -1, -1, 87,
112, -1, -1, -1, -1, 117, 118, -1, 120, -1,
-1, -1, -1, 125, -1, 127, -1, 105, 106, 107,
108, 109, 110, 111, 112, -1, -1, -1, -1, -1,
118, 119, 120, 121, -1, -1, -1, -1, -1, 127,
128, 11, 12, 131, 132, 15, -1, 17, 136, 68,
-1, -1, -1, -1, 142, 143, -1, 145, -1, -1,
-1, 80, 81, -1, -1, 153, 17, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, 48, -1,
-1, -1, 52, 34, -1, 55, -1, 57, 58, 59,
60, 61, 62, -1, -1, -1, -1, 67, 117, 118,
70, 120, -1, -1, 74, -1, 125, -1, 127, -1,
-1, 81, -1, -1, -1, -1, -1, -1, 88, 17,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, -1, -1, 104, -1, 34, 18, 19, 20,
21, 22, 23, 24, -1, -1, -1, -1, -1, -1,
-1, 121, -1, 34, 124, 125, -1, -1, -1, -1,
130, 18, 19, 20, 21, 22, 23, 24, 138, 139,
140, 141, -1, -1, 144, -1, 146, 34, -1, 18,
19, 20, 21, 22, 23, 24, -1, -1, -1, 159,
-1, -1, -1, -1, 164, 34, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 157, 158, 159, 160,
161, 162, 163, 164, 165, 166, -1, 168, 169, 170,
18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 34, 18, 19, 20,
21, 22, 23, 24, -1, -1, 18, 19, 20, 21,
22, 23, 24, 34, -1, -1, -1, -1, -1, 157,
158, 159, 34, -1, 162, 163, 164, 165, 166, -1,
168, 169, 170, -1, -1, -1, 157, 158, 159, 160,
161, 162, 163, 164, 165, 166, -1, 168, 169, 170,
-1, -1, -1, -1, 18, 19, 20, 21, 22, 23,
24, 158, 159, 160, 161, 162, 163, 164, 165, 166,
34, 168, 169, 170, 20, 21, 22, 23, 24, -1,
159, 160, 161, 162, 163, 164, 165, 166, 34, 168,
169, 170, 18, 19, 20, 21, 22, 23, 24, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 34, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 157,
158, 159, -1, -1, 162, 163, 164, 165, 166, -1,
168, 169, 170, -1, -1, -1, -1, -1, -1, 160,
161, 162, 163, 164, 165, 166, -1, 168, 169, 170,
162, 163, 164, 165, 166, -1, 168, 169, 170, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 55,
-1, 57, 58, 59, 60, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 158, 159, -1, -1, 162, 163,
164, 165, 166, 6, 168, 169, 170, -1, -1, -1,
-1, -1, 88, -1, 160, 161, 162, 163, 164, 165,
166, -1, 168, 169, 170, -1, -1, -1, 104, -1,
-1, -1, -1, 159, -1, -1, 162, 163, 164, 165,
166, -1, 168, 169, 170, 48, -1, 50, 124, 125,
-1, 54, 10, 11, 12, -1, -1, -1, -1, 62,
63, 64, 65, -1, -1, 141, -1, -1, -1, -1,
146, -1, 75, 76, 77, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 87, 10, 11, 12, -1, -1,
-1, -1, -1, 169, -1, -1, -1, 55, -1, 57,
58, 59, 60, -1, -1, -1, -1, -1, 111, -1,
-1, -1, 70, -1, -1, -1, -1, -1, 121, -1,
-1, -1, -1, 81, 127, -1, -1, -1, -1, 132,
88, 11, 12, -1, -1, 15, -1, -1, -1, -1,
143, -1, 145, 68, -1, -1, 104, -1, -1, -1,
-1, -1, -1, -1, -1, 80, 81, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 124, 125, 48, 11,
12, -1, 52, 15, -1, 55, -1, 57, 58, 59,
60, 61, 62, 141, -1, -1, 144, 67, 146, -1,
70, -1, 117, 118, 74, 120, -1, -1, -1, -1,
125, 81, 127, -1, -1, -1, 48, -1, 88, -1,
52, -1, -1, 55, -1, 57, 58, 59, 60, 61,
62, -1, -1, -1, 104, 67, -1, -1, 70, -1,
-1, -1, 74, -1, -1, -1, -1, -1, -1, 81,
-1, 121, -1, -1, 124, 125, 88, -1, -1, -1,
130, -1, 10, 11, 12, -1, -1, -1, 138, 139,
140, 141, 104, -1, 144, -1, 146, -1, 11, 12,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
-1, -1, 124, 125, -1, -1, -1, -1, 130, -1,
-1, -1, -1, 11, 12, -1, 138, 139, 140, 141,
-1, -1, 144, -1, 146, 48, -1, -1, -1, 52,
68, -1, 55, -1, 57, 58, 59, 60, 61, 62,
-1, -1, 80, 81, 67, -1, -1, 70, -1, -1,
-1, 74, -1, -1, 52, -1, -1, 55, 81, 57,
58, 59, 60, 61, 62, 88, -1, -1, -1, 67,
-1, -1, 70, -1, -1, -1, 74, -1, -1, 117,
118, 104, 120, 81, -1, -1, -1, 125, -1, 127,
88, -1, -1, -1, -1, -1, -1, -1, 121, -1,
138, 124, 125, 11, 12, 143, 104, 130, -1, -1,
-1, -1, -1, -1, -1, 138, 139, 140, 141, -1,
-1, 144, -1, 146, -1, -1, 124, 125, 11, 12,
-1, -1, 130, -1, -1, -1, -1, -1, -1, -1,
138, 139, 140, 141, 52, -1, 144, 55, 146, 57,
58, 59, 60, 61, -1, -1, -1, -1, -1, 67,
-1, -1, 70, -1, -1, -1, 74, -1, -1, 52,
-1, -1, 55, 81, 57, 58, 59, 60, 61, -1,
88, -1, -1, -1, 67, -1, -1, 70, -1, -1,
-1, 74, -1, -1, -1, -1, 104, -1, 81, -1,
-1, -1, 10, 11, 12, 88, -1, -1, -1, -1,
-1, -1, -1, 121, -1, -1, 124, 125, 11, -1,
-1, 104, 130, -1, -1, -1, -1, -1, -1, -1,
138, 139, 140, 141, -1, -1, 144, -1, 146, -1,
-1, 124, 125, 11, -1, -1, -1, 130, -1, -1,
-1, -1, -1, -1, -1, 138, 139, 140, 141, 52,
68, 144, 55, 146, 57, 58, 59, 60, 61, 62,
-1, -1, 80, 81, 67, -1, -1, 70, -1, -1,
-1, 74, -1, -1, 52, -1, -1, 55, 81, 57,
58, 59, 60, 61, 62, 88, -1, -1, -1, 67,
-1, -1, 70, -1, -1, -1, 74, -1, -1, 117,
118, 104, 120, 81, -1, -1, -1, 125, -1, 127,
88, -1, -1, -1, -1, -1, -1, -1, -1, -1,
138, 124, 125, 11, -1, 143, 104, 130, -1, -1,
-1, -1, -1, -1, -1, 138, 139, 140, 141, -1,
-1, 144, -1, 146, -1, -1, 124, 125, 11, -1,
-1, -1, 130, -1, -1, -1, 10, 11, 12, -1,
138, 139, 140, 141, 52, -1, 144, 55, 146, 57,
58, 59, 60, 61, -1, -1, -1, -1, -1, 67,
-1, -1, 70, -1, -1, -1, 74, -1, -1, 52,
-1, -1, 55, 81, 57, 58, 59, 60, 61, -1,
88, -1, -1, -1, 67, -1, -1, 70, -1, -1,
-1, 74, -1, -1, 68, -1, 104, -1, 81, -1,
-1, 10, 11, 12, -1, 88, 80, 81, -1, -1,
-1, -1, -1, -1, -1, -1, 124, 125, -1, -1,
-1, 104, 130, -1, -1, -1, -1, -1, -1, -1,
138, 139, 140, 141, -1, -1, 144, -1, 146, -1,
-1, 124, 125, 117, 118, 119, 120, 130, -1, -1,
-1, 125, -1, 127, -1, 138, 139, 140, 141, 68,
-1, 144, -1, 146, 138, -1, -1, -1, -1, 143,
-1, 80, 81, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 48, -1, 50, -1, -1,
53, 54, -1, -1, -1, -1, -1, -1, -1, 62,
63, 64, 65, -1, -1, -1, -1, -1, 117, 118,
73, 120, 75, 76, 77, 78, 125, -1, 127, 82,
-1, -1, -1, -1, 87, -1, -1, -1, -1, 138,
-1, -1, -1, -1, 143, -1, -1, -1, -1, -1,
-1, -1, 105, 106, 107, 108, 109, 110, 111, 112,
-1, -1, -1, -1, -1, 118, 119, 120, 121, -1,
-1, -1, -1, -1, 127, 128, -1, -1, 131, 132,
-1, -1, 48, 136, 50, -1, -1, 53, 54, 142,
143, -1, 145, -1, -1, -1, 62, 63, 64, 65,
153, -1, -1, -1, -1, -1, -1, 73, -1, 75,
76, 77, 78, -1, -1, -1, 82, -1, -1, 172,
-1, 87, -1, 55, -1, 57, 58, 59, 60, -1,
-1, 55, -1, 57, 58, 59, 60, -1, 70, 105,
106, 107, 108, 109, 110, 111, 112, -1, -1, -1,
-1, -1, 118, 119, 120, 121, 88, -1, -1, -1,
-1, 127, 128, -1, 88, 131, 132, -1, -1, 48,
136, 50, 104, -1, 53, 54, 142, 143, -1, 145,
104, -1, -1, 62, 63, 64, 65, 153, -1, -1,
-1, -1, 124, 125, 73, -1, 75, 76, 77, 78,
124, 125, -1, 82, -1, -1, 172, -1, 87, 141,
-1, -1, -1, -1, 146, -1, -1, 141, -1, -1,
-1, -1, 146, -1, -1, -1, 105, 106, 107, 108,
109, 110, 111, 112, -1, -1, -1, 169, -1, 118,
119, 120, 121, -1, -1, 169, -1, -1, 127, 128,
-1, -1, 131, 132, -1, -1, 48, 136, 50, -1,
-1, 53, 54, 142, 143, -1, 145, -1, -1, -1,
62, 63, 64, 65, 153, -1, -1, -1, -1, -1,
-1, 73, -1, 75, 76, 77, 78, -1, -1, -1,
82, -1, -1, 172, -1, 87, -1, 55, -1, 57,
58, 59, 60, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 70, 105, 106, 107, 108, 109, 110, 111,
112, -1, -1, -1, -1, -1, 118, 119, 120, 121,
88, -1, -1, -1, -1, 127, 128, -1, -1, 131,
132, -1, -1, 48, 136, 50, 104, -1, 53, 54,
142, 143, -1, 145, -1, -1, -1, 62, 63, 64,
65, 153, -1, -1, -1, -1, 124, 125, 73, -1,
75, 76, 77, 78, -1, -1, -1, 82, -1, -1,
172, -1, 87, 141, -1, -1, -1, -1, 146, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
105, 106, 107, 108, 109, 110, 111, 112, -1, -1,
-1, -1, -1, 118, 119, 120, 121, -1, -1, -1,
-1, -1, 127, 128, -1, -1, 131, 132, -1, -1,
48, 136, 50, -1, -1, 53, 54, 142, 143, -1,
145, -1, -1, -1, 62, 63, 64, 65, 153, -1,
-1, -1, -1, -1, -1, 73, -1, 75, 76, 77,
78, -1, -1, -1, 82, -1, -1, 172, -1, 87,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 105, 106, 107,
108, 109, 110, 111, 112, -1, -1, -1, -1, -1,
118, 119, 120, 121, -1, -1, -1, -1, -1, 127,
128, -1, -1, 131, 132, -1, -1, 48, 136, 50,
-1, -1, 53, 54, 142, 143, -1, 145, 10, 11,
12, 62, 63, 64, 65, 153, -1, -1, -1, -1,
-1, -1, 73, -1, 75, 76, 77, 78, -1, -1,
-1, 82, -1, -1, 172, 48, 87, 50, -1, -1,
-1, 54, -1, -1, -1, -1, 48, -1, 50, 62,
63, 64, 65, -1, 105, 106, 107, 108, 109, 110,
111, 112, 75, 76, 77, -1, 68, 118, 119, 120,
121, -1, -1, -1, 87, -1, 127, 128, 80, 81,
131, 132, -1, -1, -1, 136, -1, -1, -1, -1,
-1, 142, 143, -1, 145, -1, -1, -1, 111, 112,
-1, -1, 153, -1, -1, -1, -1, -1, 121, -1,
-1, -1, -1, -1, 127, 117, 118, -1, 120, 132,
48, 172, 50, 125, -1, 127, 54, -1, -1, -1,
143, -1, 145, -1, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
-1, -1, -1, -1, 82, -1, -1, -1, -1, 87,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 111, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 121, -1, 48, -1, 50, -1, 127,
53, 54, -1, -1, 132, -1, -1, -1, -1, 62,
63, 64, 65, -1, 142, 143, -1, 145, -1, -1,
73, -1, 75, 76, 77, 78, -1, -1, -1, 82,
-1, -1, 160, -1, 87, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 105, 106, 107, 108, 109, 110, 111, 112,
-1, -1, -1, -1, -1, 118, 119, 120, 121, -1,
48, -1, 50, -1, 127, 128, 54, -1, 131, 132,
-1, -1, -1, 136, 62, 63, 64, 65, -1, 142,
143, -1, 145, -1, -1, -1, -1, 75, 76, 77,
48, -1, 50, -1, 82, -1, 54, -1, -1, 87,
-1, -1, -1, -1, 62, 63, 64, 65, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
-1, -1, -1, 111, -1, -1, -1, -1, -1, 87,
-1, -1, -1, 121, -1, -1, -1, -1, -1, 127,
-1, -1, -1, 131, 132, -1, -1, -1, -1, -1,
-1, -1, -1, 111, 142, 143, -1, 145, -1, -1,
-1, -1, -1, 121, -1, -1, -1, -1, -1, 127,
-1, -1, -1, -1, 132, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 143, -1, 145
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_int16 yystos[] =
{
0, 148, 149, 150, 176, 177, 285, 3, 4, 5,
6, 8, 9, 10, 11, 51, 55, 57, 58, 59,
60, 66, 70, 71, 79, 80, 81, 85, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 113, 115, 117, 122, 124,
125, 126, 129, 134, 137, 141, 146, 159, 162, 163,
164, 167, 169, 170, 173, 275, 276, 284, 11, 12,
52, 55, 57, 58, 59, 60, 61, 62, 67, 70,
74, 81, 88, 104, 124, 125, 130, 138, 139, 140,
141, 144, 146, 237, 238, 242, 244, 246, 252, 253,
257, 258, 263, 264, 265, 266, 0, 48, 50, 53,
54, 62, 63, 64, 65, 73, 75, 76, 77, 78,
82, 87, 105, 106, 107, 108, 109, 110, 111, 112,
118, 119, 120, 121, 127, 128, 131, 132, 136, 142,
143, 145, 153, 180, 182, 183, 185, 188, 208, 259,
262, 285, 151, 169, 169, 169, 169, 169, 169, 169,
160, 169, 160, 169, 169, 169, 169, 169, 169, 169,
169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
169, 169, 11, 52, 67, 138, 139, 240, 257, 258,
263, 160, 169, 169, 15, 169, 275, 160, 169, 169,
169, 275, 275, 275, 275, 275, 11, 55, 57, 58,
59, 60, 70, 81, 88, 104, 124, 125, 141, 146,
242, 273, 275, 10, 11, 12, 68, 80, 81, 117,
118, 120, 125, 127, 155, 159, 164, 279, 280, 282,
285, 275, 16, 17, 18, 19, 20, 21, 22, 23,
24, 34, 156, 157, 158, 159, 160, 161, 162, 163,
164, 165, 166, 168, 169, 170, 6, 8, 237, 238,
169, 61, 130, 70, 104, 264, 264, 264, 282, 169,
264, 13, 15, 17, 62, 145, 159, 164, 169, 235,
236, 285, 236, 151, 10, 11, 12, 117, 154, 283,
243, 285, 142, 186, 187, 282, 169, 76, 87, 185,
185, 185, 185, 185, 185, 6, 185, 208, 185, 154,
184, 112, 185, 169, 169, 169, 169, 169, 169, 185,
151, 282, 154, 154, 154, 185, 185, 169, 183, 185,
188, 209, 185, 185, 192, 112, 282, 185, 185, 10,
11, 52, 67, 116, 138, 139, 151, 167, 195, 199,
239, 241, 244, 246, 252, 257, 258, 263, 272, 273,
285, 272, 242, 272, 272, 272, 272, 272, 242, 272,
242, 272, 242, 272, 242, 242, 242, 242, 242, 242,
242, 242, 242, 242, 242, 242, 242, 242, 242, 272,
169, 282, 169, 169, 282, 243, 242, 272, 272, 169,
242, 242, 242, 275, 272, 272, 171, 152, 171, 282,
282, 152, 174, 155, 225, 285, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 282, 171, 273,
275, 236, 236, 52, 275, 242, 164, 282, 13, 15,
17, 62, 145, 159, 164, 235, 285, 235, 236, 235,
236, 235, 235, 15, 17, 48, 62, 121, 159, 164,
220, 221, 230, 237, 238, 285, 170, 255, 256, 285,
11, 254, 264, 154, 10, 11, 12, 48, 50, 117,
151, 282, 283, 282, 49, 152, 169, 11, 239, 275,
185, 182, 151, 282, 282, 282, 282, 282, 282, 282,
177, 151, 275, 160, 10, 11, 199, 239, 241, 282,
153, 155, 169, 169, 169, 62, 237, 282, 169, 181,
282, 190, 151, 153, 155, 227, 153, 189, 282, 283,
243, 172, 171, 171, 171, 171, 171, 171, 171, 161,
171, 161, 171, 171, 171, 171, 152, 171, 152, 171,
152, 171, 171, 171, 171, 171, 171, 171, 171, 171,
171, 171, 275, 242, 272, 282, 161, 171, 171, 282,
171, 161, 171, 171, 171, 171, 275, 275, 15, 159,
280, 169, 205, 285, 275, 154, 171, 174, 171, 171,
171, 235, 164, 282, 235, 235, 235, 235, 235, 170,
235, 186, 121, 237, 238, 230, 235, 235, 171, 15,
152, 13, 17, 62, 145, 159, 164, 169, 233, 283,
285, 13, 15, 17, 62, 145, 159, 164, 169, 234,
271, 275, 285, 282, 172, 254, 186, 169, 245, 247,
154, 185, 186, 3, 4, 5, 9, 10, 15, 51,
66, 71, 79, 80, 113, 115, 117, 122, 126, 129,
134, 137, 159, 162, 163, 167, 169, 173, 222, 223,
230, 231, 277, 278, 284, 285, 171, 171, 177, 151,
152, 152, 152, 152, 152, 152, 172, 260, 152, 171,
10, 11, 12, 61, 62, 138, 210, 211, 212, 213,
214, 263, 285, 169, 227, 193, 153, 242, 196, 10,
13, 164, 198, 52, 275, 237, 13, 17, 62, 145,
159, 164, 232, 283, 285, 242, 177, 169, 151, 153,
154, 155, 226, 267, 268, 68, 69, 151, 275, 13,
17, 62, 116, 145, 159, 164, 169, 191, 215, 217,
283, 154, 282, 169, 169, 242, 242, 242, 171, 171,
171, 169, 171, 169, 225, 220, 17, 34, 48, 62,
64, 80, 111, 114, 117, 133, 145, 159, 218, 285,
275, 235, 271, 171, 49, 237, 238, 233, 234, 171,
171, 205, 15, 230, 164, 233, 233, 233, 233, 233,
233, 170, 225, 164, 282, 234, 234, 234, 234, 234,
234, 170, 225, 174, 152, 155, 49, 239, 275, 177,
80, 248, 285, 187, 169, 160, 160, 240, 160, 15,
169, 277, 160, 169, 275, 275, 275, 275, 242, 273,
275, 171, 15, 152, 16, 17, 18, 19, 20, 21,
22, 23, 24, 34, 156, 157, 158, 159, 160, 161,
162, 163, 164, 165, 166, 168, 169, 170, 185, 185,
172, 261, 10, 10, 10, 10, 10, 10, 177, 284,
153, 214, 161, 152, 15, 282, 13, 17, 62, 145,
159, 164, 169, 233, 234, 194, 217, 153, 220, 171,
164, 215, 220, 171, 171, 232, 164, 232, 232, 232,
232, 232, 169, 170, 171, 172, 200, 267, 178, 179,
282, 68, 69, 172, 269, 285, 153, 153, 151, 228,
229, 275, 285, 153, 164, 215, 215, 6, 16, 17,
18, 19, 20, 21, 22, 23, 24, 34, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
69, 113, 152, 155, 157, 158, 159, 160, 161, 162,
163, 164, 165, 166, 167, 169, 170, 173, 206, 215,
215, 215, 215, 154, 169, 170, 218, 155, 225, 227,
254, 273, 273, 171, 171, 171, 273, 273, 171, 62,
240, 186, 169, 151, 174, 169, 230, 233, 234, 225,
225, 169, 169, 218, 233, 171, 271, 234, 171, 271,
275, 171, 171, 172, 154, 249, 250, 285, 242, 242,
242, 169, 242, 169, 242, 242, 242, 275, 171, 171,
15, 231, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 282, 171, 273, 275, 177, 152, 152,
171, 152, 219, 285, 152, 152, 152, 172, 171, 233,
234, 183, 188, 207, 208, 213, 282, 155, 164, 155,
224, 285, 225, 227, 171, 169, 215, 171, 171, 169,
232, 203, 271, 220, 172, 151, 152, 151, 169, 153,
153, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
72, 74, 76, 77, 78, 79, 80, 81, 82, 83,
84, 86, 87, 88, 104, 111, 112, 113, 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,
147, 151, 152, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 173, 174, 270, 228, 172, 152, 215, 10,
171, 174, 171, 275, 216, 271, 275, 152, 171, 171,
171, 171, 205, 240, 236, 49, 171, 282, 267, 220,
225, 225, 220, 220, 169, 174, 169, 174, 152, 118,
119, 120, 138, 143, 251, 281, 282, 151, 152, 171,
161, 161, 272, 161, 282, 171, 161, 171, 171, 275,
154, 171, 174, 172, 10, 10, 153, 10, 171, 10,
10, 10, 153, 224, 242, 51, 66, 71, 122, 126,
129, 159, 162, 163, 164, 167, 169, 173, 274, 276,
152, 205, 197, 171, 169, 205, 204, 220, 174, 171,
267, 179, 272, 272, 269, 172, 151, 275, 222, 174,
191, 218, 236, 15, 171, 172, 171, 171, 171, 220,
220, 143, 281, 143, 281, 143, 281, 282, 118, 119,
120, 15, 177, 251, 169, 169, 171, 169, 171, 169,
275, 171, 152, 171, 152, 153, 152, 171, 171, 152,
171, 169, 160, 160, 160, 15, 169, 274, 160, 274,
274, 274, 274, 274, 242, 273, 274, 16, 17, 18,
19, 20, 21, 22, 23, 24, 34, 156, 157, 158,
159, 162, 163, 164, 165, 166, 168, 169, 170, 194,
220, 169, 201, 220, 171, 205, 172, 172, 171, 172,
228, 171, 151, 171, 205, 205, 205, 171, 171, 281,
281, 281, 281, 281, 281, 172, 273, 273, 273, 273,
153, 10, 153, 10, 10, 153, 153, 10, 153, 242,
242, 242, 242, 169, 242, 242, 171, 171, 274, 274,
274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
274, 274, 274, 274, 274, 274, 274, 282, 171, 273,
275, 171, 202, 220, 171, 205, 15, 172, 205, 267,
218, 218, 218, 205, 205, 171, 171, 171, 171, 152,
219, 171, 152, 152, 171, 171, 161, 161, 161, 282,
171, 161, 274, 154, 171, 174, 205, 220, 171, 205,
172, 10, 171, 153, 10, 10, 153, 169, 169, 169,
171, 169, 274, 171, 205, 153, 171, 152, 171, 273,
273, 273, 273, 205, 218, 153, 10, 153, 171, 171,
171, 171, 218, 171, 153
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_int16 yyr1[] =
{
0, 175, 176, 176, 176, 177, 177, 177, 178, 178,
179, 179, 179, 181, 180, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 184, 183, 185, 185, 185, 185, 185, 185,
185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
185, 185, 185, 185, 186, 186, 187, 187, 187, 189,
188, 188, 190, 188, 188, 188, 191, 191, 193, 192,
192, 194, 194, 196, 195, 197, 195, 198, 195, 200,
199, 201, 199, 202, 199, 203, 199, 204, 199, 199,
205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
205, 205, 205, 205, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 207, 207, 207, 208, 209, 208,
208, 208, 210, 210, 211, 211, 212, 212, 213, 213,
213, 213, 213, 213, 213, 213, 213, 214, 214, 214,
214, 215, 215, 215, 215, 215, 215, 215, 215, 215,
215, 215, 216, 215, 217, 217, 218, 218, 218, 219,
219, 220, 220, 220, 220, 220, 221, 221, 222, 222,
222, 222, 222, 223, 223, 224, 224, 225, 225, 226,
226, 226, 226, 226, 227, 227, 227, 227, 227, 227,
228, 228, 228, 229, 229, 229, 229, 230, 230, 230,
230, 230, 230, 230, 230, 231, 231, 232, 232, 232,
232, 232, 232, 232, 232, 232, 233, 233, 233, 233,
233, 233, 233, 233, 233, 233, 233, 234, 234, 234,
234, 234, 234, 234, 234, 234, 234, 234, 235, 235,
235, 235, 235, 235, 235, 235, 235, 235, 236, 236,
236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
236, 236, 237, 237, 237, 237, 237, 237, 237, 237,
237, 237, 237, 237, 238, 239, 239, 239, 239, 239,
239, 239, 239, 239, 239, 239, 239, 239, 240, 240,
240, 240, 240, 240, 240, 240, 241, 241, 242, 242,
242, 242, 243, 243, 243, 243, 245, 244, 247, 246,
248, 248, 249, 249, 250, 250, 251, 251, 251, 251,
251, 251, 251, 251, 251, 251, 252, 253, 253, 253,
253, 254, 254, 255, 255, 255, 256, 256, 256, 257,
257, 257, 258, 258, 258, 260, 259, 261, 259, 259,
259, 262, 262, 262, 263, 263, 263, 264, 264, 264,
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
264, 264, 265, 265, 265, 266, 268, 267, 269, 269,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 271, 271, 272, 272, 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, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
277, 277, 277, 277, 277, 278, 278, 278, 278, 278,
278, 278, 278, 278, 278, 278, 279, 279, 279, 279,
279, 280, 280, 280, 280, 281, 281, 281, 282, 282,
282, 282, 282, 282, 282, 282, 282, 282, 282, 283,
283, 283, 283, 284, 284, 284, 284, 285
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
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, 2,
2, 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, 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, 1, 2, 3, 2, 2, 2, 2, 2, 3,
4, 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, 1, 2,
2, 2, 2, 2, 3, 4, 1, 1, 2, 2,
2, 2, 2, 3, 4, 7, 3, 1, 2, 2,
2, 2, 2, 2, 3, 4, 7, 3, 1, 1,
2, 2, 2, 2, 2, 2, 3, 4, 1, 1,
2, 2, 2, 2, 2, 2, 3, 4, 5, 9,
9, 9, 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, 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, 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, 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,
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, 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, 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 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 <stdio.h> /* INFRINGES ON USER NAME SPACE */
# define YYFPRINTF fprintf
# endif
# define YYDPRINTF(Args) \
do { \
if (yydebug) \
YYFPRINTF Args; \
} while (0)
/* YY_LOCATION_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 YY_LOCATION_PRINT
# if 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 YY_LOCATION_PRINT(File, Loc) \
yy_location_print_ (File, &(Loc))
# else
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
# endif
# endif /* !defined YY_LOCATION_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;
YYUSE (yyoutput);
YYUSE (yylocationp);
if (!yyvaluep)
return;
# ifdef YYPRINT
if (yykind < YYNTOKENS)
YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
YYUSE (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));
YY_LOCATION_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)
{
YYUSE (yyvaluep);
YYUSE (yylocationp);
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
YYUSE (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
goto yyexhaustedlab;
#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)
goto yyexhaustedlab;
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)
goto yyexhaustedlab;
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 459 "dtool/src/cppparser/cppBison.yxx"
{
current_expr = (yyvsp[0].u.expr);
}
#line 4027 "built/tmp/cppBison.yxx.c"
break;
case 4: /* grammar: START_TYPE full_type */
#line 463 "dtool/src/cppparser/cppBison.yxx"
{
current_type = (yyvsp[0].u.type);
}
#line 4035 "built/tmp/cppBison.yxx.c"
break;
case 10: /* constructor_init: name '(' optional_const_expr_comma ')' */
#line 481 "dtool/src/cppparser/cppBison.yxx"
{
delete (yyvsp[-1].u.expr);
}
#line 4043 "built/tmp/cppBison.yxx.c"
break;
case 11: /* constructor_init: name '(' optional_const_expr_comma ')' ELLIPSIS */
#line 485 "dtool/src/cppparser/cppBison.yxx"
{
delete (yyvsp[-2].u.expr);
}
#line 4051 "built/tmp/cppBison.yxx.c"
break;
case 12: /* constructor_init: name '{' optional_const_expr_comma '}' */
#line 489 "dtool/src/cppparser/cppBison.yxx"
{
delete (yyvsp[-1].u.expr);
}
#line 4059 "built/tmp/cppBison.yxx.c"
break;
case 13: /* $@1: %empty */
#line 501 "dtool/src/cppparser/cppBison.yxx"
{
push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) |
((yyvsp[-1].u.integer) & CPPInstance::SC_c_binding));
}
#line 4068 "built/tmp/cppBison.yxx.c"
break;
case 14: /* extern_c: storage_class '{' $@1 cpp '}' */
#line 506 "dtool/src/cppparser/cppBison.yxx"
{
pop_storage_class();
}
#line 4076 "built/tmp/cppBison.yxx.c"
break;
case 21: /* declaration: KW_BEGIN_PUBLISH */
#line 519 "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 4093 "built/tmp/cppBison.yxx.c"
break;
case 22: /* declaration: KW_END_PUBLISH */
#line 532 "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 4106 "built/tmp/cppBison.yxx.c"
break;
case 23: /* declaration: KW_PUBLISHED ':' */
#line 541 "dtool/src/cppparser/cppBison.yxx"
{
current_scope->set_current_vis(V_published);
}
#line 4114 "built/tmp/cppBison.yxx.c"
break;
case 24: /* declaration: KW_PUBLIC ':' */
#line 545 "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 4126 "built/tmp/cppBison.yxx.c"
break;
case 25: /* declaration: KW_PROTECTED ':' */
#line 553 "dtool/src/cppparser/cppBison.yxx"
{
current_scope->set_current_vis(V_protected);
}
#line 4134 "built/tmp/cppBison.yxx.c"
break;
case 26: /* declaration: KW_PRIVATE ':' */
#line 557 "dtool/src/cppparser/cppBison.yxx"
{
current_scope->set_current_vis(V_private);
}
#line 4142 "built/tmp/cppBison.yxx.c"
break;
case 27: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER maybe_comma_identifier ')' ';' */
#line 561 "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 4167 "built/tmp/cppBison.yxx.c"
break;
case 28: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 582 "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 4198 "built/tmp/cppBison.yxx.c"
break;
case 29: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 609 "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 4223 "built/tmp/cppBison.yxx.c"
break;
case 30: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 630 "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 4256 "built/tmp/cppBison.yxx.c"
break;
case 31: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 659 "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 4296 "built/tmp/cppBison.yxx.c"
break;
case 32: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 695 "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 4343 "built/tmp/cppBison.yxx.c"
break;
case 33: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ')' ';' */
#line 738 "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 4359 "built/tmp/cppBison.yxx.c"
break;
case 34: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 750 "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 4384 "built/tmp/cppBison.yxx.c"
break;
case 35: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER maybe_comma_identifier ')' ';' */
#line 771 "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 4424 "built/tmp/cppBison.yxx.c"
break;
case 36: /* declaration: KW_MAKE_MAP_KEYS_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 807 "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 4462 "built/tmp/cppBison.yxx.c"
break;
case 37: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 841 "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 4488 "built/tmp/cppBison.yxx.c"
break;
case 38: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 863 "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 4528 "built/tmp/cppBison.yxx.c"
break;
case 39: /* declaration: KW_MAKE_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */
#line 899 "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 4554 "built/tmp/cppBison.yxx.c"
break;
case 40: /* declaration: KW_STATIC_ASSERT '(' const_expr ',' string_literal ')' ';' */
#line 921 "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 4569 "built/tmp/cppBison.yxx.c"
break;
case 41: /* declaration: KW_STATIC_ASSERT '(' const_expr ')' ';' */
#line 932 "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 4583 "built/tmp/cppBison.yxx.c"
break;
case 42: /* $@2: %empty */
#line 945 "dtool/src/cppparser/cppBison.yxx"
{
CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"),
V_public);
push_scope(new_scope);
}
#line 4593 "built/tmp/cppBison.yxx.c"
break;
case 43: /* friend_declaration: KW_FRIEND $@2 declaration */
#line 951 "dtool/src/cppparser/cppBison.yxx"
{
delete current_scope;
pop_scope();
}
#line 4602 "built/tmp/cppBison.yxx.c"
break;
case 44: /* storage_class: empty */
#line 960 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = 0;
}
#line 4610 "built/tmp/cppBison.yxx.c"
break;
case 45: /* storage_class: KW_CONST storage_class */
#line 964 "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 4619 "built/tmp/cppBison.yxx.c"
break;
case 46: /* storage_class: KW_EXTERN storage_class */
#line 969 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern;
}
#line 4627 "built/tmp/cppBison.yxx.c"
break;
case 47: /* storage_class: KW_EXTERN SIMPLE_STRING storage_class */
#line 973 "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 4642 "built/tmp/cppBison.yxx.c"
break;
case 48: /* storage_class: KW_STATIC storage_class */
#line 984 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static;
}
#line 4650 "built/tmp/cppBison.yxx.c"
break;
case 49: /* storage_class: KW_INLINE storage_class */
#line 988 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline;
}
#line 4658 "built/tmp/cppBison.yxx.c"
break;
case 50: /* storage_class: KW_VIRTUAL storage_class */
#line 992 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual;
}
#line 4666 "built/tmp/cppBison.yxx.c"
break;
case 51: /* storage_class: KW_EXPLICIT storage_class */
#line 996 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit;
}
#line 4674 "built/tmp/cppBison.yxx.c"
break;
case 52: /* storage_class: KW_REGISTER storage_class */
#line 1000 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register;
}
#line 4682 "built/tmp/cppBison.yxx.c"
break;
case 53: /* storage_class: KW_VOLATILE storage_class */
#line 1004 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile;
}
#line 4690 "built/tmp/cppBison.yxx.c"
break;
case 54: /* storage_class: KW_MUTABLE storage_class */
#line 1008 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable;
}
#line 4698 "built/tmp/cppBison.yxx.c"
break;
case 55: /* storage_class: KW_CONSTEVAL storage_class */
#line 1012 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_consteval;
}
#line 4706 "built/tmp/cppBison.yxx.c"
break;
case 56: /* storage_class: KW_CONSTEXPR storage_class */
#line 1016 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr;
}
#line 4714 "built/tmp/cppBison.yxx.c"
break;
case 57: /* storage_class: KW_CONSTINIT storage_class */
#line 1020 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constinit;
}
#line 4722 "built/tmp/cppBison.yxx.c"
break;
case 58: /* storage_class: KW_BLOCKING storage_class */
#line 1024 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking;
}
#line 4730 "built/tmp/cppBison.yxx.c"
break;
case 59: /* storage_class: KW_EXTENSION storage_class */
#line 1028 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension;
}
#line 4738 "built/tmp/cppBison.yxx.c"
break;
case 60: /* storage_class: KW_THREAD_LOCAL storage_class */
#line 1032 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local;
}
#line 4746 "built/tmp/cppBison.yxx.c"
break;
case 61: /* storage_class: ATTR_LEFT attribute_specifiers ATTR_RIGHT storage_class */
#line 1036 "dtool/src/cppparser/cppBison.yxx"
{
// Ignore attribute specifiers for now.
(yyval.u.integer) = (yyvsp[0].u.integer);
}
#line 4755 "built/tmp/cppBison.yxx.c"
break;
case 62: /* storage_class: KW_ALIGNAS '(' const_expr ')' storage_class */
#line 1041 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer);
}
#line 4763 "built/tmp/cppBison.yxx.c"
break;
case 63: /* storage_class: KW_ALIGNAS '(' type_decl ')' storage_class */
#line 1045 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[0].u.integer);
}
#line 4771 "built/tmp/cppBison.yxx.c"
break;
case 69: /* $@3: %empty */
#line 1063 "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 4786 "built/tmp/cppBison.yxx.c"
break;
case 70: /* type_like_declaration: storage_class var_type_decl $@3 multiple_instance_identifiers */
#line 1074 "dtool/src/cppparser/cppBison.yxx"
{
pop_storage_class();
}
#line 4794 "built/tmp/cppBison.yxx.c"
break;
case 71: /* type_like_declaration: storage_class type_decl ';' */
#line 1079 "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 4807 "built/tmp/cppBison.yxx.c"
break;
case 72: /* $@4: %empty */
#line 1088 "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 4820 "built/tmp/cppBison.yxx.c"
break;
case 73: /* type_like_declaration: storage_class constructor_prototype $@4 maybe_initialize_or_constructor_body */
#line 1097 "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 4832 "built/tmp/cppBison.yxx.c"
break;
case 74: /* type_like_declaration: storage_class function_prototype maybe_initialize_or_function_body */
#line 1105 "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 4844 "built/tmp/cppBison.yxx.c"
break;
case 76: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */
#line 1121 "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 4859 "built/tmp/cppBison.yxx.c"
break;
case 77: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' multiple_instance_identifiers */
#line 1132 "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 4874 "built/tmp/cppBison.yxx.c"
break;
case 78: /* $@5: %empty */
#line 1147 "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 4889 "built/tmp/cppBison.yxx.c"
break;
case 79: /* typedef_declaration: storage_class var_type_decl $@5 typedef_instance_identifiers */
#line 1158 "dtool/src/cppparser/cppBison.yxx"
{
pop_storage_class();
}
#line 4897 "built/tmp/cppBison.yxx.c"
break;
case 80: /* typedef_declaration: storage_class function_prototype maybe_initialize_or_function_body */
#line 1162 "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 4913 "built/tmp/cppBison.yxx.c"
break;
case 81: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */
#line 1177 "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 4926 "built/tmp/cppBison.yxx.c"
break;
case 82: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' typedef_instance_identifiers */
#line 1186 "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 4939 "built/tmp/cppBison.yxx.c"
break;
case 83: /* $@6: %empty */
#line 1200 "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 4956 "built/tmp/cppBison.yxx.c"
break;
case 84: /* constructor_prototype: IDENTIFIER '(' $@6 function_parameter_list ')' function_post */
#line 1213 "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 4984 "built/tmp/cppBison.yxx.c"
break;
case 85: /* $@7: %empty */
#line 1239 "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 5001 "built/tmp/cppBison.yxx.c"
break;
case 86: /* constructor_prototype: TYPENAME_IDENTIFIER '(' IDENTIFIER ')' '(' $@7 function_parameter_list ')' function_post */
#line 1252 "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 5019 "built/tmp/cppBison.yxx.c"
break;
case 87: /* $@8: %empty */
#line 1266 "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 5036 "built/tmp/cppBison.yxx.c"
break;
case 88: /* constructor_prototype: TYPENAME_IDENTIFIER '(' $@8 function_parameter_list ')' function_post */
#line 1279 "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 5058 "built/tmp/cppBison.yxx.c"
break;
case 89: /* $@9: %empty */
#line 1302 "dtool/src/cppparser/cppBison.yxx"
{
push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope));
}
#line 5066 "built/tmp/cppBison.yxx.c"
break;
case 90: /* function_prototype: '~' name '(' $@9 function_parameter_list ')' function_post */
#line 1306 "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 5089 "built/tmp/cppBison.yxx.c"
break;
case 91: /* $@10: %empty */
#line 1332 "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 92: /* function_prototype: TYPENAME_IDENTIFIER '(' '*' instance_identifier ')' '(' $@10 function_parameter_list ')' function_post maybe_trailing_return_type */
#line 1336 "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 5115 "built/tmp/cppBison.yxx.c"
break;
case 93: /* $@11: %empty */
#line 1350 "dtool/src/cppparser/cppBison.yxx"
{
push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope));
}
#line 5123 "built/tmp/cppBison.yxx.c"
break;
case 94: /* function_prototype: TYPENAME_IDENTIFIER '(' SCOPING '*' instance_identifier ')' '(' $@11 function_parameter_list ')' function_post maybe_trailing_return_type */
#line 1354 "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 5141 "built/tmp/cppBison.yxx.c"
break;
case 95: /* $@12: %empty */
#line 1370 "dtool/src/cppparser/cppBison.yxx"
{
if ((yyvsp[-3].u.identifier) != nullptr) {
push_scope((yyvsp[-3].u.identifier)->get_scope(current_scope, global_scope));
}
}
#line 5151 "built/tmp/cppBison.yxx.c"
break;
case 96: /* function_prototype: KW_OPERATOR type not_paren_formal_parameter_identifier '(' $@12 function_parameter_list ')' function_post */
#line 1376 "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 <name>",
// where <name> 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 5180 "built/tmp/cppBison.yxx.c"
break;
case 97: /* $@13: %empty */
#line 1401 "dtool/src/cppparser/cppBison.yxx"
{
if ((yyvsp[-4].u.identifier) != nullptr) {
push_scope((yyvsp[-4].u.identifier)->get_scope(current_scope, global_scope));
}
}
#line 5190 "built/tmp/cppBison.yxx.c"
break;
case 98: /* function_prototype: KW_OPERATOR KW_CONST type not_paren_formal_parameter_identifier '(' $@13 function_parameter_list ')' function_post */
#line 1407 "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 5210 "built/tmp/cppBison.yxx.c"
break;
case 99: /* function_prototype: IDENTIFIER */
#line 1427 "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 5224 "built/tmp/cppBison.yxx.c"
break;
case 100: /* function_post: empty */
#line 1440 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = 0;
}
#line 5232 "built/tmp/cppBison.yxx.c"
break;
case 101: /* function_post: function_post KW_CONST */
#line 1444 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method;
}
#line 5240 "built/tmp/cppBison.yxx.c"
break;
case 102: /* function_post: function_post KW_VOLATILE */
#line 1448 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method;
}
#line 5248 "built/tmp/cppBison.yxx.c"
break;
case 103: /* function_post: function_post KW_NOEXCEPT */
#line 1452 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept;
}
#line 5256 "built/tmp/cppBison.yxx.c"
break;
case 104: /* function_post: function_post KW_FINAL */
#line 1465 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final;
}
#line 5264 "built/tmp/cppBison.yxx.c"
break;
case 105: /* function_post: function_post KW_OVERRIDE */
#line 1469 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override;
}
#line 5272 "built/tmp/cppBison.yxx.c"
break;
case 106: /* function_post: function_post '&' */
#line 1473 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method;
}
#line 5280 "built/tmp/cppBison.yxx.c"
break;
case 107: /* function_post: function_post ANDAND */
#line 1477 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method;
}
#line 5288 "built/tmp/cppBison.yxx.c"
break;
case 108: /* function_post: function_post KW_MUTABLE */
#line 1481 "dtool/src/cppparser/cppBison.yxx"
{
// Used for lambdas, currently ignored.
(yyval.u.integer) = (yyvsp[-1].u.integer);
}
#line 5297 "built/tmp/cppBison.yxx.c"
break;
case 109: /* function_post: function_post KW_CONSTEXPR */
#line 1486 "dtool/src/cppparser/cppBison.yxx"
{
// Used for lambdas in C++17, currently ignored.
(yyval.u.integer) = (yyvsp[-1].u.integer);
}
#line 5306 "built/tmp/cppBison.yxx.c"
break;
case 110: /* function_post: function_post KW_THROW '(' ')' */
#line 1491 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-3].u.integer);
}
#line 5314 "built/tmp/cppBison.yxx.c"
break;
case 111: /* function_post: function_post KW_THROW '(' name ')' */
#line 1495 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-4].u.integer);
}
#line 5322 "built/tmp/cppBison.yxx.c"
break;
case 112: /* function_post: function_post KW_THROW '(' name ELLIPSIS ')' */
#line 1499 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-5].u.integer);
}
#line 5330 "built/tmp/cppBison.yxx.c"
break;
case 113: /* function_post: function_post ATTR_LEFT attribute_specifiers ATTR_RIGHT */
#line 1503 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.integer) = (yyvsp[-3].u.integer);
}
#line 5338 "built/tmp/cppBison.yxx.c"
break;
case 114: /* function_operator: '!' */
#line 1510 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "!";
}
#line 5346 "built/tmp/cppBison.yxx.c"
break;
case 115: /* function_operator: '~' */
#line 1514 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "~";
}
#line 5354 "built/tmp/cppBison.yxx.c"
break;
case 116: /* function_operator: '*' */
#line 1518 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "*";
}
#line 5362 "built/tmp/cppBison.yxx.c"
break;
case 117: /* function_operator: '/' */
#line 1522 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "/";
}
#line 5370 "built/tmp/cppBison.yxx.c"
break;
case 118: /* function_operator: '%' */
#line 1526 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "%";
}
#line 5378 "built/tmp/cppBison.yxx.c"
break;
case 119: /* function_operator: '+' */
#line 1530 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "+";
}
#line 5386 "built/tmp/cppBison.yxx.c"
break;
case 120: /* function_operator: '-' */
#line 1534 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "-";
}
#line 5394 "built/tmp/cppBison.yxx.c"
break;
case 121: /* function_operator: '|' */
#line 1538 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "|";
}
#line 5402 "built/tmp/cppBison.yxx.c"
break;
case 122: /* function_operator: '&' */
#line 1542 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "&";
}
#line 5410 "built/tmp/cppBison.yxx.c"
break;
case 123: /* function_operator: '^' */
#line 1546 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "^";
}
#line 5418 "built/tmp/cppBison.yxx.c"
break;
case 124: /* function_operator: OROR */
#line 1550 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "||";
}
#line 5426 "built/tmp/cppBison.yxx.c"
break;
case 125: /* function_operator: ANDAND */
#line 1554 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "&&";
}
#line 5434 "built/tmp/cppBison.yxx.c"
break;
case 126: /* function_operator: EQCOMPARE */
#line 1558 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "==";
}
#line 5442 "built/tmp/cppBison.yxx.c"
break;
case 127: /* function_operator: NECOMPARE */
#line 1562 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "!=";
}
#line 5450 "built/tmp/cppBison.yxx.c"
break;
case 128: /* function_operator: LECOMPARE */
#line 1566 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "<=";
}
#line 5458 "built/tmp/cppBison.yxx.c"
break;
case 129: /* function_operator: GECOMPARE */
#line 1570 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = ">=";
}
#line 5466 "built/tmp/cppBison.yxx.c"
break;
case 130: /* function_operator: '<' */
#line 1574 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "<";
}
#line 5474 "built/tmp/cppBison.yxx.c"
break;
case 131: /* function_operator: '>' */
#line 1578 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = ">";
}
#line 5482 "built/tmp/cppBison.yxx.c"
break;
case 132: /* function_operator: SPACESHIP */
#line 1582 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "<=>";
}
#line 5490 "built/tmp/cppBison.yxx.c"
break;
case 133: /* function_operator: LSHIFT */
#line 1586 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "<<";
}
#line 5498 "built/tmp/cppBison.yxx.c"
break;
case 134: /* function_operator: RSHIFT */
#line 1590 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = ">>";
}
#line 5506 "built/tmp/cppBison.yxx.c"
break;
case 135: /* function_operator: '=' */
#line 1594 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "=";
}
#line 5514 "built/tmp/cppBison.yxx.c"
break;
case 136: /* function_operator: ',' */
#line 1598 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = ",";
}
#line 5522 "built/tmp/cppBison.yxx.c"
break;
case 137: /* function_operator: PLUSPLUS */
#line 1602 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "++";
}
#line 5530 "built/tmp/cppBison.yxx.c"
break;
case 138: /* function_operator: MINUSMINUS */
#line 1606 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "--";
}
#line 5538 "built/tmp/cppBison.yxx.c"
break;
case 139: /* function_operator: TIMESEQUAL */
#line 1610 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "*=";
}
#line 5546 "built/tmp/cppBison.yxx.c"
break;
case 140: /* function_operator: DIVIDEEQUAL */
#line 1614 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "/=";
}
#line 5554 "built/tmp/cppBison.yxx.c"
break;
case 141: /* function_operator: MODEQUAL */
#line 1618 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "%=";
}
#line 5562 "built/tmp/cppBison.yxx.c"
break;
case 142: /* function_operator: PLUSEQUAL */
#line 1622 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "+=";
}
#line 5570 "built/tmp/cppBison.yxx.c"
break;
case 143: /* function_operator: MINUSEQUAL */
#line 1626 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "-=";
}
#line 5578 "built/tmp/cppBison.yxx.c"
break;
case 144: /* function_operator: OREQUAL */
#line 1630 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "|=";
}
#line 5586 "built/tmp/cppBison.yxx.c"
break;
case 145: /* function_operator: ANDEQUAL */
#line 1634 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "&=";
}
#line 5594 "built/tmp/cppBison.yxx.c"
break;
case 146: /* function_operator: XOREQUAL */
#line 1638 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "^=";
}
#line 5602 "built/tmp/cppBison.yxx.c"
break;
case 147: /* function_operator: LSHIFTEQUAL */
#line 1642 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "<<=";
}
#line 5610 "built/tmp/cppBison.yxx.c"
break;
case 148: /* function_operator: RSHIFTEQUAL */
#line 1646 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = ">>=";
}
#line 5618 "built/tmp/cppBison.yxx.c"
break;
case 149: /* function_operator: POINTSAT */
#line 1650 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "->";
}
#line 5626 "built/tmp/cppBison.yxx.c"
break;
case 150: /* function_operator: '[' ']' */
#line 1654 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "[]";
}
#line 5634 "built/tmp/cppBison.yxx.c"
break;
case 151: /* function_operator: '(' ')' */
#line 1658 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "()";
}
#line 5642 "built/tmp/cppBison.yxx.c"
break;
case 152: /* function_operator: KW_NEW */
#line 1662 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "new";
}
#line 5650 "built/tmp/cppBison.yxx.c"
break;
case 153: /* function_operator: KW_DELETE */
#line 1666 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.str) = "delete";
}
#line 5658 "built/tmp/cppBison.yxx.c"
break;
case 158: /* $@14: %empty */
#line 1680 "dtool/src/cppparser/cppBison.yxx"
{
push_scope(new CPPTemplateScope(current_scope));
}
#line 5666 "built/tmp/cppBison.yxx.c"
break;
case 159: /* template_declaration: KW_TEMPLATE $@14 '<' template_formal_parameters '>' more_template_declaration */
#line 1684 "dtool/src/cppparser/cppBison.yxx"
{
pop_scope();
}
#line 5674 "built/tmp/cppBison.yxx.c"
break;
case 164: /* template_nonempty_formal_parameters: template_formal_parameter */
#line 1698 "dtool/src/cppparser/cppBison.yxx"
{
CPPTemplateScope *ts = current_scope->as_template_scope();
assert(ts != nullptr);
ts->add_template_parameter((yyvsp[0].u.decl));
}
#line 5684 "built/tmp/cppBison.yxx.c"
break;
case 165: /* template_nonempty_formal_parameters: template_nonempty_formal_parameters ',' template_formal_parameter */
#line 1704 "dtool/src/cppparser/cppBison.yxx"
{
CPPTemplateScope *ts = current_scope->as_template_scope();
assert(ts != nullptr);
ts->add_template_parameter((yyvsp[0].u.decl));
}
#line 5694 "built/tmp/cppBison.yxx.c"
break;
case 168: /* template_formal_parameter: typename_keyword */
#line 1718 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter(nullptr));
}
#line 5702 "built/tmp/cppBison.yxx.c"
break;
case 169: /* template_formal_parameter: typename_keyword name */
#line 1722 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier)));
}
#line 5710 "built/tmp/cppBison.yxx.c"
break;
case 170: /* template_formal_parameter: typename_keyword name '=' full_type */
#line 1726 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[-2].u.identifier), (yyvsp[0].u.type)));
}
#line 5718 "built/tmp/cppBison.yxx.c"
break;
case 171: /* template_formal_parameter: typename_keyword ELLIPSIS */
#line 1730 "dtool/src/cppparser/cppBison.yxx"
{
CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter(nullptr);
ctp->_packed = true;
(yyval.u.decl) = CPPType::new_type(ctp);
}
#line 5728 "built/tmp/cppBison.yxx.c"
break;
case 172: /* template_formal_parameter: typename_keyword ELLIPSIS name */
#line 1736 "dtool/src/cppparser/cppBison.yxx"
{
CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[0].u.identifier));
ctp->_packed = true;
(yyval.u.decl) = CPPType::new_type(ctp);
}
#line 5738 "built/tmp/cppBison.yxx.c"
break;
case 173: /* template_formal_parameter: template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */
#line 1742 "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 5748 "built/tmp/cppBison.yxx.c"
break;
case 174: /* template_formal_parameter: KW_CONST template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */
#line 1748 "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 5759 "built/tmp/cppBison.yxx.c"
break;
case 175: /* template_formal_parameter: template_formal_parameter_type parameter_pack_identifier */
#line 1755 "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 5768 "built/tmp/cppBison.yxx.c"
break;
case 176: /* template_formal_parameter: KW_CONST template_formal_parameter_type parameter_pack_identifier */
#line 1760 "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 5778 "built/tmp/cppBison.yxx.c"
break;
case 177: /* template_formal_parameter_type: simple_type */
#line 1769 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type));
}
#line 5786 "built/tmp/cppBison.yxx.c"
break;
case 178: /* template_formal_parameter_type: IDENTIFIER */
#line 1773 "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 5795 "built/tmp/cppBison.yxx.c"
break;
case 179: /* template_formal_parameter_type: TYPENAME_IDENTIFIER */
#line 1778 "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 5807 "built/tmp/cppBison.yxx.c"
break;
case 180: /* template_formal_parameter_type: TYPEPACK_IDENTIFIER */
#line 1786 "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 5819 "built/tmp/cppBison.yxx.c"
break;
case 181: /* instance_identifier: name_no_final */
#line 1798 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier));
}
#line 5827 "built/tmp/cppBison.yxx.c"
break;
case 182: /* instance_identifier: KW_OPERATOR function_operator */
#line 1802 "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[-1].u.identifier);
if (ident == nullptr) {
ident = new CPPIdentifier("operator "+(yyvsp[0].str), (yylsp[0]));
} else {
ident->_names.push_back("operator "+(yyvsp[0].str));
}
(yyval.u.inst_ident) = new CPPInstanceIdentifier(ident);
}
#line 5845 "built/tmp/cppBison.yxx.c"
break;
case 183: /* instance_identifier: KW_OPERATOR SIMPLE_STRING IDENTIFIER */
#line 1816 "dtool/src/cppparser/cppBison.yxx"
{
// A C++11 literal operator.
if (!(yyvsp[-1].str).empty()) {
yyerror("expected empty string", (yylsp[-1]));
}
CPPIdentifier *ident = (yyvsp[-2].u.identifier);
if (ident == nullptr) {
ident = new CPPIdentifier("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name(), (yylsp[0]));
} else {
ident->_names.push_back("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name());
}
(yyval.u.inst_ident) = new CPPInstanceIdentifier(ident);
}
#line 5864 "built/tmp/cppBison.yxx.c"
break;
case 184: /* instance_identifier: KW_CONST 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_const);
}
#line 5873 "built/tmp/cppBison.yxx.c"
break;
case 185: /* instance_identifier: KW_VOLATILE 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_volatile);
}
#line 5882 "built/tmp/cppBison.yxx.c"
break;
case 186: /* instance_identifier: '*' 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_pointer);
}
#line 5891 "built/tmp/cppBison.yxx.c"
break;
case 187: /* instance_identifier: '&' instance_identifier */
#line 1846 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_reference);
}
#line 5900 "built/tmp/cppBison.yxx.c"
break;
case 188: /* instance_identifier: ANDAND instance_identifier */
#line 1851 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference);
}
#line 5909 "built/tmp/cppBison.yxx.c"
break;
case 189: /* instance_identifier: SCOPING '*' instance_identifier */
#line 1856 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier));
}
#line 5918 "built/tmp/cppBison.yxx.c"
break;
case 190: /* instance_identifier: instance_identifier '[' optional_const_expr ']' */
#line 1861 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident);
(yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr));
}
#line 5927 "built/tmp/cppBison.yxx.c"
break;
case 191: /* instance_identifier: '(' instance_identifier ')' */
#line 1866 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_paren);
}
#line 5936 "built/tmp/cppBison.yxx.c"
break;
case 192: /* $@15: %empty */
#line 1871 "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 5953 "built/tmp/cppBison.yxx.c"
break;
case 193: /* instance_identifier: instance_identifier '(' $@15 formal_parameter_list ')' function_post */
#line 1884 "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 5971 "built/tmp/cppBison.yxx.c"
break;
case 194: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier maybe_trailing_return_type */
#line 1902 "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 5985 "built/tmp/cppBison.yxx.c"
break;
case 195: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier ':' const_expr */
#line 1912 "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 5995 "built/tmp/cppBison.yxx.c"
break;
case 196: /* maybe_trailing_return_type: empty */
#line 1922 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = nullptr;
}
#line 6003 "built/tmp/cppBison.yxx.c"
break;
case 197: /* maybe_trailing_return_type: POINTSAT predefined_type empty_instance_identifier */
#line 1926 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type));
}
#line 6011 "built/tmp/cppBison.yxx.c"
break;
case 198: /* maybe_trailing_return_type: POINTSAT KW_CONST predefined_type empty_instance_identifier */
#line 1930 "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 6020 "built/tmp/cppBison.yxx.c"
break;
case 199: /* maybe_comma_identifier: empty */
#line 1939 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = nullptr;
}
#line 6028 "built/tmp/cppBison.yxx.c"
break;
case 200: /* maybe_comma_identifier: ',' IDENTIFIER */
#line 1943 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 6036 "built/tmp/cppBison.yxx.c"
break;
case 201: /* function_parameter_list: empty */
#line 1951 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = new CPPParameterList;
}
#line 6044 "built/tmp/cppBison.yxx.c"
break;
case 202: /* function_parameter_list: ELLIPSIS */
#line 1955 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = new CPPParameterList;
(yyval.u.param_list)->_includes_ellipsis = true;
}
#line 6053 "built/tmp/cppBison.yxx.c"
break;
case 203: /* function_parameter_list: function_parameters */
#line 1960 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = (yyvsp[0].u.param_list);
}
#line 6061 "built/tmp/cppBison.yxx.c"
break;
case 204: /* function_parameter_list: function_parameters ',' ELLIPSIS */
#line 1964 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = (yyvsp[-2].u.param_list);
(yyval.u.param_list)->_includes_ellipsis = true;
}
#line 6070 "built/tmp/cppBison.yxx.c"
break;
case 205: /* function_parameter_list: function_parameters ELLIPSIS */
#line 1969 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = (yyvsp[-1].u.param_list);
(yyval.u.param_list)->_includes_ellipsis = true;
}
#line 6079 "built/tmp/cppBison.yxx.c"
break;
case 206: /* function_parameters: function_parameter */
#line 1977 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = new CPPParameterList;
(yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance));
}
#line 6088 "built/tmp/cppBison.yxx.c"
break;
case 207: /* function_parameters: function_parameters ',' function_parameter */
#line 1982 "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 6097 "built/tmp/cppBison.yxx.c"
break;
case 208: /* formal_parameter_list: empty */
#line 1990 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = new CPPParameterList;
}
#line 6105 "built/tmp/cppBison.yxx.c"
break;
case 209: /* formal_parameter_list: ELLIPSIS */
#line 1994 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = new CPPParameterList;
(yyval.u.param_list)->_includes_ellipsis = true;
}
#line 6114 "built/tmp/cppBison.yxx.c"
break;
case 210: /* formal_parameter_list: formal_parameters */
#line 1999 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = (yyvsp[0].u.param_list);
}
#line 6122 "built/tmp/cppBison.yxx.c"
break;
case 211: /* formal_parameter_list: formal_parameters ',' ELLIPSIS */
#line 2003 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = (yyvsp[-2].u.param_list);
(yyval.u.param_list)->_includes_ellipsis = true;
}
#line 6131 "built/tmp/cppBison.yxx.c"
break;
case 212: /* formal_parameter_list: formal_parameters ELLIPSIS */
#line 2008 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = (yyvsp[-1].u.param_list);
(yyval.u.param_list)->_includes_ellipsis = true;
}
#line 6140 "built/tmp/cppBison.yxx.c"
break;
case 213: /* formal_parameters: formal_parameter */
#line 2016 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.param_list) = new CPPParameterList;
(yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance));
}
#line 6149 "built/tmp/cppBison.yxx.c"
break;
case 214: /* formal_parameters: formal_parameters ',' formal_parameter */
#line 2021 "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 6158 "built/tmp/cppBison.yxx.c"
break;
case 215: /* template_parameter_maybe_initialize: empty */
#line 2029 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6166 "built/tmp/cppBison.yxx.c"
break;
case 216: /* template_parameter_maybe_initialize: '=' no_angle_bracket_const_expr */
#line 2033 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 6174 "built/tmp/cppBison.yxx.c"
break;
case 217: /* maybe_initialize: empty */
#line 2040 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6182 "built/tmp/cppBison.yxx.c"
break;
case 218: /* maybe_initialize: '=' const_expr */
#line 2044 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 6190 "built/tmp/cppBison.yxx.c"
break;
case 219: /* maybe_initialize_or_constructor_body: ';' */
#line 2051 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6198 "built/tmp/cppBison.yxx.c"
break;
case 220: /* maybe_initialize_or_constructor_body: '{' code '}' */
#line 2055 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6206 "built/tmp/cppBison.yxx.c"
break;
case 221: /* maybe_initialize_or_constructor_body: ':' constructor_inits '{' code '}' */
#line 2059 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6214 "built/tmp/cppBison.yxx.c"
break;
case 222: /* maybe_initialize_or_constructor_body: '=' KW_DEFAULT ';' */
#line 2063 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::get_default());
}
#line 6222 "built/tmp/cppBison.yxx.c"
break;
case 223: /* maybe_initialize_or_constructor_body: '=' KW_DELETE ';' */
#line 2067 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::get_delete());
}
#line 6230 "built/tmp/cppBison.yxx.c"
break;
case 224: /* maybe_initialize_or_function_body: ';' */
#line 2074 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6238 "built/tmp/cppBison.yxx.c"
break;
case 225: /* maybe_initialize_or_function_body: '{' code '}' */
#line 2078 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6246 "built/tmp/cppBison.yxx.c"
break;
case 226: /* maybe_initialize_or_function_body: '=' const_expr ';' */
#line 2082 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[-1].u.expr);
}
#line 6254 "built/tmp/cppBison.yxx.c"
break;
case 227: /* maybe_initialize_or_function_body: '=' KW_DEFAULT ';' */
#line 2086 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::get_default());
}
#line 6262 "built/tmp/cppBison.yxx.c"
break;
case 228: /* maybe_initialize_or_function_body: '=' KW_DELETE ';' */
#line 2090 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::get_delete());
}
#line 6270 "built/tmp/cppBison.yxx.c"
break;
case 229: /* maybe_initialize_or_function_body: '=' '{' structure_init '}' */
#line 2094 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 6278 "built/tmp/cppBison.yxx.c"
break;
case 233: /* structure_init_body: const_expr */
#line 2107 "dtool/src/cppparser/cppBison.yxx"
{
}
#line 6285 "built/tmp/cppBison.yxx.c"
break;
case 237: /* function_parameter: type formal_parameter_identifier maybe_initialize */
#line 2116 "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 6294 "built/tmp/cppBison.yxx.c"
break;
case 238: /* function_parameter: KW_CONST type formal_parameter_identifier maybe_initialize */
#line 2121 "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 6304 "built/tmp/cppBison.yxx.c"
break;
case 239: /* function_parameter: KW_CONST KW_REGISTER type formal_parameter_identifier maybe_initialize */
#line 2127 "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 6314 "built/tmp/cppBison.yxx.c"
break;
case 240: /* function_parameter: type_pack parameter_pack_identifier maybe_initialize */
#line 2133 "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 6323 "built/tmp/cppBison.yxx.c"
break;
case 241: /* function_parameter: KW_CONST type_pack parameter_pack_identifier maybe_initialize */
#line 2138 "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 6333 "built/tmp/cppBison.yxx.c"
break;
case 242: /* function_parameter: KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize */
#line 2144 "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 6343 "built/tmp/cppBison.yxx.c"
break;
case 243: /* function_parameter: KW_REGISTER function_parameter */
#line 2150 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.instance) = (yyvsp[0].u.instance);
}
#line 6351 "built/tmp/cppBison.yxx.c"
break;
case 244: /* function_parameter: ATTR_LEFT attribute_specifiers ATTR_RIGHT function_parameter */
#line 2154 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.instance) = (yyvsp[0].u.instance);
}
#line 6359 "built/tmp/cppBison.yxx.c"
break;
case 245: /* formal_parameter: function_parameter */
#line 2165 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.instance) = (yyvsp[0].u.instance);
}
#line 6367 "built/tmp/cppBison.yxx.c"
break;
case 246: /* formal_parameter: formal_const_expr */
#line 2169 "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 6378 "built/tmp/cppBison.yxx.c"
break;
case 247: /* not_paren_formal_parameter_identifier: empty */
#line 2179 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
}
#line 6386 "built/tmp/cppBison.yxx.c"
break;
case 248: /* not_paren_formal_parameter_identifier: name_no_final */
#line 2183 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier));
}
#line 6394 "built/tmp/cppBison.yxx.c"
break;
case 249: /* not_paren_formal_parameter_identifier: KW_CONST 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_const);
}
#line 6403 "built/tmp/cppBison.yxx.c"
break;
case 250: /* not_paren_formal_parameter_identifier: KW_VOLATILE 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_volatile);
}
#line 6412 "built/tmp/cppBison.yxx.c"
break;
case 251: /* not_paren_formal_parameter_identifier: '*' 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_pointer);
}
#line 6421 "built/tmp/cppBison.yxx.c"
break;
case 252: /* not_paren_formal_parameter_identifier: '&' 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_modifier(IIT_reference);
}
#line 6430 "built/tmp/cppBison.yxx.c"
break;
case 253: /* not_paren_formal_parameter_identifier: ANDAND not_paren_formal_parameter_identifier */
#line 2207 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference);
}
#line 6439 "built/tmp/cppBison.yxx.c"
break;
case 254: /* not_paren_formal_parameter_identifier: SCOPING '*' not_paren_formal_parameter_identifier */
#line 2212 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier));
}
#line 6448 "built/tmp/cppBison.yxx.c"
break;
case 255: /* not_paren_formal_parameter_identifier: not_paren_formal_parameter_identifier '[' optional_const_expr ']' */
#line 2217 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident);
(yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr));
}
#line 6457 "built/tmp/cppBison.yxx.c"
break;
case 256: /* formal_parameter_identifier: empty */
#line 2225 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
}
#line 6465 "built/tmp/cppBison.yxx.c"
break;
case 257: /* formal_parameter_identifier: name_no_final */
#line 2229 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier));
}
#line 6473 "built/tmp/cppBison.yxx.c"
break;
case 258: /* formal_parameter_identifier: KW_CONST 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_const);
}
#line 6482 "built/tmp/cppBison.yxx.c"
break;
case 259: /* formal_parameter_identifier: KW_VOLATILE 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_volatile);
}
#line 6491 "built/tmp/cppBison.yxx.c"
break;
case 260: /* formal_parameter_identifier: '*' 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_pointer);
}
#line 6500 "built/tmp/cppBison.yxx.c"
break;
case 261: /* formal_parameter_identifier: '&' formal_parameter_identifier */
#line 2248 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_reference);
}
#line 6509 "built/tmp/cppBison.yxx.c"
break;
case 262: /* formal_parameter_identifier: ANDAND formal_parameter_identifier */
#line 2253 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference);
}
#line 6518 "built/tmp/cppBison.yxx.c"
break;
case 263: /* formal_parameter_identifier: SCOPING '*' formal_parameter_identifier */
#line 2258 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier));
}
#line 6527 "built/tmp/cppBison.yxx.c"
break;
case 264: /* formal_parameter_identifier: formal_parameter_identifier '[' optional_const_expr ']' */
#line 2263 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident);
(yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr));
}
#line 6536 "built/tmp/cppBison.yxx.c"
break;
case 265: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post */
#line 2268 "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 6546 "built/tmp/cppBison.yxx.c"
break;
case 266: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' */
#line 2274 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_paren);
}
#line 6555 "built/tmp/cppBison.yxx.c"
break;
case 267: /* parameter_pack_identifier: ELLIPSIS */
#line 2282 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
(yyval.u.inst_ident)->_packed = true;
}
#line 6564 "built/tmp/cppBison.yxx.c"
break;
case 268: /* parameter_pack_identifier: ELLIPSIS name */
#line 2287 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier));
(yyval.u.inst_ident)->_packed = true;
}
#line 6573 "built/tmp/cppBison.yxx.c"
break;
case 269: /* parameter_pack_identifier: KW_CONST 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_const);
}
#line 6582 "built/tmp/cppBison.yxx.c"
break;
case 270: /* parameter_pack_identifier: KW_VOLATILE 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_volatile);
}
#line 6591 "built/tmp/cppBison.yxx.c"
break;
case 271: /* parameter_pack_identifier: '*' 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_pointer);
}
#line 6600 "built/tmp/cppBison.yxx.c"
break;
case 272: /* parameter_pack_identifier: '&' parameter_pack_identifier */
#line 2307 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_reference);
}
#line 6609 "built/tmp/cppBison.yxx.c"
break;
case 273: /* parameter_pack_identifier: ANDAND parameter_pack_identifier */
#line 2312 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference);
}
#line 6618 "built/tmp/cppBison.yxx.c"
break;
case 274: /* parameter_pack_identifier: SCOPING '*' parameter_pack_identifier */
#line 2317 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier));
}
#line 6627 "built/tmp/cppBison.yxx.c"
break;
case 275: /* parameter_pack_identifier: parameter_pack_identifier '[' optional_const_expr ']' */
#line 2322 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident);
(yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr));
}
#line 6636 "built/tmp/cppBison.yxx.c"
break;
case 276: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post */
#line 2327 "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 6646 "built/tmp/cppBison.yxx.c"
break;
case 277: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' */
#line 2333 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_paren);
}
#line 6655 "built/tmp/cppBison.yxx.c"
break;
case 278: /* not_paren_empty_instance_identifier: empty */
#line 2341 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
}
#line 6663 "built/tmp/cppBison.yxx.c"
break;
case 279: /* not_paren_empty_instance_identifier: ELLIPSIS */
#line 2345 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
(yyval.u.inst_ident)->_packed = true;
}
#line 6672 "built/tmp/cppBison.yxx.c"
break;
case 280: /* not_paren_empty_instance_identifier: ELLIPSIS name */
#line 2350 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier));
(yyval.u.inst_ident)->_packed = true;
}
#line 6681 "built/tmp/cppBison.yxx.c"
break;
case 281: /* not_paren_empty_instance_identifier: KW_CONST 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_const);
}
#line 6690 "built/tmp/cppBison.yxx.c"
break;
case 282: /* not_paren_empty_instance_identifier: KW_VOLATILE 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_volatile);
}
#line 6699 "built/tmp/cppBison.yxx.c"
break;
case 283: /* not_paren_empty_instance_identifier: '*' 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_pointer);
}
#line 6708 "built/tmp/cppBison.yxx.c"
break;
case 284: /* not_paren_empty_instance_identifier: '&' 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_modifier(IIT_reference);
}
#line 6717 "built/tmp/cppBison.yxx.c"
break;
case 285: /* not_paren_empty_instance_identifier: ANDAND not_paren_empty_instance_identifier */
#line 2375 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference);
}
#line 6726 "built/tmp/cppBison.yxx.c"
break;
case 286: /* not_paren_empty_instance_identifier: SCOPING '*' not_paren_empty_instance_identifier */
#line 2380 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier));
}
#line 6735 "built/tmp/cppBison.yxx.c"
break;
case 287: /* not_paren_empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' */
#line 2385 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident);
(yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr));
}
#line 6744 "built/tmp/cppBison.yxx.c"
break;
case 288: /* empty_instance_identifier: empty */
#line 2393 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
}
#line 6752 "built/tmp/cppBison.yxx.c"
break;
case 289: /* empty_instance_identifier: ELLIPSIS */
#line 2397 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr);
(yyval.u.inst_ident)->_packed = true;
}
#line 6761 "built/tmp/cppBison.yxx.c"
break;
case 290: /* empty_instance_identifier: ELLIPSIS name */
#line 2402 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier));
(yyval.u.inst_ident)->_packed = true;
}
#line 6770 "built/tmp/cppBison.yxx.c"
break;
case 291: /* empty_instance_identifier: KW_CONST 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_const);
}
#line 6779 "built/tmp/cppBison.yxx.c"
break;
case 292: /* empty_instance_identifier: KW_VOLATILE 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_volatile);
}
#line 6788 "built/tmp/cppBison.yxx.c"
break;
case 293: /* empty_instance_identifier: '*' 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_pointer);
}
#line 6797 "built/tmp/cppBison.yxx.c"
break;
case 294: /* empty_instance_identifier: '&' 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_modifier(IIT_reference);
}
#line 6806 "built/tmp/cppBison.yxx.c"
break;
case 295: /* empty_instance_identifier: ANDAND not_paren_empty_instance_identifier */
#line 2427 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference);
}
#line 6815 "built/tmp/cppBison.yxx.c"
break;
case 296: /* empty_instance_identifier: SCOPING '*' not_paren_empty_instance_identifier */
#line 2432 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[0].u.inst_ident);
(yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier));
}
#line 6824 "built/tmp/cppBison.yxx.c"
break;
case 297: /* empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' */
#line 2437 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident);
(yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr));
}
#line 6833 "built/tmp/cppBison.yxx.c"
break;
case 298: /* empty_instance_identifier: '(' function_parameter_list ')' function_post maybe_trailing_return_type */
#line 2442 "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 6843 "built/tmp/cppBison.yxx.c"
break;
case 299: /* empty_instance_identifier: '(' '*' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */
#line 2448 "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 6854 "built/tmp/cppBison.yxx.c"
break;
case 300: /* empty_instance_identifier: '(' '&' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */
#line 2455 "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 6865 "built/tmp/cppBison.yxx.c"
break;
case 301: /* empty_instance_identifier: '(' ANDAND not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */
#line 2462 "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 6876 "built/tmp/cppBison.yxx.c"
break;
case 302: /* type: simple_type */
#line 2472 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type));
}
#line 6884 "built/tmp/cppBison.yxx.c"
break;
case 303: /* type: TYPENAME_IDENTIFIER */
#line 2476 "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 6896 "built/tmp/cppBison.yxx.c"
break;
case 304: /* type: KW_TYPENAME name */
#line 2484 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier)));
}
#line 6904 "built/tmp/cppBison.yxx.c"
break;
case 305: /* type: anonymous_struct */
#line 2488 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type));
}
#line 6912 "built/tmp/cppBison.yxx.c"
break;
case 306: /* type: named_struct */
#line 2492 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type));
}
#line 6920 "built/tmp/cppBison.yxx.c"
break;
case 307: /* type: enum */
#line 2496 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type));
}
#line 6928 "built/tmp/cppBison.yxx.c"
break;
case 308: /* type: struct_keyword struct_attributes name */
#line 2500 "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 6948 "built/tmp/cppBison.yxx.c"
break;
case 309: /* type: enum_keyword name_no_final ':' enum_element_type */
#line 2516 "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 6968 "built/tmp/cppBison.yxx.c"
break;
case 310: /* type: KW_DECLTYPE '(' const_expr ')' */
#line 2532 "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 6981 "built/tmp/cppBison.yxx.c"
break;
case 311: /* type: KW_DECLTYPE '(' KW_AUTO ')' */
#line 2541 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto));
}
#line 6989 "built/tmp/cppBison.yxx.c"
break;
case 312: /* type: KW_UNDERLYING_TYPE '(' full_type ')' */
#line 2545 "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 7003 "built/tmp/cppBison.yxx.c"
break;
case 313: /* type: KW_AUTO */
#line 2555 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto));
}
#line 7011 "built/tmp/cppBison.yxx.c"
break;
case 314: /* type_pack: TYPEPACK_IDENTIFIER */
#line 2562 "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 7023 "built/tmp/cppBison.yxx.c"
break;
case 315: /* type_decl: simple_type */
#line 2573 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type((yyvsp[0].u.simple_type));
}
#line 7031 "built/tmp/cppBison.yxx.c"
break;
case 316: /* type_decl: TYPENAME_IDENTIFIER */
#line 2577 "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 7043 "built/tmp/cppBison.yxx.c"
break;
case 317: /* type_decl: KW_TYPENAME name */
#line 2585 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier)));
}
#line 7051 "built/tmp/cppBison.yxx.c"
break;
case 318: /* type_decl: anonymous_struct */
#line 2589 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type));
}
#line 7059 "built/tmp/cppBison.yxx.c"
break;
case 319: /* type_decl: named_struct */
#line 2593 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type)));
}
#line 7067 "built/tmp/cppBison.yxx.c"
break;
case 320: /* type_decl: enum */
#line 2597 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type)));
}
#line 7075 "built/tmp/cppBison.yxx.c"
break;
case 321: /* type_decl: struct_keyword struct_attributes name */
#line 2601 "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 7095 "built/tmp/cppBison.yxx.c"
break;
case 322: /* type_decl: enum_keyword name_no_final ':' enum_element_type */
#line 2617 "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 7115 "built/tmp/cppBison.yxx.c"
break;
case 323: /* type_decl: enum_keyword name */
#line 2633 "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 7137 "built/tmp/cppBison.yxx.c"
break;
case 324: /* type_decl: KW_DECLTYPE '(' const_expr ')' */
#line 2651 "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 7150 "built/tmp/cppBison.yxx.c"
break;
case 325: /* type_decl: KW_DECLTYPE '(' KW_AUTO ')' */
#line 2660 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto));
}
#line 7158 "built/tmp/cppBison.yxx.c"
break;
case 326: /* type_decl: KW_UNDERLYING_TYPE '(' full_type ')' */
#line 2664 "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 7172 "built/tmp/cppBison.yxx.c"
break;
case 327: /* type_decl: KW_AUTO */
#line 2674 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto));
}
#line 7180 "built/tmp/cppBison.yxx.c"
break;
case 328: /* predefined_type: simple_type */
#line 2681 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type));
}
#line 7188 "built/tmp/cppBison.yxx.c"
break;
case 329: /* predefined_type: TYPENAME_IDENTIFIER */
#line 2685 "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 7200 "built/tmp/cppBison.yxx.c"
break;
case 330: /* predefined_type: KW_TYPENAME name */
#line 2693 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier)));
}
#line 7208 "built/tmp/cppBison.yxx.c"
break;
case 331: /* predefined_type: struct_keyword struct_attributes name */
#line 2697 "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 7228 "built/tmp/cppBison.yxx.c"
break;
case 332: /* predefined_type: enum_keyword name */
#line 2713 "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 7248 "built/tmp/cppBison.yxx.c"
break;
case 333: /* predefined_type: KW_DECLTYPE '(' const_expr ')' */
#line 2729 "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 7261 "built/tmp/cppBison.yxx.c"
break;
case 334: /* predefined_type: KW_UNDERLYING_TYPE '(' full_type ')' */
#line 2738 "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 7275 "built/tmp/cppBison.yxx.c"
break;
case 335: /* predefined_type: KW_AUTO */
#line 2748 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto));
}
#line 7283 "built/tmp/cppBison.yxx.c"
break;
case 336: /* var_type_decl: type_decl */
#line 2755 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.decl) = (yyvsp[0].u.decl);
}
#line 7291 "built/tmp/cppBison.yxx.c"
break;
case 337: /* var_type_decl: IDENTIFIER */
#line 2759 "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 7301 "built/tmp/cppBison.yxx.c"
break;
case 338: /* full_type: type empty_instance_identifier */
#line 2767 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type));
}
#line 7309 "built/tmp/cppBison.yxx.c"
break;
case 339: /* full_type: KW_CONST type empty_instance_identifier */
#line 2771 "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 7318 "built/tmp/cppBison.yxx.c"
break;
case 340: /* full_type: type_pack empty_instance_identifier */
#line 2776 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type));
}
#line 7326 "built/tmp/cppBison.yxx.c"
break;
case 341: /* full_type: KW_CONST type_pack empty_instance_identifier */
#line 2780 "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 7335 "built/tmp/cppBison.yxx.c"
break;
case 346: /* $@16: %empty */
#line 2795 "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 7353 "built/tmp/cppBison.yxx.c"
break;
case 347: /* anonymous_struct: struct_keyword struct_attributes '{' $@16 cpp '}' */
#line 2809 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.struct_type) = current_struct;
current_struct->_incomplete = false;
pop_struct();
pop_scope();
}
#line 7364 "built/tmp/cppBison.yxx.c"
break;
case 348: /* $@17: %empty */
#line 2819 "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 7388 "built/tmp/cppBison.yxx.c"
break;
case 349: /* named_struct: struct_keyword struct_attributes name_no_final $@17 maybe_final maybe_class_derivation '{' cpp '}' */
#line 2839 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.struct_type) = current_struct;
current_struct->_incomplete = false;
pop_struct();
pop_scope();
}
#line 7399 "built/tmp/cppBison.yxx.c"
break;
case 351: /* maybe_final: KW_FINAL */
#line 2850 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->_final = true;
}
#line 7407 "built/tmp/cppBison.yxx.c"
break;
case 356: /* base_specification: class_derivation_name */
#line 2867 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false);
}
#line 7415 "built/tmp/cppBison.yxx.c"
break;
case 357: /* base_specification: KW_PUBLIC class_derivation_name */
#line 2871 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_public, false);
}
#line 7423 "built/tmp/cppBison.yxx.c"
break;
case 358: /* base_specification: KW_PROTECTED class_derivation_name */
#line 2875 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_protected, false);
}
#line 7431 "built/tmp/cppBison.yxx.c"
break;
case 359: /* base_specification: KW_PRIVATE class_derivation_name */
#line 2879 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_private, false);
}
#line 7439 "built/tmp/cppBison.yxx.c"
break;
case 360: /* base_specification: KW_VIRTUAL KW_PUBLIC class_derivation_name */
#line 2883 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_public, true);
}
#line 7447 "built/tmp/cppBison.yxx.c"
break;
case 361: /* base_specification: KW_VIRTUAL KW_PROTECTED class_derivation_name */
#line 2887 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_protected, true);
}
#line 7455 "built/tmp/cppBison.yxx.c"
break;
case 362: /* base_specification: KW_VIRTUAL KW_PRIVATE class_derivation_name */
#line 2891 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_private, true);
}
#line 7463 "built/tmp/cppBison.yxx.c"
break;
case 363: /* base_specification: KW_PUBLIC KW_VIRTUAL class_derivation_name */
#line 2895 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_public, true);
}
#line 7471 "built/tmp/cppBison.yxx.c"
break;
case 364: /* base_specification: KW_PROTECTED KW_VIRTUAL class_derivation_name */
#line 2899 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_protected, true);
}
#line 7479 "built/tmp/cppBison.yxx.c"
break;
case 365: /* base_specification: KW_PRIVATE KW_VIRTUAL class_derivation_name */
#line 2903 "dtool/src/cppparser/cppBison.yxx"
{
current_struct->append_derivation((yyvsp[0].u.type), V_private, true);
}
#line 7487 "built/tmp/cppBison.yxx.c"
break;
case 366: /* enum: enum_decl '{' enum_body '}' */
#line 2910 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.enum_type) = current_enum;
current_enum = nullptr;
}
#line 7496 "built/tmp/cppBison.yxx.c"
break;
case 367: /* enum_decl: enum_keyword ':' enum_element_type */
#line 2918 "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 7504 "built/tmp/cppBison.yxx.c"
break;
case 368: /* enum_decl: enum_keyword */
#line 2922 "dtool/src/cppparser/cppBison.yxx"
{
current_enum = new CPPEnumType((yyvsp[0].u.extension_enum), nullptr, current_scope, nullptr, (yylsp[0]).file);
}
#line 7512 "built/tmp/cppBison.yxx.c"
break;
case 369: /* enum_decl: enum_keyword name_no_final ':' enum_element_type */
#line 2926 "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 7521 "built/tmp/cppBison.yxx.c"
break;
case 370: /* enum_decl: enum_keyword name_no_final */
#line 2931 "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 7530 "built/tmp/cppBison.yxx.c"
break;
case 371: /* enum_element_type: simple_int_type */
#line 2939 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type));
}
#line 7538 "built/tmp/cppBison.yxx.c"
break;
case 372: /* enum_element_type: TYPENAME_IDENTIFIER */
#line 2943 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer);
}
#line 7546 "built/tmp/cppBison.yxx.c"
break;
case 374: /* enum_body_trailing_comma: enum_body_trailing_comma name ',' */
#line 2951 "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 7555 "built/tmp/cppBison.yxx.c"
break;
case 375: /* enum_body_trailing_comma: enum_body_trailing_comma name '=' const_expr ',' */
#line 2956 "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 7564 "built/tmp/cppBison.yxx.c"
break;
case 377: /* enum_body: enum_body_trailing_comma name */
#line 2964 "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 7573 "built/tmp/cppBison.yxx.c"
break;
case 378: /* enum_body: enum_body_trailing_comma name '=' const_expr */
#line 2969 "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 7582 "built/tmp/cppBison.yxx.c"
break;
case 379: /* enum_keyword: KW_ENUM */
#line 2977 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.extension_enum) = CPPExtensionType::T_enum;
}
#line 7590 "built/tmp/cppBison.yxx.c"
break;
case 380: /* enum_keyword: KW_ENUM KW_CLASS */
#line 2981 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.extension_enum) = CPPExtensionType::T_enum_class;
}
#line 7598 "built/tmp/cppBison.yxx.c"
break;
case 381: /* enum_keyword: KW_ENUM KW_STRUCT */
#line 2985 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.extension_enum) = CPPExtensionType::T_enum_struct;
}
#line 7606 "built/tmp/cppBison.yxx.c"
break;
case 382: /* struct_keyword: KW_CLASS */
#line 2992 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.extension_enum) = CPPExtensionType::T_class;
}
#line 7614 "built/tmp/cppBison.yxx.c"
break;
case 383: /* struct_keyword: KW_STRUCT */
#line 2996 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.extension_enum) = CPPExtensionType::T_struct;
}
#line 7622 "built/tmp/cppBison.yxx.c"
break;
case 384: /* struct_keyword: KW_UNION */
#line 3000 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.extension_enum) = CPPExtensionType::T_union;
}
#line 7630 "built/tmp/cppBison.yxx.c"
break;
case 385: /* $@18: %empty */
#line 3007 "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 7652 "built/tmp/cppBison.yxx.c"
break;
case 386: /* namespace_declaration: KW_NAMESPACE name '{' $@18 cpp '}' */
#line 3025 "dtool/src/cppparser/cppBison.yxx"
{
pop_scope();
}
#line 7660 "built/tmp/cppBison.yxx.c"
break;
case 387: /* $@19: %empty */
#line 3029 "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 7683 "built/tmp/cppBison.yxx.c"
break;
case 388: /* namespace_declaration: KW_INLINE KW_NAMESPACE name '{' $@19 cpp '}' */
#line 3048 "dtool/src/cppparser/cppBison.yxx"
{
pop_scope();
}
#line 7691 "built/tmp/cppBison.yxx.c"
break;
case 391: /* using_declaration: KW_USING name ';' */
#line 3057 "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 7701 "built/tmp/cppBison.yxx.c"
break;
case 392: /* using_declaration: KW_USING name '=' full_type ';' */
#line 3063 "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 7712 "built/tmp/cppBison.yxx.c"
break;
case 393: /* using_declaration: KW_USING KW_NAMESPACE name ';' */
#line 3070 "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 7722 "built/tmp/cppBison.yxx.c"
break;
case 397: /* simple_int_type: KW_BOOL */
#line 3085 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool);
}
#line 7730 "built/tmp/cppBison.yxx.c"
break;
case 398: /* simple_int_type: KW_CHAR */
#line 3089 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char);
}
#line 7738 "built/tmp/cppBison.yxx.c"
break;
case 399: /* simple_int_type: KW_WCHAR_T */
#line 3093 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t);
}
#line 7746 "built/tmp/cppBison.yxx.c"
break;
case 400: /* simple_int_type: KW_CHAR8_T */
#line 3097 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char8_t);
}
#line 7754 "built/tmp/cppBison.yxx.c"
break;
case 401: /* simple_int_type: KW_CHAR16_T */
#line 3101 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t);
}
#line 7762 "built/tmp/cppBison.yxx.c"
break;
case 402: /* simple_int_type: KW_CHAR32_T */
#line 3105 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t);
}
#line 7770 "built/tmp/cppBison.yxx.c"
break;
case 403: /* simple_int_type: KW_SHORT */
#line 3109 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int,
CPPSimpleType::F_short);
}
#line 7779 "built/tmp/cppBison.yxx.c"
break;
case 404: /* simple_int_type: KW_LONG */
#line 3114 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int,
CPPSimpleType::F_long);
}
#line 7788 "built/tmp/cppBison.yxx.c"
break;
case 405: /* simple_int_type: KW_UNSIGNED */
#line 3119 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int,
CPPSimpleType::F_unsigned);
}
#line 7797 "built/tmp/cppBison.yxx.c"
break;
case 406: /* simple_int_type: KW_SIGNED */
#line 3124 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int,
CPPSimpleType::F_signed);
}
#line 7806 "built/tmp/cppBison.yxx.c"
break;
case 407: /* simple_int_type: KW_INT */
#line 3129 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int);
}
#line 7814 "built/tmp/cppBison.yxx.c"
break;
case 408: /* simple_int_type: KW_SHORT 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_short;
}
#line 7823 "built/tmp/cppBison.yxx.c"
break;
case 409: /* simple_int_type: KW_LONG simple_int_type */
#line 3138 "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 7836 "built/tmp/cppBison.yxx.c"
break;
case 410: /* simple_int_type: KW_UNSIGNED simple_int_type */
#line 3147 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = (yyvsp[0].u.simple_type);
(yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned;
}
#line 7845 "built/tmp/cppBison.yxx.c"
break;
case 411: /* simple_int_type: KW_SIGNED simple_int_type */
#line 3152 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = (yyvsp[0].u.simple_type);
(yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed;
}
#line 7854 "built/tmp/cppBison.yxx.c"
break;
case 412: /* simple_float_type: KW_FLOAT */
#line 3160 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float);
}
#line 7862 "built/tmp/cppBison.yxx.c"
break;
case 413: /* simple_float_type: KW_DOUBLE */
#line 3164 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double);
}
#line 7870 "built/tmp/cppBison.yxx.c"
break;
case 414: /* simple_float_type: KW_LONG KW_DOUBLE */
#line 3168 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double,
CPPSimpleType::F_long);
}
#line 7879 "built/tmp/cppBison.yxx.c"
break;
case 415: /* simple_void_type: KW_VOID */
#line 3176 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void);
}
#line 7887 "built/tmp/cppBison.yxx.c"
break;
case 416: /* $@20: %empty */
#line 3185 "dtool/src/cppparser/cppBison.yxx"
{
current_lexer->_resolve_identifiers = false;
}
#line 7895 "built/tmp/cppBison.yxx.c"
break;
case 417: /* code: $@20 code_block */
#line 3189 "dtool/src/cppparser/cppBison.yxx"
{
current_lexer->_resolve_identifiers = true;
}
#line 7903 "built/tmp/cppBison.yxx.c"
break;
case 529: /* element: KW_WHILE */
#line 3234 "dtool/src/cppparser/cppBison.yxx"
{
}
#line 7910 "built/tmp/cppBison.yxx.c"
break;
case 553: /* optional_const_expr: empty */
#line 3243 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 7918 "built/tmp/cppBison.yxx.c"
break;
case 554: /* optional_const_expr: const_expr */
#line 3247 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 7926 "built/tmp/cppBison.yxx.c"
break;
case 555: /* optional_const_expr_comma: empty */
#line 3254 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = nullptr;
}
#line 7934 "built/tmp/cppBison.yxx.c"
break;
case 556: /* optional_const_expr_comma: const_expr_comma */
#line 3258 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 7942 "built/tmp/cppBison.yxx.c"
break;
case 557: /* const_expr_comma: const_expr */
#line 3265 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 7950 "built/tmp/cppBison.yxx.c"
break;
case 558: /* const_expr_comma: const_expr_comma ',' const_expr */
#line 3269 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 7958 "built/tmp/cppBison.yxx.c"
break;
case 559: /* no_angle_bracket_const_expr: const_operand */
#line 3276 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 7966 "built/tmp/cppBison.yxx.c"
break;
case 560: /* no_angle_bracket_const_expr: '(' full_type ')' no_angle_bracket_const_expr */
#line 3280 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr)));
}
#line 7974 "built/tmp/cppBison.yxx.c"
break;
case 561: /* no_angle_bracket_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3284 "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 7982 "built/tmp/cppBison.yxx.c"
break;
case 562: /* no_angle_bracket_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3288 "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 7990 "built/tmp/cppBison.yxx.c"
break;
case 563: /* no_angle_bracket_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3292 "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 7998 "built/tmp/cppBison.yxx.c"
break;
case 564: /* no_angle_bracket_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3296 "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 8006 "built/tmp/cppBison.yxx.c"
break;
case 565: /* no_angle_bracket_const_expr: KW_SIZEOF '(' full_type ')' */
#line 3300 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type)));
}
#line 8014 "built/tmp/cppBison.yxx.c"
break;
case 566: /* no_angle_bracket_const_expr: KW_SIZEOF no_angle_bracket_const_expr */
#line 3304 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr)));
}
#line 8022 "built/tmp/cppBison.yxx.c"
break;
case 567: /* no_angle_bracket_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */
#line 3308 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier)));
}
#line 8030 "built/tmp/cppBison.yxx.c"
break;
case 568: /* no_angle_bracket_const_expr: KW_ALIGNOF '(' full_type ')' */
#line 3312 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type)));
}
#line 8038 "built/tmp/cppBison.yxx.c"
break;
case 569: /* no_angle_bracket_const_expr: '!' no_angle_bracket_const_expr */
#line 3316 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr));
}
#line 8046 "built/tmp/cppBison.yxx.c"
break;
case 570: /* no_angle_bracket_const_expr: '~' no_angle_bracket_const_expr */
#line 3320 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr));
}
#line 8054 "built/tmp/cppBison.yxx.c"
break;
case 571: /* no_angle_bracket_const_expr: '-' no_angle_bracket_const_expr */
#line 3324 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr));
}
#line 8062 "built/tmp/cppBison.yxx.c"
break;
case 572: /* no_angle_bracket_const_expr: '+' no_angle_bracket_const_expr */
#line 3328 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr));
}
#line 8070 "built/tmp/cppBison.yxx.c"
break;
case 573: /* no_angle_bracket_const_expr: '*' no_angle_bracket_const_expr */
#line 3332 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr));
}
#line 8078 "built/tmp/cppBison.yxx.c"
break;
case 574: /* no_angle_bracket_const_expr: '&' no_angle_bracket_const_expr */
#line 3336 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr));
}
#line 8086 "built/tmp/cppBison.yxx.c"
break;
case 575: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '*' no_angle_bracket_const_expr */
#line 3340 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8094 "built/tmp/cppBison.yxx.c"
break;
case 576: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '/' no_angle_bracket_const_expr */
#line 3344 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8102 "built/tmp/cppBison.yxx.c"
break;
case 577: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '%' no_angle_bracket_const_expr */
#line 3348 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8110 "built/tmp/cppBison.yxx.c"
break;
case 578: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '+' no_angle_bracket_const_expr */
#line 3352 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8118 "built/tmp/cppBison.yxx.c"
break;
case 579: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '-' no_angle_bracket_const_expr */
#line 3356 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8126 "built/tmp/cppBison.yxx.c"
break;
case 580: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '|' no_angle_bracket_const_expr */
#line 3360 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8134 "built/tmp/cppBison.yxx.c"
break;
case 581: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '^' no_angle_bracket_const_expr */
#line 3364 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8142 "built/tmp/cppBison.yxx.c"
break;
case 582: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '&' no_angle_bracket_const_expr */
#line 3368 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8150 "built/tmp/cppBison.yxx.c"
break;
case 583: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr OROR no_angle_bracket_const_expr */
#line 3372 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8158 "built/tmp/cppBison.yxx.c"
break;
case 584: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr ANDAND no_angle_bracket_const_expr */
#line 3376 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8166 "built/tmp/cppBison.yxx.c"
break;
case 585: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr EQCOMPARE no_angle_bracket_const_expr */
#line 3380 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8174 "built/tmp/cppBison.yxx.c"
break;
case 586: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr NECOMPARE no_angle_bracket_const_expr */
#line 3384 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8182 "built/tmp/cppBison.yxx.c"
break;
case 587: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LECOMPARE no_angle_bracket_const_expr */
#line 3388 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8190 "built/tmp/cppBison.yxx.c"
break;
case 588: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr GECOMPARE no_angle_bracket_const_expr */
#line 3392 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8198 "built/tmp/cppBison.yxx.c"
break;
case 589: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr SPACESHIP no_angle_bracket_const_expr */
#line 3396 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(SPACESHIP, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8206 "built/tmp/cppBison.yxx.c"
break;
case 590: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LSHIFT no_angle_bracket_const_expr */
#line 3400 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8214 "built/tmp/cppBison.yxx.c"
break;
case 591: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr RSHIFT no_angle_bracket_const_expr */
#line 3404 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8222 "built/tmp/cppBison.yxx.c"
break;
case 592: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '?' no_angle_bracket_const_expr ':' no_angle_bracket_const_expr */
#line 3408 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8230 "built/tmp/cppBison.yxx.c"
break;
case 593: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '[' const_expr ']' */
#line 3412 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr));
}
#line 8238 "built/tmp/cppBison.yxx.c"
break;
case 594: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' const_expr_comma ')' */
#line 3416 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr));
}
#line 8246 "built/tmp/cppBison.yxx.c"
break;
case 595: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' ')' */
#line 3420 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr));
}
#line 8254 "built/tmp/cppBison.yxx.c"
break;
case 596: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '.' name */
#line 3424 "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 8262 "built/tmp/cppBison.yxx.c"
break;
case 597: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr POINTSAT no_angle_bracket_const_expr */
#line 3428 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8270 "built/tmp/cppBison.yxx.c"
break;
case 598: /* no_angle_bracket_const_expr: '(' const_expr_comma ')' */
#line 3432 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[-1].u.expr);
}
#line 8278 "built/tmp/cppBison.yxx.c"
break;
case 599: /* const_expr: const_operand */
#line 3440 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 8286 "built/tmp/cppBison.yxx.c"
break;
case 600: /* const_expr: '(' full_type ')' const_expr */
#line 3444 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr)));
}
#line 8294 "built/tmp/cppBison.yxx.c"
break;
case 601: /* const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3448 "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 8302 "built/tmp/cppBison.yxx.c"
break;
case 602: /* const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3452 "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 8310 "built/tmp/cppBison.yxx.c"
break;
case 603: /* const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3456 "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 8318 "built/tmp/cppBison.yxx.c"
break;
case 604: /* const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3460 "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 8326 "built/tmp/cppBison.yxx.c"
break;
case 605: /* const_expr: TYPENAME_IDENTIFIER '(' optional_const_expr_comma ')' */
#line 3464 "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 8340 "built/tmp/cppBison.yxx.c"
break;
case 606: /* const_expr: TYPENAME_IDENTIFIER '{' optional_const_expr_comma '}' */
#line 3474 "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 8354 "built/tmp/cppBison.yxx.c"
break;
case 607: /* const_expr: KW_INT '(' optional_const_expr_comma ')' */
#line 3484 "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 8364 "built/tmp/cppBison.yxx.c"
break;
case 608: /* const_expr: KW_CHAR '(' optional_const_expr_comma ')' */
#line 3490 "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 8374 "built/tmp/cppBison.yxx.c"
break;
case 609: /* const_expr: KW_WCHAR_T '(' optional_const_expr_comma ')' */
#line 3496 "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 8384 "built/tmp/cppBison.yxx.c"
break;
case 610: /* const_expr: KW_CHAR8_T '(' optional_const_expr_comma ')' */
#line 3502 "dtool/src/cppparser/cppBison.yxx"
{
CPPType *type =
CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char8_t));
(yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr)));
}
#line 8394 "built/tmp/cppBison.yxx.c"
break;
case 611: /* const_expr: KW_CHAR16_T '(' optional_const_expr_comma ')' */
#line 3508 "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 8404 "built/tmp/cppBison.yxx.c"
break;
case 612: /* const_expr: KW_CHAR32_T '(' optional_const_expr_comma ')' */
#line 3514 "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 8414 "built/tmp/cppBison.yxx.c"
break;
case 613: /* const_expr: KW_BOOL '(' optional_const_expr_comma ')' */
#line 3520 "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 8424 "built/tmp/cppBison.yxx.c"
break;
case 614: /* const_expr: KW_SHORT '(' optional_const_expr_comma ')' */
#line 3526 "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 8435 "built/tmp/cppBison.yxx.c"
break;
case 615: /* const_expr: KW_LONG '(' optional_const_expr_comma ')' */
#line 3533 "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 8446 "built/tmp/cppBison.yxx.c"
break;
case 616: /* const_expr: KW_UNSIGNED '(' optional_const_expr_comma ')' */
#line 3540 "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 8457 "built/tmp/cppBison.yxx.c"
break;
case 617: /* const_expr: KW_SIGNED '(' optional_const_expr_comma ')' */
#line 3547 "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 8468 "built/tmp/cppBison.yxx.c"
break;
case 618: /* const_expr: KW_FLOAT '(' optional_const_expr_comma ')' */
#line 3554 "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 8478 "built/tmp/cppBison.yxx.c"
break;
case 619: /* const_expr: KW_DOUBLE '(' optional_const_expr_comma ')' */
#line 3560 "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 8488 "built/tmp/cppBison.yxx.c"
break;
case 620: /* const_expr: KW_SIZEOF '(' full_type ')' */
#line 3566 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type)));
}
#line 8496 "built/tmp/cppBison.yxx.c"
break;
case 621: /* const_expr: KW_SIZEOF const_expr */
#line 3570 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr)));
}
#line 8504 "built/tmp/cppBison.yxx.c"
break;
case 622: /* const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */
#line 3574 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier)));
}
#line 8512 "built/tmp/cppBison.yxx.c"
break;
case 623: /* const_expr: KW_ALIGNOF '(' full_type ')' */
#line 3578 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type)));
}
#line 8520 "built/tmp/cppBison.yxx.c"
break;
case 624: /* const_expr: KW_NEW predefined_type */
#line 3582 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type)));
}
#line 8528 "built/tmp/cppBison.yxx.c"
break;
case 625: /* const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */
#line 3586 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr)));
}
#line 8536 "built/tmp/cppBison.yxx.c"
break;
case 626: /* const_expr: KW_TYPEID '(' full_type ')' */
#line 3590 "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 <typeinfo>", (yylsp[-3]));
}
(yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info));
}
#line 8551 "built/tmp/cppBison.yxx.c"
break;
case 627: /* const_expr: KW_TYPEID '(' const_expr ')' */
#line 3601 "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 <typeinfo>", (yylsp[-3]));
}
(yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info));
}
#line 8566 "built/tmp/cppBison.yxx.c"
break;
case 628: /* const_expr: '!' const_expr */
#line 3612 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr));
}
#line 8574 "built/tmp/cppBison.yxx.c"
break;
case 629: /* const_expr: '~' const_expr */
#line 3616 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr));
}
#line 8582 "built/tmp/cppBison.yxx.c"
break;
case 630: /* const_expr: '-' const_expr */
#line 3620 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr));
}
#line 8590 "built/tmp/cppBison.yxx.c"
break;
case 631: /* const_expr: '+' const_expr */
#line 3624 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr));
}
#line 8598 "built/tmp/cppBison.yxx.c"
break;
case 632: /* const_expr: '*' const_expr */
#line 3628 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr));
}
#line 8606 "built/tmp/cppBison.yxx.c"
break;
case 633: /* const_expr: '&' const_expr */
#line 3632 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr));
}
#line 8614 "built/tmp/cppBison.yxx.c"
break;
case 634: /* const_expr: const_expr '*' const_expr */
#line 3636 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8622 "built/tmp/cppBison.yxx.c"
break;
case 635: /* const_expr: const_expr '/' const_expr */
#line 3640 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8630 "built/tmp/cppBison.yxx.c"
break;
case 636: /* const_expr: const_expr '%' const_expr */
#line 3644 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8638 "built/tmp/cppBison.yxx.c"
break;
case 637: /* const_expr: const_expr '+' const_expr */
#line 3648 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8646 "built/tmp/cppBison.yxx.c"
break;
case 638: /* const_expr: const_expr '-' const_expr */
#line 3652 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8654 "built/tmp/cppBison.yxx.c"
break;
case 639: /* const_expr: const_expr '|' const_expr */
#line 3656 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8662 "built/tmp/cppBison.yxx.c"
break;
case 640: /* const_expr: const_expr '^' const_expr */
#line 3660 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8670 "built/tmp/cppBison.yxx.c"
break;
case 641: /* const_expr: const_expr '&' const_expr */
#line 3664 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8678 "built/tmp/cppBison.yxx.c"
break;
case 642: /* const_expr: const_expr OROR const_expr */
#line 3668 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8686 "built/tmp/cppBison.yxx.c"
break;
case 643: /* const_expr: const_expr ANDAND const_expr */
#line 3672 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8694 "built/tmp/cppBison.yxx.c"
break;
case 644: /* const_expr: const_expr EQCOMPARE const_expr */
#line 3676 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8702 "built/tmp/cppBison.yxx.c"
break;
case 645: /* const_expr: const_expr NECOMPARE const_expr */
#line 3680 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8710 "built/tmp/cppBison.yxx.c"
break;
case 646: /* const_expr: const_expr LECOMPARE const_expr */
#line 3684 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8718 "built/tmp/cppBison.yxx.c"
break;
case 647: /* const_expr: const_expr GECOMPARE const_expr */
#line 3688 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8726 "built/tmp/cppBison.yxx.c"
break;
case 648: /* const_expr: const_expr SPACESHIP const_expr */
#line 3692 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(SPACESHIP, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8734 "built/tmp/cppBison.yxx.c"
break;
case 649: /* const_expr: const_expr '<' const_expr */
#line 3696 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8742 "built/tmp/cppBison.yxx.c"
break;
case 650: /* const_expr: const_expr '>' const_expr */
#line 3700 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8750 "built/tmp/cppBison.yxx.c"
break;
case 651: /* const_expr: const_expr LSHIFT const_expr */
#line 3704 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8758 "built/tmp/cppBison.yxx.c"
break;
case 652: /* const_expr: const_expr RSHIFT const_expr */
#line 3708 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8766 "built/tmp/cppBison.yxx.c"
break;
case 653: /* const_expr: const_expr '?' const_expr ':' const_expr */
#line 3712 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8774 "built/tmp/cppBison.yxx.c"
break;
case 654: /* const_expr: const_expr '[' const_expr ']' */
#line 3716 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr));
}
#line 8782 "built/tmp/cppBison.yxx.c"
break;
case 655: /* const_expr: const_expr '(' const_expr_comma ')' */
#line 3720 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr));
}
#line 8790 "built/tmp/cppBison.yxx.c"
break;
case 656: /* const_expr: const_expr '(' ')' */
#line 3724 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr));
}
#line 8798 "built/tmp/cppBison.yxx.c"
break;
case 657: /* const_expr: const_expr '.' name */
#line 3728 "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 8806 "built/tmp/cppBison.yxx.c"
break;
case 658: /* const_expr: const_expr POINTSAT const_expr */
#line 3732 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 8814 "built/tmp/cppBison.yxx.c"
break;
case 659: /* const_expr: '(' const_expr_comma ')' */
#line 3736 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[-1].u.expr);
}
#line 8822 "built/tmp/cppBison.yxx.c"
break;
case 660: /* const_operand: INTEGER */
#line 3743 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer));
}
#line 8830 "built/tmp/cppBison.yxx.c"
break;
case 661: /* const_operand: KW_TRUE */
#line 3747 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(true);
}
#line 8838 "built/tmp/cppBison.yxx.c"
break;
case 662: /* const_operand: KW_FALSE */
#line 3751 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(false);
}
#line 8846 "built/tmp/cppBison.yxx.c"
break;
case 663: /* const_operand: CHAR_TOK */
#line 3755 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer));
}
#line 8854 "built/tmp/cppBison.yxx.c"
break;
case 664: /* const_operand: REAL */
#line 3759 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.real));
}
#line 8862 "built/tmp/cppBison.yxx.c"
break;
case 665: /* const_operand: string_literal */
#line 3763 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 8870 "built/tmp/cppBison.yxx.c"
break;
case 666: /* const_operand: CUSTOM_LITERAL */
#line 3767 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 8878 "built/tmp/cppBison.yxx.c"
break;
case 667: /* const_operand: IDENTIFIER */
#line 3771 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer);
}
#line 8886 "built/tmp/cppBison.yxx.c"
break;
case 668: /* const_operand: KW_FINAL */
#line 3775 "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 8896 "built/tmp/cppBison.yxx.c"
break;
case 669: /* const_operand: KW_OVERRIDE */
#line 3781 "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 8906 "built/tmp/cppBison.yxx.c"
break;
case 670: /* const_operand: KW_NULLPTR */
#line 3787 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr());
}
#line 8914 "built/tmp/cppBison.yxx.c"
break;
case 671: /* const_operand: '[' capture_list ']' function_post maybe_trailing_return_type '{' code '}' */
#line 3791 "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 8924 "built/tmp/cppBison.yxx.c"
break;
case 672: /* const_operand: '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' */
#line 3797 "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 8935 "built/tmp/cppBison.yxx.c"
break;
case 673: /* const_operand: KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' */
#line 3804 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type)));
}
#line 8943 "built/tmp/cppBison.yxx.c"
break;
case 674: /* const_operand: KW_IS_ABSTRACT '(' full_type ')' */
#line 3808 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type)));
}
#line 8951 "built/tmp/cppBison.yxx.c"
break;
case 675: /* const_operand: KW_IS_BASE_OF '(' full_type ',' full_type ')' */
#line 3812 "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 8959 "built/tmp/cppBison.yxx.c"
break;
case 676: /* const_operand: KW_IS_CLASS '(' full_type ')' */
#line 3816 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type)));
}
#line 8967 "built/tmp/cppBison.yxx.c"
break;
case 677: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ')' */
#line 3820 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type)));
}
#line 8975 "built/tmp/cppBison.yxx.c"
break;
case 678: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ',' full_type ')' */
#line 3824 "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 8983 "built/tmp/cppBison.yxx.c"
break;
case 679: /* const_operand: KW_IS_CONVERTIBLE_TO '(' full_type ',' full_type ')' */
#line 3828 "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 8991 "built/tmp/cppBison.yxx.c"
break;
case 680: /* const_operand: KW_IS_DESTRUCTIBLE '(' full_type ')' */
#line 3832 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type)));
}
#line 8999 "built/tmp/cppBison.yxx.c"
break;
case 681: /* const_operand: KW_IS_EMPTY '(' full_type ')' */
#line 3836 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type)));
}
#line 9007 "built/tmp/cppBison.yxx.c"
break;
case 682: /* const_operand: KW_IS_ENUM '(' full_type ')' */
#line 3840 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type)));
}
#line 9015 "built/tmp/cppBison.yxx.c"
break;
case 683: /* const_operand: KW_IS_FINAL '(' full_type ')' */
#line 3844 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type)));
}
#line 9023 "built/tmp/cppBison.yxx.c"
break;
case 684: /* const_operand: KW_IS_FUNDAMENTAL '(' full_type ')' */
#line 3848 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type)));
}
#line 9031 "built/tmp/cppBison.yxx.c"
break;
case 685: /* const_operand: KW_IS_POD '(' full_type ')' */
#line 3852 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type)));
}
#line 9039 "built/tmp/cppBison.yxx.c"
break;
case 686: /* const_operand: KW_IS_POLYMORPHIC '(' full_type ')' */
#line 3856 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type)));
}
#line 9047 "built/tmp/cppBison.yxx.c"
break;
case 687: /* const_operand: KW_IS_STANDARD_LAYOUT '(' full_type ')' */
#line 3860 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[-1].u.type)));
}
#line 9055 "built/tmp/cppBison.yxx.c"
break;
case 688: /* const_operand: KW_IS_TRIVIAL '(' full_type ')' */
#line 3864 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type)));
}
#line 9063 "built/tmp/cppBison.yxx.c"
break;
case 689: /* const_operand: KW_IS_UNION '(' full_type ')' */
#line 3868 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type)));
}
#line 9071 "built/tmp/cppBison.yxx.c"
break;
case 690: /* formal_const_expr: formal_const_operand */
#line 3882 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 9079 "built/tmp/cppBison.yxx.c"
break;
case 691: /* formal_const_expr: '(' full_type ')' const_expr */
#line 3886 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr)));
}
#line 9087 "built/tmp/cppBison.yxx.c"
break;
case 692: /* formal_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3890 "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 9095 "built/tmp/cppBison.yxx.c"
break;
case 693: /* formal_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3894 "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 9103 "built/tmp/cppBison.yxx.c"
break;
case 694: /* formal_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3898 "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 9111 "built/tmp/cppBison.yxx.c"
break;
case 695: /* formal_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */
#line 3902 "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 9119 "built/tmp/cppBison.yxx.c"
break;
case 696: /* formal_const_expr: KW_SIZEOF '(' full_type ')' */
#line 3906 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type)));
}
#line 9127 "built/tmp/cppBison.yxx.c"
break;
case 697: /* formal_const_expr: KW_SIZEOF formal_const_expr */
#line 3910 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr)));
}
#line 9135 "built/tmp/cppBison.yxx.c"
break;
case 698: /* formal_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */
#line 3914 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier)));
}
#line 9143 "built/tmp/cppBison.yxx.c"
break;
case 699: /* formal_const_expr: KW_ALIGNOF '(' full_type ')' */
#line 3918 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type)));
}
#line 9151 "built/tmp/cppBison.yxx.c"
break;
case 700: /* formal_const_expr: KW_NEW predefined_type */
#line 3922 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type)));
}
#line 9159 "built/tmp/cppBison.yxx.c"
break;
case 701: /* formal_const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */
#line 3926 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr)));
}
#line 9167 "built/tmp/cppBison.yxx.c"
break;
case 702: /* formal_const_expr: KW_TYPEID '(' full_type ')' */
#line 3930 "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 <typeinfo>", (yylsp[-3]));
}
(yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info));
}
#line 9182 "built/tmp/cppBison.yxx.c"
break;
case 703: /* formal_const_expr: KW_TYPEID '(' const_expr ')' */
#line 3941 "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 <typeinfo>", (yylsp[-3]));
}
(yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info));
}
#line 9197 "built/tmp/cppBison.yxx.c"
break;
case 704: /* formal_const_expr: '!' const_expr */
#line 3952 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr));
}
#line 9205 "built/tmp/cppBison.yxx.c"
break;
case 705: /* formal_const_expr: '~' const_expr */
#line 3956 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr));
}
#line 9213 "built/tmp/cppBison.yxx.c"
break;
case 706: /* formal_const_expr: '-' const_expr */
#line 3960 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr));
}
#line 9221 "built/tmp/cppBison.yxx.c"
break;
case 707: /* formal_const_expr: '+' const_expr */
#line 3964 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr));
}
#line 9229 "built/tmp/cppBison.yxx.c"
break;
case 708: /* formal_const_expr: '&' const_expr */
#line 3968 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr));
}
#line 9237 "built/tmp/cppBison.yxx.c"
break;
case 709: /* formal_const_expr: formal_const_expr '*' const_expr */
#line 3972 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9245 "built/tmp/cppBison.yxx.c"
break;
case 710: /* formal_const_expr: formal_const_expr '/' const_expr */
#line 3976 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9253 "built/tmp/cppBison.yxx.c"
break;
case 711: /* formal_const_expr: formal_const_expr '%' const_expr */
#line 3980 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9261 "built/tmp/cppBison.yxx.c"
break;
case 712: /* formal_const_expr: formal_const_expr '+' const_expr */
#line 3984 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9269 "built/tmp/cppBison.yxx.c"
break;
case 713: /* formal_const_expr: formal_const_expr '-' const_expr */
#line 3988 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9277 "built/tmp/cppBison.yxx.c"
break;
case 714: /* formal_const_expr: formal_const_expr '|' const_expr */
#line 3992 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9285 "built/tmp/cppBison.yxx.c"
break;
case 715: /* formal_const_expr: formal_const_expr '^' const_expr */
#line 3996 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9293 "built/tmp/cppBison.yxx.c"
break;
case 716: /* formal_const_expr: formal_const_expr '&' const_expr */
#line 4000 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9301 "built/tmp/cppBison.yxx.c"
break;
case 717: /* formal_const_expr: formal_const_expr OROR const_expr */
#line 4004 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9309 "built/tmp/cppBison.yxx.c"
break;
case 718: /* formal_const_expr: formal_const_expr ANDAND const_expr */
#line 4008 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9317 "built/tmp/cppBison.yxx.c"
break;
case 719: /* formal_const_expr: formal_const_expr EQCOMPARE const_expr */
#line 4012 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9325 "built/tmp/cppBison.yxx.c"
break;
case 720: /* formal_const_expr: formal_const_expr NECOMPARE const_expr */
#line 4016 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9333 "built/tmp/cppBison.yxx.c"
break;
case 721: /* formal_const_expr: formal_const_expr LECOMPARE const_expr */
#line 4020 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9341 "built/tmp/cppBison.yxx.c"
break;
case 722: /* formal_const_expr: formal_const_expr GECOMPARE const_expr */
#line 4024 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9349 "built/tmp/cppBison.yxx.c"
break;
case 723: /* formal_const_expr: formal_const_expr SPACESHIP const_expr */
#line 4028 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(SPACESHIP, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9357 "built/tmp/cppBison.yxx.c"
break;
case 724: /* formal_const_expr: formal_const_expr '<' const_expr */
#line 4032 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9365 "built/tmp/cppBison.yxx.c"
break;
case 725: /* formal_const_expr: formal_const_expr '>' const_expr */
#line 4036 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9373 "built/tmp/cppBison.yxx.c"
break;
case 726: /* formal_const_expr: formal_const_expr LSHIFT const_expr */
#line 4040 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9381 "built/tmp/cppBison.yxx.c"
break;
case 727: /* formal_const_expr: formal_const_expr RSHIFT const_expr */
#line 4044 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9389 "built/tmp/cppBison.yxx.c"
break;
case 728: /* formal_const_expr: formal_const_expr '?' const_expr ':' const_expr */
#line 4048 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9397 "built/tmp/cppBison.yxx.c"
break;
case 729: /* formal_const_expr: formal_const_expr '[' const_expr ']' */
#line 4052 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr));
}
#line 9405 "built/tmp/cppBison.yxx.c"
break;
case 730: /* formal_const_expr: formal_const_expr '(' const_expr_comma ')' */
#line 4056 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr));
}
#line 9413 "built/tmp/cppBison.yxx.c"
break;
case 731: /* formal_const_expr: formal_const_expr '(' ')' */
#line 4060 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr));
}
#line 9421 "built/tmp/cppBison.yxx.c"
break;
case 732: /* formal_const_expr: formal_const_expr '.' name */
#line 4064 "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 9429 "built/tmp/cppBison.yxx.c"
break;
case 733: /* formal_const_expr: formal_const_expr POINTSAT const_expr */
#line 4068 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr));
}
#line 9437 "built/tmp/cppBison.yxx.c"
break;
case 734: /* formal_const_expr: '(' const_expr_comma ')' */
#line 4072 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[-1].u.expr);
}
#line 9445 "built/tmp/cppBison.yxx.c"
break;
case 735: /* formal_const_operand: INTEGER */
#line 4079 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer));
}
#line 9453 "built/tmp/cppBison.yxx.c"
break;
case 736: /* formal_const_operand: KW_TRUE */
#line 4083 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(true);
}
#line 9461 "built/tmp/cppBison.yxx.c"
break;
case 737: /* formal_const_operand: KW_FALSE */
#line 4087 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(false);
}
#line 9469 "built/tmp/cppBison.yxx.c"
break;
case 738: /* formal_const_operand: CHAR_TOK */
#line 4091 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer));
}
#line 9477 "built/tmp/cppBison.yxx.c"
break;
case 739: /* formal_const_operand: REAL */
#line 4095 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.real));
}
#line 9485 "built/tmp/cppBison.yxx.c"
break;
case 740: /* formal_const_operand: string_literal */
#line 4099 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 9493 "built/tmp/cppBison.yxx.c"
break;
case 741: /* formal_const_operand: CUSTOM_LITERAL */
#line 4103 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 9501 "built/tmp/cppBison.yxx.c"
break;
case 742: /* formal_const_operand: IDENTIFIER */
#line 4107 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer);
}
#line 9509 "built/tmp/cppBison.yxx.c"
break;
case 743: /* formal_const_operand: KW_FINAL */
#line 4111 "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 9519 "built/tmp/cppBison.yxx.c"
break;
case 744: /* formal_const_operand: KW_OVERRIDE */
#line 4117 "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 9529 "built/tmp/cppBison.yxx.c"
break;
case 745: /* formal_const_operand: KW_NULLPTR */
#line 4123 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr());
}
#line 9537 "built/tmp/cppBison.yxx.c"
break;
case 746: /* capture_list: empty */
#line 4131 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.closure_type) = new CPPClosureType();
}
#line 9545 "built/tmp/cppBison.yxx.c"
break;
case 747: /* capture_list: '=' */
#line 4135 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value);
}
#line 9553 "built/tmp/cppBison.yxx.c"
break;
case 748: /* capture_list: '&' */
#line 4139 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference);
}
#line 9561 "built/tmp/cppBison.yxx.c"
break;
case 749: /* capture_list: capture maybe_initialize */
#line 4143 "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 9572 "built/tmp/cppBison.yxx.c"
break;
case 750: /* capture_list: capture_list ',' capture maybe_initialize */
#line 4150 "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 9583 "built/tmp/cppBison.yxx.c"
break;
case 751: /* capture: '&' name */
#line 4160 "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 9593 "built/tmp/cppBison.yxx.c"
break;
case 752: /* capture: '&' name ELLIPSIS */
#line 4166 "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 9603 "built/tmp/cppBison.yxx.c"
break;
case 753: /* capture: name */
#line 4172 "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 9617 "built/tmp/cppBison.yxx.c"
break;
case 754: /* capture: '*' name */
#line 4182 "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 9630 "built/tmp/cppBison.yxx.c"
break;
case 755: /* class_derivation_name: name */
#line 4194 "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 9642 "built/tmp/cppBison.yxx.c"
break;
case 756: /* class_derivation_name: KW_TYPENAME name */
#line 4202 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier)));
}
#line 9650 "built/tmp/cppBison.yxx.c"
break;
case 757: /* class_derivation_name: name ELLIPSIS */
#line 4206 "dtool/src/cppparser/cppBison.yxx"
{
CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[-1].u.identifier));
ctp->_packed = true;
(yyval.u.type) = CPPType::new_type(ctp);
}
#line 9660 "built/tmp/cppBison.yxx.c"
break;
case 758: /* name: IDENTIFIER */
#line 4236 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 9668 "built/tmp/cppBison.yxx.c"
break;
case 759: /* name: TYPENAME_IDENTIFIER */
#line 4240 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 9676 "built/tmp/cppBison.yxx.c"
break;
case 760: /* name: TYPEPACK_IDENTIFIER */
#line 4244 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 9684 "built/tmp/cppBison.yxx.c"
break;
case 761: /* name: KW_FINAL */
#line 4248 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0]));
}
#line 9692 "built/tmp/cppBison.yxx.c"
break;
case 762: /* name: KW_OVERRIDE */
#line 4252 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0]));
}
#line 9700 "built/tmp/cppBison.yxx.c"
break;
case 763: /* name: KW_SIGNED */
#line 4256 "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 9710 "built/tmp/cppBison.yxx.c"
break;
case 764: /* name: KW_FLOAT */
#line 4262 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0]));
}
#line 9718 "built/tmp/cppBison.yxx.c"
break;
case 765: /* name: KW_PUBLIC */
#line 4266 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0]));
}
#line 9726 "built/tmp/cppBison.yxx.c"
break;
case 766: /* name: KW_PRIVATE */
#line 4270 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0]));
}
#line 9734 "built/tmp/cppBison.yxx.c"
break;
case 767: /* name: KW_STATIC */
#line 4274 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0]));
}
#line 9742 "built/tmp/cppBison.yxx.c"
break;
case 768: /* name: KW_DEFAULT */
#line 4278 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("default", (yylsp[0]));
}
#line 9750 "built/tmp/cppBison.yxx.c"
break;
case 769: /* name_no_final: IDENTIFIER */
#line 4289 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 9758 "built/tmp/cppBison.yxx.c"
break;
case 770: /* name_no_final: TYPENAME_IDENTIFIER */
#line 4293 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 9766 "built/tmp/cppBison.yxx.c"
break;
case 771: /* name_no_final: TYPEPACK_IDENTIFIER */
#line 4297 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = (yyvsp[0].u.identifier);
}
#line 9774 "built/tmp/cppBison.yxx.c"
break;
case 772: /* name_no_final: KW_OVERRIDE */
#line 4301 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0]));
}
#line 9782 "built/tmp/cppBison.yxx.c"
break;
case 773: /* string_literal: SIMPLE_STRING */
#line 4309 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = new CPPExpression((yyvsp[0].str));
}
#line 9790 "built/tmp/cppBison.yxx.c"
break;
case 774: /* string_literal: STRING_LITERAL */
#line 4313 "dtool/src/cppparser/cppBison.yxx"
{
(yyval.u.expr) = (yyvsp[0].u.expr);
}
#line 9798 "built/tmp/cppBison.yxx.c"
break;
case 775: /* string_literal: string_literal SIMPLE_STRING */
#line 4317 "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 9808 "built/tmp/cppBison.yxx.c"
break;
case 776: /* string_literal: string_literal STRING_LITERAL */
#line 4323 "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 9821 "built/tmp/cppBison.yxx.c"
break;
#line 9825 "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;
/* 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 yyreturn;
/*-----------------------------------.
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
yyabortlab:
yyresult = 1;
goto yyreturn;
#if !defined yyoverflow
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
yyerror (&yylloc, YY_("memory exhausted"));
yyresult = 2;
goto yyreturn;
#endif
/*-------------------------------------------------------.
| yyreturn -- parsing is finished, clean up and return. |
`-------------------------------------------------------*/
yyreturn:
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;
}