diff --git a/dtool/src/cppparser/CMakeLists.txt b/dtool/src/cppparser/CMakeLists.txt index 4408a52198..08563df508 100644 --- a/dtool/src/cppparser/CMakeLists.txt +++ b/dtool/src/cppparser/CMakeLists.txt @@ -1,4 +1,5 @@ set(P3CPPPARSER_HEADERS + cppAttributeList.h cppArrayType.h cppBison.yxx cppBisonDefs.h cppClassTemplateParameter.h cppCommentBlock.h cppClosureType.h cppConstType.h @@ -17,6 +18,7 @@ set(P3CPPPARSER_HEADERS ) set(P3CPPPARSER_SOURCES + cppAttributeList.cxx cppArrayType.cxx ${CMAKE_CURRENT_BINARY_DIR}/cppBison.cxx cppClassTemplateParameter.cxx cppCommentBlock.cxx cppClosureType.cxx cppConstType.cxx cppDeclaration.cxx diff --git a/dtool/src/cppparser/cppArrayType.cxx b/dtool/src/cppparser/cppArrayType.cxx index ea25b871cb..addf905764 100644 --- a/dtool/src/cppparser/cppArrayType.cxx +++ b/dtool/src/cppparser/cppArrayType.cxx @@ -189,6 +189,11 @@ output_instance(std::ostream &out, int indent_level, CPPScope *scope, brackets << *_bounds; } brackets << "]"; + + if (!_attributes.is_empty()) { + brackets << " " << _attributes; + } + std::string bracketsstr = brackets.str(); _element_type->output_instance(out, indent_level, scope, complete, diff --git a/dtool/src/cppparser/cppAttributeList.cxx b/dtool/src/cppparser/cppAttributeList.cxx new file mode 100644 index 0000000000..6a280d3cd7 --- /dev/null +++ b/dtool/src/cppparser/cppAttributeList.cxx @@ -0,0 +1,196 @@ +/** + * PANDA 3D SOFTWARE + * Copyright (c) Carnegie Mellon University. All rights reserved. + * + * All use of this software is subject to the terms of the revised BSD + * license. You should have received a copy of this license along + * with this source code in a file named "LICENSE." + * + * @file cppAttributeList.cxx + * @author rdb + * @date 2022-10-23 + */ + +#include "cppAttributeList.h" +#include "cppExpression.h" +#include "cppIdentifier.h" +#include "cppType.h" + +/** + * Returns true if no attributes have been defined. + */ +bool CPPAttributeList:: +is_empty() const { + return _attributes.empty() && _alignas == nullptr; +} + +/** + * Returns true if the attribute list has an attribute with the given name. + */ +bool CPPAttributeList:: +has_attribute(const std::string &name) const { + for (const Attribute &attr : _attributes) { + if (attr._ident->get_fully_scoped_name() == name) { + return true; + } + } + return false; +} + +/** + * + */ +bool CPPAttributeList:: +operator == (const CPPAttributeList &other) const { + if (_attributes.size() != other._attributes.size()) { + return false; + } + if ((_alignas != nullptr) != (other._alignas != nullptr)) { + return false; + } + if (_alignas != nullptr && *_alignas != *other._alignas) { + return false; + } + for (size_t i = 0; i < _attributes.size(); ++i) { + if (_attributes[i]._ident != other._attributes[i]._ident) { + return false; + } + if (_attributes[i]._reason != other._attributes[i]._reason) { + return false; + } + } + return true; +} + +/** + * + */ +bool CPPAttributeList:: +operator != (const CPPAttributeList &other) const { + return !(*this == other); +} + +/** + * + */ +bool CPPAttributeList:: +operator < (const CPPAttributeList &other) const { + if (_attributes.size() != other._attributes.size()) { + return _attributes.size() < other._attributes.size(); + } + if ((_alignas != nullptr) != (other._alignas != nullptr)) { + return _alignas == nullptr; + } + if (_alignas != nullptr && *_alignas != *other._alignas) { + return *_alignas < *other._alignas; + } + for (size_t i = 0; i < _attributes.size(); ++i) { + if (_attributes[i]._ident != other._attributes[i]._ident) { + return _attributes[i]._ident < other._attributes[i]._ident; + } + if (_attributes[i]._reason != other._attributes[i]._reason) { + return _attributes[i]._reason < other._attributes[i]._reason; + } + } + return false; +} + +/** + * Adds an attribute. + */ +void CPPAttributeList:: +add_attribute(CPPIdentifier *ident) { + _attributes.push_back({ident}); +} + +/** + * Adds an attribute. + */ +void CPPAttributeList:: +add_attribute(CPPIdentifier *ident, std::string reason) { + _attributes.push_back({ident, std::move(reason)}); +} + +/** + * Adds an alignas specifier. + */ +void CPPAttributeList:: +add_alignas(int size) { + if (_alignas == nullptr || size >= _alignas->evaluate().as_integer()) { + _alignas = new CPPExpression(size); + } +} + +/** + * Adds an alignas specifier. + */ +void CPPAttributeList:: +add_alignas(CPPType *type) { + CPPExpression expr = CPPExpression::alignof_func(type); + if (_alignas == nullptr || expr.evaluate().as_integer() > _alignas->evaluate().as_integer()) { + _alignas = new CPPExpression(expr); + } +} + +/** + * Adds an alignas specifier. + */ +void CPPAttributeList:: +add_alignas(CPPExpression *expr) { + if (_alignas == nullptr || expr->evaluate().as_integer() > _alignas->evaluate().as_integer()) { + _alignas = expr; + } +} + +/** + * Merges the other list into this one. + */ +void CPPAttributeList:: +add_attributes_from(const CPPAttributeList &other) { + for (const Attribute &attr : other._attributes) { + _attributes.push_back(attr); + } + + if (other._alignas != nullptr) { + add_alignas(other._alignas); + } +} + +/** + * + */ +void CPPAttributeList:: +output(std::ostream &out, CPPScope *scope) const { + Attributes::const_iterator it = _attributes.begin(); + if (it != _attributes.end()) { + out << "[["; + (*it)._ident->output(out, scope); + if (!(*it)._reason.empty()) { + out << "(" << (*it)._reason << ")"; + } + + for (++it; it != _attributes.end(); ++it) { + out << ", "; + (*it)._ident->output(out, scope); + if (!(*it)._reason.empty()) { + out << "(" << (*it)._reason << ")"; + } + } + + out << "]]"; + + if (_alignas != nullptr) { + out << " "; + } + } + + if (_alignas != nullptr) { + out << "alignas("; + if (_alignas->_type == CPPExpression::T_alignof) { + _alignas->_u._typecast._to->output(out, 0, scope, false); + } else { + _alignas->output(out, 0, scope, false); + } + out << ")"; + } +} diff --git a/dtool/src/cppparser/cppAttributeList.h b/dtool/src/cppparser/cppAttributeList.h new file mode 100644 index 0000000000..9463b2b65c --- /dev/null +++ b/dtool/src/cppparser/cppAttributeList.h @@ -0,0 +1,65 @@ +/** + * PANDA 3D SOFTWARE + * Copyright (c) Carnegie Mellon University. All rights reserved. + * + * All use of this software is subject to the terms of the revised BSD + * license. You should have received a copy of this license along + * with this source code in a file named "LICENSE." + * + * @file cppAttributeList.h + * @author rdb + * @date 2022-10-23 + */ + +#ifndef CPPATTRIBUTELIST_H +#define CPPATTRIBUTELIST_H + +#include "dtoolbase.h" + +#include + +class CPPExpression; +class CPPIdentifier; +class CPPScope; +class CPPType; + +/** + * A list of square-bracket attributes and/or alignas specifiers. + */ +class CPPAttributeList { +public: + bool is_empty() const; + bool has_attribute(const std::string &name) const; + + bool operator == (const CPPAttributeList &other) const; + bool operator != (const CPPAttributeList &other) const; + bool operator < (const CPPAttributeList &other) const; + + void add_attribute(CPPIdentifier *ident); + void add_attribute(CPPIdentifier *ident, std::string reason); + + void add_alignas(int size); + void add_alignas(CPPType *type); + void add_alignas(CPPExpression *expr); + + void add_attributes_from(const CPPAttributeList &other); + + struct Attribute { + CPPIdentifier *_ident; + std::string _reason; + }; + + typedef std::vector Attributes; + Attributes _attributes; + CPPExpression *_alignas = nullptr; + + void output(std::ostream &out, CPPScope *scope) const; +}; + +inline std::ostream & +operator << (std::ostream &out, const CPPAttributeList &alist) { + alist.output(out, nullptr); + return out; +} + +#endif diff --git a/dtool/src/cppparser/cppBison.cxx.prebuilt b/dtool/src/cppparser/cppBison.cxx.prebuilt index b8ea13fb0b..d9ad7894cf 100644 --- a/dtool/src/cppparser/cppBison.cxx.prebuilt +++ b/dtool/src/cppparser/cppBison.cxx.prebuilt @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.3. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ 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 . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 -/* Bison version. */ -#define YYBISON_VERSION "3.7.3" +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -117,6 +117,7 @@ static CPPEnumType *current_enum = nullptr; static int current_storage_class = 0; static CPPType *current_type = nullptr; static CPPExpression *current_expr = nullptr; +static CPPAttributeList current_attributes; static int publish_nest_level = 0; static CPPVisibility publish_previous; static YYLTYPE publish_loc; @@ -270,7 +271,7 @@ pop_struct() { } -#line 274 "built/tmp/cppBison.yxx.c" +#line 275 "built/tmp/cppBison.yxx.c" # ifndef YY_CAST # ifdef __cplusplus @@ -478,114 +479,115 @@ enum yysymbol_kind_t YYSYMBOL_YYACCEPT = 177, /* $accept */ YYSYMBOL_grammar = 178, /* grammar */ YYSYMBOL_cpp = 179, /* cpp */ - YYSYMBOL_constructor_inits = 180, /* constructor_inits */ - YYSYMBOL_constructor_init = 181, /* constructor_init */ - YYSYMBOL_extern_c = 182, /* extern_c */ - YYSYMBOL_183_1 = 183, /* $@1 */ - YYSYMBOL_declaration = 184, /* declaration */ - YYSYMBOL_friend_declaration = 185, /* friend_declaration */ - YYSYMBOL_186_2 = 186, /* $@2 */ - YYSYMBOL_storage_class = 187, /* storage_class */ - YYSYMBOL_attribute_specifiers = 188, /* attribute_specifiers */ - YYSYMBOL_attribute_specifier = 189, /* attribute_specifier */ - YYSYMBOL_type_like_declaration = 190, /* type_like_declaration */ - YYSYMBOL_191_3 = 191, /* $@3 */ - YYSYMBOL_192_4 = 192, /* $@4 */ - YYSYMBOL_multiple_instance_identifiers = 193, /* multiple_instance_identifiers */ - YYSYMBOL_typedef_declaration = 194, /* typedef_declaration */ - YYSYMBOL_195_5 = 195, /* $@5 */ - YYSYMBOL_typedef_instance_identifiers = 196, /* typedef_instance_identifiers */ - YYSYMBOL_constructor_prototype = 197, /* constructor_prototype */ - YYSYMBOL_198_6 = 198, /* $@6 */ - YYSYMBOL_199_7 = 199, /* $@7 */ - YYSYMBOL_200_8 = 200, /* $@8 */ - YYSYMBOL_function_prototype = 201, /* function_prototype */ + YYSYMBOL_180_1 = 180, /* $@1 */ + YYSYMBOL_constructor_inits = 181, /* constructor_inits */ + YYSYMBOL_constructor_init = 182, /* constructor_init */ + YYSYMBOL_extern_c = 183, /* extern_c */ + YYSYMBOL_184_2 = 184, /* $@2 */ + YYSYMBOL_declaration = 185, /* declaration */ + YYSYMBOL_friend_declaration = 186, /* friend_declaration */ + YYSYMBOL_187_3 = 187, /* $@3 */ + YYSYMBOL_storage_class = 188, /* storage_class */ + YYSYMBOL_optional_attributes = 189, /* optional_attributes */ + YYSYMBOL_attribute_specifiers = 190, /* attribute_specifiers */ + YYSYMBOL_attribute_specifier = 191, /* attribute_specifier */ + YYSYMBOL_type_like_declaration = 192, /* type_like_declaration */ + YYSYMBOL_193_4 = 193, /* $@4 */ + YYSYMBOL_194_5 = 194, /* $@5 */ + YYSYMBOL_multiple_instance_identifiers = 195, /* multiple_instance_identifiers */ + YYSYMBOL_typedef_declaration = 196, /* typedef_declaration */ + YYSYMBOL_197_6 = 197, /* $@6 */ + YYSYMBOL_typedef_instance_identifiers = 198, /* typedef_instance_identifiers */ + YYSYMBOL_constructor_prototype = 199, /* constructor_prototype */ + YYSYMBOL_200_7 = 200, /* $@7 */ + YYSYMBOL_201_8 = 201, /* $@8 */ YYSYMBOL_202_9 = 202, /* $@9 */ - YYSYMBOL_203_10 = 203, /* $@10 */ - YYSYMBOL_204_11 = 204, /* $@11 */ - YYSYMBOL_205_12 = 205, /* $@12 */ - YYSYMBOL_206_13 = 206, /* $@13 */ - YYSYMBOL_function_post = 207, /* function_post */ - YYSYMBOL_function_operator = 208, /* function_operator */ - YYSYMBOL_more_template_declaration = 209, /* more_template_declaration */ - YYSYMBOL_template_declaration = 210, /* template_declaration */ - YYSYMBOL_211_14 = 211, /* $@14 */ - YYSYMBOL_template_formal_parameters = 212, /* template_formal_parameters */ - YYSYMBOL_template_nonempty_formal_parameters = 213, /* template_nonempty_formal_parameters */ - YYSYMBOL_typename_keyword = 214, /* typename_keyword */ - YYSYMBOL_template_formal_parameter = 215, /* template_formal_parameter */ - YYSYMBOL_template_formal_parameter_type = 216, /* template_formal_parameter_type */ - YYSYMBOL_instance_identifier = 217, /* instance_identifier */ - YYSYMBOL_218_15 = 218, /* $@15 */ - YYSYMBOL_instance_identifier_and_maybe_trailing_return_type = 219, /* instance_identifier_and_maybe_trailing_return_type */ - YYSYMBOL_maybe_trailing_return_type = 220, /* maybe_trailing_return_type */ - YYSYMBOL_maybe_comma_identifier = 221, /* maybe_comma_identifier */ - YYSYMBOL_function_parameter_list = 222, /* function_parameter_list */ - YYSYMBOL_function_parameters = 223, /* function_parameters */ - YYSYMBOL_formal_parameter_list = 224, /* formal_parameter_list */ - YYSYMBOL_formal_parameters = 225, /* formal_parameters */ - YYSYMBOL_template_parameter_maybe_initialize = 226, /* template_parameter_maybe_initialize */ - YYSYMBOL_maybe_initialize = 227, /* maybe_initialize */ - YYSYMBOL_maybe_initialize_or_constructor_body = 228, /* maybe_initialize_or_constructor_body */ - YYSYMBOL_maybe_initialize_or_function_body = 229, /* maybe_initialize_or_function_body */ - YYSYMBOL_structure_init = 230, /* structure_init */ - YYSYMBOL_structure_init_body = 231, /* structure_init_body */ - YYSYMBOL_function_parameter = 232, /* function_parameter */ - YYSYMBOL_formal_parameter = 233, /* formal_parameter */ - YYSYMBOL_not_paren_formal_parameter_identifier = 234, /* not_paren_formal_parameter_identifier */ - YYSYMBOL_formal_parameter_identifier = 235, /* formal_parameter_identifier */ - YYSYMBOL_parameter_pack_identifier = 236, /* parameter_pack_identifier */ - YYSYMBOL_not_paren_empty_instance_identifier = 237, /* not_paren_empty_instance_identifier */ - YYSYMBOL_empty_instance_identifier = 238, /* empty_instance_identifier */ - YYSYMBOL_type = 239, /* type */ - YYSYMBOL_type_pack = 240, /* type_pack */ - YYSYMBOL_type_decl = 241, /* type_decl */ - YYSYMBOL_predefined_type = 242, /* predefined_type */ - YYSYMBOL_var_type_decl = 243, /* var_type_decl */ - YYSYMBOL_full_type = 244, /* full_type */ - YYSYMBOL_struct_attributes = 245, /* struct_attributes */ - YYSYMBOL_anonymous_struct = 246, /* anonymous_struct */ - YYSYMBOL_247_16 = 247, /* $@16 */ - YYSYMBOL_named_struct = 248, /* named_struct */ - YYSYMBOL_249_17 = 249, /* $@17 */ - YYSYMBOL_maybe_final = 250, /* maybe_final */ - YYSYMBOL_maybe_class_derivation = 251, /* maybe_class_derivation */ - YYSYMBOL_class_derivation = 252, /* class_derivation */ - YYSYMBOL_base_specification = 253, /* base_specification */ - YYSYMBOL_enum = 254, /* enum */ - YYSYMBOL_enum_decl = 255, /* enum_decl */ - YYSYMBOL_enum_element_type = 256, /* enum_element_type */ - YYSYMBOL_enum_body_trailing_comma = 257, /* enum_body_trailing_comma */ - YYSYMBOL_enum_body = 258, /* enum_body */ - YYSYMBOL_enum_keyword = 259, /* enum_keyword */ - YYSYMBOL_struct_keyword = 260, /* struct_keyword */ - YYSYMBOL_namespace_declaration = 261, /* namespace_declaration */ - YYSYMBOL_262_18 = 262, /* $@18 */ + YYSYMBOL_function_prototype = 203, /* function_prototype */ + YYSYMBOL_204_10 = 204, /* $@10 */ + YYSYMBOL_205_11 = 205, /* $@11 */ + YYSYMBOL_206_12 = 206, /* $@12 */ + YYSYMBOL_207_13 = 207, /* $@13 */ + YYSYMBOL_208_14 = 208, /* $@14 */ + YYSYMBOL_function_post = 209, /* function_post */ + YYSYMBOL_function_operator = 210, /* function_operator */ + YYSYMBOL_more_template_declaration = 211, /* more_template_declaration */ + YYSYMBOL_template_declaration = 212, /* template_declaration */ + YYSYMBOL_213_15 = 213, /* $@15 */ + YYSYMBOL_template_formal_parameters = 214, /* template_formal_parameters */ + YYSYMBOL_template_nonempty_formal_parameters = 215, /* template_nonempty_formal_parameters */ + YYSYMBOL_typename_keyword = 216, /* typename_keyword */ + YYSYMBOL_template_formal_parameter = 217, /* template_formal_parameter */ + YYSYMBOL_template_formal_parameter_type = 218, /* template_formal_parameter_type */ + YYSYMBOL_instance_identifier = 219, /* instance_identifier */ + YYSYMBOL_220_16 = 220, /* $@16 */ + YYSYMBOL_instance_identifier_and_maybe_trailing_return_type = 221, /* instance_identifier_and_maybe_trailing_return_type */ + YYSYMBOL_maybe_trailing_return_type = 222, /* maybe_trailing_return_type */ + YYSYMBOL_maybe_comma_identifier = 223, /* maybe_comma_identifier */ + YYSYMBOL_function_parameter_list = 224, /* function_parameter_list */ + YYSYMBOL_function_parameters = 225, /* function_parameters */ + YYSYMBOL_formal_parameter_list = 226, /* formal_parameter_list */ + YYSYMBOL_formal_parameters = 227, /* formal_parameters */ + YYSYMBOL_template_parameter_maybe_initialize = 228, /* template_parameter_maybe_initialize */ + YYSYMBOL_maybe_initialize = 229, /* maybe_initialize */ + YYSYMBOL_maybe_initialize_or_constructor_body = 230, /* maybe_initialize_or_constructor_body */ + YYSYMBOL_maybe_initialize_or_function_body = 231, /* maybe_initialize_or_function_body */ + YYSYMBOL_structure_init = 232, /* structure_init */ + YYSYMBOL_structure_init_body = 233, /* structure_init_body */ + YYSYMBOL_function_parameter = 234, /* function_parameter */ + YYSYMBOL_formal_parameter = 235, /* formal_parameter */ + YYSYMBOL_not_paren_formal_parameter_identifier = 236, /* not_paren_formal_parameter_identifier */ + YYSYMBOL_formal_parameter_identifier = 237, /* formal_parameter_identifier */ + YYSYMBOL_parameter_pack_identifier = 238, /* parameter_pack_identifier */ + YYSYMBOL_not_paren_empty_instance_identifier = 239, /* not_paren_empty_instance_identifier */ + YYSYMBOL_empty_instance_identifier = 240, /* empty_instance_identifier */ + YYSYMBOL_type = 241, /* type */ + YYSYMBOL_type_pack = 242, /* type_pack */ + YYSYMBOL_type_decl = 243, /* type_decl */ + YYSYMBOL_predefined_type = 244, /* predefined_type */ + YYSYMBOL_var_type_decl = 245, /* var_type_decl */ + YYSYMBOL_full_type = 246, /* full_type */ + YYSYMBOL_anonymous_struct = 247, /* anonymous_struct */ + YYSYMBOL_248_17 = 248, /* $@17 */ + YYSYMBOL_named_struct = 249, /* named_struct */ + YYSYMBOL_250_18 = 250, /* $@18 */ + YYSYMBOL_maybe_final = 251, /* maybe_final */ + YYSYMBOL_maybe_class_derivation = 252, /* maybe_class_derivation */ + YYSYMBOL_class_derivation = 253, /* class_derivation */ + YYSYMBOL_base_specification = 254, /* base_specification */ + YYSYMBOL_enum = 255, /* enum */ + YYSYMBOL_enum_decl = 256, /* enum_decl */ + YYSYMBOL_enum_element_type = 257, /* enum_element_type */ + YYSYMBOL_enum_body_trailing_comma = 258, /* enum_body_trailing_comma */ + YYSYMBOL_enum_body = 259, /* enum_body */ + YYSYMBOL_enum_keyword = 260, /* enum_keyword */ + YYSYMBOL_struct_keyword = 261, /* struct_keyword */ + YYSYMBOL_namespace_declaration = 262, /* namespace_declaration */ YYSYMBOL_263_19 = 263, /* $@19 */ - YYSYMBOL_using_declaration = 264, /* using_declaration */ - YYSYMBOL_simple_type = 265, /* simple_type */ - YYSYMBOL_simple_int_type = 266, /* simple_int_type */ - YYSYMBOL_simple_float_type = 267, /* simple_float_type */ - YYSYMBOL_simple_void_type = 268, /* simple_void_type */ - YYSYMBOL_code = 269, /* code */ - YYSYMBOL_270_20 = 270, /* $@20 */ - YYSYMBOL_code_block = 271, /* code_block */ - YYSYMBOL_element = 272, /* element */ - YYSYMBOL_optional_const_expr = 273, /* optional_const_expr */ - YYSYMBOL_optional_const_expr_comma = 274, /* optional_const_expr_comma */ - YYSYMBOL_const_expr_comma = 275, /* const_expr_comma */ - YYSYMBOL_no_angle_bracket_const_expr = 276, /* no_angle_bracket_const_expr */ - YYSYMBOL_const_expr = 277, /* const_expr */ - YYSYMBOL_const_operand = 278, /* const_operand */ - YYSYMBOL_formal_const_expr = 279, /* formal_const_expr */ - YYSYMBOL_formal_const_operand = 280, /* formal_const_operand */ - YYSYMBOL_capture_list = 281, /* capture_list */ - YYSYMBOL_capture = 282, /* capture */ - YYSYMBOL_class_derivation_name = 283, /* class_derivation_name */ - YYSYMBOL_name = 284, /* name */ - YYSYMBOL_name_no_final = 285, /* name_no_final */ - YYSYMBOL_string_literal = 286, /* string_literal */ - YYSYMBOL_empty = 287 /* empty */ + YYSYMBOL_264_20 = 264, /* $@20 */ + YYSYMBOL_using_declaration = 265, /* using_declaration */ + YYSYMBOL_simple_type = 266, /* simple_type */ + YYSYMBOL_simple_int_type = 267, /* simple_int_type */ + YYSYMBOL_simple_float_type = 268, /* simple_float_type */ + YYSYMBOL_simple_void_type = 269, /* simple_void_type */ + YYSYMBOL_code = 270, /* code */ + YYSYMBOL_271_21 = 271, /* $@21 */ + YYSYMBOL_code_block = 272, /* code_block */ + YYSYMBOL_element = 273, /* element */ + YYSYMBOL_optional_const_expr = 274, /* optional_const_expr */ + YYSYMBOL_optional_const_expr_comma = 275, /* optional_const_expr_comma */ + YYSYMBOL_const_expr_comma = 276, /* const_expr_comma */ + YYSYMBOL_no_angle_bracket_const_expr = 277, /* no_angle_bracket_const_expr */ + YYSYMBOL_const_expr = 278, /* const_expr */ + YYSYMBOL_const_operand = 279, /* const_operand */ + YYSYMBOL_formal_const_expr = 280, /* formal_const_expr */ + YYSYMBOL_formal_const_operand = 281, /* formal_const_operand */ + YYSYMBOL_capture_list = 282, /* capture_list */ + YYSYMBOL_capture = 283, /* capture */ + YYSYMBOL_class_derivation_name = 284, /* class_derivation_name */ + YYSYMBOL_name = 285, /* name */ + YYSYMBOL_name_no_final = 286, /* name_no_final */ + YYSYMBOL_string_literal = 287, /* string_literal */ + YYSYMBOL_empty = 288 /* empty */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -629,6 +631,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -726,17 +740,23 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(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 \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -898,16 +918,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 107 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 8025 +#define YYLAST 7021 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 177 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 111 +#define YYNNTS 112 /* YYNRULES -- Number of rules. */ -#define YYNRULES 784 +#define YYNRULES 780 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1611 +#define YYNSTATES 1666 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 407 @@ -968,88 +988,88 @@ static const yytype_uint8 yytranslate[] = }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 459, 459, 460, 464, 471, 472, 473, 477, 478, - 482, 486, 490, 503, 502, 514, 515, 516, 517, 518, - 519, 520, 533, 542, 546, 554, 558, 562, 583, 610, - 631, 660, 696, 739, 751, 772, 808, 842, 864, 900, - 922, 933, 947, 946, 961, 965, 970, 974, 985, 989, - 993, 997, 1001, 1010, 1014, 1018, 1022, 1026, 1030, 1034, - 1038, 1042, 1046, 1051, 1055, 1062, 1063, 1067, 1068, 1069, - 1074, 1073, 1089, 1099, 1098, 1115, 1123, 1131, 1142, 1158, - 1157, 1172, 1187, 1196, 1211, 1210, 1250, 1249, 1277, 1276, - 1313, 1312, 1343, 1342, 1361, 1360, 1381, 1380, 1412, 1411, - 1437, 1450, 1454, 1458, 1462, 1466, 1475, 1479, 1483, 1487, - 1491, 1496, 1501, 1505, 1509, 1513, 1520, 1524, 1528, 1532, - 1536, 1540, 1544, 1548, 1552, 1556, 1560, 1564, 1568, 1572, - 1576, 1580, 1584, 1588, 1592, 1596, 1600, 1604, 1608, 1612, - 1616, 1620, 1624, 1628, 1632, 1636, 1640, 1644, 1648, 1652, - 1656, 1660, 1664, 1668, 1672, 1676, 1683, 1684, 1685, 1689, - 1691, 1690, 1698, 1699, 1703, 1704, 1708, 1714, 1723, 1724, - 1728, 1732, 1736, 1740, 1746, 1752, 1758, 1765, 1770, 1779, - 1783, 1788, 1796, 1808, 1812, 1826, 1841, 1846, 1851, 1856, - 1861, 1866, 1871, 1876, 1882, 1881, 1912, 1922, 1932, 1936, - 1940, 1949, 1953, 1961, 1965, 1970, 1974, 1979, 1987, 1992, - 2000, 2004, 2009, 2013, 2018, 2026, 2031, 2039, 2043, 2050, - 2054, 2061, 2065, 2069, 2073, 2077, 2084, 2088, 2092, 2096, - 2100, 2104, 2111, 2112, 2113, 2117, 2120, 2121, 2122, 2126, - 2131, 2137, 2143, 2148, 2154, 2160, 2164, 2175, 2179, 2189, - 2193, 2197, 2202, 2207, 2212, 2217, 2222, 2227, 2235, 2239, - 2243, 2248, 2253, 2258, 2263, 2268, 2273, 2278, 2284, 2292, - 2297, 2302, 2307, 2312, 2317, 2322, 2327, 2332, 2337, 2343, - 2351, 2355, 2360, 2365, 2370, 2375, 2380, 2385, 2390, 2395, - 2403, 2407, 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, - 2452, 2458, 2465, 2472, 2482, 2486, 2494, 2498, 2502, 2506, - 2510, 2526, 2542, 2551, 2555, 2565, 2572, 2583, 2587, 2595, - 2599, 2603, 2607, 2611, 2627, 2643, 2661, 2670, 2674, 2684, - 2691, 2695, 2703, 2707, 2723, 2739, 2748, 2758, 2765, 2769, - 2777, 2781, 2786, 2790, 2798, 2799, 2800, 2801, 2806, 2805, - 2830, 2829, 2859, 2860, 2867, 2868, 2872, 2873, 2877, 2881, - 2885, 2889, 2893, 2897, 2901, 2905, 2909, 2913, 2920, 2928, - 2932, 2936, 2941, 2949, 2953, 2960, 2961, 2966, 2973, 2974, - 2979, 2987, 2991, 2995, 3002, 3006, 3010, 3018, 3017, 3040, - 3039, 3062, 3063, 3067, 3073, 3080, 3086, 3095, 3096, 3097, - 3101, 3105, 3109, 3113, 3117, 3121, 3125, 3130, 3135, 3140, - 3145, 3149, 3154, 3163, 3168, 3176, 3180, 3184, 3192, 3202, - 3202, 3212, 3213, 3217, 3218, 3219, 3220, 3221, 3222, 3223, - 3224, 3225, 3226, 3227, 3228, 3228, 3228, 3229, 3229, 3229, - 3229, 3229, 3230, 3230, 3230, 3230, 3230, 3231, 3231, 3231, - 3232, 3232, 3232, 3232, 3232, 3233, 3233, 3233, 3233, 3233, - 3234, 3234, 3235, 3235, 3235, 3235, 3235, 3236, 3236, 3236, - 3236, 3236, 3237, 3237, 3237, 3237, 3237, 3238, 3238, 3238, - 3238, 3238, 3239, 3239, 3239, 3239, 3239, 3240, 3240, 3240, - 3240, 3240, 3241, 3241, 3241, 3241, 3241, 3241, 3242, 3242, - 3242, 3242, 3242, 3243, 3243, 3243, 3243, 3244, 3244, 3244, - 3244, 3245, 3245, 3245, 3245, 3245, 3246, 3246, 3246, 3246, - 3247, 3247, 3247, 3247, 3247, 3248, 3248, 3248, 3248, 3249, - 3249, 3249, 3249, 3249, 3250, 3250, 3253, 3253, 3253, 3253, - 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3254, 3254, 3254, - 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, 3255, 3259, - 3263, 3270, 3274, 3281, 3285, 3292, 3296, 3300, 3304, 3308, - 3312, 3316, 3320, 3324, 3328, 3332, 3336, 3340, 3344, 3348, - 3352, 3356, 3360, 3364, 3368, 3372, 3376, 3380, 3384, 3388, - 3392, 3396, 3400, 3404, 3408, 3412, 3416, 3420, 3424, 3428, - 3432, 3436, 3440, 3444, 3448, 3456, 3460, 3464, 3468, 3472, - 3476, 3480, 3490, 3500, 3506, 3512, 3518, 3524, 3530, 3536, - 3542, 3549, 3556, 3563, 3570, 3576, 3582, 3586, 3590, 3594, - 3598, 3602, 3606, 3617, 3628, 3632, 3636, 3640, 3644, 3648, - 3652, 3656, 3660, 3664, 3668, 3672, 3676, 3680, 3684, 3688, - 3692, 3696, 3700, 3704, 3708, 3712, 3716, 3720, 3724, 3728, - 3732, 3736, 3740, 3744, 3748, 3752, 3756, 3763, 3767, 3771, - 3775, 3779, 3783, 3787, 3791, 3795, 3801, 3807, 3811, 3817, - 3824, 3828, 3832, 3836, 3840, 3844, 3848, 3852, 3856, 3860, - 3864, 3868, 3872, 3876, 3880, 3884, 3888, 3902, 3906, 3910, - 3914, 3918, 3922, 3926, 3930, 3934, 3938, 3942, 3946, 3950, - 3961, 3972, 3976, 3980, 3984, 3988, 3992, 3996, 4000, 4004, - 4008, 4012, 4016, 4020, 4024, 4028, 4032, 4036, 4040, 4044, - 4048, 4052, 4056, 4060, 4064, 4068, 4072, 4076, 4080, 4084, - 4088, 4092, 4099, 4103, 4107, 4111, 4115, 4119, 4123, 4127, - 4131, 4137, 4143, 4151, 4155, 4159, 4163, 4170, 4180, 4186, - 4192, 4202, 4214, 4222, 4226, 4256, 4260, 4264, 4268, 4272, - 4276, 4282, 4286, 4290, 4294, 4298, 4309, 4313, 4317, 4321, - 4329, 4333, 4337, 4343, 4354 + 0, 463, 463, 464, 468, 475, 476, 483, 482, 493, + 494, 498, 502, 506, 519, 518, 530, 531, 532, 533, + 534, 535, 536, 549, 558, 562, 570, 574, 578, 599, + 626, 647, 676, 712, 755, 767, 788, 824, 858, 880, + 916, 938, 949, 963, 962, 977, 981, 986, 990, 1001, + 1005, 1009, 1013, 1017, 1026, 1030, 1034, 1038, 1042, 1046, + 1050, 1054, 1058, 1065, 1069, 1074, 1082, 1087, 1095, 1099, + 1107, 1112, 1121, 1120, 1136, 1146, 1145, 1162, 1170, 1178, + 1190, 1207, 1206, 1221, 1236, 1246, 1262, 1261, 1304, 1303, + 1332, 1331, 1369, 1368, 1400, 1399, 1419, 1418, 1440, 1439, + 1472, 1471, 1498, 1511, 1515, 1519, 1523, 1527, 1536, 1540, + 1544, 1548, 1552, 1557, 1562, 1566, 1570, 1577, 1581, 1585, + 1589, 1593, 1597, 1601, 1605, 1609, 1613, 1617, 1621, 1625, + 1629, 1633, 1637, 1641, 1645, 1649, 1653, 1657, 1661, 1665, + 1669, 1673, 1677, 1681, 1685, 1689, 1693, 1697, 1701, 1705, + 1709, 1713, 1717, 1721, 1725, 1729, 1733, 1740, 1741, 1742, + 1746, 1748, 1747, 1755, 1756, 1760, 1761, 1765, 1771, 1780, + 1781, 1785, 1789, 1793, 1797, 1803, 1809, 1815, 1822, 1827, + 1836, 1840, 1845, 1853, 1865, 1869, 1883, 1898, 1903, 1908, + 1913, 1918, 1923, 1928, 1933, 1939, 1938, 1969, 1979, 1989, + 1993, 1997, 2006, 2010, 2018, 2022, 2027, 2031, 2036, 2044, + 2049, 2057, 2061, 2066, 2070, 2075, 2083, 2088, 2096, 2100, + 2107, 2111, 2118, 2122, 2126, 2130, 2134, 2141, 2145, 2149, + 2153, 2157, 2161, 2168, 2169, 2170, 2174, 2177, 2178, 2179, + 2183, 2189, 2196, 2203, 2209, 2216, 2223, 2235, 2239, 2249, + 2253, 2257, 2262, 2267, 2272, 2277, 2282, 2287, 2295, 2299, + 2303, 2308, 2313, 2318, 2323, 2328, 2333, 2338, 2344, 2352, + 2357, 2362, 2367, 2372, 2377, 2382, 2387, 2392, 2397, 2403, + 2411, 2415, 2420, 2425, 2430, 2435, 2440, 2445, 2450, 2455, + 2463, 2467, 2472, 2477, 2482, 2487, 2492, 2497, 2502, 2507, + 2512, 2518, 2525, 2532, 2542, 2546, 2554, 2558, 2562, 2566, + 2570, 2586, 2602, 2611, 2615, 2625, 2632, 2643, 2647, 2655, + 2659, 2663, 2667, 2671, 2687, 2703, 2721, 2730, 2734, 2744, + 2751, 2755, 2763, 2767, 2783, 2799, 2808, 2818, 2825, 2829, + 2837, 2841, 2846, 2850, 2859, 2858, 2883, 2882, 2912, 2913, + 2920, 2921, 2925, 2926, 2930, 2934, 2938, 2942, 2946, 2950, + 2954, 2958, 2962, 2966, 2973, 2981, 2985, 2989, 2994, 3002, + 3006, 3013, 3014, 3019, 3026, 3027, 3032, 3040, 3044, 3048, + 3055, 3059, 3063, 3071, 3070, 3093, 3092, 3115, 3116, 3120, + 3126, 3133, 3139, 3148, 3149, 3150, 3154, 3158, 3162, 3166, + 3170, 3174, 3178, 3183, 3188, 3193, 3198, 3202, 3207, 3216, + 3221, 3229, 3233, 3237, 3245, 3255, 3255, 3265, 3266, 3270, + 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, + 3281, 3281, 3281, 3282, 3282, 3282, 3282, 3282, 3283, 3283, + 3283, 3283, 3283, 3284, 3284, 3284, 3285, 3285, 3285, 3285, + 3285, 3286, 3286, 3286, 3286, 3286, 3287, 3287, 3288, 3288, + 3288, 3288, 3288, 3289, 3289, 3289, 3289, 3289, 3290, 3290, + 3290, 3290, 3290, 3291, 3291, 3291, 3291, 3291, 3292, 3292, + 3292, 3292, 3292, 3293, 3293, 3293, 3293, 3293, 3294, 3294, + 3294, 3294, 3294, 3294, 3295, 3295, 3295, 3295, 3295, 3296, + 3296, 3296, 3296, 3297, 3297, 3297, 3297, 3298, 3298, 3298, + 3298, 3298, 3299, 3299, 3299, 3299, 3300, 3300, 3300, 3300, + 3300, 3301, 3301, 3301, 3301, 3302, 3302, 3302, 3302, 3302, + 3303, 3303, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, + 3306, 3306, 3306, 3307, 3307, 3307, 3307, 3307, 3307, 3307, + 3307, 3307, 3307, 3308, 3308, 3312, 3316, 3323, 3327, 3334, + 3338, 3345, 3349, 3353, 3357, 3361, 3365, 3369, 3373, 3377, + 3381, 3385, 3389, 3393, 3397, 3401, 3405, 3409, 3413, 3417, + 3421, 3425, 3429, 3433, 3437, 3441, 3445, 3449, 3453, 3457, + 3461, 3465, 3469, 3473, 3477, 3481, 3485, 3489, 3493, 3497, + 3501, 3509, 3513, 3517, 3521, 3525, 3529, 3533, 3543, 3553, + 3559, 3565, 3571, 3577, 3583, 3589, 3595, 3602, 3609, 3616, + 3623, 3629, 3635, 3639, 3643, 3647, 3651, 3655, 3659, 3670, + 3681, 3685, 3689, 3693, 3697, 3701, 3705, 3709, 3713, 3717, + 3721, 3725, 3729, 3733, 3737, 3741, 3745, 3749, 3753, 3757, + 3761, 3765, 3769, 3773, 3777, 3781, 3785, 3789, 3793, 3797, + 3801, 3805, 3809, 3816, 3820, 3824, 3828, 3832, 3836, 3840, + 3844, 3848, 3854, 3860, 3864, 3871, 3879, 3883, 3887, 3891, + 3895, 3899, 3903, 3907, 3911, 3915, 3919, 3923, 3927, 3931, + 3935, 3939, 3943, 3957, 3961, 3965, 3969, 3973, 3977, 3981, + 3985, 3989, 3993, 3997, 4001, 4005, 4016, 4027, 4031, 4035, + 4039, 4043, 4047, 4051, 4055, 4059, 4063, 4067, 4071, 4075, + 4079, 4083, 4087, 4091, 4095, 4099, 4103, 4107, 4111, 4115, + 4119, 4123, 4127, 4131, 4135, 4139, 4143, 4147, 4154, 4158, + 4162, 4166, 4170, 4174, 4178, 4182, 4186, 4192, 4198, 4206, + 4210, 4214, 4218, 4225, 4235, 4241, 4247, 4257, 4269, 4277, + 4281, 4311, 4315, 4319, 4323, 4327, 4331, 4337, 4341, 4345, + 4349, 4353, 4364, 4368, 4372, 4376, 4384, 4388, 4392, 4398, + 4409 }; #endif @@ -1101,18 +1121,18 @@ static const char *const yytname[] = "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", + "'!'", "']'", "$accept", "grammar", "cpp", "$@1", "constructor_inits", + "constructor_init", "extern_c", "$@2", "declaration", + "friend_declaration", "$@3", "storage_class", "optional_attributes", + "attribute_specifiers", "attribute_specifier", "type_like_declaration", + "$@4", "$@5", "multiple_instance_identifiers", "typedef_declaration", + "$@6", "typedef_instance_identifiers", "constructor_prototype", "$@7", + "$@8", "$@9", "function_prototype", "$@10", "$@11", "$@12", "$@13", + "$@14", "function_post", "function_operator", + "more_template_declaration", "template_declaration", "$@15", + "template_formal_parameters", "template_nonempty_formal_parameters", + "typename_keyword", "template_formal_parameter", + "template_formal_parameter_type", "instance_identifier", "$@16", "instance_identifier_and_maybe_trailing_return_type", "maybe_trailing_return_type", "maybe_comma_identifier", "function_parameter_list", "function_parameters", @@ -1124,13 +1144,13 @@ static const char *const yytname[] = "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", + "predefined_type", "var_type_decl", "full_type", "anonymous_struct", + "$@17", "named_struct", "$@18", "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", "$@19", + "$@20", "using_declaration", "simple_type", "simple_int_type", + "simple_float_type", "simple_void_type", "code", "$@21", "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", @@ -1145,774 +1165,718 @@ yysymbol_name (yysymbol_kind_t 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, 406, 407, 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 (-943) +#define YYPACT_NINF (-1067) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-780) +#define YYTABLE_NINF (-776) #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - 351, -943, 4051, 6509, 55, 5643, -943, -943, -943, -943, - -943, -943, -943, -943, -43, -99, -60, -53, 1, 28, - 32, -104, 35, -30, -943, -943, 45, 81, 84, 105, - 141, 154, 161, 176, 179, 193, 196, 237, 258, 267, - 271, 274, 289, 291, 299, 6771, 4051, -943, -943, -23, - 305, 309, 2923, -20, -943, 311, 315, 319, 4051, 4051, - 4051, 4051, 4051, 2045, 967, 4051, 4070, -943, 169, -943, - -943, -943, -943, -943, -943, -943, -943, -943, 6627, 334, - -943, -19, -943, -943, 7877, 4754, 4754, -943, 6780, 346, - -943, 4754, -943, -943, 415, 415, -943, -943, -943, -943, - -31, 88, -943, -943, -943, -943, -943, -943, 6268, 359, - -943, 7838, 7838, 7838, 7838, 7838, -943, 7838, 6077, 7838, - 4051, -4, -943, 7799, 365, 379, 380, 387, 392, 393, - 7838, 4736, 65, 92, 275, 7838, 7838, 403, 7640, 7838, - 7838, 7510, 7838, 7838, -943, -943, -943, -943, 4899, -943, - -943, -943, -943, -943, 4051, 4051, 6509, 4051, 4051, 4051, - 4051, 4051, 6509, 4051, 6509, 4051, 6509, 4051, 6509, 6509, - 6509, 6509, 6509, 6509, 6509, 6509, 6509, 6509, 6509, 6509, - 6509, 6509, 6509, 4051, -943, -943, 406, 6780, 408, 409, - 6780, -943, -943, 4758, 6509, 4051, 4051, 412, 2045, 103, - 6509, 2045, 4051, 4051, 103, 103, 103, 103, 103, -43, - -60, -53, 1, 28, 32, 35, 45, 84, 6473, 6215, - 7539, 7553, 319, 144, -70, 4070, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, 6780, 6780, - -81, 266, -943, -943, 103, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 6780, 3064, 4051, -943, - -943, 415, 415, 3205, -943, -943, -943, 4754, -943, -943, - -943, -943, 6509, -943, 356, 446, 202, 415, 415, 202, - 202, 5763, 413, -943, 416, -943, -943, -943, -943, -943, - -943, 5019, 428, 5798, -943, 6780, 511, 433, 427, 2636, - 6116, 7838, -943, -943, -943, -943, -943, -943, 7838, -943, - -943, -943, 5120, -943, 7683, 4814, -943, 6780, 6780, 6780, - 6780, 6780, 6780, -943, -943, 453, -943, -943, -943, -943, - -943, 4051, -943, 4954, -943, 448, -943, 5046, -943, 6780, - 6780, 124, -943, -943, 284, 440, -943, 441, 6653, 6780, - 442, -943, 6780, -943, 269, 459, -943, -943, -943, -943, - 4315, -943, -943, 443, 461, -943, 447, 452, 456, 458, - 463, 464, 465, 460, 473, 471, 475, 476, 479, 480, - 462, 481, -67, 501, 484, 486, 489, 490, 491, 494, - 499, 500, 503, 505, 506, 4051, -943, 6509, 4051, -943, - 7521, -943, 522, 513, 515, 6780, 518, 529, 520, 5179, - 524, 526, 4051, 4051, -943, 680, -943, 1132, 530, 4051, - -943, -943, 1784, 5573, 4544, 4544, 1058, 1058, 1271, 429, - 429, -943, 5474, 5773, 5820, 4187, 1058, 1058, 95, 95, - 103, 103, 103, -943, -943, -66, 2655, -943, -943, 531, - 5200, 532, 202, 540, 548, 6780, 202, 202, 202, 202, - 202, 546, -943, 413, -943, 413, -943, 546, 546, -943, - 202, 6268, 6535, 6412, 202, 202, 547, 13, -943, 922, - 683, -943, 4051, 6780, 545, -943, -943, -943, -943, 5019, - -44, 152, 165, 6268, 553, 213, -943, -943, -943, 569, - 7838, 6268, 4333, -43, 554, 5219, -943, 7838, -943, -943, - 573, 576, 589, 598, 602, 603, 608, 6908, -943, 4352, - 6176, 332, 593, 269, -943, -943, 614, 615, -943, 6509, - -943, 22, 3346, 6863, 993, -943, 6509, -943, 600, 219, - -943, -943, 2782, -943, -943, 826, -943, 616, 5798, -943, - -943, -943, -943, -943, -943, -943, -943, 605, -943, 617, - -943, -943, -943, -943, 6509, -943, 6509, -943, 6509, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - 5238, 601, 621, -943, 625, -943, -943, 627, 4192, 630, - -943, -943, -943, -943, 103, 4070, -943, 6780, 266, 6273, - 5989, -943, 4070, 4051, -943, -943, -943, -943, -943, 546, - 202, -943, 546, 546, 546, 546, 546, 4051, 162, 724, - 6627, 922, 683, -943, 188, 246, -943, -943, 6370, 632, - 922, 922, 922, 922, 922, 922, -101, -943, -943, 636, - 6780, 683, 683, 683, 683, 683, 683, -75, 611, 4070, - -943, -113, -943, 650, 757, 2636, -943, 730, 6268, -943, - -943, -943, -943, -943, -943, -943, -943, 641, 652, 658, - -943, -943, 6771, -943, -943, 660, 1715, 665, -943, 661, - 4051, 4051, 4051, 4051, 2045, 4051, 656, 50, -943, -943, - 5512, -943, 169, -943, 7838, 7838, -943, 6995, -943, 823, - 824, 830, 832, 835, 836, -943, -943, 301, 692, -943, - -943, -943, -943, 389, -943, 685, 696, 5146, -943, 542, - -943, -943, 73, -943, 826, -943, -943, 697, 6273, 682, - 687, 826, 6273, 684, 5278, 993, 690, 993, 993, 993, - 993, 993, 321, -943, -943, 686, 7082, -943, -943, -943, - 6780, 404, -943, 688, -943, 703, 705, 3487, 3506, 695, - 826, 826, 4830, 826, 826, 826, 826, -943, 86, 343, - -943, 5019, -943, 4051, 4051, 691, 693, 716, -943, -943, - -943, 4051, -943, 4051, -943, 718, -943, 6745, 6268, -943, - -943, -943, -943, -943, 4051, -943, 694, -943, -943, 710, - -943, 4070, 546, 717, 721, 6412, 922, 683, -101, -75, - 726, 727, 5989, -943, -943, 922, 728, 728, 728, 728, - 728, 340, 4051, -943, 683, -943, 731, 731, 731, 731, - 731, 352, 4051, -943, 733, -943, 4051, -943, 729, 5297, - 7169, -943, 750, -943, -943, 6509, 6509, 6509, 737, 6509, - 739, 2045, 121, 6509, 2045, 103, 103, 103, 103, 740, - -52, 103, -943, -943, 4480, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 6780, 3628, 4051, -943, - -943, -943, -943, 758, -50, 761, 762, 770, 771, 7256, - 77, -943, 542, 7760, 6176, 6780, 772, 764, 542, 542, - 542, 542, 542, 542, 111, 731, -943, 343, -943, 754, - 766, 826, 348, 755, -943, -943, 362, 993, 769, 769, - 769, 769, 769, -943, 4051, -943, -943, 6273, 768, 388, - -943, 143, 783, 792, -943, 2462, -943, -943, -943, 3487, - 774, 795, 4070, -943, -943, 826, 373, 373, 940, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, 780, 778, -943, -943, - 373, 373, 373, 367, 4051, -943, 4051, -943, 2782, 801, - -943, 650, -49, -46, -943, -943, -943, -40, -39, -943, - 6771, 415, 908, 5396, 49, -943, -943, 6273, -943, -101, - -75, -943, -943, 6273, 6273, -943, 728, 788, 784, 731, - 790, 786, 3788, -943, -943, -943, 6076, 811, 812, -943, - 794, 809, 813, 4051, 817, 6780, 802, 818, 810, 5455, - 4051, -943, -943, -943, 1784, 5573, 4544, 4544, 1058, 1058, - 1271, 429, 429, -943, 5493, 5773, 5820, 4187, 1058, 1058, - 95, 95, 103, 103, 103, -943, -943, -35, 2942, 7343, - 964, 972, 831, 975, 815, -943, 983, 984, 990, -943, - 846, 111, 731, -943, -943, -943, -943, -943, -943, 6509, - 542, 4669, -943, -943, 848, -943, -943, -943, 376, 838, - -943, -943, 769, 6273, 837, 841, -943, -943, 6780, 4051, - 4051, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - -943, -943, -943, -943, -943, -943, -943, -943, -943, -943, - 842, -943, 3769, 373, -943, -943, -943, -943, 4070, 4333, - 843, 3506, 826, -943, -943, -943, -943, 5989, 415, -943, - -943, -943, -943, 18, 844, 847, -943, -943, 849, 851, - 6273, -943, 6273, -943, -943, 5949, 6172, 6232, 6780, 450, - -943, -943, 996, -943, 6076, -943, 850, 855, 856, 860, - 859, 4192, 862, -943, -943, 103, 4051, -943, -943, -943, - 861, -29, -943, 863, 885, -28, 874, -8, -943, -943, - -943, 879, 892, 894, 895, 4567, 896, 4669, 4669, 4669, - 4669, 4669, 2045, 4669, 1804, -943, 826, 5999, 6273, 890, - -943, 5999, 6273, 891, -943, -943, 889, -943, 893, 900, - 2234, -943, 3487, 4070, 902, -943, -943, 912, -943, 904, - -943, -943, -943, -943, -943, 911, 917, 6621, -943, 6621, - -943, 6621, -943, -943, 6621, 6621, 6621, -943, 7430, -943, - 4051, 4051, -943, 4051, -943, 4051, 4070, 913, 1056, 936, - 1085, -943, 1087, 943, 944, 1090, 946, 6509, 6509, 6509, - 6509, 931, 2045, 127, 6509, 127, 127, 127, 127, 127, - 930, 16, 127, 4669, 4669, 4669, 4669, 4669, 4669, 4669, - 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, - 4669, 4669, 6780, 3910, 4051, -943, 932, -943, 6273, 933, - -943, 5999, -943, -943, 1089, -943, 934, -943, -943, -943, - 5989, 5989, 5989, -943, -943, -943, -943, -943, -943, -943, - -943, -943, 19, 25, 130, 146, -943, 953, -943, 938, - 955, -943, -943, 147, -943, 942, 954, 957, 958, 6780, - 945, 960, 4669, -943, 2394, 5837, 1506, 1506, 1193, 1193, - 1461, 568, 568, -943, 1257, 5854, 5878, 1894, 186, 186, - 127, 127, 127, -943, -943, 170, 3224, -943, 6273, 962, - -943, 5999, -943, -943, 5999, 952, -943, -943, -943, 5999, - 5999, -943, -943, -943, -943, 1117, 963, 976, 1120, 1127, - 986, -943, 974, 977, 978, 973, 1916, 980, 127, 4669, - -943, -943, 5999, 979, -943, 5999, -943, -943, 992, -943, - 985, 205, -943, 4051, 4051, 4051, -943, 4051, 1804, -943, - 5989, -943, 998, 1146, 1002, 248, 252, 260, 263, 5989, - -943, -943, 987, -943, -943, -943, -943, -943, -943, 1006, - -943 + 6, -1067, 4356, 6263, 39, 40, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -62, -119, -103, -79, -69, -64, + -58, -15, 23, 58, -1067, -1067, 76, 81, 126, 136, + 146, 149, 152, 154, 158, 169, 179, 196, 202, 230, + 244, 254, 268, 270, 274, 6525, 4356, -1067, -1067, 183, + 287, 307, 3228, 266, -1067, 311, 319, 336, 4356, 4356, + 4356, 4356, 4356, 2281, 1265, 4356, 3811, -1067, 155, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, 6381, 354, + -1067, 12, -1067, -1067, 4560, 5184, 5184, -1067, 5572, 356, + -1067, 5184, -1067, -1067, 88, 88, -1067, -1067, -1067, -1067, + -56, 121, 121, -1067, -1067, -1067, -1067, -1067, 5832, 374, + 321, -1067, 4356, 4356, 6263, 4356, 4356, 4356, 4356, 4356, + 6263, 4356, 6263, 4356, 6263, 4356, 6263, 6263, 6263, 6263, + 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, + 6263, 4356, -1067, -1067, 389, 5572, 390, 399, 121, 121, + -1067, 5278, 6263, 4356, 4356, 410, 2281, 52, 6263, 2281, + 4356, 4356, 52, 52, 52, 52, 52, -62, -103, -79, + -69, -64, -58, 23, 76, 126, 5823, 5081, 6109, 6713, + 336, 343, -89, 3811, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, 5572, 5572, -99, 393, + -1067, -1067, 52, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 5572, 3369, 4356, -1067, -1067, 88, + 88, 3510, -1067, -1067, -1067, 5184, -1067, -1067, -1067, -1067, + 6263, -1067, 400, 907, 121, 88, 88, 121, 121, 215, + 404, -1067, 416, -1067, -1067, 115, 1624, 5572, 533, 436, + 427, 2941, -1067, 6770, 431, 449, -1067, 433, 435, 445, + 455, 456, 470, 481, 493, 488, 503, 492, 496, 512, + 518, 514, 526, -78, 522, 527, 531, 532, 535, 536, + 539, 542, 547, 548, 549, 550, 4356, -1067, 6263, 4356, + 5572, 5572, -1067, 517, 563, 565, 5572, 566, 581, 573, + 5299, 575, 577, 4356, 4356, -1067, 742, -1067, 1442, 587, + 4356, -1067, -1067, 5627, 5662, 1314, 1314, 925, 925, 1273, + 285, 285, -1067, 5590, 5817, 5834, 1595, 925, 925, 334, + 334, 52, 52, 52, -1067, -1067, -75, 1693, -1067, -1067, + 586, 5318, 588, 121, 121, 70, 404, -1067, 404, -1067, + 70, 70, -1067, 121, 121, 121, 6171, 589, 27, -1067, + 591, 4356, 5572, 593, -1067, -1067, -1067, -1067, -1067, 1497, + 612, 87, 186, 218, 219, -1067, -1067, -1067, 613, 121, + 5572, 4959, -62, -1067, 600, 5572, 601, 602, -1067, -1067, + -1067, 121, 121, -1067, 5337, -1067, 6874, 6874, 6874, 6874, + 6874, -1067, 6874, 6007, 6874, 4356, 617, -1067, 5880, 603, + 607, 610, 623, 624, 625, 6874, 85, 627, 628, 641, + 6874, 6874, 629, 1044, 6874, 6874, 6693, 6874, 6874, -1067, + -1067, -1067, 2428, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, 630, -1067, 631, -1067, + -1067, -1067, -1067, 6263, -1067, 6263, -1067, 6263, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, 5356, + 626, 634, -1067, -1067, 633, -1067, -1067, 636, 4497, 639, + -1067, -1067, -1067, -1067, 52, 3811, -1067, 5572, 393, 56, + 4836, -1067, 3811, 4356, -1067, -1067, -1067, -1067, -1067, 70, + 643, 645, 5572, 121, 70, 70, 121, 121, 646, -1067, + 646, 646, 70, 70, 70, 6289, 121, 743, 632, -1067, + -1067, 60, 637, 3811, -1067, 121, -1067, -1067, -1067, -1067, + 1497, -1067, 736, 5572, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, 648, 658, 660, -1067, -1067, 6525, -1067, -1067, + 665, 1240, 666, -1067, 662, 4356, 4356, 4356, 4356, 2281, + 4356, 661, 35, -1067, -1067, 4093, -1067, 155, 663, 3651, + -1067, 6263, 121, 1809, 1624, 121, 6014, 6874, -1067, -1067, + -1067, -1067, -1067, -1067, 6874, -1067, -1067, -1067, 5375, -1067, + 6770, 4594, -1067, 5572, 5572, 5572, 5572, 5572, 5572, -1067, + -1067, 5572, -1067, -1067, -1067, -1067, -1067, 4356, -1067, 5105, + -1067, 669, -1067, 5145, -1067, 5572, 5572, 19, -1067, -1067, + 460, 664, 6407, -1067, 5572, -1067, 484, 689, -1067, 4356, + 4356, 673, 674, 675, -1067, -1067, -1067, 4356, -1067, 4356, + -1067, 678, -1067, -1067, -1067, -1067, -1067, -1067, 4356, -1067, + 681, -1067, -1067, 822, 3811, 646, 121, 121, 70, 646, + 646, 70, 70, 4356, 83, 165, 212, 6381, 743, 632, + -1067, 691, 121, 743, 743, 121, 121, 743, -38, 121, + -1067, 693, 5572, 121, 632, 632, 121, 121, 632, 13, + 4836, -1067, -1067, 121, -98, 708, 16, -1067, 707, -1067, + 815, 6263, 6263, 6263, 695, 6263, 699, 2281, 55, 6263, + 2281, 52, 52, 52, 52, 701, -74, 52, -1067, -1067, + 4983, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 5572, 3792, 4356, 705, 5394, 709, -1067, -1067, + 716, -1067, -1067, -1067, 6874, -1067, -1067, 727, 729, 731, + 732, 733, 738, 739, 22, 728, 2960, 6053, 489, 723, + 484, -1067, -1067, 740, 744, -1067, 741, -1067, 31, 6617, + 718, -1067, 726, 479, -1067, -1067, 3087, -1067, -1067, 545, + -11, -9, -1067, -1067, -1067, 151, 159, -1067, 5552, 843, + 6499, 747, -1067, 70, -1067, 646, 646, 646, 737, 734, + 735, 745, 743, 632, -38, 13, 121, 743, 748, 748, + 743, 743, 221, 4356, -1067, -1067, 121, 121, 632, 750, + 750, 632, 632, 289, 4356, -1067, 822, 751, -1067, 4356, + -1067, 5069, 749, 754, -1067, 121, 753, 752, 764, 4356, + 765, 5572, 756, 768, 759, 5571, 4356, -1067, -1067, -1067, + 5627, 5662, 1314, 1314, 925, 925, 1273, 285, 285, -1067, + 5609, 5817, 5834, 1595, 925, 925, 334, 334, 52, 52, + 52, -1067, -1067, 174, 1900, -1067, -1067, -1067, 1497, -1067, + 98, -1067, 893, 902, 923, 926, 927, 930, -1067, -1067, + 273, 786, -1067, -1067, -1067, -1067, 6145, -1067, 779, 789, + 4695, -1067, 730, -1067, -1067, 48, -1067, 545, -1067, -1067, + 6263, 56, 781, 792, 545, 56, 718, 795, 121, 718, + 718, 121, 121, 314, 121, -1067, 101, -1067, -1067, -1067, + 5572, 425, -1067, 790, -1067, 800, 811, 3933, 3247, 803, + 121, 545, 2075, 545, 121, 121, 545, -1067, 102, 495, + 121, -1067, -1067, -1067, -1067, 4836, -1067, -1067, 20, 6525, + 88, -1067, 646, 121, 56, 56, 56, -38, 13, -1067, + -1067, 743, 748, 748, 748, 802, 798, 632, -1067, 750, + 750, 750, 805, 801, -1067, 3529, 6139, 6375, 6611, 5572, + 257, -1067, -1067, 956, -1067, 5069, -1067, -1067, 807, 809, + 808, 824, 820, 4497, 825, -1067, -1067, 52, 4356, -1067, + -1067, 708, -1067, -1067, 828, 209, 845, 846, 850, 852, + -1067, 43, -1067, 730, 6847, 6053, 5572, 840, 842, 121, + 730, 730, 121, 121, 730, 89, 750, -1067, 495, 854, + 839, 844, 545, 502, 851, 348, 121, 718, 858, 858, + 718, 718, -1067, 4356, -1067, -1067, 56, 849, 383, -1067, + 97, 878, 882, -1067, 2757, -1067, -1067, -1067, 3933, 864, + 886, 3811, -1067, -1067, 121, 545, 382, 1031, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, 871, 869, -1067, 121, 382, + 545, 545, 524, 4356, -1067, 4356, -1067, 3087, 894, -1067, + -1067, 822, 874, -1067, 88, -1067, 877, -1067, 879, 883, + 885, -1067, -1067, 748, 56, 121, 750, 56, 121, -1067, + 6626, -1067, 6626, -1067, 6626, -1067, -1067, 6626, 6626, 6626, + -1067, 298, -1067, 4356, 4356, -1067, 4356, -1067, 4356, 3811, + 301, 1049, 1050, 906, 1052, 891, -1067, 1055, 1057, 1058, + 305, 916, 89, 750, -1067, -1067, -1067, -1067, -1067, -1067, + 6263, 121, 730, 730, 730, 4740, -1067, -1067, 919, -1067, + -1067, -1067, -1067, 546, 903, -1067, -1067, 718, 858, 858, + 858, 56, 900, 904, -1067, -1067, 5572, 4356, 4356, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, -1067, -1067, -1067, -1067, -1067, 908, -1067, + 4074, 545, 382, 121, -1067, -1067, -1067, 382, 382, -1067, + 3811, 4959, 905, 3247, 545, 931, -1067, -1067, -1067, -1067, + -1067, -1067, 910, -1067, 912, -1067, -1067, -1067, -1067, -1067, + -1067, -1067, -1067, 226, 248, 262, 265, -1067, 921, 286, + -1067, 946, 947, 337, 928, 342, -1067, -1067, -1067, -1067, + 730, 932, 942, 943, 948, 4638, 949, 4740, 4740, 4740, + 4740, 4740, 2281, 4740, 4375, -1067, 545, 4836, 56, 941, + -1067, 4836, 56, 858, 940, 121, -1067, 944, -1067, 951, + 960, 2583, -1067, 3933, 3811, 382, -1067, 961, 121, -1067, + -1067, 4836, 4836, 4836, -1067, -1067, -1067, -1067, -1067, -1067, + 959, 1105, 962, 1106, -1067, 1119, 980, 981, 1128, 986, + 6263, 6263, 6263, 6263, 971, 2281, 132, 6263, 132, 132, + 132, 132, 132, 970, 345, 132, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4740, 5572, 4215, 4356, -1067, -1067, + 972, -1067, 56, -1067, 973, -1067, -1067, 4836, -1067, -1067, + 1132, -1067, 974, -1067, -1067, 975, 822, 822, 822, 4836, + 4836, -1067, 998, -1067, 982, 1000, -1067, -1067, 379, -1067, + 984, 995, 996, 997, 5572, 991, 1002, 4740, -1067, 5645, + 5851, 2514, 2514, 1814, 1814, 1498, 299, 299, -1067, 2139, + 5868, 5885, 1714, 376, 376, 132, 132, 132, -1067, -1067, + 395, 2303, -1067, 56, 999, -1067, 1197, -1067, -1067, -1067, + 4836, -1067, -1067, -1067, -1067, -1067, -1067, 1158, 1001, 1014, + 1160, 1165, 1021, -1067, 1006, 1008, 1010, 1009, 4842, 1013, + 132, 4740, -1067, -1067, 4836, 1012, -1067, 1197, -1067, -1067, + 1038, -1067, 1024, 405, -1067, 4356, 4356, 4356, -1067, 4356, + 4375, -1067, -1067, 4836, -1067, 1039, 1176, 1043, 411, 421, + 423, 429, 4836, 822, -1067, 1026, -1067, -1067, -1067, -1067, + -1067, 822, -1067, 1045, -1067, -1067 }; - /* 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. */ +/* 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, 784, 0, 0, 0, 784, 5, 671, 667, 670, - 780, 781, 673, 674, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 669, 675, 0, 0, 0, 0, + 0, 780, 0, 0, 0, 780, 5, 667, 663, 666, + 776, 777, 669, 670, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 665, 671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 677, 676, 0, - 0, 0, 0, 0, 668, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 784, 0, 3, 605, 672, 305, - 316, 315, 400, 401, 403, 404, 405, 384, 0, 0, - 416, 381, 415, 410, 407, 406, 409, 385, 0, 0, - 386, 408, 418, 402, 784, 784, 4, 307, 308, 309, - 0, 370, 784, 304, 397, 398, 399, 1, 0, 0, - 21, 784, 784, 784, 784, 784, 22, 784, 784, 784, - 0, 0, 42, 784, 0, 0, 0, 0, 0, 0, - 784, 0, 0, 0, 0, 784, 784, 0, 784, 784, - 784, 0, 784, 784, 6, 17, 7, 19, 0, 15, - 16, 18, 76, 44, 784, 784, 0, 784, 784, 784, - 784, 784, 0, 784, 0, 784, 0, 784, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 673, 672, 0, + 0, 0, 0, 0, 664, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 780, 0, 3, 601, 668, 305, + 316, 315, 396, 397, 399, 400, 401, 380, 0, 0, + 412, 377, 411, 406, 403, 402, 405, 381, 0, 0, + 382, 404, 414, 398, 780, 780, 4, 307, 308, 309, + 0, 780, 780, 304, 393, 394, 395, 1, 0, 0, + 7, 63, 780, 780, 0, 780, 780, 780, 780, 780, + 0, 780, 0, 780, 0, 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 784, 331, 337, 0, 0, 0, 630, - 0, 784, 330, 0, 0, 784, 784, 0, 0, 627, - 0, 0, 784, 784, 639, 637, 636, 638, 635, 305, - 400, 401, 403, 404, 405, 416, 415, 410, 407, 406, - 409, 408, 402, 0, 0, 563, 765, 766, 767, 775, - 768, 771, 769, 773, 772, 770, 774, 754, 755, 0, - 0, 784, 760, 753, 634, 0, 0, 0, 0, 0, + 0, 780, 331, 337, 0, 0, 0, 626, 780, 780, + 330, 0, 0, 780, 780, 0, 0, 623, 0, 0, + 780, 780, 635, 633, 632, 634, 631, 305, 396, 397, + 399, 400, 401, 412, 411, 406, 403, 402, 405, 404, + 398, 0, 0, 559, 761, 762, 763, 771, 764, 767, + 765, 769, 768, 766, 770, 750, 751, 0, 0, 780, + 756, 749, 630, 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, 782, - 783, 784, 784, 0, 382, 383, 417, 407, 412, 411, - 414, 306, 0, 413, 0, 291, 784, 784, 784, 784, - 784, 784, 0, 340, 290, 342, 784, 776, 777, 778, - 779, 0, 372, 0, 344, 0, 0, 65, 67, 0, - 784, 784, 59, 45, 56, 57, 58, 60, 784, 46, - 159, 51, 0, 23, 784, 0, 49, 0, 0, 0, - 0, 0, 0, 55, 784, 0, 26, 25, 24, 53, - 48, 0, 163, 0, 162, 0, 61, 0, 20, 0, - 0, 0, 50, 54, 339, 318, 329, 0, 0, 0, - 0, 13, 0, 73, 0, 338, 70, 320, 321, 322, - 370, 784, 317, 0, 562, 561, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 778, 779, 780, + 780, 0, 378, 379, 413, 403, 408, 407, 410, 306, + 0, 409, 0, 291, 780, 780, 780, 780, 780, 780, + 0, 340, 290, 342, 780, 366, 0, 0, 0, 68, + 70, 0, 6, 780, 0, 558, 557, 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, 332, 0, 784, 334, - 0, 663, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 666, 758, 761, 0, 784, 0, - 756, 219, 648, 649, 650, 651, 652, 653, 654, 657, - 658, 665, 0, 645, 646, 647, 655, 656, 643, 644, - 640, 641, 642, 664, 662, 0, 0, 341, 343, 0, - 0, 0, 784, 292, 0, 281, 784, 784, 784, 784, - 784, 297, 280, 0, 293, 0, 294, 296, 295, 204, - 784, 0, 0, 0, 784, 784, 0, 205, 208, 784, - 0, 203, 784, 378, 0, 375, 374, 369, 373, 0, - 765, 766, 767, 0, 0, 769, 348, 310, 350, 0, - 784, 0, 784, 318, 0, 0, 47, 784, 43, 784, - 0, 0, 0, 0, 0, 0, 0, 784, 387, 0, - 784, 339, 318, 0, 338, 79, 0, 0, 393, 0, - 84, 88, 0, 0, 784, 319, 0, 784, 0, 0, - 419, 226, 0, 75, 72, 0, 325, 372, 0, 612, - 611, 629, 619, 614, 616, 617, 618, 0, 625, 0, - 624, 680, 613, 681, 0, 683, 0, 684, 0, 687, - 688, 689, 690, 691, 692, 693, 694, 695, 696, 621, - 0, 0, 0, 333, 0, 620, 623, 0, 626, 0, - 632, 633, 622, 615, 606, 564, 759, 0, 784, 784, - 784, 101, 220, 0, 661, 660, 313, 312, 314, 298, - 784, 282, 287, 283, 284, 286, 285, 784, 0, 0, - 0, 784, 0, 245, 0, 0, 784, 207, 0, 0, - 784, 784, 784, 784, 784, 784, 784, 259, 258, 0, - 269, 0, 0, 0, 0, 0, 0, 784, 0, 560, - 559, 379, 368, 311, 0, 0, 784, 784, 0, 62, - 66, 746, 742, 745, 748, 749, 211, 0, 0, 0, - 744, 750, 0, 752, 751, 0, 0, 0, 743, 0, - 0, 0, 0, 0, 0, 0, 0, 212, 247, 215, - 248, 697, 747, 210, 784, 784, 52, 784, 389, 0, - 0, 0, 0, 0, 0, 391, 784, 0, 0, 180, - 181, 182, 168, 0, 169, 0, 165, 170, 166, 784, - 179, 164, 0, 81, 0, 396, 395, 0, 784, 0, - 0, 0, 784, 0, 0, 784, 0, 784, 784, 784, - 784, 784, 0, 250, 249, 0, 784, 90, 419, 221, - 0, 0, 74, 0, 784, 0, 0, 784, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 71, 784, 784, - 183, 0, 323, 0, 0, 0, 0, 0, 335, 336, - 631, 0, 628, 0, 757, 0, 109, 0, 0, 102, - 111, 106, 110, 104, 0, 107, 0, 103, 108, 0, - 198, 659, 288, 0, 0, 0, 784, 0, 784, 784, - 0, 0, 784, 206, 209, 784, 264, 260, 261, 263, - 262, 0, 784, 239, 0, 270, 275, 271, 272, 274, - 273, 0, 784, 242, 299, 376, 0, 345, 0, 0, - 784, 353, 784, 352, 69, 0, 0, 0, 707, 0, - 0, 0, 704, 0, 0, 715, 714, 713, 712, 0, - 0, 711, 68, 214, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 332, 0, 780, + 0, 0, 659, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 662, 754, 757, 0, 780, + 0, 752, 220, 644, 645, 646, 647, 648, 649, 650, + 653, 654, 661, 0, 641, 642, 643, 651, 652, 639, + 640, 636, 637, 638, 660, 658, 0, 0, 341, 343, + 0, 0, 0, 780, 780, 780, 0, 293, 0, 294, + 780, 780, 205, 780, 780, 780, 0, 0, 206, 209, + 63, 780, 374, 0, 371, 772, 773, 774, 775, 0, + 368, 761, 762, 763, 765, 344, 310, 346, 0, 780, + 0, 780, 318, 329, 0, 0, 0, 0, 320, 321, + 322, 780, 780, 317, 0, 22, 780, 780, 780, 780, + 780, 23, 780, 780, 780, 0, 0, 43, 780, 0, + 0, 0, 0, 0, 0, 780, 780, 0, 0, 0, + 780, 780, 0, 780, 780, 780, 0, 780, 780, 18, + 8, 20, 0, 16, 17, 19, 78, 45, 608, 607, + 625, 615, 610, 612, 613, 614, 0, 621, 0, 620, + 676, 609, 677, 0, 679, 0, 680, 0, 683, 684, + 685, 686, 687, 688, 689, 690, 691, 692, 617, 0, + 0, 0, 334, 333, 0, 616, 619, 0, 622, 0, + 628, 629, 618, 611, 602, 560, 755, 0, 780, 780, + 780, 103, 221, 0, 657, 656, 313, 312, 314, 780, + 292, 0, 281, 780, 780, 780, 780, 780, 297, 280, + 296, 295, 780, 780, 780, 0, 780, 780, 0, 780, + 208, 780, 0, 556, 555, 780, 364, 370, 365, 369, + 0, 780, 780, 0, 64, 69, 742, 738, 741, 744, + 745, 212, 0, 0, 0, 740, 746, 0, 748, 747, + 0, 0, 0, 739, 0, 0, 0, 0, 0, 0, + 0, 0, 213, 247, 216, 248, 693, 743, 63, 0, + 319, 0, 780, 366, 0, 780, 780, 780, 60, 46, + 57, 58, 59, 61, 780, 47, 160, 52, 0, 24, + 780, 0, 50, 0, 0, 0, 0, 0, 0, 56, + 780, 0, 27, 26, 25, 54, 49, 0, 164, 0, + 163, 0, 62, 0, 21, 0, 0, 780, 51, 55, + 339, 318, 0, 14, 0, 75, 0, 338, 72, 0, + 0, 0, 0, 0, 335, 336, 627, 0, 624, 0, + 753, 0, 111, 104, 113, 108, 112, 106, 0, 109, + 0, 105, 110, 780, 655, 298, 780, 780, 780, 283, + 284, 780, 780, 780, 0, 0, 0, 0, 780, 0, + 246, 0, 780, 780, 780, 780, 780, 780, 780, 780, + 258, 0, 269, 780, 0, 0, 780, 780, 0, 780, + 780, 207, 210, 780, 375, 311, 780, 349, 780, 348, + 0, 0, 0, 0, 703, 0, 0, 0, 700, 0, + 0, 711, 710, 709, 708, 0, 0, 707, 71, 215, + 780, 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, 64, - 63, 392, 784, 0, 0, 784, 0, 0, 0, 784, - 0, 41, 784, 784, 0, 173, 171, 0, 784, 784, - 784, 784, 784, 784, 784, 177, 80, 784, 394, 0, - 0, 0, 0, 0, 327, 326, 0, 784, 255, 251, - 252, 254, 253, 96, 784, 328, 14, 784, 0, 0, - 8, 0, 0, 0, 227, 420, 421, 229, 230, 784, - 0, 233, 235, 232, 228, 0, 190, 186, 0, 126, - 127, 128, 129, 130, 131, 134, 135, 136, 151, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 155, 154, 138, 137, 123, 125, 124, 132, 133, - 121, 122, 118, 119, 120, 117, 0, 0, 116, 184, - 187, 189, 188, 0, 0, 194, 784, 196, 0, 0, - 77, 324, 0, 0, 682, 685, 686, 0, 0, 784, - 0, 784, 0, 0, 0, 419, 289, 784, 246, 784, - 784, 240, 243, 784, 784, 300, 265, 268, 0, 276, - 279, 0, 380, 347, 346, 349, 0, 0, 355, 354, - 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, - 0, 741, 213, 216, 724, 725, 726, 727, 728, 729, - 730, 733, 734, 740, 0, 721, 722, 723, 731, 732, - 719, 720, 716, 717, 718, 739, 738, 0, 0, 784, - 0, 0, 0, 0, 0, 201, 0, 0, 0, 388, - 0, 784, 178, 158, 156, 161, 157, 167, 174, 0, - 784, 0, 175, 217, 0, 82, 784, 86, 0, 0, - 784, 98, 256, 784, 0, 0, 222, 419, 0, 784, - 784, 224, 225, 423, 424, 428, 425, 433, 426, 427, - 429, 430, 431, 432, 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, 483, 484, 485, 486, 508, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 784, 552, 553, 554, - 545, 557, 541, 542, 540, 547, 548, 536, 537, 538, - 539, 546, 544, 551, 549, 555, 550, 543, 556, 422, - 0, 231, 234, 191, 185, 153, 152, 193, 197, 784, - 0, 220, 0, 609, 608, 610, 607, 784, 784, 199, - 115, 105, 112, 0, 0, 0, 241, 244, 0, 0, - 784, 266, 784, 277, 377, 773, 0, 772, 0, 0, - 356, 358, 762, 784, 0, 706, 0, 0, 0, 0, - 0, 703, 0, 709, 710, 698, 0, 737, 736, 390, - 0, 0, 33, 202, 0, 0, 0, 0, 40, 176, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 218, 565, 0, 85, 784, 0, - 92, 89, 784, 0, 257, 784, 0, 9, 0, 0, - 0, 236, 784, 237, 0, 192, 78, 0, 200, 0, - 113, 678, 784, 784, 784, 0, 0, 0, 361, 0, - 360, 0, 359, 763, 0, 0, 0, 764, 784, 357, - 0, 0, 708, 0, 705, 0, 735, 0, 0, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 572, 0, 580, 578, 577, 579, 576, - 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 325, + 368, 323, 66, 48, 780, 44, 780, 0, 0, 0, + 0, 0, 0, 0, 780, 0, 0, 780, 339, 318, + 0, 338, 81, 0, 0, 389, 0, 86, 90, 0, + 780, 780, 0, 0, 415, 227, 0, 77, 74, 0, + 0, 0, 678, 681, 682, 0, 0, 780, 0, 0, + 0, 0, 199, 780, 282, 287, 286, 285, 0, 0, + 0, 0, 780, 0, 780, 780, 780, 780, 260, 261, + 780, 780, 0, 780, 240, 259, 780, 780, 0, 271, + 272, 0, 0, 0, 780, 243, 780, 299, 372, 0, + 345, 0, 0, 351, 350, 780, 0, 0, 0, 780, + 0, 0, 0, 0, 0, 0, 0, 737, 214, 217, + 720, 721, 722, 723, 724, 725, 726, 729, 730, 736, + 0, 717, 718, 719, 727, 728, 715, 716, 712, 713, + 714, 735, 734, 0, 0, 327, 326, 328, 0, 53, + 780, 385, 0, 0, 0, 0, 0, 0, 387, 383, + 0, 0, 181, 182, 183, 169, 0, 170, 0, 166, + 171, 167, 780, 180, 165, 0, 83, 0, 392, 391, + 0, 780, 0, 0, 0, 780, 780, 0, 780, 780, + 780, 780, 780, 0, 780, 249, 780, 92, 415, 222, + 0, 0, 76, 0, 780, 0, 0, 780, 0, 0, + 780, 0, 0, 0, 780, 780, 0, 73, 780, 780, + 780, 605, 604, 606, 603, 780, 107, 114, 0, 0, + 780, 415, 288, 780, 780, 780, 780, 780, 780, 241, + 244, 780, 264, 263, 262, 268, 0, 0, 270, 275, + 274, 273, 279, 0, 300, 376, 769, 0, 768, 0, + 0, 352, 354, 758, 780, 0, 65, 702, 0, 0, + 0, 0, 0, 699, 0, 705, 706, 694, 0, 733, + 732, 324, 388, 780, 0, 0, 780, 0, 0, 0, + 780, 0, 42, 780, 780, 0, 174, 172, 0, 780, + 780, 780, 780, 780, 780, 780, 178, 82, 780, 0, + 0, 0, 0, 0, 0, 0, 780, 780, 251, 252, + 780, 780, 98, 780, 250, 15, 780, 0, 0, 9, + 0, 0, 0, 228, 416, 417, 230, 231, 780, 0, + 234, 236, 233, 229, 780, 0, 187, 0, 127, 128, + 129, 130, 131, 132, 135, 136, 137, 152, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 156, 155, 139, 138, 124, 126, 125, 133, 134, 122, + 123, 119, 120, 121, 118, 0, 0, 117, 780, 188, + 0, 0, 0, 0, 195, 780, 197, 0, 0, 79, + 184, 780, 0, 115, 780, 200, 0, 289, 0, 0, + 0, 242, 245, 265, 780, 780, 276, 780, 780, 373, + 0, 357, 0, 356, 0, 355, 759, 0, 0, 0, + 760, 780, 353, 0, 0, 704, 0, 701, 0, 731, + 780, 0, 0, 0, 0, 0, 202, 0, 0, 0, + 780, 0, 780, 179, 159, 157, 162, 158, 168, 175, + 0, 780, 780, 780, 780, 0, 176, 218, 0, 84, + 390, 780, 88, 0, 0, 780, 100, 780, 255, 254, + 253, 780, 0, 0, 223, 415, 0, 780, 780, 225, + 226, 419, 420, 424, 421, 429, 422, 423, 425, 426, + 427, 428, 430, 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, 504, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 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, 530, 531, 780, 548, 549, 550, 541, 553, + 537, 538, 536, 543, 544, 532, 533, 534, 535, 542, + 540, 547, 545, 551, 546, 539, 552, 418, 0, 232, + 235, 0, 191, 780, 154, 153, 185, 190, 189, 194, + 198, 780, 0, 221, 0, 0, 116, 201, 674, 780, + 780, 780, 0, 266, 0, 277, 363, 362, 361, 360, + 359, 358, 347, 0, 0, 0, 0, 386, 0, 0, + 34, 203, 0, 0, 0, 0, 384, 41, 177, 173, + 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 219, 561, 0, 780, 780, 0, + 94, 780, 780, 256, 0, 780, 780, 0, 10, 0, + 0, 0, 237, 780, 238, 192, 186, 0, 780, 80, + 415, 780, 780, 780, 780, 780, 697, 696, 698, 695, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 568, 0, 576, 574, + 573, 575, 572, 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 83, 0, 94, 784, 0, - 784, 91, 223, 12, 10, 558, 0, 784, 419, 114, - 784, 784, 784, 784, 784, 367, 366, 365, 364, 363, - 362, 351, 0, 0, 0, 0, 36, 784, 34, 0, - 0, 37, 39, 0, 29, 0, 0, 0, 0, 0, - 0, 0, 0, 604, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 603, 0, 586, 587, 588, 584, 585, - 581, 582, 583, 602, 601, 0, 0, 784, 784, 0, - 784, 97, 11, 238, 195, 0, 303, 302, 301, 267, - 278, 701, 700, 702, 699, 0, 0, 0, 0, 0, - 0, 574, 0, 0, 0, 0, 571, 0, 566, 0, - 600, 599, 87, 0, 784, 99, 679, 202, 0, 28, - 0, 0, 30, 0, 0, 0, 573, 0, 598, 784, - 784, 35, 0, 0, 0, 0, 0, 0, 0, 784, - 93, 38, 0, 31, 569, 568, 570, 567, 95, 0, - 32 + 0, 0, 0, 0, 0, 0, 0, 0, 85, 87, + 0, 96, 780, 91, 0, 780, 257, 780, 224, 13, + 11, 554, 0, 780, 193, 0, 780, 780, 780, 780, + 780, 37, 780, 35, 0, 0, 38, 40, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 600, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 599, 0, + 582, 583, 584, 580, 581, 577, 578, 579, 598, 597, + 0, 0, 780, 780, 0, 780, 99, 93, 12, 239, + 780, 675, 303, 302, 301, 267, 278, 0, 0, 0, + 0, 0, 0, 570, 0, 0, 0, 0, 567, 0, + 562, 0, 596, 595, 780, 0, 780, 101, 196, 203, + 0, 29, 0, 0, 31, 0, 0, 0, 569, 0, + 594, 89, 780, 780, 36, 0, 0, 0, 0, 0, + 0, 0, 780, 780, 39, 0, 32, 565, 564, 566, + 563, 780, 95, 0, 97, 33 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -943, -943, -311, -943, 24, -943, -943, 845, -133, -943, - 1066, -454, 498, -118, -943, -943, -125, -943, -943, -198, - -943, -943, -943, -943, 825, -943, -943, -943, -943, -943, - -424, -943, -943, -116, -943, -943, -943, -943, 256, 467, - -696, -943, -719, -771, -326, -416, -943, -114, -943, 62, - -565, -943, -507, -942, -943, -464, 302, -681, -413, -469, - -139, -91, -48, 525, -285, -657, 839, 215, -162, -109, - -943, -98, -943, -943, -943, -943, -142, -96, -943, -468, - -943, -943, -32, -5, -943, -943, -943, -943, -7, 5, - -943, -943, -755, -943, -69, -943, -605, -149, -62, 293, - 622, 98, 502, -943, -943, 765, -646, 1430, 34, -476, - -1 + -1067, -1067, -400, -1067, -1067, -34, -1067, -1067, 604, -418, + -1067, -230, 325, -357, -1067, -414, -1067, -1067, -191, -1067, + -1067, -241, -1067, -1067, -1067, -1067, 584, -1067, -1067, -1067, + -1067, -1067, -455, -1067, -1067, -406, -1067, -1067, -1067, -1067, + 163, 293, -697, -1067, -907, -845, -342, -454, -1067, -176, + -1067, 14, -377, -1067, -748, -1066, -1067, -389, 491, -858, + -427, -480, -188, -91, -65, -57, -234, -533, 595, 156, + -236, -1067, -231, -1067, -1067, -1067, -1067, 208, -201, -1067, + -512, -1067, -1067, -22, -19, -1067, -1067, -1067, -1067, -28, + -48, -1067, -1067, -919, -1067, -127, -1067, -642, -107, -60, + 507, 1468, 391, 667, -1067, -1067, 911, -519, 1499, 256, + -386, -1 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 4, 5, 949, 950, 145, 547, 146, 147, 324, - 148, 306, 307, 149, 555, 549, 777, 348, 734, 926, - 363, 738, 1368, 742, 364, 947, 1468, 1538, 1133, 1372, - 610, 1009, 1115, 150, 345, 725, 726, 727, 728, 729, - 778, 1289, 779, 809, 1104, 486, 487, 696, 697, 1122, - 430, 762, 553, 960, 961, 488, 699, 752, 826, 836, - 292, 293, 94, 95, 365, 189, 366, 96, 303, 97, - 666, 98, 667, 852, 1057, 1058, 1320, 99, 100, 497, - 493, 494, 101, 102, 151, 716, 902, 152, 103, 104, - 105, 106, 763, 764, 955, 1279, 658, 373, 374, 1568, - 225, 67, 700, 701, 240, 241, 1321, 1322, 647, 68, - 153 + 0, 4, 5, 263, 1078, 1079, 439, 791, 440, 441, + 600, 442, 366, 258, 259, 443, 799, 793, 967, 624, + 927, 1057, 635, 931, 1448, 935, 636, 1076, 1532, 1593, + 1231, 1452, 500, 1138, 1206, 444, 621, 918, 919, 920, + 921, 922, 968, 1391, 969, 811, 1195, 367, 368, 571, + 572, 1216, 321, 952, 797, 1089, 1090, 369, 574, 943, + 828, 839, 250, 251, 94, 95, 637, 147, 638, 96, + 97, 541, 98, 542, 708, 852, 853, 1011, 99, 100, + 538, 372, 373, 101, 102, 445, 1040, 1033, 446, 103, + 104, 105, 106, 953, 954, 1084, 1377, 532, 264, 265, + 1620, 183, 67, 575, 576, 198, 199, 1012, 1013, 689, + 68, 111 }; - /* 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. */ +/* 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, 224, 320, 948, 295, 342, 376, 1017, 378, 379, - 380, 381, 382, 190, 384, 927, 386, 1280, 388, 633, - 344, 657, 813, 527, 514, 858, 733, 629, 637, 410, - 271, 663, 739, 1389, 404, 740, 702, -776, 192, 367, - 191, 845, 274, 794, 846, 932, 413, 414, 698, 664, - 368, 1045, 369, 420, 421, 107, 429, 670, 162, 226, - 227, 228, 534, 243, 936, 873, 938, 939, 940, 941, - 942, 832, 156, 427, 966, 967, 646, 1010, 1011, 1012, - 1013, 833, 429, 269, 423, 270, 740, 576, 423, 278, - 279, 280, 843, 294, 294, 428, 283, 842, 297, 298, - 299, 304, 423, 424, 1101, 423, 577, 614, 423, -776, - 154, 157, -776, 275, 423, 423, 370, 229, 158, 423, - 797, 1071, 296, 1102, 1293, 1418, 1422, 1294, 155, 254, - 230, 231, 164, 1295, 1296, 302, 224, 254, 1337, 194, - 1031, 372, 200, 371, 1419, 1423, 1425, 471, 473, 475, - 477, 478, 323, 375, 375, 884, 375, 375, 375, 375, - 375, 1452, 375, 819, 375, 1426, 375, 638, 232, 233, - 423, 234, 159, 423, 824, 269, 235, 270, 236, 423, - 457, 458, 375, 837, 838, 839, 840, 841, 741, 1513, - 304, 1390, 1551, 795, 375, 375, 474, 476, 1552, 160, - 367, 375, 375, 161, 874, 455, 163, 300, 707, 558, - 702, 368, 822, 369, 1019, 464, 165, 465, 818, 466, - 1452, 336, 1302, 278, 279, 280, 283, 1048, 827, 828, - 829, 830, 831, -777, 367, 1128, 756, 1051, 367, 741, - 431, 910, 1014, 489, 301, 368, -778, 369, 337, 368, - 1110, 369, 166, 1041, 1042, 167, 1132, 1015, 1016, 592, - 925, 263, 264, 265, 467, 266, 267, 268, 1121, 1283, - 294, 294, 1020, 266, 267, 268, 168, 370, 223, 538, - 1304, 539, 278, 832, 423, 472, 294, 294, 472, 472, - 491, 896, 897, 898, -779, 495, 1139, 1462, 1463, 1464, - 423, 1559, 372, 1553, 371, -777, 498, 10, -777, 11, - 544, 370, 169, 1021, 1140, 370, 924, 422, -778, 1554, - 1560, -778, 929, 619, 423, 170, 933, 622, 623, 624, - 625, 626, 171, 6, 627, 814, 372, 508, 371, 1134, - 372, 628, 371, 1570, 1032, 634, 635, 172, 1040, 468, - 173, 1038, 1459, 1460, 1461, 850, 1462, 1463, 1464, 1593, - 627, 820, 1124, 469, 174, 1049, -779, 175, 470, -779, - 304, 377, 758, 1298, 759, 760, 761, 383, 1594, 385, - 848, 387, 1376, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 702, 719, - 720, 721, 423, 1039, 557, 909, 423, 375, 176, 412, - 698, 1290, 1046, 416, 423, 417, 418, 423, 627, 821, - 1125, 1604, 550, 429, 551, 1605, 552, 611, 284, 177, - 285, 338, 286, 1606, 631, 489, 1607, -100, 178, -100, - 1476, -100, 179, 1112, 72, 180, 73, 74, 75, 76, - 837, 838, 839, 840, 841, 540, 226, 227, 228, 80, - 181, 472, 182, 254, 489, 472, 472, 472, 472, 472, - 183, 82, 952, 953, 1306, 1307, 195, 287, 83, 472, - 196, 812, 201, 472, 472, -100, 202, -100, 648, -100, - 203, 660, 943, 944, 84, 745, 550, 461, 551, 1111, - 1018, 1, 2, 3, 498, 273, 827, 828, 829, 830, - 831, 703, 832, 1047, 229, 85, 86, 282, 6, 1015, - 1016, 1129, 462, 730, 842, 1050, 1387, 230, 231, 731, - 309, 1135, 91, 1131, 944, 92, 327, 93, 1015, 1016, - 1287, 1137, 1138, 754, 1015, 1016, 6, 1015, 1016, 1369, - 328, 329, 297, 298, 299, 917, 367, 650, 330, 918, - 510, 489, 288, 331, 332, 232, 233, 368, 234, 369, - 1404, 1405, 1406, 235, 341, 236, 289, 405, 753, 407, - 408, 290, 816, 415, 499, 492, 291, 511, -280, 780, - 489, 1099, 508, 261, 262, 263, 264, 265, 512, 266, - 267, 268, 1452, 272, 919, 1297, 528, 431, 491, 810, - 530, 541, 542, 546, 554, 423, 574, 559, -281, 472, - 560, 1305, 591, 567, 66, 561, 660, 1308, 1309, 562, - 648, 563, 870, 370, 569, 611, 564, 565, 566, 648, - 648, 648, 648, 648, 648, 431, 568, 927, 570, 571, - 190, 1049, 572, 573, 575, 578, 431, 579, 372, 580, - 371, 300, 581, 582, 583, 6, 853, 584, 193, 1398, - 1400, 1402, 585, 586, 199, 192, 587, 191, 588, 589, - 204, 205, 206, 207, 208, 594, 595, 244, 596, 920, - 489, 598, 599, 600, 489, 606, 649, 602, 650, 603, - 651, 609, 1367, 921, 616, 618, 1371, 1046, 922, 1546, - 1547, 1548, -282, 923, 620, 6, 730, 1373, 627, 662, - 636, 1022, 1023, 1545, 665, 668, 708, 704, 648, 1027, - 709, 1028, 1457, 1458, 1459, 1460, 1461, 491, 1462, 1463, - 1464, 491, 322, 710, 754, 652, 754, 754, 754, 754, - 754, 1485, 711, 1486, 737, 1487, 712, 713, 1488, 1489, - 1490, 755, 714, 956, 732, 190, 963, 489, 780, 735, - 736, 757, 781, 815, 789, 780, 783, 810, 431, 753, - 1113, 753, 753, 753, 753, 753, 498, 844, 784, 785, - 192, 786, 191, 787, 790, 1114, 791, 1116, 825, 870, - 792, 793, 834, -371, 780, 780, 847, 780, 780, 780, - 780, 851, 855, 702, 856, 648, 490, 431, 431, 1600, - 857, 810, 859, 419, 648, 698, 489, 863, 1608, 872, - 653, 660, 864, 903, 904, 1097, 297, 298, 299, 769, - 905, 660, 906, 770, 654, 907, 908, 911, 913, 655, - 914, 1059, 928, 931, 656, 930, 937, 934, 957, 945, - 958, 965, 954, 1035, 1024, 1034, 1025, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 771, 1026, - 456, 1029, 1037, 1036, 1395, 460, 1396, 1043, 1044, 489, - 832, 6, 1053, 842, 1105, -289, 1056, 730, 1063, 869, - 1065, 648, 1100, 1070, 1328, 1103, 1106, 648, 648, 648, - 648, 648, 648, 1123, 1107, 1108, 431, 1126, 1130, 1119, - 1120, 515, 297, 298, 299, 639, 754, 1127, 1141, 640, - 1299, 944, 1136, 660, 772, 300, 491, 1142, 1281, 1282, - 1284, 1471, 1466, 1285, 1286, 1292, 1469, 1300, 963, 1310, - 1311, 1312, 1313, 529, 1323, 780, 1324, 1325, 1480, 1481, - 1482, 753, 1326, 773, 1340, 1331, 1327, 226, 227, 228, - 1329, 1332, 1341, 1333, 641, 1343, 1342, 774, 1344, 489, - 1378, 1379, 775, 1345, 1346, 489, 489, 776, 190, 780, - 1347, 1348, 1366, 297, 298, 299, 746, 632, 490, 1370, - 747, 1407, 1408, 1374, 1375, 660, 1381, 1420, 1391, 1385, - 1392, 1410, 1393, 192, 1394, 191, 1411, 590, 611, 1412, - 294, 1413, 1414, 1415, 1417, 229, 491, 490, 431, 431, - 1421, 300, 491, 491, 604, 605, 1541, 1424, 230, 231, - 1427, 612, 1539, 1544, 1428, 748, 1429, 1430, 1434, 1549, - 1550, 1467, 375, 1472, 1470, 1478, 1497, 1473, 1496, 642, - 1060, 1061, 1062, 1474, 1064, 1477, 1066, 1479, 1067, 1068, - 251, 252, 253, 643, 1483, 489, 232, 233, 644, 234, - 1484, 1498, 254, 645, 235, 1499, 236, 1500, 1501, 1502, - 1503, 1504, 1509, 1512, 1542, 1537, 1540, 1555, 1543, 1558, - 1123, 1557, 300, 1572, 659, 1561, 1575, 1562, 1566, 648, - 1563, 1564, 1573, 1567, 237, 611, 1576, 1577, 238, 611, - 1580, 1579, 491, 239, 490, 1574, 1578, 1581, 375, 375, - 749, 1582, 226, 227, 228, 1583, 1586, 1591, 1584, 1585, - 1590, 1587, 1589, 1601, 750, 817, 1602, 1603, 1592, 751, - 1609, 1610, 1377, 490, 744, 1599, 854, 1386, 1465, 518, - 1117, 1556, 533, 1349, 768, 1384, 1073, 312, 313, 314, - 315, 316, 1409, 317, 319, 321, 535, 1380, 862, 326, - 912, 0, 608, 0, 0, 0, 333, 0, 0, 0, - 229, 339, 340, 0, 343, 346, 347, 1388, 352, 353, - 0, 0, 0, 230, 231, 1449, 1450, 1451, 0, 1365, - 604, 0, 261, 262, 263, 264, 265, 1452, 266, 267, - 268, 0, 0, 0, 0, 811, 0, 0, 0, 0, - 0, 489, 0, 0, 0, 0, 0, 0, 0, 659, - 0, 232, 233, 0, 234, 956, 0, 0, 0, 235, - 0, 236, 489, 490, 489, 0, 0, 490, 0, 0, - 0, 0, 0, 1443, 1444, 1445, 1446, 1447, 1448, 1449, - 1450, 1451, 0, 0, 0, 0, 0, 849, 703, 0, - 0, 1452, 0, 607, 252, 253, 810, 294, 239, 0, - 1441, 0, 0, 0, 0, 254, 0, 0, 0, 491, - 0, 491, 865, 866, 867, 868, 0, 871, 0, 0, - 489, 0, 6, 0, 489, 0, 780, 0, 0, 0, - 0, 0, 0, 0, 1350, 0, 0, 0, 0, 0, - 490, 0, 0, 0, 0, 0, 0, 0, 1492, 1493, - 0, 1494, 0, 1495, 0, 0, 0, 1457, 1458, 1459, - 1460, 1461, 0, 1462, 1463, 1464, 0, 491, 0, 0, - 1441, 491, 0, 0, 611, 0, 319, 326, 0, 0, - 0, 963, 0, 0, 516, 0, 0, 0, 0, 962, - 0, 611, 611, 611, 0, 0, 0, 0, 0, 490, - 780, 1535, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1569, 1364, 1453, 1454, 1455, 1456, 0, - 489, 1457, 1458, 1459, 1460, 1461, 1033, 1462, 1463, 1464, - 0, 0, 0, 0, 0, 261, 262, 263, 264, 265, - 0, 266, 267, 268, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1365, 659, 1365, 1365, 1365, 1365, 1365, - 0, 1365, 0, 0, 659, 0, 0, 491, 1052, 611, - 0, 0, 490, 0, 0, 0, 611, 0, 0, 810, - 810, 810, 611, 611, 1450, 1451, 1069, 0, 0, 0, - 489, 0, 0, 0, 242, 1452, 1105, 1074, 1075, 1076, - 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, - 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 281, 0, - 1098, 1595, 1596, 1597, 0, 1598, 1447, 1448, 1449, 1450, - 1451, 0, 0, 0, 0, 0, 611, 491, 308, 611, - 1452, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, - 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, - 0, 335, 490, 0, 0, 0, 659, 0, 490, 490, - 0, 351, 0, 611, 0, 0, 669, 1440, 0, 0, - 0, 962, 0, 706, 0, 0, 0, 0, 611, 810, - 0, 0, 0, 0, 0, 0, 0, 0, 810, 0, + 6, 1004, 573, 182, 253, 577, 267, 596, 269, 270, + 271, 272, 273, 229, 275, 618, 277, 150, 279, 620, + 1058, 230, 1378, 148, 714, 398, 149, 397, 705, 1077, + 399, 818, 926, 545, 295, 1152, 236, 237, 238, 107, + -2, 932, 530, 241, 933, 651, 304, 305, 699, 227, + 729, 228, 114, 311, 312, 318, 848, 356, 358, 849, + 400, 933, 1156, 201, 108, 314, 109, 108, 115, 109, + 108, 362, 109, 232, 700, 701, 465, 319, 1065, 314, + 314, 1068, 1069, 511, 315, 512, 212, 513, 108, 740, + 109, 112, 116, 252, 252, 466, 182, 254, 504, 867, + 688, 242, 117, 243, 108, 244, 109, 118, 108, 113, + 109, 266, 266, 119, 266, 266, 266, 266, 266, 320, + 266, 650, 266, 1146, 266, 375, 376, 377, 236, 237, + 238, 241, 514, 108, 833, 109, 810, 680, 348, 349, + 266, 706, 702, 314, 233, 314, 108, 120, 109, 108, + 245, 109, 266, 266, 357, 359, 1, 2, 3, 266, + 266, 227, 971, 228, 972, 346, 1515, 518, -772, 108, + 320, 109, 520, 521, 785, 577, 588, 589, 590, 591, + 592, 531, 593, 595, 597, 844, 710, 236, 602, 730, + 850, 996, 481, 1153, 121, 609, 908, 934, 322, 825, + 615, 616, 1003, 619, 622, 623, 398, 628, 629, 1228, + 774, 399, 1229, 1230, 934, 840, 1201, 515, 843, 181, + 122, 1149, 224, 225, 226, 752, 753, 754, 252, 252, + 362, 516, 363, 403, 378, 246, 517, 1063, 610, 401, + -772, 400, 402, -772, 252, 252, 1215, 123, 370, 247, + 1237, 824, 124, 374, 248, 673, 819, 829, 1143, 249, + 832, 833, 447, 108, 1096, 109, 1139, -773, 1238, 1142, + 268, 379, 1032, 1144, 1145, 1075, 274, 980, 276, 10, + 278, 11, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 125, 266, -774, + -775, 527, 1525, 1526, 1527, 314, 1395, 126, 303, 528, + 1219, 834, 307, 314, 308, 309, 1457, 127, 501, 212, + 128, 665, 845, 129, 973, 130, 669, 670, 314, 131, + 110, 539, 974, 1515, 674, 675, 676, 673, 820, -773, + 132, 573, -773, 988, 577, 152, 108, 1029, 109, 108, + 133, 109, 975, 108, 519, 109, 595, 602, 999, 519, + 519, 1000, 1001, 1192, 763, 1223, 900, 134, 212, 1453, + 534, -774, -775, 135, -774, -775, 364, 1177, 1178, 1179, + 314, 365, 1193, 398, 673, 821, 1031, 398, 399, 781, + 578, 946, 399, 833, 995, 987, 352, 1542, 1382, 1476, + 992, 136, 314, 993, 994, 447, 447, 447, 447, 447, + 1515, 447, 447, 447, 403, 137, 314, 447, 400, 314, + 401, 1477, 400, 402, 447, 138, 255, 256, 158, 447, + 447, 1232, 447, 447, 447, 1478, 447, 447, 1479, 139, + 1481, 140, 1056, 1387, 1388, 141, 1154, 989, 990, 219, + 220, 221, 222, 223, 480, 224, 225, 226, 153, 1482, + 678, 844, 1002, 1520, 1521, 1522, 1523, 1524, 679, 1525, + 1526, 1527, 1412, 300, 301, 1417, 262, 1060, 154, 1426, + 815, 1064, 159, 816, 817, 1072, 1073, 1171, 1173, 1175, + 160, 1485, 539, 1081, 1082, 1055, 1488, 322, 370, 314, + 221, 222, 223, 1392, 224, 225, 226, 161, 519, 726, + 1486, 380, 387, 519, 519, 1489, 313, 1166, 1568, 1226, + 1073, 519, 519, 519, 1041, 231, 690, 240, 501, 150, + 1158, 1159, 1160, 1611, 899, 148, 1235, 1236, 149, 1058, + 6, 709, 1522, 1523, 1524, 261, 1525, 1526, 1527, 314, + 320, 1545, 1612, 1144, 1145, 375, 376, 377, 959, 1646, + 296, 298, 960, 1203, 1163, 314, 353, 790, 1622, 355, + 299, 840, 360, 361, 843, 314, 371, 314, 1647, 800, + 801, 306, 389, 314, 1657, 447, 447, 805, -280, 806, + 390, 403, 1148, 447, 1658, 403, 1659, 401, 391, 447, + 402, 401, 1660, 314, 402, 448, 449, 961, 450, 6, + 1161, 1162, 822, -102, 1181, -102, 1202, -102, 451, 641, + 823, 642, 1233, 643, 829, 982, 1204, 832, 452, 453, + 1205, 787, 948, 1190, 949, 950, 951, 794, 1207, 795, + 1200, 796, -102, 454, -102, 691, -102, 692, 794, 693, + 795, 1406, 1147, 1407, 455, 1408, 456, 726, 1409, 1410, + 1411, 457, 812, 962, 378, 459, 458, 519, 463, 460, + 519, 519, 534, 1144, 1145, 1224, 467, 690, 509, 510, + 484, 1218, 690, 690, 1465, 461, 690, 322, 522, 523, + 524, 462, 963, 893, 694, 1144, 1145, 1389, 322, 464, + 468, 1602, 1603, 1604, 469, 470, 964, 854, 471, 472, + 1402, 965, 473, 1404, 544, 474, 966, 1144, 1145, 1449, + 475, 476, 477, 478, 936, 725, 583, 584, 375, 376, + 377, 937, 999, 1000, 1001, 938, 485, 757, 486, 488, + 375, 376, 377, 1048, 489, 692, 490, 1049, 492, 923, + 493, 611, 1020, 375, 376, 377, 681, 496, 499, 506, + 682, 508, 529, 447, -204, 6, 1447, 536, 540, 543, + 1451, 579, 581, 599, 603, 582, 924, 1454, 604, 695, + 939, 605, 150, 612, 613, 992, 993, 994, 148, 945, + 6, 149, 1050, 696, 606, 607, 608, 614, 697, 645, + 617, 639, 640, 698, 647, 683, 501, 646, 1662, 648, + 649, 666, 519, 703, 619, -282, 1664, 707, 673, 711, + 712, 690, 713, 322, 322, 663, 690, 715, 719, 690, + 690, 777, 534, 720, 728, 788, -211, 378, 668, 760, + 387, 671, 672, 534, 798, 812, 802, 803, 804, 378, + 539, 807, 809, 184, 185, 186, 810, 826, 266, 836, + 704, -367, 378, 851, 855, 940, 859, 856, 857, 858, + 861, 860, 898, 862, 866, 863, 864, 1051, 895, 941, + 901, 909, 897, 902, 942, 903, 904, 905, 923, 1155, + 684, 1052, 906, 907, 925, 928, 1053, 947, 930, 929, + 981, 1054, 1014, 1034, 685, 984, 985, 758, 1015, 686, + 762, 187, 1035, 983, 687, 1018, 986, 184, 185, 186, + 833, 690, 844, -289, 188, 189, 1017, 1019, 1021, 1023, + 370, 1024, 1025, 1036, 370, 945, 1037, 1038, 945, 945, + 1039, 1042, 1044, 1045, 1471, 1472, 1473, 209, 210, 211, + 1166, 150, 786, 1085, 1061, 1086, 1092, 148, 1062, 212, + 149, 1066, 190, 191, 1083, 192, 1087, 812, 322, 1094, + 193, 1180, 194, 1164, 1165, 187, 1167, 1168, 1183, 252, + 1184, 1185, 1191, 370, 370, 370, 322, 322, 188, 189, + 690, 813, 814, 1187, 1530, 1186, 1188, 1210, 1534, 1194, + 1197, 1537, 573, 1163, 1198, 577, 1199, 827, 1211, 1220, + 830, 831, 1221, 6, 835, 1222, 977, 923, 838, 1549, + 1550, 841, 842, 1234, 1225, 846, 190, 191, 847, 192, + 1073, 110, 6, 1239, 193, 1196, 194, 1240, 1379, 6, + 1380, 1383, 690, 447, 1384, 1385, 944, 1396, 1394, 690, + 690, 1398, 1399, 690, 1217, 970, 1400, 322, 1401, 1418, + 1419, 1420, 1421, 1397, 1422, 1423, 945, 1424, 1425, 945, + 945, 1427, 534, 1446, 1450, 370, 1455, 1456, 1594, -281, + 1596, 1468, 1462, 1474, 1470, 1475, 1059, 1092, 1600, 219, + 220, 221, 222, 223, 1480, 224, 225, 226, 406, 110, + 1483, 1487, 1484, 1490, 1491, 1492, 407, 408, 409, 410, + 1493, 1497, 1531, 1535, 1551, 1552, 1554, 1553, 1538, 412, + 586, 414, 415, 1413, 1414, 1539, 1415, 417, 1416, 1555, + 1459, 1460, 587, 1540, 1543, 1556, 1557, 1624, 1558, 1625, + 1627, 1559, 1564, 1567, 534, 1592, 1595, 1598, 1599, 1601, + 812, 991, 1607, 252, 1610, 1609, 425, 1613, 1614, 1615, + 1616, 997, 998, 370, 1618, 1619, 370, 430, 1629, 1631, + 1632, 1643, 1626, 431, 1630, 1633, 1634, 1635, 434, 1636, + 1016, 1637, 1638, 970, 1639, 1642, 1655, 1652, 436, 437, + 970, 438, 944, 1644, 1654, 944, 944, 1645, 1656, 1663, + 1665, 1217, 1458, 1469, 765, 1528, -161, 780, 1208, 1043, + 1608, 690, 690, 690, 652, 1467, 1428, 970, 782, 970, + 501, 869, 970, 1182, 501, 110, 945, 1461, 718, 498, + 370, 0, 0, 0, 0, 0, 266, 266, 0, 0, + 0, 0, 0, 546, 547, 548, 10, 0, 11, 549, + 550, 0, 0, 0, 0, 716, 0, 0, 0, 653, + 0, 654, 0, 1067, 0, 0, 1070, 1071, 0, 1074, + 0, 110, 0, 0, 0, 184, 185, 186, 655, 0, + 0, 0, 0, 0, 0, 1095, 0, 0, 0, 1140, + 1141, 552, 0, 0, 0, 1150, 210, 211, 0, 0, + 1151, 0, 0, 0, 0, 0, 553, 212, 1157, 656, + 0, 554, 657, 658, 0, 0, 659, 0, 970, 0, + 555, 556, 0, 944, 0, 0, 944, 944, 0, 0, + 0, 0, 660, 187, 207, 208, 209, 210, 211, 0, + 0, 0, 0, 0, 661, 0, 188, 189, 212, 0, + 0, 970, 0, 1085, 557, 0, 0, 558, 662, 559, + 0, 0, 0, 0, 560, 0, 1429, 0, 561, 0, + 0, 562, 0, 0, 1212, 0, 563, 1213, 1214, 564, + 0, 0, 1504, 0, 190, 191, 0, 192, 0, 0, + 578, 1227, 193, 0, 194, 0, 970, 970, 501, 501, + 501, 565, 0, 0, 566, 567, 0, 0, 0, 568, + 0, 717, 0, 0, 0, 570, 0, 0, 0, 1381, + 0, 0, 195, 0, 0, 0, 196, 0, 0, 690, + 0, 197, 0, 0, 0, 1504, 0, 219, 220, 221, + 222, 223, 0, 224, 225, 226, 0, 370, 0, 0, + 0, 370, 184, 185, 186, 501, 0, 0, 0, 0, + 0, 0, 1092, 1386, 0, 0, 1590, 0, 0, 0, + 66, 0, 0, 501, 501, 0, 217, 218, 219, 220, + 221, 222, 223, 944, 224, 225, 226, 0, 0, 0, + 1403, 0, 0, 1405, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 537, 0, + 187, 0, 0, 0, 151, 110, 0, 0, 0, 0, + 157, 1513, 1514, 188, 189, 110, 162, 163, 164, 165, + 166, 370, 1515, 202, 501, 0, 1430, 0, 0, 0, + 0, 0, 501, 0, 0, 812, 812, 812, 0, 0, + 0, 1196, 72, 0, 73, 74, 75, 76, 0, 0, + 0, 190, 191, 200, 192, 0, 0, 0, 0, 193, + 0, 194, 0, 0, 0, 1648, 1649, 1650, 0, 1651, + 0, 0, 0, 0, 0, 0, 83, 239, 0, 0, + 0, 501, 370, 0, 501, 0, 0, 0, 1503, 0, + 0, 0, 235, 497, 0, 0, 1445, 260, 197, 0, + 0, 0, 0, 205, 206, 207, 208, 209, 210, 211, + 0, 0, 0, 85, 86, 501, 0, 310, 0, 212, + 0, 0, 0, 0, 381, 382, 383, 970, 0, 0, + 91, 501, 0, 0, 297, 93, 1560, 1561, 1562, 1563, + 970, 1565, 812, 1566, 0, 0, 0, 0, 0, 0, + 812, 0, 1520, 1521, 1522, 1523, 1524, 0, 1525, 1526, + 1527, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 187, 0, 347, 316, 317, 0, 0, 351, + 0, 0, 970, 0, 0, 188, 189, 0, 1466, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 0, 0, + 0, 0, 1444, 344, 0, 0, 0, 212, 0, 404, + 0, 0, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 0, + 0, 0, 354, 384, 191, 0, 192, 0, 1515, 0, + 0, 193, 0, 194, 0, 386, 388, 217, 218, 219, + 220, 221, 222, 223, 479, 224, 225, 226, 0, 0, + 0, 0, 1529, 0, 0, 0, 1533, 385, 0, 0, + 1536, 494, 495, 0, 0, 0, 0, 0, 502, 0, + 0, 0, 0, 1544, 0, 0, 1546, 1547, 1548, 482, + 483, 0, 0, 0, 0, 487, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 0, 381, + 382, 383, 0, 0, 0, 0, 1445, 0, 1445, 1445, + 1445, 1445, 1445, 0, 1445, 0, 1512, 1513, 1514, 533, + 0, 0, 0, 0, 0, 0, 0, 0, 1515, 0, + 0, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 1597, 224, 225, 226, 0, 0, 0, 505, + 0, 535, 0, 0, 1605, 1606, 0, 187, 1520, 1521, + 1522, 1523, 1524, 598, 1525, 1526, 1527, 0, 0, 260, + 188, 189, 0, 0, 580, 0, 0, 1445, 1445, 1445, + 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, + 1445, 1445, 1445, 1445, 1445, 1445, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 1628, 0, 0, 384, 191, + 0, 192, 0, 0, 212, 627, 193, 0, 194, 0, + 0, 0, 1496, 0, 1498, 1499, 1500, 1501, 1502, 1641, + 1505, 0, 0, 0, 0, 0, 494, 0, 1445, 0, + 0, 0, 0, 0, 0, 379, 0, 0, 1653, 0, + 0, 664, 0, 0, 0, 0, 0, 1661, 1520, 1521, + 1522, 1523, 1524, 0, 1525, 1526, 1527, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, + 0, 667, 1445, 1569, 1570, 1571, 1572, 1573, 1574, 1575, + 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, + 1586, 1587, 0, 721, 722, 723, 724, 0, 727, 0, + 0, 0, 260, 0, 0, 0, 0, 756, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 0, 0, 0, 1030, 0, 0, 0, + 0, 1097, 759, 761, 0, 776, 0, 0, 0, 0, + 0, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, + 767, 0, 768, 769, 770, 771, 772, 773, 0, 1107, + 775, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, + 1117, 1118, 1119, 0, 783, 784, 808, 0, 1640, 0, + 0, 0, 0, 792, 0, 0, 0, 0, 0, 0, + 0, 533, 0, 0, 1120, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1506, 1507, 1508, 1509, 1510, + 1511, 1512, 1513, 1514, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1515, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 865, 1121, + 0, 837, 0, 0, 0, 0, 0, 0, 0, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, + 0, 0, 894, 0, 0, 0, 0, 0, 0, 1122, + 0, 0, 1123, 0, 1124, 1125, 1126, 1127, 1128, 1129, + 1130, 1131, 1132, 1133, 1134, 0, 1135, 1136, 0, 0, + 1137, 891, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1365, 0, 0, 0, 0, 0, 0, 406, 0, 0, - 409, 0, 0, 0, 0, 1457, 1458, 1459, 1460, 1461, - 0, 1462, 1463, 1464, 0, 0, 1288, 0, 659, 0, - 1291, 0, 1505, 1506, 1507, 1508, 0, 1510, 1433, 1511, - 1435, 1436, 1437, 1438, 1439, 0, 1442, 0, 490, 0, - 0, 0, 0, 0, 1365, 0, 0, 1365, 425, 426, - 1457, 1458, 1459, 1460, 1461, 0, 1462, 1463, 1464, 0, + 0, 0, 0, 0, 7, 8, 9, 10, 0, 11, + 12, 13, 167, 70, 0, 1621, 0, 1516, 1517, 1518, + 1519, 533, 0, 1520, 1521, 1522, 1523, 1524, 978, 1525, + 1526, 1527, 533, 0, 0, 0, 0, 1005, 0, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 0, 0, + 0, 0, 15, 71, 1027, 0, 168, 212, 169, 170, + 171, 172, 77, 78, 0, 0, 0, 21, 79, 0, + 0, 173, 23, 0, 0, 81, 0, 0, 0, 0, + 1022, 24, 25, 174, 0, 0, 0, 27, 0, 0, + 175, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 176, 0, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 46, 47, 0, + 48, 0, 0, 0, 0, 49, 0, 177, 178, 52, + 0, 0, 53, 87, 0, 0, 0, 54, 0, 1047, + 55, 88, 89, 90, 179, 1091, 0, 92, 0, 180, + 0, 0, 0, 0, 0, 0, 0, 0, 630, 631, + 0, 0, 58, 0, 0, 59, 60, 61, 0, 1080, + 62, 0, 63, 64, 0, 0, 65, 0, 0, 0, + 0, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 0, 224, 225, 226, 0, 0, 0, 1623, + 393, 0, 0, 72, 0, 73, 74, 75, 76, 77, + 0, 1027, 0, 0, 0, 394, 1189, 0, 80, 0, + 0, 0, 81, 0, 0, 0, 0, 0, 1176, 0, + 82, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1335, 0, 0, 0, 453, 0, 0, 0, + 0, 0, 0, 84, 1510, 1511, 1512, 1513, 1514, 0, + 0, 533, 0, 0, 0, 1209, 632, 0, 1515, 0, + 0, 0, 0, 0, 85, 86, 1091, 0, 0, 0, + 87, 0, 0, 0, 0, 0, 0, 0, 395, 396, + 90, 91, 0, 0, 92, 0, 93, 0, 0, 0, + 0, 633, 0, 0, 0, 0, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 634, 1252, 1253, + 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, + 0, 1390, 0, 533, 0, 1393, 0, 1264, 1265, 1266, + 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, + 1277, 1278, 1279, 1280, 1281, 1282, 0, 0, 1283, 1284, + 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, + 1295, 1296, 1297, 1298, 1299, 1300, 0, 1301, 0, 1302, + 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 0, + 1312, 1313, 1314, 0, 0, 0, 0, 0, 1520, 1521, + 1522, 1523, 1524, 0, 1525, 1526, 1527, 0, 1315, 0, + 0, 0, 0, 0, 0, 1316, 1317, 1318, 1319, 1320, + 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, + 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, + 1351, 1352, 1353, 0, 0, 1080, 1354, 1355, 1356, 1357, + 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, + 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1541, 1375, 1376, + 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, + 1251, 0, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, + 1260, 1261, 1262, 1263, 0, 0, 0, 0, 0, 0, + 0, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, + 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 0, 0, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, + 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, + 0, 1301, 0, 1302, 1303, 1304, 1305, 1306, 1307, 1308, + 1309, 1310, 1311, 0, 1312, 1313, 1314, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 463, 0, 0, 671, 672, - 673, 10, 0, 11, 674, 675, 0, 0, 0, 0, - 860, 0, 0, 507, 0, 509, 1514, 1515, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, - 1528, 1529, 1530, 1531, 1532, 520, 0, 521, 522, 523, - 524, 525, 526, 0, 0, 0, 677, 0, 0, 0, - 899, 900, 0, 0, 0, 0, 0, 0, 0, 536, - 537, 678, 0, 0, 0, 0, 679, 0, 0, 545, - 0, 0, 548, 0, 0, 680, 681, 0, 0, 0, - 556, 246, 247, 248, 249, 250, 251, 252, 253, 0, - 0, 0, 0, 0, 490, 0, 0, 0, 254, 0, - 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 682, - 0, 0, 683, 0, 684, 490, 0, 490, 1452, 685, - 593, 0, 0, 686, 0, 597, 687, 0, 0, 0, - 0, 688, 0, 0, 689, 0, 0, 242, 0, 0, - 0, 0, 1588, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 690, 0, 0, 691, - 692, 0, 0, 0, 693, 0, 861, 0, 0, 0, - 695, 0, 0, 490, 0, 621, 0, 490, 0, 0, - 0, 0, 0, 0, 1383, 0, 0, 0, 0, 0, - 0, 308, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 7, - 8, 9, 10, 661, 11, 12, 13, 0, 1452, 0, - 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, - 0, 308, 0, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 1335, 266, 267, 268, 0, 1416, 0, - 0, 0, 1453, 1454, 1455, 1456, 0, 1351, 1457, 1458, - 1459, 1460, 1461, 0, 1462, 1463, 1464, 0, 0, 343, - 0, 0, 1352, 0, 0, 0, 0, 1353, 782, 0, - 0, 0, 0, 490, 0, 0, 24, 25, 0, 0, - 0, 0, 27, 0, 962, 0, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 0, 48, 0, 425, 0, 0, - 1354, 0, 0, 0, 1355, 0, 0, 1356, 7, 8, - 9, 10, 54, 11, 12, 13, 209, 70, 1457, 1458, - 1459, 1460, 1461, 490, 1462, 1463, 1464, 0, 0, 0, + 0, 0, 1315, 0, 0, 0, 0, 0, 0, 1316, + 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, + 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, + 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, + 1347, 1348, 1349, 1350, 1351, 1352, 1353, 0, 0, 0, + 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, + 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1091, 1375, 1376, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 8, 9, 10, 0, 11, + 12, 13, 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 835, 0, 0, 0, 0, 1361, 1536, 1362, 64, 0, - 0, 1363, 0, 0, 0, 0, 15, 71, 308, 0, - 210, 0, 211, 212, 213, 214, 77, 78, 0, 0, - 0, 21, 79, 0, 0, 215, 23, 0, 0, 81, - 0, 0, 0, 0, 0, 24, 25, 216, 0, 0, - 0, 27, 0, 0, 217, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 218, 0, 0, 0, 0, 0, 0, 916, 0, 45, - 0, 46, 47, 0, 48, 0, 0, 0, 0, 49, - 0, 219, 220, 52, 0, 0, 53, 87, 0, 0, - 0, 54, 0, 0, 55, 88, 89, 90, 221, 0, - 951, 92, 0, 222, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 58, 0, 0, 59, - 60, 61, 0, 0, 62, 0, 63, 64, 0, 0, - 65, 0, 0, 0, 0, 0, 0, 0, 308, 0, - 0, 0, 0, 0, 0, 0, 0, 1143, 1144, 1145, - 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 0, 1154, - 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, - 1165, 0, 0, 0, 0, 0, 0, 0, 1166, 1167, - 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, - 1178, 1179, 1180, 1181, 1182, 1183, 1184, 0, 0, 1185, - 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 0, 1203, 0, - 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, - 0, 1214, 1215, 1216, 0, 0, 1095, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1217, - 0, 0, 0, 0, 0, 1118, 1218, 1219, 1220, 1221, - 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, - 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, - 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, - 1252, 1253, 1254, 1255, 0, 0, 0, 1256, 1257, 1258, - 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, - 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1475, 1277, - 1278, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1452, 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, 0, 1303, 1143, 1144, 1145, 1146, 1147, - 1148, 1149, 1150, 1151, 1152, 1153, 0, 1154, 1155, 1156, - 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 0, - 0, 0, 0, 0, 0, 1330, 1166, 1167, 1168, 1169, - 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, - 1180, 1181, 1182, 1183, 1184, 0, 0, 1185, 1186, 1187, - 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, - 1198, 1199, 1200, 1201, 1202, 0, 1203, 0, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 0, 1214, - 1215, 1216, 0, 1454, 1455, 1456, 0, 0, 1457, 1458, - 1459, 1460, 1461, 0, 1462, 1463, 1464, 1217, 951, 0, - 0, 0, 0, 0, 1218, 1219, 1220, 1221, 1222, 1223, - 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, - 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, - 1254, 1255, 0, 0, 0, 1256, 1257, 1258, 1259, 1260, - 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 0, 1277, 1278, 7, - 8, 9, 10, 0, 11, 12, 13, 513, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 0, 0, 0, 0, 0, 0, 0, 15, 356, 254, - 0, 210, 0, 211, 212, 213, 214, 77, 0, 0, - 0, 0, 21, 357, 0, 0, 215, 23, 0, 0, - 81, 0, 0, 0, 0, 0, 24, 25, 216, 0, - 0, 0, 27, 0, 0, 217, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 218, 0, 0, 0, 0, 0, 0, 1403, 0, - 45, 0, 46, 47, 0, 48, 0, 0, 0, 0, - 49, 0, 219, 220, 52, 0, 0, 53, 87, 0, - 0, 0, 54, 0, 0, 55, 359, 360, 90, 221, - 0, 0, 92, 0, 222, 7, 8, 9, 10, 0, - 11, 12, 13, 14, 0, 0, 0, 58, 0, 0, - 59, 60, 61, 0, 0, 62, 0, 63, 64, 0, - 0, 65, 0, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 0, 266, 267, 268, 0, 0, - 0, 615, 0, 15, 0, 0, 0, 16, 0, 17, - 18, 19, 20, 0, 0, 0, 0, 0, 21, 0, - 765, 766, 22, 23, 0, 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, 1533, 0, 0, 0, 45, 0, 46, 47, - 0, 48, 0, 0, 0, 0, 49, 0, 50, 51, - 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, - 0, 55, 0, 0, 0, 56, 7, 8, 9, 10, - 57, 11, 12, 13, 14, 767, 0, 0, 197, 1565, - 0, 0, 0, 58, 0, 0, 59, 60, 61, 0, - 0, 62, 0, 63, 64, 0, 0, 65, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 0, 0, 0, - 0, 0, 0, 0, 15, 0, 254, 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, 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, - 47, 0, 48, 0, 0, 0, 0, 49, 0, 50, - 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, - 0, 0, 55, 0, 0, 0, 56, 7, 8, 9, - 10, 57, 11, 12, 13, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, - 0, 0, 62, 0, 198, 64, 0, 0, 65, 0, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 0, 266, 267, 268, 15, 0, 0, 1338, 16, - 0, 17, 18, 19, 20, 0, 0, 0, 0, 0, - 21, 0, 0, 0, 22, 23, 0, 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, 47, 0, 48, 0, 0, 0, 0, 49, 0, - 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, - 54, 0, 0, 55, 0, 0, 0, 56, 7, 8, - 9, 10, 57, 11, 12, 13, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 58, 0, 0, 59, 60, - 61, 0, 0, 62, 0, 63, 64, 454, 0, 65, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, - 0, 0, 0, 0, 0, 0, 15, 459, 254, 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, 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, 47, 0, 48, 0, 0, 0, 0, 49, - 0, 50, 51, 52, 0, 0, 53, 0, 0, 0, - 0, 54, 0, 0, 55, 0, 0, 0, 56, 7, - 8, 9, 10, 57, 11, 12, 13, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 58, 0, 0, 59, - 60, 61, 0, 0, 62, 0, 63, 64, 0, 0, - 65, 0, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 0, 266, 267, 268, 15, 743, 0, - 1571, 16, 0, 17, 18, 19, 20, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 22, 23, 0, 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, 47, 0, 48, 0, 0, 0, 0, - 49, 0, 50, 51, 52, 0, 0, 53, 0, 0, - 0, 0, 54, 0, 0, 55, 0, 0, 0, 56, - 7, 8, 9, 10, 57, 11, 12, 13, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, - 59, 60, 61, 0, 0, 62, 0, 63, 64, 0, - 0, 65, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 0, 0, 0, 0, 0, 0, 0, 15, 0, - 254, 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, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 0, 0, 0, 0, 0, + 0, 0, 15, 393, 212, 1591, 168, 0, 169, 170, + 171, 172, 77, 0, 0, 0, 0, 21, 394, 0, + 0, 173, 23, 0, 0, 81, 0, 0, 0, 0, + 0, 24, 25, 174, 1588, 0, 0, 27, 0, 0, + 175, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 176, 0, 0, 0, + 0, 0, 0, 0, 0, 45, 0, 46, 47, 0, + 48, 0, 0, 1617, 0, 49, 0, 177, 178, 52, + 0, 0, 53, 87, 0, 0, 0, 54, 0, 0, + 55, 395, 396, 90, 179, 0, 0, 92, 0, 180, + 7, 8, 9, 10, 0, 11, 12, 13, 14, 0, + 0, 0, 58, 0, 0, 59, 60, 61, 0, 0, + 62, 0, 63, 64, 910, 0, 65, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 911, 0, 0, 0, 0, 15, 0, + 0, 0, 16, 0, 17, 18, 19, 20, 0, 0, + 0, 0, 0, 21, 0, 955, 956, 22, 23, 0, 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, @@ -1921,11 +1885,11 @@ static const yytype_int16 yytable[] = 0, 49, 0, 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, 0, 55, 0, 0, 0, 56, 7, 8, 9, 10, 57, 11, 12, 13, 14, - 959, 0, 0, 0, 0, 0, 0, 0, 58, 0, + 957, 0, 0, 155, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 0, 0, 62, 0, 63, 64, - 0, 964, 65, 0, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 0, 266, 267, 268, 15, - 0, 0, 0, 16, 0, 17, 18, 19, 20, 0, + 0, 0, 65, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 212, 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, 0, 24, 25, 26, 0, 0, 0, 27, 0, 0, 28, 29, 30, @@ -1936,10 +1900,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 54, 0, 0, 55, 0, 0, 0, 56, 7, 8, 9, 10, 57, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 58, - 0, 0, 59, 60, 61, 0, 0, 62, 0, 63, - 64, 1096, 0, 65, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 254, 0, 16, 0, 17, 18, 19, 20, + 0, 0, 59, 60, 61, 0, 0, 62, 0, 156, + 64, 0, 1093, 65, 0, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 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, 0, 24, 25, 26, 0, 0, 0, 27, 0, 0, 28, 29, @@ -1949,11 +1913,11 @@ static const yytype_int16 yytable[] = 0, 0, 0, 49, 0, 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, 0, 55, 0, 0, 0, 56, 7, 8, 9, 10, 57, 11, 12, - 13, 14, 1382, 0, 0, 0, 0, 0, 0, 0, + 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 0, 0, 62, 0, - 63, 64, 1314, 0, 65, 0, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 0, 266, 267, - 268, 15, 0, 0, 0, 16, 0, 17, 18, 19, + 63, 64, 345, 0, 65, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 0, 0, 0, 0, 0, 0, + 0, 15, 350, 212, 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, 0, 24, 25, 26, 0, 0, 0, 27, 0, 0, 28, @@ -1965,9 +1929,9 @@ static const yytype_int16 yytable[] = 0, 0, 0, 56, 7, 8, 9, 10, 57, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 0, 0, 62, - 0, 63, 64, 1534, 0, 65, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 254, 0, 16, 0, 17, 18, + 0, 63, 64, 1169, 0, 65, 0, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 224, + 225, 226, 15, 755, 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, 0, 24, 25, 26, 0, 0, 0, 27, 0, 0, @@ -1977,11 +1941,11 @@ static const yytype_int16 yytable[] = 48, 0, 0, 0, 0, 49, 0, 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, 0, 55, 0, 0, 0, 56, 7, 8, 9, 10, 57, - 11, 12, 13, 14, 0, 247, 248, 249, 250, 251, - 252, 253, 58, 0, 0, 59, 60, 61, 0, 0, - 62, 254, 63, 64, 0, 0, 65, 0, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 0, - 266, 267, 268, 15, 0, 0, 0, 16, 0, 17, + 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 0, 0, 59, 60, 61, 0, 0, + 62, 0, 63, 64, 0, 0, 65, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 212, 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, 0, 24, 25, 26, 0, 0, 0, 27, 0, @@ -1989,737 +1953,637 @@ static const yytype_int16 yytable[] = 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 46, 47, 0, 48, 0, 0, 0, 0, 49, 0, 50, 51, - 52, 0, 0, 53, 0, 500, 501, 502, 54, 0, - 0, 55, 0, 0, 0, 56, 671, 672, 673, 10, - 57, 11, 674, 675, 69, 70, 0, 0, 676, 259, - 260, 261, 262, 263, 264, 265, 0, 266, 267, 268, - 0, 62, 0, 63, 64, 0, 0, 65, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 0, 0, 0, - 0, 481, 0, 229, 677, 71, 254, 0, 72, 0, - 73, 74, 75, 76, 77, 482, 230, 231, 0, 678, - 79, 0, 0, 80, 679, 0, 0, 81, 0, 0, - 0, 0, 0, 680, 681, 82, 0, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 505, 233, 0, 234, 84, 0, - 0, 0, 235, 0, 236, 0, 0, 682, 0, 0, - 683, 0, 684, 0, 0, 0, 483, 685, 0, 85, - 86, 686, 0, 0, 687, 87, 0, 0, 0, 688, - 0, 301, 689, 88, 89, 90, 91, 0, 0, 92, - 0, 93, 0, 671, 672, 673, 10, 0, 11, 674, - 675, 69, 70, 0, 690, 1072, 0, 691, 692, 0, - 0, 0, 693, 0, 694, 0, 717, 0, 695, 0, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 0, 266, 267, 268, 718, 0, 0, 481, 0, - 0, 677, 71, 0, 0, 72, 0, 73, 74, 75, - 76, 77, 482, 0, 0, 0, 678, 79, 0, 0, - 80, 679, 0, 0, 81, 0, 0, 0, 0, 0, - 680, 681, 82, 0, 249, 250, 251, 252, 253, 83, - 7, 8, 9, 10, 0, 11, 12, 13, 254, 0, - 0, 0, 1431, 0, 0, 84, 0, 0, 0, 0, - 0, 0, 0, 0, 682, 0, 0, 683, 0, 684, - 0, 0, 0, 483, 685, 0, 85, 86, 686, 0, - 0, 687, 87, 0, 0, 0, 688, 0, 1351, 689, - 88, 89, 90, 91, 0, 0, 92, 0, 93, 0, - 0, 0, 0, 1352, 0, 0, 0, 0, 1353, 0, - 0, 690, 0, 0, 691, 692, 0, 24, 25, 693, - 0, 694, 0, 27, 0, 695, 0, 29, 30, 31, + 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, + 0, 55, 0, 0, 0, 56, 7, 8, 9, 10, + 57, 11, 12, 13, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 58, 0, 0, 59, 60, 61, 0, + 0, 62, 0, 63, 64, 892, 0, 65, 0, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 0, 224, 225, 226, 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, 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, + 47, 0, 48, 0, 0, 0, 0, 49, 0, 50, + 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, + 0, 0, 55, 0, 0, 0, 56, 7, 8, 9, + 10, 57, 11, 12, 13, 14, 1088, 0, 0, 0, + 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, + 0, 0, 62, 0, 63, 64, 0, 0, 65, 731, + 732, 733, 734, 735, 736, 737, 738, 739, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 740, 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, 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, 47, 0, 48, 0, 0, 0, 0, 49, 0, + 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, + 54, 0, 0, 55, 0, 0, 0, 56, 7, 8, + 9, 10, 57, 11, 12, 13, 14, 1463, 0, 0, + 0, 0, 0, 0, 0, 58, 0, 0, 59, 60, + 61, 0, 0, 62, 0, 63, 64, 0, 0, 65, + 0, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 0, 752, 753, 754, 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, 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, 47, 0, 48, 0, 0, 0, 0, 49, + 0, 50, 51, 52, 0, 0, 53, 0, 0, 0, + 0, 54, 0, 0, 55, 0, 0, 0, 56, 7, + 8, 9, 10, 57, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 58, 0, 0, 59, + 60, 61, 0, 0, 62, 0, 63, 64, 1589, 0, + 65, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, + 0, 0, 0, 0, 0, 0, 0, 15, 0, 1515, + 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, 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, 47, 0, 48, 0, 0, 0, 0, + 49, 0, 50, 51, 52, 0, 0, 53, 0, 0, + 0, 0, 54, 0, 0, 55, 0, 0, 0, 56, + 7, 8, 9, 10, 57, 11, 12, 13, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, + 59, 60, 61, 0, 0, 62, 0, 63, 64, 0, + 0, 65, 0, 1516, 1517, 1518, 1519, 0, 0, 1520, + 1521, 1522, 1523, 1524, 0, 1525, 1526, 1527, 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, 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, 7, 8, 9, 10, 0, 11, 12, 13, - 0, 0, 0, 0, 47, 0, 48, 0, 0, 0, - 0, 1354, 0, 0, 0, 1355, 0, 0, 1356, 0, - 0, 0, 0, 54, 0, 0, 259, 260, 261, 262, - 263, 264, 265, 0, 266, 267, 268, 0, 0, 0, - 1351, 0, 0, 0, 0, 0, 0, 0, 1357, 0, - 0, 1358, 1359, 1360, 0, 1352, 1361, 0, 1432, 64, - 1353, 0, 1363, 0, 0, 0, 226, 227, 228, 24, - 25, 0, 0, 0, 0, 27, 0, 0, 0, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 0, 0, 0, 47, 0, 48, 0, - 0, 0, 254, 1354, 0, 0, 0, 1355, 0, 0, - 1356, 0, 0, 0, 229, 54, 0, 0, 0, 72, - 0, 73, 74, 75, 76, 0, 0, 230, 231, 0, - 0, 0, 0, 0, 226, 227, 228, 0, 0, 0, - 1357, 0, 0, 1358, 1359, 1360, 968, 0, 1361, 0, - 1362, 64, 0, 83, 1363, 0, 969, 970, 971, 972, - 973, 974, 975, 976, 977, 232, 233, 0, 234, 277, - 0, 0, 0, 235, 978, 236, 979, 980, 981, 982, - 983, 984, 985, 986, 987, 988, 989, 990, 0, 0, - 85, 86, 229, 0, 0, 0, 0, 0, 0, 334, - 0, 0, 0, 0, 0, 230, 231, 91, 0, 991, - 0, 0, 93, 0, 0, 0, 0, 0, 0, 354, - 355, 0, 0, 0, 0, 0, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 0, 266, 267, - 268, 411, 0, 232, 233, 0, 234, 0, 0, 0, - 0, 235, 0, 236, 992, 0, 0, 0, 0, 0, - 0, 356, 0, 0, 72, 0, 73, 74, 75, 76, - 77, 0, 0, 0, 354, 355, 357, 519, 0, 80, - 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, - 0, 82, 0, 0, 993, 0, 0, 994, 83, 995, - 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, - 0, 1006, 1007, 0, 84, 1008, 356, 0, 0, 72, - 0, 73, 74, 75, 76, 77, 0, 358, 0, 0, - 0, 357, 0, 0, 80, 85, 86, 0, 81, 0, - 496, 87, 0, 0, 0, 0, 82, 0, 0, 359, - 360, 90, 91, 83, 0, 92, 0, 93, 0, 0, - 0, 0, 361, 0, 0, 0, 531, 532, 0, 84, - 0, 0, 0, 0, 0, 0, 0, 0, 362, 0, - 0, 0, 358, 0, 72, 0, 73, 74, 75, 76, - 85, 86, 0, 0, 0, 0, 87, 0, 0, 0, - 0, 0, 0, 0, 359, 360, 90, 91, 356, 0, - 92, 72, 93, 73, 74, 75, 76, 77, 83, 0, - 0, 0, 0, 357, 0, 0, 80, 0, 0, 0, - 81, 0, 0, 362, 277, 0, 0, 0, 82, 0, - 0, 0, 0, 0, 0, 83, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 85, 86, 0, 0, 0, - 0, 84, 0, 0, 254, 0, 226, 227, 228, 0, - 0, 915, 91, 0, 358, 0, 0, 93, 0, 0, - 0, 0, 85, 86, 0, 0, 0, 0, 87, 0, - 0, 0, 0, 0, 0, 0, 359, 360, 90, 91, - 0, 0, 92, 0, 93, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 254, 229, 362, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 0, 0, 230, 231, 0, - 0, 0, 0, 0, 254, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 254, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 0, 0, 232, 233, 0, 234, 0, - 0, 0, 254, 235, 0, 236, 0, 0, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 0, - 266, 267, 268, 517, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 254, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 254, 0, 0, 0, 0, 0, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 0, 266, - 267, 268, 601, 0, 0, 0, 0, 0, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 0, - 266, 267, 268, 617, 0, 0, 0, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 0, 266, - 267, 268, 705, 0, 0, 0, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 0, 266, 267, - 268, 788, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 254, 0, 0, 0, 0, 0, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 0, 266, 267, - 268, 935, 0, 0, 0, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 0, 266, 267, 268, - 1054, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 254, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 254, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 884, 0, 0, 0, - 0, 0, 0, 0, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 0, 266, 267, 268, 1301, + 42, 43, 44, 0, 184, 185, 186, 0, 0, 0, + 0, 45, 0, 46, 47, 72, 48, 73, 74, 75, + 76, 49, 0, 50, 51, 52, 0, 0, 53, 0, + 234, 0, 0, 54, 0, 0, 55, 0, 0, 0, + 56, 7, 8, 9, 10, 57, 11, 12, 13, 83, + 0, 0, 0, 1494, 0, 0, 0, 0, 0, 0, + 0, 0, 187, 0, 0, 235, 62, 0, 63, 64, + 0, 0, 65, 0, 0, 188, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 85, 86, 0, 1431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 91, 1432, 184, 185, 186, 93, 1433, + 1046, 0, 0, 190, 191, 0, 192, 0, 24, 25, + 0, 193, 0, 194, 27, 0, 0, 0, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 7, 8, 9, 10, 766, 11, 12, + 13, 0, 0, 0, 0, 47, 0, 48, 0, 0, + 0, 0, 1434, 187, 0, 0, 1435, 0, 0, 1436, + 0, 0, 0, 0, 54, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 247, 248, 249, 250, 251, 252, 253, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, - 0, 0, 0, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 0, 266, 267, 268, 1334, 0, - 613, 0, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, -2, 266, 267, 268, 0, 0, 1336, - 0, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 0, 266, 267, 268, 0, 0, 0, 0, - 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 895, 0, 896, 897, 898, 0, 0, 0, 0, 0, - 0, 108, 0, 109, 0, 0, 110, 111, 0, 0, - 0, 0, 0, 0, 0, 112, 113, 114, 115, 0, - 0, 0, 0, 0, 0, 0, 116, 0, 117, 118, - 119, 120, 121, 0, 0, 0, 122, 0, 0, 0, - 0, 123, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 0, 266, 267, 268, 0, 0, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 132, 133, 134, 135, 0, 0, 0, - 0, 0, 136, 137, 69, 70, 138, 139, 479, 0, - 480, 140, 0, 0, 0, 0, 0, 141, 142, 0, - 143, 247, 248, 249, 250, 251, 252, 253, 144, 0, - 0, 0, 0, 0, 0, 0, 0, 254, 500, 501, - 502, 481, 0, 0, 0, 71, 0, 0, 72, 0, - 73, 74, 75, 76, 77, 482, 0, 0, 0, 0, - 79, 0, 0, 80, 0, 0, 0, 81, 247, 248, - 249, 250, 251, 252, 253, 82, 503, 0, 504, 0, - 0, 0, 83, 0, 254, 1445, 1446, 1447, 1448, 1449, - 1450, 1451, 0, 0, 0, 0, 229, 0, 84, 0, - 0, 1452, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 230, - 231, 0, 0, 0, 0, 0, 483, 0, 1452, 85, - 86, 0, 0, 0, 0, 87, 1445, 1446, 1447, 1448, - 1449, 1450, 1451, 88, 89, 90, 91, 0, 0, 92, - 0, 93, 1452, 0, 0, 0, 0, 505, 233, 0, - 234, 0, 0, 0, 484, 235, 0, 236, 0, 485, - 0, 0, 0, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 0, 266, 267, 268, 0, 0, 0, 0, - 0, 506, 0, 0, 0, 0, 0, 0, 0, 226, - 227, 228, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 258, 259, 260, 261, 262, 263, 264, 265, 0, - 266, 267, 268, 0, 0, 0, 1454, 1455, 1456, 0, - 0, 1457, 1458, 1459, 1460, 1461, 796, 1462, 1463, 1464, - 0, 0, 0, 0, 1455, 1456, 796, 229, 1457, 1458, - 1459, 1460, 1461, 797, 1462, 1463, 1464, 0, 0, 0, - 230, 231, 0, 0, 0, 0, 0, 798, 0, 1456, - 0, 0, 1457, 1458, 1459, 1460, 1461, 798, 1462, 1463, - 1464, 799, 0, 800, 0, 0, 0, 0, 0, 0, - 0, 799, 0, 800, 0, 0, 0, 0, 232, 233, - 801, 234, 0, 0, 0, 0, 235, 0, 236, 0, - 801, 0, 0, 318, 0, 0, 226, 227, 228, 1318, - 0, 0, 0, 0, 1397, 0, 0, 0, 0, 0, - 0, 802, 0, 0, 803, 804, 0, 0, 805, 0, - 0, 802, 0, 0, 803, 804, 0, 0, 805, 0, - 0, 0, 318, 0, 806, 108, 0, 109, 0, 0, - 0, 111, 0, 0, 806, 0, 807, 0, 0, 112, - 113, 114, 115, 0, 229, 0, 807, 0, 0, 0, - 808, 0, 117, 118, 119, 120, 0, 230, 231, 0, - 808, 0, 0, 0, 108, 311, 109, 0, 0, 0, - 111, 0, 0, 0, 0, 0, 0, 0, 112, 113, - 114, 115, 226, 227, 228, 0, 719, 720, 721, 130, - 0, 117, 310, 119, 120, 232, 1315, 1316, 1317, 0, - 135, 0, 0, 235, 311, 236, 136, 0, 0, 0, - 138, 139, 0, 0, 0, 0, 1318, 0, 0, 0, - 0, 1319, 142, 0, 143, 0, 0, 0, 130, 0, - 0, 72, 0, 73, 74, 75, 76, 722, 723, 135, - 229, 0, 226, 227, 228, 136, 80, 0, 0, 0, - 139, 0, 0, 230, 231, 0, 0, 0, 82, 0, - 0, 142, 0, 143, 0, 83, 0, 0, 0, 0, - 72, 0, 73, 74, 75, 76, 0, 0, 226, 227, - 228, 84, 0, 0, 69, 70, 0, 0, 479, 0, - 0, 232, 233, 0, 234, 0, 0, 0, 0, 235, - 229, 236, 85, 86, 83, 0, 0, 0, 0, 0, - 0, 0, 1318, 230, 231, 0, 724, 1399, 0, 91, - 277, 481, 92, 0, 93, 71, 0, 0, 72, 0, - 73, 74, 75, 76, 77, 482, 229, 0, 0, 0, - 79, 85, 86, 80, 0, 0, 0, 81, 0, 230, - 231, 232, 233, 0, 234, 82, 0, 0, 91, 235, - 0, 236, 83, 93, 0, 0, 0, 0, 0, 0, - 0, 0, 1318, 0, 0, 0, 0, 1401, 84, 0, - 0, 69, 70, 0, 0, 823, 195, 232, 233, 0, - 234, 0, 0, 0, 0, 235, 483, 236, 0, 85, - 86, 0, 0, 0, 0, 87, 0, 0, 0, 0, - 0, 0, 305, 88, 89, 90, 91, 0, 481, 92, - 0, 93, 71, 69, 70, 72, 0, 73, 74, 75, - 76, 77, 482, 0, 0, 0, 0, 79, 0, 0, - 80, 0, 0, 0, 81, 0, 0, 0, 0, 0, - 0, 0, 82, 0, 0, 0, 0, 0, 0, 83, - 481, 0, 0, 0, 71, 0, 0, 72, 0, 73, - 74, 75, 76, 77, 482, 84, 0, 0, 0, 79, - 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, - 0, 0, 0, 483, 82, 0, 85, 86, 0, 0, - 0, 83, 87, 0, 0, 0, 0, 0, 0, 0, - 88, 89, 90, 91, 0, 0, 92, 84, 93, 0, - 69, 70, 0, 0, 0, 0, 0, 0, 72, 0, - 73, 74, 75, 76, 0, 483, 0, 0, 85, 86, - 0, 0, 0, 276, 87, 0, 69, 70, 0, 0, - 0, 0, 88, 89, 90, 91, 0, 0, 92, 0, - 93, 71, 83, 0, 72, 0, 73, 74, 75, 76, - 77, 78, 0, 0, 0, 0, 79, 0, 277, 80, - 0, 0, 0, 81, 0, 0, 0, 71, 0, 0, - 72, 82, 73, 74, 75, 76, 77, 0, 83, 85, - 86, 0, 79, 0, 0, 80, 0, 0, 0, 81, - 0, 0, 0, 0, 84, 0, 91, 82, 0, 0, - 0, 93, 0, 0, 83, 0, 0, 0, 0, 0, - 0, 226, 227, 228, 0, 85, 86, 0, 69, 70, - 84, 87, 0, 0, 183, 0, 0, 0, 0, 88, - 89, 90, 91, 0, 0, 92, 0, 93, 630, 0, - 0, 85, 86, 0, 69, 0, 0, 87, 0, 0, - 0, 0, 0, 0, 0, 88, 89, 90, 91, 71, - 0, 92, 72, 93, 73, 74, 75, 76, 77, 229, - 0, 0, 0, 0, 79, 0, 0, 80, 0, 0, - 0, 81, 230, 231, 0, 71, 0, 0, 72, 82, - 73, 74, 75, 76, 77, 543, 83, 0, 0, 0, - 79, 0, 0, 80, 0, 0, 0, 81, 0, 0, - 0, 0, 84, 0, 0, 82, 0, 0, 0, 0, - 232, 233, 83, 234, 0, 0, 0, 0, 235, 0, - 236, 0, 0, 85, 86, 0, 184, 0, 84, 87, - 0, 1318, 0, 0, 0, 0, 0, 88, 89, 90, - 91, 0, 0, 92, 0, 93, 0, 0, 0, 85, - 86, 0, 184, 0, 0, 87, 0, 0, 0, 0, - 226, 227, 228, 88, 89, 90, 91, 185, 0, 92, - 72, 93, 73, 74, 75, 76, 77, 1030, 0, 0, - 0, 0, 186, 0, 0, 80, 0, 0, 0, 81, - 0, 0, 0, 185, 0, 0, 72, 82, 73, 74, - 75, 76, 77, 0, 83, 0, 0, 0, 186, 0, - 0, 80, 0, 0, 0, 81, 0, 0, 229, 0, - 84, 0, 0, 82, 0, 0, 0, 0, 0, 0, - 83, 230, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 85, 86, 0, 69, 0, 84, 87, 0, 0, - 0, 0, 0, 0, 0, 187, 188, 90, 91, 0, - 0, 92, 0, 93, 0, 0, 0, 85, 86, 232, - 233, 0, 234, 87, 0, 0, 0, 235, 0, 236, - 0, 187, 188, 90, 91, 71, 0, 92, 72, 93, - 73, 74, 75, 76, 77, 0, 0, 0, 0, 0, - 79, 0, 0, 80, 0, 0, 0, 81, 0, 0, - 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 108, 0, 109, 0, - 0, 110, 111, 0, 0, 0, 0, 0, 84, 0, - 112, 113, 114, 115, 0, 0, 0, 0, 0, 0, - 0, 116, 0, 117, 118, 119, 120, 121, 0, 85, - 86, 122, 0, 0, 0, 87, 123, 0, 0, 0, - 0, 0, 0, 88, 89, 90, 91, 0, 0, 92, - 0, 93, 0, 0, 124, 125, 126, 127, 128, 129, - 130, 131, 0, 0, 0, 0, 0, 0, 132, 133, - 134, 135, 0, 0, 0, 0, 0, 136, 137, 0, - 0, 138, 139, 108, 0, 109, 140, 0, 110, 111, - 0, 0, 141, 142, 0, 143, 0, 112, 113, 114, - 115, 0, 0, 144, 0, 0, 0, 0, 116, 0, - 117, 118, 119, 120, 121, 0, 0, 0, 122, 0, - 0, 0, 715, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, - 0, 0, 0, 0, 0, 132, 133, 134, 135, 0, - 0, 0, 0, 0, 136, 137, 0, 0, 138, 139, - 108, 0, 109, 140, 0, 110, 111, 0, 0, 141, - 142, 0, 143, 0, 112, 113, 114, 115, 0, 0, - 144, 0, 0, 0, 0, 116, 0, 117, 118, 119, - 120, 121, 0, 0, 0, 122, 0, 0, 0, 901, - 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 124, 125, - 126, 127, 128, 129, 130, 131, 0, 0, 0, 0, - 0, 0, 132, 133, 134, 135, 0, 0, 0, 0, - 0, 136, 137, 0, 0, 138, 139, 108, 0, 109, - 140, 0, 110, 111, 0, 0, 141, 142, 0, 143, - 0, 112, 113, 114, 115, 0, 0, 144, 0, 0, - 0, 0, 116, 0, 117, 118, 119, 120, 121, 0, - 0, 0, 122, 0, 0, 0, 946, 123, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 125, 126, 127, 128, - 129, 130, 131, 0, 0, 0, 0, 0, 0, 132, - 133, 134, 135, 0, 0, 0, 0, 0, 136, 137, - 0, 0, 138, 139, 108, 0, 109, 140, 0, 110, - 111, 0, 0, 141, 142, 0, 143, 0, 112, 113, - 114, 115, 0, 0, 144, 0, 0, 0, 0, 116, - 0, 117, 118, 119, 120, 121, 0, 0, 0, 122, - 0, 0, 0, 1055, 123, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 128, 129, 130, 131, - 0, 0, 0, 0, 0, 0, 132, 133, 134, 135, - 0, 0, 0, 0, 0, 136, 137, 0, 0, 138, - 139, 108, 0, 109, 140, 0, 110, 111, 0, 0, - 141, 142, 0, 143, 0, 112, 113, 114, 115, 0, - 0, 144, 0, 0, 0, 0, 116, 0, 117, 118, - 119, 120, 121, 0, 0, 0, 122, 0, 0, 0, - 1109, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, 0, 132, 133, 134, 135, 0, 0, 0, - 0, 0, 136, 137, 0, 0, 138, 139, 108, 0, - 109, 140, 0, 110, 111, 0, 0, 141, 142, 0, - 143, 0, 112, 113, 114, 115, 0, 0, 144, 0, - 0, 0, 0, 116, 0, 117, 118, 119, 120, 121, - 0, 0, 0, 122, 0, 0, 0, 1339, 123, 0, - 226, 227, 228, 0, 0, 0, 0, 0, 0, 0, - 0, 226, 227, 228, 0, 0, 124, 125, 126, 127, - 128, 129, 130, 131, 0, 0, 0, 0, 0, 0, - 132, 133, 134, 135, 0, 0, 0, 0, 0, 136, - 137, 0, 0, 138, 139, 0, 0, 0, 140, 503, - 0, 504, 0, 0, 141, 142, 0, 143, 229, 0, - 0, 0, 0, 0, 349, 144, 0, 0, 0, 229, - 0, 230, 231, 0, 72, 0, 73, 74, 75, 76, - 0, 0, 230, 231, 1491, 0, 0, 0, 72, 0, - 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 350, 0, 0, 0, 0, 83, 232, - 233, 0, 234, 0, 0, 0, 0, 235, 0, 236, - 232, 233, 83, 234, 277, 0, 0, 0, 235, 0, - 236, 0, 0, 0, 0, 0, 0, 0, 277, 0, - 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, + 0, 1431, 0, 0, 0, 0, 0, 0, 0, 1437, + 0, 0, 1438, 1439, 1440, 0, 1432, 1441, 0, 1495, + 64, 1433, 0, 1443, 190, 191, 0, 192, 0, 0, + 24, 25, 193, 0, 194, 0, 27, 0, 0, 0, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 7, 8, 9, 10, 0, + 11, 12, 13, 652, 0, 0, 0, 47, 0, 48, + 0, 0, 0, 0, 1434, 0, 0, 0, 1435, 0, + 0, 1436, 0, 0, 0, 0, 54, 0, 0, 0, + 0, 0, 0, 0, 108, 0, 109, 0, 0, 0, + 0, 0, 0, 1431, 0, 0, 0, 0, 653, 0, + 654, 1437, 0, 0, 1438, 1439, 1440, 0, 1432, 1441, + 0, 1442, 64, 1433, 0, 1443, 0, 655, 0, 0, + 0, 0, 24, 25, 0, 0, 0, 0, 27, 0, + 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 0, 656, 0, + 0, 657, 658, 0, 0, 659, 0, 0, 0, 47, + 0, 48, 546, 547, 548, 10, 1434, 11, 549, 550, + 1435, 660, 0, 1436, 551, 0, 0, 0, 54, 0, + 0, 0, 0, 661, 0, 0, 546, 547, 548, 10, + 0, 11, 549, 550, 0, 0, 0, 662, 868, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 109, + 552, 1441, 0, 1442, 64, 0, 0, 1443, 0, 0, + 0, 0, 0, 0, 0, 553, 0, 0, 0, 0, + 554, 108, 0, 109, 552, 0, 0, 0, 0, 555, + 556, 0, 0, 0, 0, 0, 0, 0, 0, 553, + 0, 0, 0, 0, 554, 0, 0, 0, 0, 0, + 0, 0, 0, 555, 556, 0, 0, 0, 0, 0, + 0, 0, 0, 557, 0, 0, 558, 0, 559, 184, + 185, 186, 0, 560, 0, 0, 0, 561, 0, 0, + 562, 0, 0, 0, 0, 563, 0, 557, 564, 0, + 558, 0, 559, 0, 0, 0, 0, 560, 0, 0, + 0, 561, 0, 0, 562, 630, 631, 0, 0, 563, + 565, 0, 564, 566, 567, 0, 0, 0, 568, 0, + 569, 0, 0, 0, 570, 0, 72, 187, 73, 74, + 75, 76, 0, 0, 565, 0, 0, 566, 567, 0, + 188, 189, 568, 0, 569, 778, 779, 393, 570, 0, + 72, 0, 73, 74, 75, 76, 77, 0, 0, 0, + 83, 0, 394, 0, 0, 80, 0, 0, 0, 81, + 0, 0, 0, 0, 0, 0, 235, 82, 190, 1006, + 1007, 1008, 0, 0, 83, 0, 193, 393, 194, 0, + 72, 0, 73, 74, 75, 76, 77, 85, 86, 1009, + 84, 0, 394, 0, 1010, 80, 0, 0, 0, 81, + 0, 0, 0, 632, 91, 0, 0, 82, 0, 93, + 0, 85, 86, 0, 83, 0, 0, 87, 0, 72, + 0, 73, 74, 75, 76, 395, 396, 90, 91, 0, + 84, 92, 153, 93, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 632, 0, 0, 0, 0, 0, 0, + 0, 85, 86, 83, 634, 0, 0, 87, 0, 0, + 0, 0, 0, 0, 0, 395, 396, 90, 91, 235, + 0, 92, 0, 93, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 0, 0, 0, 0, 0, 0, 0, + 85, 86, 212, 0, 634, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 0, 0, 0, 91, 0, 0, + 0, 0, 93, 212, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 212, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 212, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 212, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, + 0, 0, 0, 0, 0, 0, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 0, 224, 225, + 226, 302, 0, 0, 0, 0, 0, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 224, + 225, 226, 491, 0, 0, 0, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 0, 224, 225, + 226, 507, 0, 0, 0, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 585, 0, 0, 0, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 0, 224, 225, 226, 644, + 0, 0, 0, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 0, 224, 225, 226, 764, 0, + 0, 0, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 0, 224, 225, 226, 896, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 0, 0, 0, + 0, 0, 184, 185, 186, 0, 212, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 212, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 212, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 212, 204, 205, 206, 207, 208, 209, + 210, 211, 0, 188, 189, 0, 0, 0, 0, 0, + 0, 212, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1515, + 205, 206, 207, 208, 209, 210, 211, 0, 0, 0, + 0, 190, 191, 0, 192, 0, 212, 0, 0, 193, + 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 0, 224, 225, 226, 976, 0, 0, 0, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 0, 224, 225, 226, 1026, 0, 503, 0, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, + 224, 225, 226, 0, 0, 1028, 0, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 224, + 225, 226, 0, 0, 0, 0, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 0, 0, 0, 0, 1517, 1518, 1519, 0, 0, 1520, + 1521, 1522, 1523, 1524, 0, 1525, 1526, 1527, 0, 0, + 0, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 0, 224, 225, 226, 205, 206, 207, 208, 209, + 210, 211, 184, 185, 186, 0, 0, 0, 0, 0, + 0, 212, 205, 206, 207, 208, 209, 210, 211, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 212, 1508, + 1509, 1510, 1511, 1512, 1513, 1514, 0, 0, 72, 0, + 73, 74, 75, 76, 0, 1515, 1508, 1509, 1510, 1511, + 1512, 1513, 1514, 234, 0, 0, 0, 0, 0, 0, + 187, 0, 1515, 1508, 1509, 1510, 1511, 1512, 1513, 1514, + 0, 0, 83, 188, 189, 0, 0, 0, 0, 1515, + 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, + 0, 0, 0, 0, 406, 0, 0, 0, 0, 0, + 0, 0, 407, 408, 409, 410, 0, 0, 0, 85, + 86, 190, 191, 0, 192, 412, 586, 414, 415, 193, + 0, 194, 0, 0, 0, 0, 91, 0, 587, 0, + 0, 93, 0, 0, 0, 0, 257, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 224, 225, 226, + 0, 0, 425, 601, 141, 216, 217, 218, 219, 220, + 221, 222, 223, 430, 224, 225, 226, 0, 0, 431, + 1517, 1518, 1519, 594, 434, 1520, 1521, 1522, 1523, 1524, + 594, 1525, 1526, 1527, 0, 437, 0, 438, 1518, 1519, + 0, 0, 1520, 1521, 1522, 1523, 1524, 0, 1525, 1526, + 1527, 0, 0, 0, 0, 0, 1519, 0, 0, 1520, + 1521, 1522, 1523, 1524, 0, 1525, 1526, 1527, 0, 0, + 0, 406, 0, 912, 913, 914, 0, 0, 406, 407, + 408, 409, 410, 0, 0, 0, 407, 408, 409, 410, + 0, 0, 412, 413, 414, 415, 0, 0, 0, 412, + 586, 414, 415, 0, 0, 587, 0, 0, 0, 0, + 0, 0, 587, 0, 0, 0, 0, 0, 72, 0, + 73, 74, 75, 76, 915, 916, 0, 0, 0, 425, + 0, 0, 0, 80, 0, 0, 425, 0, 0, 0, + 430, 0, 0, 0, 0, 82, 431, 430, 0, 0, + 433, 434, 83, 431, 0, 0, 0, 0, 434, 184, + 185, 186, 437, 0, 438, 912, 913, 914, 84, 437, + 0, 438, 0, 0, 72, 0, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 86, 0, 91, 0, 0, 0, 0, 93, 108, 0, - 109, 0, 0, 0, 111, 0, 91, 0, 0, 0, - 0, 93, 112, 113, 114, 115, 0, 0, 0, 0, - 196, 0, 0, 0, 0, 117, 310, 119, 120, 0, - 0, 0, 0, 122, 202, 0, 0, 0, 311, 0, - 0, 108, 0, 109, 0, 0, 110, 111, 0, 0, - 0, 0, 0, 0, 0, 112, 113, 114, 115, 0, - 0, 0, 130, 0, 0, 0, 116, 0, 117, 118, - 119, 120, 121, 135, 0, 0, 122, 0, 0, 136, - 0, 123, 0, 0, 139, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 141, 142, 0, 143, 0, 124, - 125, 126, 127, 128, 129, 130, 131, 0, 0, 0, - 0, 0, -160, 132, 133, 134, 135, 0, 108, 0, - 109, 0, 136, 137, 111, 0, 138, 139, 0, 0, - 0, 140, 112, 113, 114, 115, 0, 141, 142, 0, - 143, 0, 0, 0, 0, 117, 118, 119, 120, 0, - 0, 0, 0, 122, 0, 0, 0, 108, 311, 109, - 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, - 0, 112, 113, 114, 115, 0, 0, 0, 0, 0, - 0, 0, 130, 0, 117, 310, 119, 120, 0, 0, - 0, 0, 0, 135, 0, 0, 108, 311, 109, 136, - 0, 0, 111, 138, 139, 0, 0, 0, 0, 0, - 112, 113, 114, 115, 141, 142, 0, 143, 0, 0, - 0, 130, 325, 117, 310, 119, 120, 0, 0, 0, - 0, 0, 135, 0, 0, 0, 311, 0, 136, 0, - 0, 0, 72, 139, 73, 74, 75, 76, 0, 0, - 0, 0, 0, 0, 142, 0, 143, 276, 0, 0, - 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 0, 0, 83, 136, 0, 0, - 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 277, 142, 0, 143, 0, 0, 0, 0, + 86, 0, 69, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 917, 0, 0, 91, 0, 83, 92, + 72, 93, 73, 74, 75, 76, 0, 187, 0, 0, + 0, 0, 0, 0, 235, 80, 0, 0, 0, 0, + 188, 189, 0, 71, 0, 0, 72, 82, 73, 74, + 75, 76, 77, 525, 83, 85, 86, 0, 79, 0, + 0, 80, 0, 0, 0, 81, 0, 0, 0, 0, + 84, 0, 91, 82, 0, 0, 0, 93, 190, 191, + 83, 192, 0, 0, 0, 0, 193, 0, 194, 0, + 0, 85, 86, 0, 69, 70, 84, 0, 0, 1009, + 154, 0, 0, 0, 1170, 0, 0, 0, 91, 0, + 0, 92, 0, 93, 526, 0, 0, 85, 86, 0, + 69, 70, 0, 87, 0, 0, 0, 0, 0, 0, + 0, 88, 89, 90, 91, 71, 0, 92, 72, 93, + 73, 74, 75, 76, 77, 78, 0, 0, 0, 0, + 79, 0, 0, 80, 0, 0, 0, 81, 0, 0, + 0, 71, 0, 0, 72, 82, 73, 74, 75, 76, + 77, 0, 83, 0, 0, 0, 79, 0, 0, 80, + 0, 0, 0, 81, 0, 0, 0, 0, 84, 0, + 0, 82, 0, 0, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 184, 185, 186, 0, 85, + 86, 0, 69, 70, 84, 87, 0, 0, 0, 0, + 0, 0, 0, 88, 89, 90, 91, 0, 0, 92, + 0, 93, 677, 0, 0, 85, 86, 0, 69, 0, + 0, 87, 0, 0, 0, 0, 0, 0, 0, 88, + 89, 90, 91, 71, 0, 92, 72, 93, 73, 74, + 75, 76, 77, 187, 0, 0, 0, 0, 79, 0, + 0, 80, 0, 0, 0, 81, 188, 189, 0, 71, + 0, 0, 72, 82, 73, 74, 75, 76, 77, 789, + 83, 0, 0, 0, 79, 0, 0, 80, 0, 0, + 0, 81, 0, 0, 0, 0, 84, 0, 0, 82, + 0, 0, 0, 0, 190, 191, 83, 192, 0, 0, + 0, 0, 193, 0, 194, 0, 0, 85, 86, 0, + 142, 0, 84, 87, 0, 1009, 0, 0, 0, 0, + 1172, 88, 89, 90, 91, 0, 0, 92, 0, 93, + 0, 0, 0, 85, 86, 0, 142, 0, 0, 87, + 0, 0, 0, 0, 0, 0, 0, 88, 89, 90, + 91, 143, 0, 92, 72, 93, 73, 74, 75, 76, + 77, 979, 0, 0, 0, 0, 144, 0, 0, 80, + 0, 0, 0, 81, 0, 0, 0, 143, 0, 0, + 72, 82, 73, 74, 75, 76, 77, 0, 83, 0, + 0, 0, 144, 0, 0, 80, 0, 0, 0, 81, + 0, 0, 0, 0, 84, 0, 0, 82, 0, 0, + 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 184, 185, 186, 0, 85, 86, 0, 69, 0, + 84, 87, 0, 0, 0, 0, 184, 185, 186, 145, + 146, 90, 91, 0, 0, 92, 0, 93, 0, 0, + 0, 85, 86, 0, 0, 0, 0, 87, 0, 0, + 0, 0, 0, 0, 0, 145, 146, 90, 91, 71, + 0, 92, 72, 93, 73, 74, 75, 76, 77, 187, + 0, 0, 0, 0, 79, 0, 0, 80, 0, 0, + 0, 81, 188, 189, 187, 0, 0, 0, 0, 82, + 0, 0, 0, 184, 185, 186, 83, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, + 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, + 190, 191, 0, 192, 0, 0, 0, 0, 193, 0, + 194, 0, 0, 85, 86, 190, 191, 0, 192, 87, + 0, 1009, 0, 193, 0, 194, 1174, 88, 89, 90, + 91, 187, 0, 92, 0, 93, 1009, 625, 72, 0, + 73, 74, 75, 76, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 91, 0, 0, 0, 0, 93 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 626, 0, 0, 0, + 0, 0, 190, 191, 0, 192, 0, 0, 235, 0, + 193, 0, 194, 405, 406, 0, 0, 0, 0, 0, + 0, 0, 407, 408, 409, 410, 0, 0, 0, 85, + 86, 0, 0, 411, 0, 412, 413, 414, 415, 416, + 0, 0, 0, 417, 0, 0, 91, 0, 418, 0, + 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 419, 420, 421, 422, + 423, 424, 425, 426, 160, 0, 0, 0, 0, 0, + 427, 428, 429, 430, 0, 0, 0, 0, 0, 431, + 432, 406, 0, 433, 434, 0, 0, 0, 435, 407, + 408, 409, 410, 0, 436, 437, 0, 438, 0, 0, + 0, 0, 412, 413, 414, 415, 0, 0, 406, 0, + 417, 0, 0, 0, 0, 587, 407, 408, 409, 410, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, + 586, 414, 415, 0, 0, 0, 0, 0, 0, 425, + 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, + 430, 0, 0, 0, 0, 0, 431, 0, 0, 0, + 433, 434, 0, 0, 0, 0, 425, 0, 0, 0, + 0, 436, 437, 0, 438, 0, 0, 430, 0, 0, + 0, 0, 0, 431, 0, 0, 0, 0, 434, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 437, + 0, 438 }; static const yytype_int16 yycheck[] = { - 1, 63, 118, 758, 95, 138, 155, 778, 157, 158, - 159, 160, 161, 45, 163, 734, 165, 959, 167, 483, - 138, 490, 627, 334, 309, 682, 533, 481, 15, 191, - 78, 499, 10, 15, 183, 13, 512, 81, 45, 148, - 45, 154, 61, 608, 157, 741, 195, 196, 512, 503, - 148, 822, 148, 202, 203, 0, 157, 511, 162, 10, - 11, 12, 347, 64, 745, 15, 747, 748, 749, 750, - 751, 172, 171, 154, 770, 771, 489, 773, 774, 775, - 776, 646, 157, 6, 154, 8, 13, 154, 154, 84, - 85, 86, 657, 94, 95, 176, 91, 172, 10, 11, - 12, 102, 154, 173, 154, 154, 173, 173, 154, 153, - 153, 171, 156, 132, 154, 154, 148, 68, 171, 154, - 34, 173, 153, 173, 173, 154, 154, 173, 171, 34, - 81, 82, 162, 173, 173, 101, 198, 34, 173, 162, - 797, 148, 162, 148, 173, 173, 154, 286, 287, 288, - 289, 290, 156, 154, 155, 34, 157, 158, 159, 160, - 161, 34, 163, 632, 165, 173, 167, 154, 119, 120, - 154, 122, 171, 154, 638, 6, 127, 8, 129, 154, - 271, 272, 183, 652, 653, 654, 655, 656, 166, 173, - 191, 173, 173, 609, 195, 196, 287, 288, 173, 171, - 309, 202, 203, 171, 154, 267, 171, 119, 519, 371, - 686, 309, 636, 309, 779, 13, 171, 15, 631, 17, - 34, 156, 173, 218, 219, 220, 221, 832, 641, 642, - 643, 644, 645, 81, 343, 931, 547, 842, 347, 166, - 241, 717, 156, 291, 156, 343, 81, 343, 156, 347, - 173, 347, 171, 818, 819, 171, 937, 171, 172, 408, - 729, 166, 167, 168, 62, 170, 171, 172, 157, 965, - 271, 272, 779, 170, 171, 172, 171, 309, 63, 155, - 1035, 157, 277, 172, 154, 286, 287, 288, 289, 290, - 291, 170, 171, 172, 81, 296, 153, 170, 171, 172, - 154, 154, 309, 173, 309, 153, 301, 6, 156, 8, - 358, 343, 171, 781, 171, 347, 729, 173, 153, 173, - 173, 156, 738, 462, 154, 171, 742, 466, 467, 468, - 469, 470, 171, 334, 172, 173, 343, 303, 343, 944, - 347, 480, 347, 173, 798, 484, 485, 171, 817, 147, - 171, 815, 166, 167, 168, 666, 170, 171, 172, 154, - 172, 173, 927, 161, 171, 834, 153, 171, 166, 156, - 371, 156, 153, 1030, 155, 156, 157, 162, 173, 164, - 665, 166, 1137, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 874, 10, - 11, 12, 154, 816, 370, 716, 154, 408, 171, 194, - 874, 1016, 825, 198, 154, 200, 201, 154, 172, 173, - 927, 173, 153, 157, 155, 173, 157, 428, 13, 171, - 15, 156, 17, 173, 482, 483, 173, 153, 171, 155, - 1382, 157, 171, 912, 55, 171, 57, 58, 59, 60, - 919, 920, 921, 922, 923, 171, 10, 11, 12, 70, - 171, 462, 171, 34, 512, 466, 467, 468, 469, 470, - 171, 82, 68, 69, 1039, 1040, 171, 62, 89, 480, - 171, 620, 171, 484, 485, 153, 171, 155, 489, 157, - 171, 492, 171, 172, 105, 543, 153, 282, 155, 912, - 157, 150, 151, 152, 499, 171, 919, 920, 921, 922, - 923, 512, 172, 173, 68, 126, 127, 171, 519, 171, - 172, 173, 166, 530, 172, 173, 1297, 81, 82, 530, - 171, 947, 143, 171, 172, 146, 171, 148, 171, 172, - 173, 153, 154, 544, 171, 172, 547, 171, 172, 173, - 171, 171, 10, 11, 12, 13, 665, 15, 171, 17, - 49, 609, 147, 171, 171, 119, 120, 665, 122, 665, - 120, 121, 122, 127, 171, 129, 161, 171, 544, 171, - 171, 166, 630, 171, 156, 172, 171, 154, 172, 555, - 638, 902, 558, 164, 165, 166, 167, 168, 171, 170, - 171, 172, 34, 78, 62, 1029, 153, 608, 609, 610, - 162, 171, 171, 171, 155, 154, 154, 174, 172, 620, - 173, 1037, 407, 163, 2, 173, 627, 1043, 1044, 173, - 631, 173, 694, 665, 163, 636, 173, 173, 173, 640, - 641, 642, 643, 644, 645, 646, 173, 1366, 173, 173, - 682, 1120, 173, 173, 173, 154, 657, 173, 665, 173, - 665, 119, 173, 173, 173, 666, 667, 173, 46, 1315, - 1316, 1317, 173, 173, 52, 682, 173, 682, 173, 173, - 58, 59, 60, 61, 62, 163, 173, 65, 173, 147, - 738, 173, 163, 173, 742, 15, 13, 173, 15, 173, - 17, 171, 1126, 161, 173, 173, 1130, 1120, 166, 1480, - 1481, 1482, 172, 171, 166, 716, 723, 1133, 172, 174, - 173, 783, 784, 1478, 171, 156, 153, 173, 729, 791, - 154, 793, 164, 165, 166, 167, 168, 738, 170, 171, - 172, 742, 120, 154, 745, 62, 747, 748, 749, 750, - 751, 1397, 154, 1399, 539, 1401, 154, 154, 1404, 1405, - 1406, 546, 154, 764, 171, 797, 767, 815, 734, 155, - 155, 171, 156, 49, 173, 741, 171, 778, 779, 745, - 913, 747, 748, 749, 750, 751, 781, 176, 171, 574, - 797, 576, 797, 578, 173, 913, 171, 913, 166, 861, - 173, 171, 166, 153, 770, 771, 49, 773, 774, 775, - 776, 81, 171, 1289, 162, 816, 291, 818, 819, 1590, - 162, 822, 162, 201, 825, 1289, 874, 162, 1599, 173, - 147, 832, 171, 10, 10, 897, 10, 11, 12, 13, - 10, 842, 10, 17, 161, 10, 10, 155, 163, 166, - 154, 852, 155, 166, 171, 173, 166, 173, 155, 173, - 155, 166, 174, 153, 173, 171, 173, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 62, 173, - 268, 173, 171, 176, 1310, 273, 1312, 171, 171, 947, - 172, 902, 173, 172, 905, 172, 156, 914, 171, 694, - 171, 912, 154, 173, 1063, 154, 154, 918, 919, 920, - 921, 922, 923, 924, 154, 154, 927, 173, 173, 157, - 166, 309, 10, 11, 12, 13, 937, 171, 155, 17, - 1031, 172, 174, 944, 118, 119, 947, 155, 174, 154, - 10, 1375, 1368, 173, 176, 154, 1372, 49, 959, 171, - 176, 171, 176, 341, 153, 931, 154, 173, 1392, 1393, - 1394, 937, 163, 147, 10, 173, 163, 10, 11, 12, - 163, 163, 10, 173, 62, 10, 155, 161, 173, 1037, - 1139, 1140, 166, 10, 10, 1043, 1044, 171, 1030, 965, - 10, 155, 154, 10, 11, 12, 13, 482, 483, 171, - 17, 15, 1323, 176, 173, 1016, 174, 154, 174, 176, - 173, 171, 173, 1030, 173, 1030, 171, 405, 1029, 173, - 1031, 171, 173, 171, 173, 68, 1037, 512, 1039, 1040, - 155, 119, 1043, 1044, 422, 423, 1470, 173, 81, 82, - 171, 429, 1468, 1477, 162, 62, 162, 162, 162, 1483, - 1484, 171, 1063, 174, 173, 153, 10, 174, 155, 147, - 855, 856, 857, 173, 859, 173, 861, 173, 863, 864, - 22, 23, 24, 161, 173, 1133, 119, 120, 166, 122, - 173, 155, 34, 171, 127, 10, 129, 10, 155, 155, - 10, 155, 171, 173, 15, 173, 173, 154, 174, 154, - 1111, 173, 119, 1537, 492, 173, 1540, 163, 173, 1120, - 163, 163, 1538, 163, 157, 1126, 174, 10, 161, 1130, - 10, 155, 1133, 166, 609, 173, 173, 10, 1139, 1140, - 147, 155, 10, 11, 12, 171, 173, 155, 171, 171, - 1574, 171, 173, 155, 161, 630, 10, 155, 173, 166, - 173, 155, 1138, 638, 542, 1589, 668, 1292, 1366, 324, - 914, 1497, 347, 1111, 552, 1289, 874, 111, 112, 113, - 114, 115, 1324, 117, 118, 119, 347, 1256, 686, 123, - 723, -1, 427, -1, -1, -1, 130, -1, -1, -1, - 68, 135, 136, -1, 138, 139, 140, 1298, 142, 143, - -1, -1, -1, 81, 82, 22, 23, 24, -1, 1121, - 598, -1, 164, 165, 166, 167, 168, 34, 170, 171, - 172, -1, -1, -1, -1, 613, -1, -1, -1, -1, - -1, 1289, -1, -1, -1, -1, -1, -1, -1, 627, - -1, 119, 120, -1, 122, 1256, -1, -1, -1, 127, - -1, 129, 1310, 738, 1312, -1, -1, 742, -1, -1, - -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 665, 1289, -1, - -1, 34, -1, 161, 23, 24, 1297, 1298, 166, -1, - 1362, -1, -1, -1, -1, 34, -1, -1, -1, 1310, - -1, 1312, 690, 691, 692, 693, -1, 695, -1, -1, - 1368, -1, 1323, -1, 1372, -1, 1292, -1, -1, -1, - -1, -1, -1, -1, 1119, -1, -1, -1, -1, -1, - 815, -1, -1, -1, -1, -1, -1, -1, 1410, 1411, - -1, 1413, -1, 1415, -1, -1, -1, 164, 165, 166, - 167, 168, -1, 170, 171, 172, -1, 1368, -1, -1, - 1432, 1372, -1, -1, 1375, -1, 310, 311, -1, -1, - -1, 1382, -1, -1, 318, -1, -1, -1, -1, 767, - -1, 1392, 1393, 1394, -1, -1, -1, -1, -1, 874, - 1366, 1463, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 156, 1121, 158, 159, 160, 161, -1, - 1468, 164, 165, 166, 167, 168, 804, 170, 171, 172, - -1, -1, -1, -1, -1, 164, 165, 166, 167, 168, - -1, 170, 171, 172, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1355, 832, 1357, 1358, 1359, 1360, 1361, - -1, 1363, -1, -1, 842, -1, -1, 1468, 846, 1470, - -1, -1, 947, -1, -1, -1, 1477, -1, -1, 1480, - 1481, 1482, 1483, 1484, 23, 24, 864, -1, -1, -1, - 1538, -1, -1, -1, 64, 34, 1497, 875, 876, 877, - 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, - 888, 889, 890, 891, 892, 893, 894, 895, 88, -1, - 898, 1583, 1584, 1585, -1, 1587, 20, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 1537, 1538, 108, 1540, - 34, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, - 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, - -1, 131, 1037, -1, -1, -1, 944, -1, 1043, 1044, - -1, 141, -1, 1574, -1, -1, 510, 1362, -1, -1, - -1, 959, -1, 517, -1, -1, -1, -1, 1589, 1590, - -1, -1, -1, -1, -1, -1, -1, -1, 1599, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1512, -1, -1, -1, -1, -1, -1, 187, -1, -1, - 190, -1, -1, -1, -1, 164, 165, 166, 167, 168, - -1, 170, 171, 172, -1, -1, 1014, -1, 1016, -1, - 1018, -1, 1427, 1428, 1429, 1430, -1, 1432, 1355, 1434, - 1357, 1358, 1359, 1360, 1361, -1, 1363, -1, 1133, -1, - -1, -1, -1, -1, 1566, -1, -1, 1569, 238, 239, - 164, 165, 166, 167, 168, -1, 170, 171, 172, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1070, -1, -1, -1, 266, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 285, -1, -1, 3, 4, - 5, 6, -1, 8, 9, 10, -1, -1, -1, -1, - 15, -1, -1, 303, -1, 305, 1443, 1444, 1445, 1446, - 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, - 1457, 1458, 1459, 1460, 1461, 325, -1, 327, 328, 329, - 330, 331, 332, -1, -1, -1, 51, -1, -1, -1, - 704, 705, -1, -1, -1, -1, -1, -1, -1, 349, - 350, 66, -1, -1, -1, -1, 71, -1, -1, 359, - -1, -1, 362, -1, -1, 80, 81, -1, -1, -1, - 370, 17, 18, 19, 20, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 1289, -1, -1, -1, 34, -1, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 114, - -1, -1, 117, -1, 119, 1310, -1, 1312, 34, 124, - 410, -1, -1, 128, -1, 415, 131, -1, -1, -1, - -1, 136, -1, -1, 139, -1, -1, 427, -1, -1, - -1, -1, 1569, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, - 165, -1, -1, -1, 169, -1, 171, -1, -1, -1, - 175, -1, -1, 1368, -1, 465, -1, 1372, -1, -1, - -1, -1, -1, -1, 1282, -1, -1, -1, -1, -1, - -1, 481, 18, 19, 20, 21, 22, 23, 24, 3, - 4, 5, 6, 493, 8, 9, 10, -1, 34, -1, - -1, -1, -1, 503, -1, -1, -1, -1, -1, -1, - -1, 511, -1, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 1331, 170, 171, 172, -1, 1336, -1, - -1, -1, 158, 159, 160, 161, -1, 51, 164, 165, - 166, 167, 168, -1, 170, 171, 172, -1, -1, 913, - -1, -1, 66, -1, -1, -1, -1, 71, 558, -1, - -1, -1, -1, 1468, -1, -1, 80, 81, -1, -1, - -1, -1, 86, -1, 1382, -1, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 117, -1, 119, -1, 607, -1, -1, - 124, -1, -1, -1, 128, -1, -1, 131, 3, 4, - 5, 6, 136, 8, 9, 10, 11, 12, 164, 165, - 166, 167, 168, 1538, 170, 171, 172, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 650, -1, -1, -1, -1, 169, 1464, 171, 172, -1, - -1, 175, -1, -1, -1, -1, 51, 52, 668, -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, -1, 80, 81, 82, -1, -1, - -1, 86, -1, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, -1, -1, -1, -1, -1, -1, 727, -1, 114, - -1, 116, 117, -1, 119, -1, -1, -1, -1, 124, - -1, 126, 127, 128, -1, -1, 131, 132, -1, -1, - -1, 136, -1, -1, 139, 140, 141, 142, 143, -1, - 760, 146, -1, 148, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, - 165, 166, -1, -1, 169, -1, 171, 172, -1, -1, - 175, -1, -1, -1, -1, -1, -1, -1, 798, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 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, 85, - -1, 87, 88, 89, -1, -1, 896, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, - -1, -1, -1, -1, -1, 915, 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, -1, -1, -1, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 17, 18, 19, 20, 21, 22, 23, 24, -1, + 1, 846, 391, 63, 95, 391, 113, 413, 115, 116, + 117, 118, 119, 78, 121, 433, 123, 45, 125, 433, + 927, 78, 1088, 45, 557, 261, 45, 261, 540, 948, + 261, 673, 780, 390, 141, 15, 84, 85, 86, 0, + 0, 10, 15, 91, 13, 499, 153, 154, 528, 6, + 15, 8, 171, 160, 161, 154, 154, 245, 246, 157, + 261, 13, 981, 64, 48, 154, 50, 48, 171, 50, + 48, 15, 50, 61, 529, 15, 154, 176, 936, 154, + 154, 939, 940, 13, 173, 15, 34, 17, 48, 34, + 50, 153, 171, 94, 95, 173, 156, 153, 173, 173, + 527, 13, 171, 15, 48, 17, 50, 171, 48, 171, + 50, 112, 113, 171, 115, 116, 117, 118, 119, 157, + 121, 498, 123, 968, 125, 10, 11, 12, 176, 177, + 178, 179, 62, 48, 172, 50, 34, 526, 229, 230, + 141, 541, 531, 154, 132, 154, 48, 162, 50, 48, + 62, 50, 153, 154, 245, 246, 150, 151, 152, 160, + 161, 6, 173, 8, 173, 225, 34, 355, 81, 48, + 157, 50, 360, 361, 155, 561, 406, 407, 408, 409, + 410, 154, 412, 413, 414, 172, 543, 235, 418, 154, + 174, 833, 299, 173, 171, 425, 174, 166, 199, 679, + 430, 431, 844, 433, 434, 435, 442, 437, 438, 1067, + 610, 442, 1070, 1071, 166, 695, 173, 147, 698, 63, + 162, 969, 170, 171, 172, 170, 171, 172, 229, 230, + 15, 161, 17, 261, 119, 147, 166, 934, 153, 261, + 153, 442, 261, 156, 245, 246, 157, 171, 249, 161, + 153, 678, 171, 254, 166, 172, 173, 684, 156, 171, + 687, 172, 263, 48, 961, 50, 963, 81, 171, 966, + 114, 156, 174, 171, 172, 174, 120, 810, 122, 6, + 124, 8, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 171, 299, 81, + 81, 366, 170, 171, 172, 154, 1151, 171, 152, 366, + 1058, 688, 156, 154, 158, 159, 1235, 171, 319, 34, + 171, 509, 699, 171, 173, 171, 514, 515, 154, 171, + 5, 379, 173, 34, 522, 523, 524, 172, 173, 153, + 171, 730, 156, 823, 730, 162, 48, 173, 50, 48, + 171, 50, 807, 48, 355, 50, 586, 587, 838, 360, + 361, 841, 842, 154, 594, 1062, 766, 171, 34, 1227, + 371, 153, 153, 171, 156, 156, 161, 120, 121, 122, + 154, 166, 173, 619, 172, 173, 898, 623, 619, 623, + 391, 791, 623, 172, 173, 822, 240, 1463, 1095, 173, + 827, 171, 154, 830, 831, 406, 407, 408, 409, 410, + 34, 412, 413, 414, 442, 171, 154, 418, 619, 154, + 442, 173, 623, 442, 425, 171, 101, 102, 162, 430, + 431, 1073, 433, 434, 435, 173, 437, 438, 173, 171, + 154, 171, 922, 1140, 1141, 171, 979, 824, 825, 164, + 165, 166, 167, 168, 298, 170, 171, 172, 171, 173, + 525, 172, 173, 164, 165, 166, 167, 168, 525, 170, + 171, 172, 174, 148, 149, 174, 155, 931, 171, 174, + 668, 935, 171, 671, 672, 171, 172, 1006, 1007, 1008, + 171, 154, 540, 68, 69, 922, 154, 498, 499, 154, + 166, 167, 168, 1145, 170, 171, 172, 171, 509, 569, + 173, 255, 256, 514, 515, 173, 173, 997, 173, 171, + 172, 522, 523, 524, 910, 171, 527, 171, 529, 557, + 984, 985, 986, 154, 764, 557, 153, 154, 557, 1446, + 541, 542, 166, 167, 168, 171, 170, 171, 172, 154, + 157, 1470, 173, 171, 172, 10, 11, 12, 13, 154, + 171, 171, 17, 1043, 991, 154, 166, 632, 173, 244, + 171, 1051, 247, 248, 1054, 154, 172, 154, 173, 639, + 640, 171, 49, 154, 173, 586, 587, 647, 172, 649, + 154, 619, 969, 594, 173, 623, 173, 619, 171, 600, + 619, 623, 173, 154, 623, 174, 173, 62, 173, 610, + 987, 988, 677, 153, 1014, 155, 1043, 157, 173, 463, + 677, 465, 1076, 467, 1051, 813, 1044, 1054, 173, 173, + 1044, 171, 153, 1033, 155, 156, 157, 153, 1044, 155, + 1040, 157, 153, 173, 155, 13, 157, 15, 153, 17, + 155, 1170, 157, 1172, 173, 1174, 163, 717, 1177, 1178, + 1179, 173, 663, 118, 119, 173, 163, 668, 154, 173, + 671, 672, 673, 171, 172, 173, 154, 678, 353, 354, + 163, 1058, 683, 684, 1381, 173, 687, 688, 363, 364, + 365, 173, 147, 753, 62, 171, 172, 173, 699, 173, + 173, 1546, 1547, 1548, 173, 173, 161, 708, 173, 173, + 1164, 166, 173, 1167, 389, 173, 171, 171, 172, 173, + 173, 173, 173, 173, 789, 569, 401, 402, 10, 11, + 12, 13, 1212, 1213, 1214, 17, 173, 581, 173, 173, + 10, 11, 12, 13, 163, 15, 173, 17, 173, 777, + 173, 426, 859, 10, 11, 12, 13, 15, 171, 173, + 17, 173, 173, 764, 173, 766, 1221, 174, 156, 156, + 1225, 171, 171, 156, 171, 173, 777, 1231, 171, 147, + 62, 171, 810, 156, 156, 1212, 1213, 1214, 810, 790, + 791, 810, 62, 161, 171, 171, 171, 156, 166, 173, + 171, 171, 171, 171, 171, 62, 807, 173, 1653, 173, + 171, 166, 813, 176, 1044, 172, 1661, 81, 172, 171, + 162, 822, 162, 824, 825, 500, 827, 162, 162, 830, + 831, 162, 833, 171, 173, 171, 173, 119, 513, 583, + 584, 516, 517, 844, 155, 846, 173, 173, 173, 119, + 898, 173, 171, 10, 11, 12, 34, 166, 859, 166, + 535, 153, 119, 156, 49, 147, 171, 711, 712, 713, + 171, 715, 156, 717, 173, 719, 720, 147, 173, 161, + 153, 153, 173, 154, 166, 154, 154, 154, 916, 980, + 147, 161, 154, 154, 171, 155, 166, 171, 157, 155, + 153, 171, 153, 10, 161, 171, 171, 582, 154, 166, + 585, 68, 10, 176, 171, 163, 171, 10, 11, 12, + 172, 922, 172, 172, 81, 82, 173, 163, 163, 173, + 931, 163, 173, 10, 935, 936, 10, 10, 939, 940, + 10, 155, 163, 154, 1399, 1400, 1401, 22, 23, 24, + 1430, 979, 627, 954, 173, 155, 957, 979, 166, 34, + 979, 166, 119, 120, 174, 122, 155, 968, 969, 166, + 127, 15, 129, 171, 176, 68, 171, 176, 171, 980, + 171, 173, 154, 984, 985, 986, 987, 988, 81, 82, + 991, 666, 667, 173, 1448, 171, 171, 157, 1452, 154, + 154, 1456, 1391, 1430, 154, 1391, 154, 682, 166, 155, + 685, 686, 173, 1014, 689, 171, 173, 1045, 693, 1474, + 1475, 696, 697, 174, 173, 700, 119, 120, 703, 122, + 172, 706, 1033, 155, 127, 1036, 129, 155, 174, 1040, + 154, 10, 1043, 1044, 173, 176, 790, 173, 154, 1050, + 1051, 174, 173, 1054, 1055, 799, 173, 1058, 173, 10, + 10, 155, 10, 1154, 173, 10, 1067, 10, 10, 1070, + 1071, 155, 1073, 154, 171, 1076, 176, 173, 1532, 172, + 1535, 176, 174, 173, 153, 173, 930, 1088, 1543, 164, + 165, 166, 167, 168, 173, 170, 171, 172, 54, 774, + 154, 173, 155, 171, 162, 162, 62, 63, 64, 65, + 162, 162, 171, 173, 155, 10, 10, 155, 174, 75, + 76, 77, 78, 1183, 1184, 174, 1186, 83, 1188, 10, + 1237, 1238, 88, 173, 173, 155, 155, 1592, 10, 1593, + 1595, 155, 171, 173, 1145, 173, 173, 15, 174, 174, + 1151, 826, 154, 1154, 154, 173, 112, 173, 163, 163, + 163, 836, 837, 1164, 173, 163, 1167, 123, 10, 155, + 10, 1626, 173, 129, 173, 10, 155, 171, 134, 171, + 855, 171, 173, 927, 171, 173, 10, 1642, 144, 145, + 934, 147, 936, 155, 155, 939, 940, 173, 155, 173, + 155, 1202, 1236, 1394, 600, 1446, 162, 623, 1045, 916, + 1552, 1212, 1213, 1214, 17, 1391, 1202, 961, 623, 963, + 1221, 730, 966, 1015, 1225, 900, 1227, 1354, 561, 318, + 1231, -1, -1, -1, -1, -1, 1237, 1238, -1, -1, + -1, -1, -1, 3, 4, 5, 6, -1, 8, 9, + 10, -1, -1, -1, -1, 15, -1, -1, -1, 62, + -1, 64, -1, 938, -1, -1, 941, 942, -1, 944, + -1, 946, -1, -1, -1, 10, 11, 12, 81, -1, + -1, -1, -1, -1, -1, 960, -1, -1, -1, 964, + 965, 51, -1, -1, -1, 970, 23, 24, -1, -1, + 975, -1, -1, -1, -1, -1, 66, 34, 983, 112, + -1, 71, 115, 116, -1, -1, 119, -1, 1062, -1, + 80, 81, -1, 1067, -1, -1, 1070, 1071, -1, -1, + -1, -1, 135, 68, 20, 21, 22, 23, 24, -1, + -1, -1, -1, -1, 147, -1, 81, 82, 34, -1, + -1, 1095, -1, 1354, 114, -1, -1, 117, 161, 119, + -1, -1, -1, -1, 124, -1, 1210, -1, 128, -1, + -1, 131, -1, -1, 1049, -1, 136, 1052, 1053, 139, + -1, -1, 1442, -1, 119, 120, -1, 122, -1, -1, + 1391, 1066, 127, -1, 129, -1, 1140, 1141, 1399, 1400, + 1401, 161, -1, -1, 164, 165, -1, -1, -1, 169, + -1, 171, -1, -1, -1, 175, -1, -1, -1, 1094, + -1, -1, 157, -1, -1, -1, 161, -1, -1, 1430, + -1, 166, -1, -1, -1, 1495, -1, 164, 165, 166, + 167, 168, -1, 170, 171, 172, -1, 1448, -1, -1, + -1, 1452, 10, 11, 12, 1456, -1, -1, -1, -1, + -1, -1, 1463, 1138, -1, -1, 1526, -1, -1, -1, + 2, -1, -1, 1474, 1475, -1, 162, 163, 164, 165, + 166, 167, 168, 1227, 170, 171, 172, -1, -1, -1, + 1165, -1, -1, 1168, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1181, -1, 11, -1, + 68, -1, -1, -1, 46, 1190, -1, -1, -1, -1, + 52, 23, 24, 81, 82, 1200, 58, 59, 60, 61, + 62, 1532, 34, 65, 1535, -1, 1211, -1, -1, -1, + -1, -1, 1543, -1, -1, 1546, 1547, 1548, -1, -1, + -1, 1552, 55, -1, 57, 58, 59, 60, -1, -1, + -1, 119, 120, 64, 122, -1, -1, -1, -1, 127, + -1, 129, -1, -1, -1, 1635, 1636, 1637, -1, 1639, + -1, -1, -1, -1, -1, -1, 89, 88, -1, -1, + -1, 1592, 1593, -1, 1595, -1, -1, -1, 1442, -1, + -1, -1, 105, 161, -1, -1, 1215, 108, 166, -1, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, + -1, -1, -1, 126, 127, 1626, -1, 159, -1, 34, + -1, -1, -1, -1, 10, 11, 12, 1381, -1, -1, + 143, 1642, -1, -1, 145, 148, 1490, 1491, 1492, 1493, + 1394, 1495, 1653, 1497, -1, -1, -1, -1, -1, -1, + 1661, -1, 164, 165, 166, 167, 168, -1, 170, 171, + 172, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 68, -1, 226, 196, 197, -1, -1, 231, + -1, -1, 1446, -1, -1, 81, 82, -1, 1383, 16, + 17, 18, 19, 20, 21, 22, 23, 24, -1, -1, + -1, -1, 1215, 224, -1, -1, -1, 34, -1, 261, + -1, -1, 18, 19, 20, 21, 22, 23, 24, -1, + -1, -1, 243, 119, 120, -1, 122, -1, 34, -1, + -1, 127, -1, 129, -1, 256, 257, 162, 163, 164, + 165, 166, 167, 168, 296, 170, 171, 172, -1, -1, + -1, -1, 1447, -1, -1, -1, 1451, 153, -1, -1, + 1455, 313, 314, -1, -1, -1, -1, -1, 320, -1, + -1, -1, -1, 1468, -1, -1, 1471, 1472, 1473, 300, + 301, -1, -1, -1, -1, 306, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 318, -1, 10, + 11, 12, -1, -1, -1, -1, 1435, -1, 1437, 1438, + 1439, 1440, 1441, -1, 1443, -1, 22, 23, 24, 371, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, 1034, 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, 1065, 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, 85, -1, 87, - 88, 89, -1, 159, 160, 161, -1, -1, 164, 165, - 166, 167, 168, -1, 170, 171, 172, 105, 1138, -1, - -1, -1, -1, -1, 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, -1, -1, -1, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, -1, 175, 176, 3, - 4, 5, 6, -1, 8, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 1537, 170, 171, 172, -1, -1, -1, 176, + -1, 372, -1, -1, 1549, 1550, -1, 68, 164, 165, + 166, 167, 168, 415, 170, 171, 172, -1, -1, 390, + 81, 82, -1, -1, 395, -1, -1, 1506, 1507, 1508, + 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, + 1519, 1520, 1521, 1522, 1523, 1524, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 1600, -1, -1, 119, 120, + -1, 122, -1, -1, 34, 436, 127, -1, 129, -1, + -1, -1, 1435, -1, 1437, 1438, 1439, 1440, 1441, 1624, + 1443, -1, -1, -1, -1, -1, 488, -1, 1567, -1, + -1, -1, -1, -1, -1, 156, -1, -1, 1643, -1, + -1, 503, -1, -1, -1, -1, -1, 1652, 164, 165, + 166, 167, 168, -1, 170, 171, 172, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 497, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1618, + -1, 512, 1621, 1506, 1507, 1508, 1509, 1510, 1511, 1512, + 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, + 1523, 1524, -1, 565, 566, 567, 568, -1, 570, -1, + -1, -1, 543, -1, -1, -1, -1, 579, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, + 170, 171, 172, -1, -1, -1, 176, -1, -1, -1, + -1, 6, 583, 584, -1, 617, -1, -1, -1, -1, -1, 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, 61, -1, -1, - -1, -1, 66, 67, -1, -1, 70, 71, -1, -1, - 74, -1, -1, -1, -1, -1, 80, 81, 82, -1, - -1, -1, 86, -1, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, -1, -1, -1, -1, -1, -1, 1318, -1, - 114, -1, 116, 117, -1, 119, -1, -1, -1, -1, - 124, -1, 126, 127, 128, -1, -1, 131, 132, -1, - -1, -1, 136, -1, -1, 139, 140, 141, 142, 143, - -1, -1, 146, -1, 148, 3, 4, 5, 6, -1, - 8, 9, 10, 11, -1, -1, -1, 161, -1, -1, - 164, 165, 166, -1, -1, 169, -1, 171, 172, -1, - -1, 175, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, - -1, 176, -1, 51, -1, -1, -1, 55, -1, 57, - 58, 59, 60, -1, -1, -1, -1, -1, 66, -1, - 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, 80, 81, 82, -1, -1, -1, 86, -1, - -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, -1, -1, - -1, -1, 1462, -1, -1, -1, 114, -1, 116, 117, - -1, 119, -1, -1, -1, -1, 124, -1, 126, 127, - 128, -1, -1, 131, -1, -1, -1, -1, 136, -1, - -1, 139, -1, -1, -1, 143, 3, 4, 5, 6, - 148, 8, 9, 10, 11, 153, -1, -1, 15, 1509, - -1, -1, -1, 161, -1, -1, 164, 165, 166, -1, - -1, 169, -1, 171, 172, -1, -1, 175, 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, -1, 80, 81, 82, -1, -1, -1, 86, - -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, -1, - -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, - 117, -1, 119, -1, -1, -1, -1, 124, -1, 126, - 127, 128, -1, -1, 131, -1, -1, -1, -1, 136, - -1, -1, 139, -1, -1, -1, 143, 3, 4, 5, - 6, 148, 8, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, -1, 161, -1, -1, 164, 165, 166, - -1, -1, 169, -1, 171, 172, -1, -1, 175, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, -1, 170, 171, 172, 51, -1, -1, 176, 55, - -1, 57, 58, 59, 60, -1, -1, -1, -1, -1, - 66, -1, -1, -1, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, 80, 81, 82, -1, -1, -1, - 86, -1, -1, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, - 116, 117, -1, 119, -1, -1, -1, -1, 124, -1, - 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, - 136, -1, -1, 139, -1, -1, -1, 143, 3, 4, - 5, 6, 148, 8, 9, 10, 11, -1, -1, -1, - -1, -1, -1, -1, -1, 161, -1, -1, 164, 165, - 166, -1, -1, 169, -1, 171, 172, 173, -1, 175, - 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, -1, 80, 81, 82, -1, -1, - -1, 86, -1, -1, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, -1, -1, -1, -1, -1, -1, -1, -1, 114, - -1, 116, 117, -1, 119, -1, -1, -1, -1, 124, - -1, 126, 127, 128, -1, -1, 131, -1, -1, -1, - -1, 136, -1, -1, 139, -1, -1, -1, 143, 3, - 4, 5, 6, 148, 8, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, - 165, 166, -1, -1, 169, -1, 171, 172, -1, -1, - 175, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, -1, 170, 171, 172, 51, 52, -1, - 176, 55, -1, 57, 58, 59, 60, -1, -1, -1, - -1, -1, 66, -1, -1, -1, 70, 71, -1, -1, - -1, -1, -1, -1, -1, -1, 80, 81, 82, -1, - -1, -1, 86, -1, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, -1, -1, -1, -1, -1, -1, -1, -1, - 114, -1, 116, 117, -1, 119, -1, -1, -1, -1, - 124, -1, 126, 127, 128, -1, -1, 131, -1, -1, - -1, -1, 136, -1, -1, 139, -1, -1, -1, 143, - 3, 4, 5, 6, 148, 8, 9, 10, 11, -1, - -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, - 164, 165, 166, -1, -1, 169, -1, 171, 172, -1, - -1, 175, 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, + 601, -1, 603, 604, 605, 606, 607, 608, -1, 34, + 611, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, -1, 625, 626, 658, -1, 1621, -1, + -1, -1, -1, 634, -1, -1, -1, -1, -1, -1, + -1, 673, -1, -1, 69, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 16, 17, 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, -1, -1, -1, -1, 720, 114, + -1, 692, -1, -1, -1, -1, -1, -1, -1, 731, + 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, + 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, + -1, -1, 754, -1, -1, -1, -1, -1, -1, 154, + -1, -1, 157, -1, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, -1, 171, 172, -1, -1, + 175, 752, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 796, -1, -1, -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, 156, -1, 158, 159, 160, + 161, 833, -1, 164, 165, 166, 167, 168, 809, 170, + 171, 172, 844, -1, -1, -1, -1, 849, -1, 16, + 17, 18, 19, 20, 21, 22, 23, 24, -1, -1, + -1, -1, 51, 52, 866, -1, 55, 34, 57, 58, + 59, 60, 61, 62, -1, -1, -1, 66, 67, -1, + -1, 70, 71, -1, -1, 74, -1, -1, -1, -1, + 861, 80, 81, 82, -1, -1, -1, 86, -1, -1, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, -1, -1, -1, + -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, + 119, -1, -1, -1, -1, 124, -1, 126, 127, 128, + -1, -1, 131, 132, -1, -1, -1, 136, -1, 920, + 139, 140, 141, 142, 143, 957, -1, 146, -1, 148, + -1, -1, -1, -1, -1, -1, -1, -1, 10, 11, + -1, -1, 161, -1, -1, 164, 165, 166, -1, 950, + 169, -1, 171, 172, -1, -1, 175, -1, -1, -1, + -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, -1, 170, 171, 172, -1, -1, -1, 176, + 52, -1, -1, 55, -1, 57, 58, 59, 60, 61, + -1, 1023, -1, -1, -1, 67, 1028, -1, 70, -1, + -1, -1, 74, -1, -1, -1, -1, -1, 1009, -1, + 82, -1, -1, -1, -1, -1, -1, 89, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 105, 20, 21, 22, 23, 24, -1, + -1, 1073, -1, -1, -1, 1046, 118, -1, 34, -1, + -1, -1, -1, -1, 126, 127, 1088, -1, -1, -1, + 132, -1, -1, -1, -1, -1, -1, -1, 140, 141, + 142, 143, -1, -1, 146, -1, 148, -1, -1, -1, + -1, 153, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 169, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + -1, 1143, -1, 1145, -1, 1147, -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, 85, -1, + 87, 88, 89, -1, -1, -1, -1, -1, 164, 165, + 166, 167, 168, -1, 170, 171, 172, -1, 105, -1, + -1, -1, -1, -1, -1, 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, -1, -1, 1236, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 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, 85, -1, 87, 88, 89, -1, 1380, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 105, -1, -1, -1, -1, -1, -1, 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, -1, -1, -1, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 1463, 175, 176, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, -1, 8, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 16, 17, 18, 19, + 20, 21, 22, 23, 24, -1, -1, -1, -1, -1, + -1, -1, 51, 52, 34, 1527, 55, -1, 57, 58, + 59, 60, 61, -1, -1, -1, -1, 66, 67, -1, + -1, 70, 71, -1, -1, 74, -1, -1, -1, -1, + -1, 80, 81, 82, 1525, -1, -1, 86, -1, -1, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, -1, -1, -1, + -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, + 119, -1, -1, 1564, -1, 124, -1, 126, 127, 128, + -1, -1, 131, 132, -1, -1, -1, 136, -1, -1, + 139, 140, 141, 142, 143, -1, -1, 146, -1, 148, + 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, + -1, -1, 161, -1, -1, 164, 165, 166, -1, -1, + 169, -1, 171, 172, 154, -1, 175, -1, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, + 170, 171, 172, 173, -1, -1, -1, -1, 51, -1, + -1, -1, 55, -1, 57, 58, 59, 60, -1, -1, + -1, -1, -1, 66, -1, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, 82, -1, -1, -1, 86, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, @@ -2728,11 +2592,11 @@ static const yytype_int16 yycheck[] = -1, 124, -1, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, 136, -1, -1, 139, -1, -1, -1, 143, 3, 4, 5, 6, 148, 8, 9, 10, 11, - 153, -1, -1, -1, -1, -1, -1, -1, 161, -1, + 153, -1, -1, 15, -1, -1, -1, -1, 161, -1, -1, 164, 165, 166, -1, -1, 169, -1, 171, 172, - -1, 155, 175, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, -1, 170, 171, 172, 51, - -1, -1, -1, 55, -1, 57, 58, 59, 60, -1, + -1, -1, 175, 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, -1, 80, 81, 82, -1, -1, -1, 86, -1, -1, 89, 90, 91, @@ -2744,9 +2608,9 @@ static const yytype_int16 yycheck[] = -1, 143, 3, 4, 5, 6, 148, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, 165, 166, -1, -1, 169, -1, 171, - 172, 173, -1, 175, 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, + 172, -1, 155, 175, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, + 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, -1, 80, 81, 82, -1, -1, -1, 86, -1, -1, 89, 90, @@ -2756,11 +2620,11 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 124, -1, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, 136, -1, -1, 139, -1, -1, -1, 143, 3, 4, 5, 6, 148, 8, 9, - 10, 11, 153, -1, -1, -1, -1, -1, -1, -1, + 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, 165, 166, -1, -1, 169, -1, - 171, 172, 154, -1, 175, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, - 172, 51, -1, -1, -1, 55, -1, 57, 58, 59, + 171, 172, 173, -1, 175, 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, -1, 80, 81, 82, -1, -1, -1, 86, -1, -1, 89, @@ -2772,9 +2636,9 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 143, 3, 4, 5, 6, 148, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, 165, 166, -1, -1, 169, - -1, 171, 172, 173, -1, 175, 16, 17, 18, 19, - 20, 21, 22, 23, 24, -1, -1, -1, -1, -1, - -1, -1, 51, -1, 34, -1, 55, -1, 57, 58, + -1, 171, 172, 154, -1, 175, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, + 171, 172, 51, 52, -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, -1, 80, 81, 82, -1, -1, -1, 86, -1, -1, @@ -2784,11 +2648,11 @@ static const yytype_int16 yycheck[] = 119, -1, -1, -1, -1, 124, -1, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, 136, -1, -1, 139, -1, -1, -1, 143, 3, 4, 5, 6, 148, - 8, 9, 10, 11, -1, 18, 19, 20, 21, 22, - 23, 24, 161, -1, -1, 164, 165, 166, -1, -1, - 169, 34, 171, 172, -1, -1, 175, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, - 170, 171, 172, 51, -1, -1, -1, 55, -1, 57, + 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, 161, -1, -1, 164, 165, 166, -1, -1, + 169, -1, 171, 172, -1, -1, 175, 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, -1, 80, 81, 82, -1, -1, -1, 86, -1, @@ -2796,677 +2660,621 @@ static const yytype_int16 yycheck[] = 98, 99, 100, 101, 102, 103, 104, 105, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 117, -1, 119, -1, -1, -1, -1, 124, -1, 126, 127, - 128, -1, -1, 131, -1, 10, 11, 12, 136, -1, + 128, -1, -1, 131, -1, -1, -1, -1, 136, -1, -1, 139, -1, -1, -1, 143, 3, 4, 5, 6, - 148, 8, 9, 10, 11, 12, -1, -1, 15, 162, - 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, - -1, 169, -1, 171, 172, -1, -1, 175, 16, 17, - 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, - -1, 48, -1, 68, 51, 52, 34, -1, 55, -1, - 57, 58, 59, 60, 61, 62, 81, 82, -1, 66, - 67, -1, -1, 70, 71, -1, -1, 74, -1, -1, - -1, -1, -1, 80, 81, 82, -1, -1, -1, -1, - -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 119, 120, -1, 122, 105, -1, - -1, -1, 127, -1, 129, -1, -1, 114, -1, -1, - 117, -1, 119, -1, -1, -1, 123, 124, -1, 126, - 127, 128, -1, -1, 131, 132, -1, -1, -1, 136, - -1, 156, 139, 140, 141, 142, 143, -1, -1, 146, - -1, 148, -1, 3, 4, 5, 6, -1, 8, 9, - 10, 11, 12, -1, 161, 15, -1, 164, 165, -1, - -1, -1, 169, -1, 171, -1, 154, -1, 175, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, -1, 170, 171, 172, 173, -1, -1, 48, -1, - -1, 51, 52, -1, -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, -1, - 80, 81, 82, -1, 20, 21, 22, 23, 24, 89, - 3, 4, 5, 6, -1, 8, 9, 10, 34, -1, - -1, -1, 15, -1, -1, 105, -1, -1, -1, -1, - -1, -1, -1, -1, 114, -1, -1, 117, -1, 119, - -1, -1, -1, 123, 124, -1, 126, 127, 128, -1, - -1, 131, 132, -1, -1, -1, 136, -1, 51, 139, - 140, 141, 142, 143, -1, -1, 146, -1, 148, -1, - -1, -1, -1, 66, -1, -1, -1, -1, 71, -1, - -1, 161, -1, -1, 164, 165, -1, 80, 81, 169, - -1, 171, -1, 86, -1, 175, -1, 90, 91, 92, + 148, 8, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, -1, 161, -1, -1, 164, 165, 166, -1, + -1, 169, -1, 171, 172, 173, -1, 175, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + -1, 170, 171, 172, 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, -1, 80, 81, 82, -1, -1, -1, 86, + -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, -1, + -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, + 117, -1, 119, -1, -1, -1, -1, 124, -1, 126, + 127, 128, -1, -1, 131, -1, -1, -1, -1, 136, + -1, -1, 139, -1, -1, -1, 143, 3, 4, 5, + 6, 148, 8, 9, 10, 11, 153, -1, -1, -1, + -1, -1, -1, -1, 161, -1, -1, 164, 165, 166, + -1, -1, 169, -1, 171, 172, -1, -1, 175, 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, -1, 80, 81, 82, -1, -1, -1, + 86, -1, -1, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, + 116, 117, -1, 119, -1, -1, -1, -1, 124, -1, + 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, + 136, -1, -1, 139, -1, -1, -1, 143, 3, 4, + 5, 6, 148, 8, 9, 10, 11, 153, -1, -1, + -1, -1, -1, -1, -1, 161, -1, -1, 164, 165, + 166, -1, -1, 169, -1, 171, 172, -1, -1, 175, + -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, -1, 170, 171, 172, 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, -1, 80, 81, 82, -1, -1, + -1, 86, -1, -1, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, -1, -1, -1, -1, -1, -1, -1, -1, 114, + -1, 116, 117, -1, 119, -1, -1, -1, -1, 124, + -1, 126, 127, 128, -1, -1, 131, -1, -1, -1, + -1, 136, -1, -1, 139, -1, -1, -1, 143, 3, + 4, 5, 6, 148, 8, 9, 10, 11, -1, -1, + -1, -1, -1, -1, -1, -1, 161, -1, -1, 164, + 165, 166, -1, -1, 169, -1, 171, 172, 173, -1, + 175, 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, -1, 80, 81, 82, -1, + -1, -1, 86, -1, -1, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, -1, -1, -1, -1, -1, -1, -1, -1, + 114, -1, 116, 117, -1, 119, -1, -1, -1, -1, + 124, -1, 126, 127, 128, -1, -1, 131, -1, -1, + -1, -1, 136, -1, -1, 139, -1, -1, -1, 143, + 3, 4, 5, 6, 148, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, + 164, 165, 166, -1, -1, 169, -1, 171, 172, -1, + -1, 175, -1, 158, 159, 160, 161, -1, -1, 164, + 165, 166, 167, 168, -1, 170, 171, 172, 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, -1, 80, 81, 82, + -1, -1, -1, 86, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 3, 4, 5, 6, -1, 8, 9, 10, - -1, -1, -1, -1, 117, -1, 119, -1, -1, -1, - -1, 124, -1, -1, -1, 128, -1, -1, 131, -1, - -1, -1, -1, 136, -1, -1, 162, 163, 164, 165, - 166, 167, 168, -1, 170, 171, 172, -1, -1, -1, - 51, -1, -1, -1, -1, -1, -1, -1, 161, -1, - -1, 164, 165, 166, -1, 66, 169, -1, 171, 172, - 71, -1, 175, -1, -1, -1, 10, 11, 12, 80, - 81, -1, -1, -1, -1, 86, -1, -1, -1, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 16, 17, 18, 19, 20, 21, - 22, 23, 24, -1, -1, -1, 117, -1, 119, -1, - -1, -1, 34, 124, -1, -1, -1, 128, -1, -1, - 131, -1, -1, -1, 68, 136, -1, -1, -1, 55, - -1, 57, 58, 59, 60, -1, -1, 81, 82, -1, - -1, -1, -1, -1, 10, 11, 12, -1, -1, -1, - 161, -1, -1, 164, 165, 166, 6, -1, 169, -1, - 171, 172, -1, 89, 175, -1, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 119, 120, -1, 122, 105, - -1, -1, -1, 127, 34, 129, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, -1, -1, - 126, 127, 68, -1, -1, -1, -1, -1, -1, 153, - -1, -1, -1, -1, -1, 81, 82, 143, -1, 69, - -1, -1, 148, -1, -1, -1, -1, -1, -1, 10, - 11, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, - 172, 173, -1, 119, 120, -1, 122, -1, -1, -1, - -1, 127, -1, 129, 114, -1, -1, -1, -1, -1, - -1, 52, -1, -1, 55, -1, 57, 58, 59, 60, - 61, -1, -1, -1, 10, 11, 67, 153, -1, 70, - -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, - -1, 82, -1, -1, 154, -1, -1, 157, 89, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - -1, 171, 172, -1, 105, 175, 52, -1, -1, 55, - -1, 57, 58, 59, 60, 61, -1, 118, -1, -1, - -1, 67, -1, -1, 70, 126, 127, -1, 74, -1, - 11, 132, -1, -1, -1, -1, 82, -1, -1, 140, - 141, 142, 143, 89, -1, 146, -1, 148, -1, -1, - -1, -1, 153, -1, -1, -1, 10, 11, -1, 105, - -1, -1, -1, -1, -1, -1, -1, -1, 169, -1, - -1, -1, 118, -1, 55, -1, 57, 58, 59, 60, - 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, - -1, -1, -1, -1, 140, 141, 142, 143, 52, -1, - 146, 55, 148, 57, 58, 59, 60, 61, 89, -1, - -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, - 74, -1, -1, 169, 105, -1, -1, -1, 82, -1, - -1, -1, -1, -1, -1, 89, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 126, 127, -1, -1, -1, - -1, 105, -1, -1, 34, -1, 10, 11, 12, -1, - -1, 15, 143, -1, 118, -1, -1, 148, -1, -1, - -1, -1, 126, 127, -1, -1, -1, -1, 132, -1, - -1, -1, -1, -1, -1, -1, 140, 141, 142, 143, - -1, -1, 146, -1, 148, 16, 17, 18, 19, 20, - 21, 22, 23, 24, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 34, 68, 169, 16, 17, 18, 19, - 20, 21, 22, 23, 24, -1, -1, 81, 82, -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, -1, -1, 119, 120, -1, 122, -1, - -1, -1, 34, 127, -1, 129, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, - 170, 171, 172, 173, 16, 17, 18, 19, 20, 21, + 103, 104, 105, -1, 10, 11, 12, -1, -1, -1, + -1, 114, -1, 116, 117, 55, 119, 57, 58, 59, + 60, 124, -1, 126, 127, 128, -1, -1, 131, -1, + 70, -1, -1, 136, -1, -1, 139, -1, -1, -1, + 143, 3, 4, 5, 6, 148, 8, 9, 10, 89, + -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, + -1, -1, 68, -1, -1, 105, 169, -1, 171, 172, + -1, -1, 175, -1, -1, 81, 82, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 126, 127, -1, 51, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 143, 66, 10, 11, 12, 148, 71, + 15, -1, -1, 119, 120, -1, 122, -1, 80, 81, + -1, 127, -1, 129, 86, -1, -1, -1, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 3, 4, 5, 6, 153, 8, 9, + 10, -1, -1, -1, -1, 117, -1, 119, -1, -1, + -1, -1, 124, 68, -1, -1, 128, -1, -1, 131, + -1, -1, -1, -1, 136, -1, 81, 82, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 51, -1, -1, -1, -1, -1, -1, -1, 161, + -1, -1, 164, 165, 166, -1, 66, 169, -1, 171, + 172, 71, -1, 175, 119, 120, -1, 122, -1, -1, + 80, 81, 127, -1, 129, -1, 86, -1, -1, -1, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 3, 4, 5, 6, -1, + 8, 9, 10, 17, -1, -1, -1, 117, -1, 119, + -1, -1, -1, -1, 124, -1, -1, -1, 128, -1, + -1, 131, -1, -1, -1, -1, 136, -1, -1, -1, + -1, -1, -1, -1, 48, -1, 50, -1, -1, -1, + -1, -1, -1, 51, -1, -1, -1, -1, 62, -1, + 64, 161, -1, -1, 164, 165, 166, -1, 66, 169, + -1, 171, 172, 71, -1, 175, -1, 81, -1, -1, + -1, -1, 80, 81, -1, -1, -1, -1, 86, -1, + -1, -1, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, -1, 112, -1, + -1, 115, 116, -1, -1, 119, -1, -1, -1, 117, + -1, 119, 3, 4, 5, 6, 124, 8, 9, 10, + 128, 135, -1, 131, 15, -1, -1, -1, 136, -1, + -1, -1, -1, 147, -1, -1, 3, 4, 5, 6, + -1, 8, 9, 10, -1, -1, -1, 161, 15, -1, + -1, -1, -1, -1, -1, -1, -1, 48, -1, 50, + 51, 169, -1, 171, 172, -1, -1, 175, -1, -1, + -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, + 71, 48, -1, 50, 51, -1, -1, -1, -1, 80, + 81, -1, -1, -1, -1, -1, -1, -1, -1, 66, + -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, -1, -1, -1, -1, -1, + -1, -1, -1, 114, -1, -1, 117, -1, 119, 10, + 11, 12, -1, 124, -1, -1, -1, 128, -1, -1, + 131, -1, -1, -1, -1, 136, -1, 114, 139, -1, + 117, -1, 119, -1, -1, -1, -1, 124, -1, -1, + -1, 128, -1, -1, 131, 10, 11, -1, -1, 136, + 161, -1, 139, 164, 165, -1, -1, -1, 169, -1, + 171, -1, -1, -1, 175, -1, 55, 68, 57, 58, + 59, 60, -1, -1, 161, -1, -1, 164, 165, -1, + 81, 82, 169, -1, 171, 10, 11, 52, 175, -1, + 55, -1, 57, 58, 59, 60, 61, -1, -1, -1, + 89, -1, 67, -1, -1, 70, -1, -1, -1, 74, + -1, -1, -1, -1, -1, -1, 105, 82, 119, 120, + 121, 122, -1, -1, 89, -1, 127, 52, 129, -1, + 55, -1, 57, 58, 59, 60, 61, 126, 127, 140, + 105, -1, 67, -1, 145, 70, -1, -1, -1, 74, + -1, -1, -1, 118, 143, -1, -1, 82, -1, 148, + -1, 126, 127, -1, 89, -1, -1, 132, -1, 55, + -1, 57, 58, 59, 60, 140, 141, 142, 143, -1, + 105, 146, 171, 148, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, + -1, 126, 127, 89, 169, -1, -1, 132, -1, -1, + -1, -1, -1, -1, -1, 140, 141, 142, 143, 105, + -1, 146, -1, 148, 16, 17, 18, 19, 20, 21, + 22, 23, 24, -1, -1, -1, -1, -1, -1, -1, + 126, 127, 34, -1, 169, 16, 17, 18, 19, 20, + 21, 22, 23, 24, -1, -1, -1, 143, -1, -1, + -1, -1, 148, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 34, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, - 171, 172, 173, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, - 170, 171, 172, 173, -1, -1, -1, 158, 159, 160, + -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, + -1, -1, -1, -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, -1, + -1, -1, -1, -1, -1, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, + 172, 173, -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, 173, -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, - 172, 173, 16, 17, 18, 19, 20, 21, 22, 23, - 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 34, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, 173, -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, - 173, 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, -1, - -1, -1, -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, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, + 173, -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, 173, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 18, 19, 20, 21, 22, 23, 24, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, 173, -1, - 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 0, 170, 171, 172, -1, -1, 156, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, -1, 170, 171, 172, -1, -1, -1, -1, + -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, -1, 170, 171, 172, 173, 16, 17, + 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, + -1, -1, 10, 11, 12, -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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 34, 16, 17, 18, 19, 20, + 21, 22, 23, 24, -1, -1, -1, -1, -1, -1, + 68, -1, -1, 34, 17, 18, 19, 20, 21, 22, + 23, 24, -1, 81, 82, -1, -1, -1, -1, -1, + -1, 34, 17, 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, -1, + -1, 119, 120, -1, 122, -1, 34, -1, -1, 127, + -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, -1, 170, 171, 172, -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, -1, -1, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, -1, -1, -1, - -1, 88, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, -1, 170, 171, 172, -1, -1, -1, 106, - 107, 108, 109, 110, 111, 112, 113, -1, -1, -1, - -1, -1, -1, 120, 121, 122, 123, -1, -1, -1, - -1, -1, 129, 130, 11, 12, 133, 134, 15, -1, - 17, 138, -1, -1, -1, -1, -1, 144, 145, -1, - 147, 18, 19, 20, 21, 22, 23, 24, 155, -1, - -1, -1, -1, -1, -1, -1, -1, 34, 10, 11, - 12, 48, -1, -1, -1, 52, -1, -1, 55, -1, + 168, -1, 170, 171, 172, 173, -1, -1, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + -1, 170, 171, 172, 173, -1, 156, -1, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, -1, + 170, 171, 172, -1, -1, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, -1, 170, + 171, 172, -1, -1, -1, -1, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, + -1, -1, -1, -1, 159, 160, 161, -1, -1, 164, + 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, + -1, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, -1, 170, 171, 172, 18, 19, 20, 21, 22, + 23, 24, 10, 11, 12, -1, -1, -1, -1, -1, + -1, 34, 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, 55, -1, + 57, 58, 59, 60, -1, 34, 18, 19, 20, 21, + 22, 23, 24, 70, -1, -1, -1, -1, -1, -1, + 68, -1, 34, 18, 19, 20, 21, 22, 23, 24, + -1, -1, 89, 81, 82, -1, -1, -1, -1, 34, + -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, + -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, + -1, -1, 62, 63, 64, 65, -1, -1, -1, 126, + 127, 119, 120, -1, 122, 75, 76, 77, 78, 127, + -1, 129, -1, -1, -1, -1, 143, -1, 88, -1, + -1, 148, -1, -1, -1, -1, 144, 160, 161, 162, + 163, 164, 165, 166, 167, 168, -1, 170, 171, 172, + -1, -1, 112, 113, 171, 161, 162, 163, 164, 165, + 166, 167, 168, 123, 170, 171, 172, -1, -1, 129, + 159, 160, 161, 6, 134, 164, 165, 166, 167, 168, + 6, 170, 171, 172, -1, 145, -1, 147, 160, 161, + -1, -1, 164, 165, 166, 167, 168, -1, 170, 171, + 172, -1, -1, -1, -1, -1, 161, -1, -1, 164, + 165, 166, 167, 168, -1, 170, 171, 172, -1, -1, + -1, 54, -1, 10, 11, 12, -1, -1, 54, 62, + 63, 64, 65, -1, -1, -1, 62, 63, 64, 65, + -1, -1, 75, 76, 77, 78, -1, -1, -1, 75, + 76, 77, 78, -1, -1, 88, -1, -1, -1, -1, + -1, -1, 88, -1, -1, -1, -1, -1, 55, -1, + 57, 58, 59, 60, 61, 62, -1, -1, -1, 112, + -1, -1, -1, 70, -1, -1, 112, -1, -1, -1, + 123, -1, -1, -1, -1, 82, 129, 123, -1, -1, + 133, 134, 89, 129, -1, -1, -1, -1, 134, 10, + 11, 12, 145, -1, 147, 10, 11, 12, 105, 145, + -1, 147, -1, -1, 55, -1, 57, 58, 59, 60, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, + 127, -1, 11, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 140, -1, -1, 143, -1, 89, 146, + 55, 148, 57, 58, 59, 60, -1, 68, -1, -1, + -1, -1, -1, -1, 105, 70, -1, -1, -1, -1, + 81, 82, -1, 52, -1, -1, 55, 82, 57, 58, + 59, 60, 61, 62, 89, 126, 127, -1, 67, -1, + -1, 70, -1, -1, -1, 74, -1, -1, -1, -1, + 105, -1, 143, 82, -1, -1, -1, 148, 119, 120, + 89, 122, -1, -1, -1, -1, 127, -1, 129, -1, + -1, 126, 127, -1, 11, 12, 105, -1, -1, 140, + 171, -1, -1, -1, 145, -1, -1, -1, 143, -1, + -1, 146, -1, 148, 123, -1, -1, 126, 127, -1, + 11, 12, -1, 132, -1, -1, -1, -1, -1, -1, + -1, 140, 141, 142, 143, 52, -1, 146, 55, 148, 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, 74, 18, 19, - 20, 21, 22, 23, 24, 82, 48, -1, 50, -1, - -1, -1, 89, -1, 34, 18, 19, 20, 21, 22, - 23, 24, -1, -1, -1, -1, 68, -1, 105, -1, - -1, 34, 18, 19, 20, 21, 22, 23, 24, 81, - 82, -1, -1, -1, -1, -1, 123, -1, 34, 126, - 127, -1, -1, -1, -1, 132, 18, 19, 20, 21, - 22, 23, 24, 140, 141, 142, 143, -1, -1, 146, - -1, 148, 34, -1, -1, -1, -1, 119, 120, -1, - 122, -1, -1, -1, 161, 127, -1, 129, -1, 166, - -1, -1, -1, 160, 161, 162, 163, 164, 165, 166, - 167, 168, -1, 170, 171, 172, -1, -1, -1, -1, - -1, 153, -1, -1, -1, -1, -1, -1, -1, 10, - 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 161, 162, 163, 164, 165, 166, 167, 168, -1, - 170, 171, 172, -1, -1, -1, 159, 160, 161, -1, - -1, 164, 165, 166, 167, 168, 17, 170, 171, 172, - -1, -1, -1, -1, 160, 161, 17, 68, 164, 165, - 166, 167, 168, 34, 170, 171, 172, -1, -1, -1, - 81, 82, -1, -1, -1, -1, -1, 48, -1, 161, - -1, -1, 164, 165, 166, 167, 168, 48, 170, 171, - 172, 62, -1, 64, -1, -1, -1, -1, -1, -1, - -1, 62, -1, 64, -1, -1, -1, -1, 119, 120, - 81, 122, -1, -1, -1, -1, 127, -1, 129, -1, - 81, -1, -1, 6, -1, -1, 10, 11, 12, 140, - -1, -1, -1, -1, 145, -1, -1, -1, -1, -1, - -1, 112, -1, -1, 115, 116, -1, -1, 119, -1, - -1, 112, -1, -1, 115, 116, -1, -1, 119, -1, - -1, -1, 6, -1, 135, 48, -1, 50, -1, -1, - -1, 54, -1, -1, 135, -1, 147, -1, -1, 62, - 63, 64, 65, -1, 68, -1, 147, -1, -1, -1, - 161, -1, 75, 76, 77, 78, -1, 81, 82, -1, - 161, -1, -1, -1, 48, 88, 50, -1, -1, -1, - 54, -1, -1, -1, -1, -1, -1, -1, 62, 63, - 64, 65, 10, 11, 12, -1, 10, 11, 12, 112, - -1, 75, 76, 77, 78, 119, 120, 121, 122, -1, - 123, -1, -1, 127, 88, 129, 129, -1, -1, -1, - 133, 134, -1, -1, -1, -1, 140, -1, -1, -1, - -1, 145, 145, -1, 147, -1, -1, -1, 112, -1, - -1, 55, -1, 57, 58, 59, 60, 61, 62, 123, - 68, -1, 10, 11, 12, 129, 70, -1, -1, -1, - 134, -1, -1, 81, 82, -1, -1, -1, 82, -1, - -1, 145, -1, 147, -1, 89, -1, -1, -1, -1, - 55, -1, 57, 58, 59, 60, -1, -1, 10, 11, - 12, 105, -1, -1, 11, 12, -1, -1, 15, -1, - -1, 119, 120, -1, 122, -1, -1, -1, -1, 127, - 68, 129, 126, 127, 89, -1, -1, -1, -1, -1, - -1, -1, 140, 81, 82, -1, 140, 145, -1, 143, - 105, 48, 146, -1, 148, 52, -1, -1, 55, -1, - 57, 58, 59, 60, 61, 62, 68, -1, -1, -1, - 67, 126, 127, 70, -1, -1, -1, 74, -1, 81, - 82, 119, 120, -1, 122, 82, -1, -1, 143, 127, - -1, 129, 89, 148, -1, -1, -1, -1, -1, -1, - -1, -1, 140, -1, -1, -1, -1, 145, 105, -1, - -1, 11, 12, -1, -1, 15, 171, 119, 120, -1, - 122, -1, -1, -1, -1, 127, 123, 129, -1, 126, - 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, - -1, -1, 144, 140, 141, 142, 143, -1, 48, 146, - -1, 148, 52, 11, 12, 55, -1, 57, 58, 59, - 60, 61, 62, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, 74, -1, -1, -1, -1, -1, - -1, -1, 82, -1, -1, -1, -1, -1, -1, 89, - 48, -1, -1, -1, 52, -1, -1, 55, -1, 57, - 58, 59, 60, 61, 62, 105, -1, -1, -1, 67, - -1, -1, 70, -1, -1, -1, 74, -1, -1, -1, - -1, -1, -1, 123, 82, -1, 126, 127, -1, -1, - -1, 89, 132, -1, -1, -1, -1, -1, -1, -1, - 140, 141, 142, 143, -1, -1, 146, 105, 148, -1, - 11, 12, -1, -1, -1, -1, -1, -1, 55, -1, - 57, 58, 59, 60, -1, 123, -1, -1, 126, 127, - -1, -1, -1, 70, 132, -1, 11, 12, -1, -1, - -1, -1, 140, 141, 142, 143, -1, -1, 146, -1, - 148, 52, 89, -1, 55, -1, 57, 58, 59, 60, - 61, 62, -1, -1, -1, -1, 67, -1, 105, 70, + 67, -1, -1, 70, -1, -1, -1, 74, -1, -1, + -1, 52, -1, -1, 55, 82, 57, 58, 59, 60, + 61, -1, 89, -1, -1, -1, 67, -1, -1, 70, + -1, -1, -1, 74, -1, -1, -1, -1, 105, -1, + -1, 82, -1, -1, -1, -1, -1, -1, 89, -1, + -1, -1, -1, -1, -1, 10, 11, 12, -1, 126, + 127, -1, 11, 12, 105, 132, -1, -1, -1, -1, + -1, -1, -1, 140, 141, 142, 143, -1, -1, 146, + -1, 148, 123, -1, -1, 126, 127, -1, 11, -1, + -1, 132, -1, -1, -1, -1, -1, -1, -1, 140, + 141, 142, 143, 52, -1, 146, 55, 148, 57, 58, + 59, 60, 61, 68, -1, -1, -1, -1, 67, -1, + -1, 70, -1, -1, -1, 74, 81, 82, -1, 52, + -1, -1, 55, 82, 57, 58, 59, 60, 61, 62, + 89, -1, -1, -1, 67, -1, -1, 70, -1, -1, + -1, 74, -1, -1, -1, -1, 105, -1, -1, 82, + -1, -1, -1, -1, 119, 120, 89, 122, -1, -1, + -1, -1, 127, -1, 129, -1, -1, 126, 127, -1, + 11, -1, 105, 132, -1, 140, -1, -1, -1, -1, + 145, 140, 141, 142, 143, -1, -1, 146, -1, 148, + -1, -1, -1, 126, 127, -1, 11, -1, -1, 132, + -1, -1, -1, -1, -1, -1, -1, 140, 141, 142, + 143, 52, -1, 146, 55, 148, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, 74, -1, -1, -1, 52, -1, -1, - 55, 82, 57, 58, 59, 60, 61, -1, 89, 126, - 127, -1, 67, -1, -1, 70, -1, -1, -1, 74, - -1, -1, -1, -1, 105, -1, 143, 82, -1, -1, - -1, 148, -1, -1, 89, -1, -1, -1, -1, -1, - -1, 10, 11, 12, -1, 126, 127, -1, 11, 12, - 105, 132, -1, -1, 171, -1, -1, -1, -1, 140, - 141, 142, 143, -1, -1, 146, -1, 148, 123, -1, - -1, 126, 127, -1, 11, -1, -1, 132, -1, -1, + 55, 82, 57, 58, 59, 60, 61, -1, 89, -1, + -1, -1, 67, -1, -1, 70, -1, -1, -1, 74, + -1, -1, -1, -1, 105, -1, -1, 82, -1, -1, + -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, + -1, 10, 11, 12, -1, 126, 127, -1, 11, -1, + 105, 132, -1, -1, -1, -1, 10, 11, 12, 140, + 141, 142, 143, -1, -1, 146, -1, 148, -1, -1, + -1, 126, 127, -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, 140, 141, 142, 143, 52, -1, 146, 55, 148, 57, 58, 59, 60, 61, 68, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, - -1, 74, 81, 82, -1, 52, -1, -1, 55, 82, - 57, 58, 59, 60, 61, 62, 89, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, 74, -1, -1, - -1, -1, 105, -1, -1, 82, -1, -1, -1, -1, - 119, 120, 89, 122, -1, -1, -1, -1, 127, -1, - 129, -1, -1, 126, 127, -1, 11, -1, 105, 132, - -1, 140, -1, -1, -1, -1, -1, 140, 141, 142, - 143, -1, -1, 146, -1, 148, -1, -1, -1, 126, - 127, -1, 11, -1, -1, 132, -1, -1, -1, -1, - 10, 11, 12, 140, 141, 142, 143, 52, -1, 146, - 55, 148, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, 67, -1, -1, 70, -1, -1, -1, 74, - -1, -1, -1, 52, -1, -1, 55, 82, 57, 58, - 59, 60, 61, -1, 89, -1, -1, -1, 67, -1, - -1, 70, -1, -1, -1, 74, -1, -1, 68, -1, - 105, -1, -1, 82, -1, -1, -1, -1, -1, -1, - 89, 81, 82, -1, -1, -1, -1, -1, -1, -1, - -1, 126, 127, -1, 11, -1, 105, 132, -1, -1, - -1, -1, -1, -1, -1, 140, 141, 142, 143, -1, - -1, 146, -1, 148, -1, -1, -1, 126, 127, 119, - 120, -1, 122, 132, -1, -1, -1, 127, -1, 129, - -1, 140, 141, 142, 143, 52, -1, 146, 55, 148, - 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, 74, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, - -1, -1, 89, -1, -1, -1, 48, -1, 50, -1, - -1, 53, 54, -1, -1, -1, -1, -1, 105, -1, - 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, - -1, 73, -1, 75, 76, 77, 78, 79, -1, 126, - 127, 83, -1, -1, -1, 132, 88, -1, -1, -1, - -1, -1, -1, 140, 141, 142, 143, -1, -1, 146, - -1, 148, -1, -1, 106, 107, 108, 109, 110, 111, - 112, 113, -1, -1, -1, -1, -1, -1, 120, 121, - 122, 123, -1, -1, -1, -1, -1, 129, 130, -1, - -1, 133, 134, 48, -1, 50, 138, -1, 53, 54, - -1, -1, 144, 145, -1, 147, -1, 62, 63, 64, - 65, -1, -1, 155, -1, -1, -1, -1, 73, -1, - 75, 76, 77, 78, 79, -1, -1, -1, 83, -1, - -1, -1, 174, 88, -1, -1, -1, -1, -1, -1, + -1, 74, 81, 82, 68, -1, -1, -1, -1, 82, + -1, -1, -1, 10, 11, 12, 89, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 106, 107, 108, 109, 110, 111, 112, 113, -1, - -1, -1, -1, -1, -1, 120, 121, 122, 123, -1, - -1, -1, -1, -1, 129, 130, -1, -1, 133, 134, - 48, -1, 50, 138, -1, 53, 54, -1, -1, 144, - 145, -1, 147, -1, 62, 63, 64, 65, -1, -1, - 155, -1, -1, -1, -1, 73, -1, 75, 76, 77, - 78, 79, -1, -1, -1, 83, -1, -1, -1, 174, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, - 108, 109, 110, 111, 112, 113, -1, -1, -1, -1, - -1, -1, 120, 121, 122, 123, -1, -1, -1, -1, - -1, 129, 130, -1, -1, 133, 134, 48, -1, 50, - 138, -1, 53, 54, -1, -1, 144, 145, -1, 147, - -1, 62, 63, 64, 65, -1, -1, 155, -1, -1, - -1, -1, 73, -1, 75, 76, 77, 78, 79, -1, - -1, -1, 83, -1, -1, -1, 174, 88, -1, -1, + -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, + 119, 120, -1, 122, -1, -1, -1, -1, 127, -1, + 129, -1, -1, 126, 127, 119, 120, -1, 122, 132, + -1, 140, -1, 127, -1, 129, 145, 140, 141, 142, + 143, 68, -1, 146, -1, 148, 140, 74, 55, -1, + 57, 58, 59, 60, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 106, 107, 108, 109, 110, - 111, 112, 113, -1, -1, -1, -1, -1, -1, 120, - 121, 122, 123, -1, -1, -1, -1, -1, 129, 130, - -1, -1, 133, 134, 48, -1, 50, 138, -1, 53, - 54, -1, -1, 144, 145, -1, 147, -1, 62, 63, - 64, 65, -1, -1, 155, -1, -1, -1, -1, 73, - -1, 75, 76, 77, 78, 79, -1, -1, -1, 83, - -1, -1, -1, 174, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, - -1, -1, -1, -1, -1, -1, 120, 121, 122, 123, - -1, -1, -1, -1, -1, 129, 130, -1, -1, 133, - 134, 48, -1, 50, 138, -1, 53, 54, -1, -1, - 144, 145, -1, 147, -1, 62, 63, 64, 65, -1, - -1, 155, -1, -1, -1, -1, 73, -1, 75, 76, - 77, 78, 79, -1, -1, -1, 83, -1, -1, -1, - 174, 88, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, - 107, 108, 109, 110, 111, 112, 113, -1, -1, -1, - -1, -1, -1, 120, 121, 122, 123, -1, -1, -1, - -1, -1, 129, 130, -1, -1, 133, 134, 48, -1, - 50, 138, -1, 53, 54, -1, -1, 144, 145, -1, - 147, -1, 62, 63, 64, 65, -1, -1, 155, -1, - -1, -1, -1, 73, -1, 75, 76, 77, 78, 79, - -1, -1, -1, 83, -1, -1, -1, 174, 88, -1, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, -1, -1, 106, 107, 108, 109, - 110, 111, 112, 113, -1, -1, -1, -1, -1, -1, + -1, -1, 89, -1, -1, -1, 113, -1, -1, -1, + -1, -1, 119, 120, -1, 122, -1, -1, 105, -1, + 127, -1, 129, 53, 54, -1, -1, -1, -1, -1, + -1, -1, 62, 63, 64, 65, -1, -1, -1, 126, + 127, -1, -1, 73, -1, 75, 76, 77, 78, 79, + -1, -1, -1, 83, -1, -1, 143, -1, 88, -1, + -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 106, 107, 108, 109, + 110, 111, 112, 113, 171, -1, -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, - 130, -1, -1, 133, 134, -1, -1, -1, 138, 48, - -1, 50, -1, -1, 144, 145, -1, 147, 68, -1, - -1, -1, -1, -1, 74, 155, -1, -1, -1, 68, - -1, 81, 82, -1, 55, -1, 57, 58, 59, 60, - -1, -1, 81, 82, 174, -1, -1, -1, 55, -1, - 57, 58, 59, 60, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 113, -1, -1, -1, -1, 89, 119, - 120, -1, 122, -1, -1, -1, -1, 127, -1, 129, - 119, 120, 89, 122, 105, -1, -1, -1, 127, -1, - 129, -1, -1, -1, -1, -1, -1, -1, 105, -1, - -1, -1, -1, -1, -1, 126, 127, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, - 127, -1, 143, -1, -1, -1, -1, 148, 48, -1, - 50, -1, -1, -1, 54, -1, 143, -1, -1, -1, - -1, 148, 62, 63, 64, 65, -1, -1, -1, -1, - 171, -1, -1, -1, -1, 75, 76, 77, 78, -1, - -1, -1, -1, 83, 171, -1, -1, -1, 88, -1, - -1, 48, -1, 50, -1, -1, 53, 54, -1, -1, - -1, -1, -1, -1, -1, 62, 63, 64, 65, -1, - -1, -1, 112, -1, -1, -1, 73, -1, 75, 76, - 77, 78, 79, 123, -1, -1, 83, -1, -1, 129, - -1, 88, -1, -1, 134, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 144, 145, -1, 147, -1, 106, - 107, 108, 109, 110, 111, 112, 113, -1, -1, -1, - -1, -1, 162, 120, 121, 122, 123, -1, 48, -1, - 50, -1, 129, 130, 54, -1, 133, 134, -1, -1, - -1, 138, 62, 63, 64, 65, -1, 144, 145, -1, - 147, -1, -1, -1, -1, 75, 76, 77, 78, -1, - -1, -1, -1, 83, -1, -1, -1, 48, 88, 50, - -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, - -1, 62, 63, 64, 65, -1, -1, -1, -1, -1, - -1, -1, 112, -1, 75, 76, 77, 78, -1, -1, - -1, -1, -1, 123, -1, -1, 48, 88, 50, 129, - -1, -1, 54, 133, 134, -1, -1, -1, -1, -1, - 62, 63, 64, 65, 144, 145, -1, 147, -1, -1, - -1, 112, 113, 75, 76, 77, 78, -1, -1, -1, - -1, -1, 123, -1, -1, -1, 88, -1, 129, -1, - -1, -1, 55, 134, 57, 58, 59, 60, -1, -1, - -1, -1, -1, -1, 145, -1, 147, 70, -1, -1, - 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, -1, -1, -1, -1, 89, 129, -1, -1, - -1, -1, 134, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 105, 145, -1, 147, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 126, 127, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 143, -1, -1, -1, -1, 148 + 130, 54, -1, 133, 134, -1, -1, -1, 138, 62, + 63, 64, 65, -1, 144, 145, -1, 147, -1, -1, + -1, -1, 75, 76, 77, 78, -1, -1, 54, -1, + 83, -1, -1, -1, -1, 88, 62, 63, 64, 65, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, + 76, 77, 78, -1, -1, -1, -1, -1, -1, 112, + -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, + 123, -1, -1, -1, -1, -1, 129, -1, -1, -1, + 133, 134, -1, -1, -1, -1, 112, -1, -1, -1, + -1, 144, 145, -1, 147, -1, -1, 123, -1, -1, + -1, -1, -1, 129, -1, -1, -1, -1, 134, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 145, + -1, 147 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 150, 151, 152, 178, 179, 287, 3, 4, 5, + 0, 150, 151, 152, 178, 179, 288, 3, 4, 5, 6, 8, 9, 10, 11, 51, 55, 57, 58, 59, 60, 66, 70, 71, 80, 81, 82, 86, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 114, 116, 117, 119, 124, 126, 127, 128, 131, 136, 139, 143, 148, 161, 164, - 165, 166, 169, 171, 172, 175, 277, 278, 286, 11, + 165, 166, 169, 171, 172, 175, 278, 279, 287, 11, 12, 52, 55, 57, 58, 59, 60, 61, 62, 67, 70, 74, 82, 89, 105, 126, 127, 132, 140, 141, - 142, 143, 146, 148, 239, 240, 244, 246, 248, 254, - 255, 259, 260, 265, 266, 267, 268, 0, 48, 50, - 53, 54, 62, 63, 64, 65, 73, 75, 76, 77, - 78, 79, 83, 88, 106, 107, 108, 109, 110, 111, - 112, 113, 120, 121, 122, 123, 129, 130, 133, 134, - 138, 144, 145, 147, 155, 182, 184, 185, 187, 190, - 210, 261, 264, 287, 153, 171, 171, 171, 171, 171, - 171, 171, 162, 171, 162, 171, 171, 171, 171, 171, + 142, 143, 146, 148, 241, 242, 246, 247, 249, 255, + 256, 260, 261, 266, 267, 268, 269, 0, 48, 50, + 189, 288, 153, 171, 171, 171, 171, 171, 171, 171, + 162, 171, 162, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 11, 52, 67, 140, 141, 242, - 259, 260, 265, 277, 162, 171, 171, 15, 171, 277, - 162, 171, 171, 171, 277, 277, 277, 277, 277, 11, - 55, 57, 58, 59, 60, 70, 82, 89, 105, 126, - 127, 143, 148, 244, 275, 277, 10, 11, 12, 68, - 81, 82, 119, 120, 122, 127, 129, 157, 161, 166, - 281, 282, 284, 287, 277, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 34, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 170, 171, 172, 6, - 8, 239, 240, 171, 61, 132, 70, 105, 266, 266, - 266, 284, 171, 266, 13, 15, 17, 62, 147, 161, - 166, 171, 237, 238, 287, 238, 153, 10, 11, 12, - 119, 156, 285, 245, 287, 144, 188, 189, 284, 171, - 76, 88, 187, 187, 187, 187, 187, 187, 6, 187, - 210, 187, 277, 156, 186, 113, 187, 171, 171, 171, - 171, 171, 171, 187, 153, 284, 156, 156, 156, 187, - 187, 171, 185, 187, 190, 211, 187, 187, 194, 74, - 113, 284, 187, 187, 10, 11, 52, 67, 118, 140, - 141, 153, 169, 197, 201, 241, 243, 246, 248, 254, - 259, 260, 265, 274, 275, 287, 274, 244, 274, 274, - 274, 274, 274, 244, 274, 244, 274, 244, 274, 244, - 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, - 244, 244, 244, 244, 274, 171, 284, 171, 171, 284, - 245, 173, 244, 274, 274, 171, 244, 244, 244, 277, - 274, 274, 173, 154, 173, 284, 284, 154, 176, 157, - 227, 287, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 284, 173, 275, 277, 238, 238, 52, - 277, 244, 166, 284, 13, 15, 17, 62, 147, 161, - 166, 237, 287, 237, 238, 237, 238, 237, 237, 15, - 17, 48, 62, 123, 161, 166, 222, 223, 232, 239, - 240, 287, 172, 257, 258, 287, 11, 256, 266, 156, - 10, 11, 12, 48, 50, 119, 153, 284, 285, 284, - 49, 154, 171, 11, 241, 277, 187, 173, 184, 153, - 284, 284, 284, 284, 284, 284, 284, 179, 153, 277, - 162, 10, 11, 201, 241, 243, 284, 284, 155, 157, - 171, 171, 171, 62, 239, 284, 171, 183, 284, 192, - 153, 155, 157, 229, 155, 191, 284, 285, 245, 174, - 173, 173, 173, 173, 173, 173, 173, 163, 173, 163, - 173, 173, 173, 173, 154, 173, 154, 173, 154, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 277, 244, 274, 284, 163, 173, 173, 284, 173, 163, - 173, 173, 173, 173, 277, 277, 15, 161, 282, 171, - 207, 287, 277, 156, 173, 176, 173, 173, 173, 237, - 166, 284, 237, 237, 237, 237, 237, 172, 237, 188, - 123, 239, 240, 232, 237, 237, 173, 15, 154, 13, - 17, 62, 147, 161, 166, 171, 235, 285, 287, 13, - 15, 17, 62, 147, 161, 166, 171, 236, 273, 277, - 287, 284, 174, 256, 188, 171, 247, 249, 156, 187, - 188, 3, 4, 5, 9, 10, 15, 51, 66, 71, - 80, 81, 114, 117, 119, 124, 128, 131, 136, 139, - 161, 164, 165, 169, 171, 175, 224, 225, 232, 233, - 279, 280, 286, 287, 173, 173, 187, 179, 153, 154, - 154, 154, 154, 154, 154, 174, 262, 154, 173, 10, - 11, 12, 61, 62, 140, 212, 213, 214, 215, 216, - 265, 287, 171, 229, 195, 155, 155, 244, 198, 10, - 13, 166, 200, 52, 277, 239, 13, 17, 62, 147, - 161, 166, 234, 285, 287, 244, 179, 171, 153, 155, - 156, 157, 228, 269, 270, 68, 69, 153, 277, 13, - 17, 62, 118, 147, 161, 166, 171, 193, 217, 219, - 285, 156, 284, 171, 171, 244, 244, 244, 173, 173, - 173, 171, 173, 171, 227, 222, 17, 34, 48, 62, - 64, 81, 112, 115, 116, 119, 135, 147, 161, 220, - 287, 277, 237, 273, 173, 49, 239, 240, 235, 236, - 173, 173, 207, 15, 232, 166, 235, 235, 235, 235, - 235, 235, 172, 227, 166, 284, 236, 236, 236, 236, - 236, 236, 172, 227, 176, 154, 157, 49, 241, 277, - 179, 81, 250, 287, 189, 171, 162, 162, 242, 162, - 15, 171, 279, 162, 171, 277, 277, 277, 277, 244, - 275, 277, 173, 15, 154, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 34, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 170, 171, 172, 187, - 187, 174, 263, 10, 10, 10, 10, 10, 10, 179, - 286, 155, 216, 163, 154, 15, 284, 13, 17, 62, - 147, 161, 166, 171, 235, 236, 196, 219, 155, 222, - 173, 166, 217, 222, 173, 173, 234, 166, 234, 234, - 234, 234, 234, 171, 172, 173, 174, 202, 269, 180, - 181, 284, 68, 69, 174, 271, 287, 155, 155, 153, - 230, 231, 277, 287, 155, 166, 217, 217, 6, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 34, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 69, 114, 154, 157, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 171, 172, 175, 208, - 217, 217, 217, 217, 156, 171, 172, 220, 157, 227, - 229, 256, 275, 275, 173, 173, 173, 275, 275, 173, - 62, 242, 188, 277, 171, 153, 176, 171, 232, 235, - 236, 227, 227, 171, 171, 220, 235, 173, 273, 236, - 173, 273, 277, 173, 173, 174, 156, 251, 252, 287, - 244, 244, 244, 171, 244, 171, 244, 244, 244, 277, - 173, 173, 15, 233, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 284, 173, 275, 277, 179, - 154, 154, 173, 154, 221, 287, 154, 154, 154, 174, - 173, 235, 236, 185, 190, 209, 210, 215, 284, 157, - 166, 157, 226, 287, 227, 229, 173, 171, 217, 173, - 173, 171, 234, 205, 273, 222, 174, 153, 154, 153, - 171, 155, 155, 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, + 171, 171, 11, 52, 67, 140, 141, 244, 260, 261, + 266, 278, 162, 171, 171, 15, 171, 278, 162, 171, + 171, 171, 278, 278, 278, 278, 278, 11, 55, 57, + 58, 59, 60, 70, 82, 89, 105, 126, 127, 143, + 148, 246, 276, 278, 10, 11, 12, 68, 81, 82, + 119, 120, 122, 127, 129, 157, 161, 166, 282, 283, + 285, 288, 278, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 34, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 170, 171, 172, 6, 8, 241, + 242, 171, 61, 132, 70, 105, 267, 267, 267, 285, + 171, 267, 13, 15, 17, 62, 147, 161, 166, 171, + 239, 240, 288, 240, 153, 189, 189, 144, 190, 191, + 285, 171, 155, 180, 275, 276, 288, 275, 246, 275, + 275, 275, 275, 275, 246, 275, 246, 275, 246, 275, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 275, 171, 285, 171, 171, + 189, 189, 173, 246, 275, 275, 171, 246, 246, 246, + 278, 275, 275, 173, 154, 173, 285, 285, 154, 176, + 157, 229, 288, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 285, 173, 276, 278, 240, 240, + 52, 278, 246, 166, 285, 189, 239, 240, 239, 240, + 189, 189, 15, 17, 161, 166, 189, 224, 225, 234, + 288, 172, 258, 259, 288, 10, 11, 12, 119, 156, + 286, 10, 11, 12, 119, 153, 285, 286, 285, 49, + 154, 171, 11, 52, 67, 140, 141, 243, 247, 249, + 255, 260, 261, 266, 278, 53, 54, 62, 63, 64, + 65, 73, 75, 76, 77, 78, 79, 83, 88, 106, + 107, 108, 109, 110, 111, 112, 113, 120, 121, 122, + 123, 129, 130, 133, 134, 138, 144, 145, 147, 183, + 185, 186, 188, 192, 212, 262, 265, 288, 174, 173, + 173, 173, 173, 173, 173, 173, 163, 173, 163, 173, + 173, 173, 173, 154, 173, 154, 173, 154, 173, 173, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 278, + 246, 275, 285, 285, 163, 173, 173, 285, 173, 163, + 173, 173, 173, 173, 278, 278, 15, 161, 283, 171, + 209, 288, 278, 156, 173, 176, 173, 173, 173, 189, + 189, 13, 15, 17, 62, 147, 161, 166, 239, 288, + 239, 239, 189, 189, 189, 62, 123, 241, 242, 173, + 15, 154, 274, 278, 288, 285, 174, 11, 257, 267, + 156, 248, 250, 156, 189, 190, 3, 4, 5, 9, + 10, 15, 51, 66, 71, 80, 81, 114, 117, 119, + 124, 128, 131, 136, 139, 161, 164, 165, 169, 171, + 175, 226, 227, 234, 235, 280, 281, 287, 288, 171, + 285, 171, 173, 189, 189, 173, 76, 88, 188, 188, + 188, 188, 188, 188, 6, 188, 212, 188, 278, 156, + 187, 113, 188, 171, 171, 171, 171, 171, 171, 188, + 153, 189, 156, 156, 156, 188, 188, 171, 186, 188, + 192, 213, 188, 188, 196, 74, 113, 285, 188, 188, + 10, 11, 118, 153, 169, 199, 203, 243, 245, 171, + 171, 246, 246, 246, 173, 173, 173, 171, 173, 171, + 229, 224, 17, 62, 64, 81, 112, 115, 116, 119, + 135, 147, 161, 189, 278, 239, 166, 285, 189, 239, + 239, 189, 189, 172, 239, 239, 239, 123, 241, 242, + 234, 13, 17, 62, 147, 161, 166, 171, 237, 286, + 288, 13, 15, 17, 62, 147, 161, 166, 171, 238, + 209, 15, 234, 176, 189, 257, 179, 81, 251, 288, + 190, 171, 162, 162, 244, 162, 15, 171, 280, 162, + 171, 278, 278, 278, 278, 246, 276, 278, 173, 15, + 154, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 34, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 170, 171, 172, 52, 278, 246, 189, 285, + 286, 285, 189, 188, 173, 185, 153, 285, 285, 285, + 285, 285, 285, 285, 179, 285, 278, 162, 10, 11, + 203, 243, 245, 285, 285, 155, 189, 171, 171, 62, + 241, 184, 285, 194, 153, 155, 157, 231, 155, 193, + 276, 276, 173, 173, 173, 276, 276, 173, 278, 171, + 34, 222, 288, 189, 189, 239, 239, 239, 274, 173, + 173, 173, 241, 242, 237, 238, 166, 189, 237, 237, + 189, 189, 237, 172, 229, 189, 166, 285, 189, 238, + 238, 189, 189, 238, 172, 229, 189, 189, 154, 157, + 174, 156, 252, 253, 288, 49, 246, 246, 246, 171, + 246, 171, 246, 246, 246, 278, 173, 173, 15, 235, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 285, 173, 276, 278, 173, 173, 173, 156, 188, + 179, 153, 154, 154, 154, 154, 154, 154, 174, 153, + 154, 173, 10, 11, 12, 61, 62, 140, 214, 215, + 216, 217, 218, 266, 288, 171, 231, 197, 155, 155, + 157, 200, 10, 13, 166, 202, 241, 13, 17, 62, + 147, 161, 166, 236, 286, 288, 179, 171, 153, 155, + 156, 157, 230, 270, 271, 68, 69, 153, 278, 13, + 17, 62, 118, 147, 161, 166, 171, 195, 219, 221, + 286, 173, 173, 173, 173, 209, 173, 173, 285, 62, + 244, 153, 239, 176, 171, 171, 171, 237, 238, 229, + 229, 189, 237, 237, 237, 173, 274, 189, 189, 238, + 238, 238, 173, 274, 222, 278, 120, 121, 122, 140, + 145, 254, 284, 285, 153, 154, 189, 173, 163, 163, + 275, 163, 285, 173, 163, 173, 173, 278, 156, 173, + 176, 257, 174, 264, 10, 10, 10, 10, 10, 10, + 263, 287, 155, 218, 163, 154, 15, 285, 13, 17, + 62, 147, 161, 166, 171, 237, 238, 198, 221, 246, + 224, 173, 166, 219, 224, 236, 166, 189, 236, 236, + 189, 189, 171, 172, 189, 174, 204, 270, 181, 182, + 285, 68, 69, 174, 272, 288, 155, 155, 153, 232, + 233, 278, 288, 155, 166, 189, 219, 6, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 34, 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, 85, 87, 88, 89, 105, 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, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 175, 176, 272, - 230, 174, 154, 217, 10, 173, 176, 173, 277, 218, - 273, 277, 154, 173, 173, 173, 173, 207, 242, 238, - 49, 173, 173, 284, 269, 222, 227, 227, 222, 222, - 171, 176, 171, 176, 154, 120, 121, 122, 140, 145, - 253, 283, 284, 153, 154, 173, 163, 163, 274, 163, - 284, 173, 163, 173, 173, 277, 156, 173, 176, 174, - 10, 10, 155, 10, 173, 10, 10, 10, 155, 226, - 244, 51, 66, 71, 124, 128, 131, 161, 164, 165, - 166, 169, 171, 175, 276, 278, 154, 207, 199, 173, - 171, 207, 206, 222, 176, 173, 269, 181, 274, 274, - 271, 174, 153, 277, 224, 176, 193, 220, 238, 15, - 173, 174, 173, 173, 173, 222, 222, 145, 283, 145, - 283, 145, 283, 284, 120, 121, 122, 15, 179, 253, - 171, 171, 173, 171, 173, 171, 277, 173, 154, 173, - 154, 155, 154, 173, 173, 154, 173, 171, 162, 162, - 162, 15, 171, 276, 162, 276, 276, 276, 276, 276, - 244, 275, 276, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 34, 158, 159, 160, 161, 164, 165, 166, - 167, 168, 170, 171, 172, 196, 222, 171, 203, 222, - 173, 207, 174, 174, 173, 174, 230, 173, 153, 173, - 207, 207, 207, 173, 173, 283, 283, 283, 283, 283, - 283, 174, 275, 275, 275, 275, 155, 10, 155, 10, - 10, 155, 155, 10, 155, 244, 244, 244, 244, 171, - 244, 244, 173, 173, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 284, 173, 275, 277, 173, 204, 222, - 173, 207, 15, 174, 207, 269, 220, 220, 220, 207, - 207, 173, 173, 173, 173, 154, 221, 173, 154, 154, - 173, 173, 163, 163, 163, 284, 173, 163, 276, 156, - 173, 176, 207, 222, 173, 207, 174, 10, 173, 155, - 10, 10, 155, 171, 171, 171, 173, 171, 276, 173, - 207, 155, 173, 154, 173, 275, 275, 275, 275, 207, - 220, 155, 10, 155, 173, 173, 173, 173, 220, 173, - 155 + 69, 114, 154, 157, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 171, 172, 175, 210, 219, + 189, 189, 219, 156, 171, 172, 222, 157, 229, 231, + 189, 189, 15, 173, 244, 240, 270, 189, 224, 224, + 224, 229, 229, 237, 171, 176, 238, 171, 176, 154, + 145, 284, 145, 284, 145, 284, 285, 120, 121, 122, + 15, 179, 254, 171, 171, 173, 171, 173, 171, 278, + 179, 154, 154, 173, 154, 223, 288, 154, 154, 154, + 179, 173, 237, 238, 186, 192, 211, 212, 217, 285, + 157, 166, 189, 189, 189, 157, 228, 288, 229, 231, + 155, 173, 171, 219, 173, 173, 171, 189, 236, 236, + 236, 207, 274, 224, 174, 153, 154, 153, 171, 155, + 155, 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, 85, 87, 88, 89, 105, 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, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 175, 176, 273, 232, 174, + 154, 189, 219, 10, 173, 176, 189, 219, 219, 173, + 278, 220, 274, 278, 154, 222, 173, 240, 174, 173, + 173, 173, 224, 189, 224, 189, 284, 284, 284, 284, + 284, 284, 174, 276, 276, 276, 276, 174, 10, 10, + 155, 10, 173, 10, 10, 10, 174, 155, 228, 246, + 189, 51, 66, 71, 124, 128, 131, 161, 164, 165, + 166, 169, 171, 175, 277, 279, 154, 209, 201, 173, + 171, 209, 208, 236, 224, 176, 173, 270, 182, 275, + 275, 272, 174, 153, 278, 219, 189, 226, 176, 195, + 153, 209, 209, 209, 173, 173, 173, 173, 173, 173, + 173, 154, 173, 154, 155, 154, 173, 173, 154, 173, + 171, 162, 162, 162, 15, 171, 277, 162, 277, 277, + 277, 277, 277, 246, 276, 277, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 34, 158, 159, 160, 161, + 164, 165, 166, 167, 168, 170, 171, 172, 198, 189, + 224, 171, 205, 189, 224, 173, 189, 209, 174, 174, + 173, 174, 232, 173, 189, 270, 189, 189, 189, 209, + 209, 155, 10, 155, 10, 10, 155, 155, 10, 155, + 246, 246, 246, 246, 171, 246, 246, 173, 173, 277, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, 285, 173, + 276, 278, 173, 206, 224, 173, 209, 189, 15, 174, + 209, 174, 222, 222, 222, 189, 189, 154, 223, 173, + 154, 154, 173, 173, 163, 163, 163, 285, 173, 163, + 277, 156, 173, 176, 209, 224, 173, 209, 189, 10, + 173, 155, 10, 10, 155, 171, 171, 171, 173, 171, + 277, 189, 173, 209, 155, 173, 154, 173, 276, 276, + 276, 276, 209, 189, 155, 10, 155, 173, 173, 173, + 173, 189, 222, 173, 222, 155 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 177, 178, 178, 178, 179, 179, 179, 180, 180, - 181, 181, 181, 183, 182, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 186, 185, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 188, 188, 189, 189, 189, - 191, 190, 190, 192, 190, 190, 190, 193, 193, 195, - 194, 194, 196, 196, 198, 197, 199, 197, 200, 197, - 202, 201, 203, 201, 204, 201, 205, 201, 206, 201, - 201, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 209, 209, 209, 210, - 211, 210, 210, 210, 212, 212, 213, 213, 214, 214, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, - 216, 216, 216, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 218, 217, 219, 219, 220, 220, - 220, 221, 221, 222, 222, 222, 222, 222, 223, 223, - 224, 224, 224, 224, 224, 225, 225, 226, 226, 227, - 227, 228, 228, 228, 228, 228, 229, 229, 229, 229, - 229, 229, 230, 230, 230, 231, 231, 231, 231, 232, - 232, 232, 232, 232, 232, 232, 232, 233, 233, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 235, 235, - 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 0, 177, 178, 178, 178, 179, 179, 180, 179, 181, + 181, 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, 185, 185, 185, 185, + 185, 185, 185, 187, 186, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 189, 189, 189, 189, 189, 190, 190, + 191, 191, 193, 192, 192, 194, 192, 192, 192, 195, + 195, 197, 196, 196, 198, 198, 200, 199, 201, 199, + 202, 199, 204, 203, 205, 203, 206, 203, 207, 203, + 208, 203, 203, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 211, 211, 211, + 212, 213, 212, 212, 212, 214, 214, 215, 215, 216, + 216, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 220, 219, 221, 221, 222, + 222, 222, 223, 223, 224, 224, 224, 224, 224, 225, + 225, 226, 226, 226, 226, 226, 227, 227, 228, 228, + 229, 229, 230, 230, 230, 230, 230, 231, 231, 231, + 231, 231, 231, 232, 232, 232, 233, 233, 233, 233, + 234, 234, 234, 234, 234, 234, 234, 235, 235, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 239, 239, 239, 240, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 242, 242, 242, 242, 242, 242, 242, 242, 243, 243, - 244, 244, 244, 244, 245, 245, 245, 245, 247, 246, - 249, 248, 250, 250, 251, 251, 252, 252, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 254, 255, - 255, 255, 255, 256, 256, 257, 257, 257, 258, 258, - 258, 259, 259, 259, 260, 260, 260, 262, 261, 263, - 261, 261, 261, 264, 264, 264, 264, 265, 265, 265, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 267, 267, 267, 268, 270, - 269, 271, 271, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, - 273, 274, 274, 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, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 277, 277, 277, 277, 277, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 242, 243, 243, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, + 246, 246, 246, 246, 248, 247, 250, 249, 251, 251, + 252, 252, 253, 253, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 255, 256, 256, 256, 256, 257, + 257, 258, 258, 258, 259, 259, 259, 260, 260, 260, + 261, 261, 261, 263, 262, 264, 262, 262, 262, 265, + 265, 265, 265, 266, 266, 266, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 268, 268, 268, 269, 271, 270, 272, 272, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 274, 274, 275, 275, 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, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, + 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 280, 280, 281, 281, 281, 281, 281, 282, 282, - 282, 282, 283, 283, 283, 284, 284, 284, 284, 284, - 284, 284, 284, 284, 284, 284, 285, 285, 285, 285, - 286, 286, 286, 286, 287 + 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, + 282, 282, 282, 282, 283, 283, 283, 283, 284, 284, + 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 286, 286, 286, 286, 287, 287, 287, 287, + 288 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { - 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, - 4, 5, 4, 0, 5, 1, 1, 1, 1, 1, - 2, 1, 1, 2, 2, 2, 2, 8, 11, 9, - 11, 13, 15, 7, 9, 12, 9, 9, 13, 9, - 7, 5, 0, 3, 1, 2, 2, 3, 2, 2, - 2, 2, 4, 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, 4, 2, 2, 2, 2, - 2, 2, 4, 5, 6, 4, 1, 1, 1, 1, + 0, 2, 2, 2, 2, 1, 3, 0, 4, 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, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 4, 7, 5, 5, 1, 3, + 1, 4, 0, 4, 3, 0, 4, 3, 1, 2, + 4, 0, 4, 3, 2, 4, 0, 7, 0, 10, + 0, 7, 0, 8, 0, 12, 0, 13, 0, 8, + 0, 9, 1, 1, 2, 2, 2, 4, 2, 2, + 2, 2, 2, 2, 4, 5, 6, 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, 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, 2, 2, 1, 1, 1, 1, 1, + 2, 0, 6, 2, 2, 1, 1, 1, 3, 1, + 1, 1, 2, 4, 2, 3, 3, 4, 2, 3, + 1, 1, 1, 1, 2, 3, 4, 2, 2, 3, + 3, 3, 4, 5, 3, 0, 7, 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, + 4, 5, 6, 4, 5, 6, 3, 1, 1, 1, + 2, 2, 2, 3, 3, 3, 4, 5, 1, 2, + 2, 2, 3, 3, 3, 4, 5, 8, 3, 1, + 3, 2, 2, 3, 3, 3, 4, 5, 8, 3, + 1, 1, 3, 2, 2, 3, 3, 3, 4, 5, + 1, 1, 3, 2, 2, 3, 3, 3, 4, 5, + 6, 11, 11, 11, 1, 1, 2, 1, 1, 1, + 3, 5, 4, 4, 4, 1, 1, 1, 1, 2, + 1, 1, 1, 3, 5, 3, 4, 4, 4, 1, + 1, 1, 2, 3, 3, 4, 4, 1, 1, 1, + 2, 3, 2, 3, 0, 6, 0, 9, 1, 1, + 1, 1, 2, 3, 1, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 4, 4, 2, 5, 3, 1, + 1, 1, 4, 6, 1, 3, 5, 1, 2, 2, + 1, 1, 1, 0, 7, 0, 7, 4, 5, 3, + 6, 4, 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, @@ -3479,30 +3287,31 @@ static const yytype_int8 yyr2[] = 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, + 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, 3, 3, 3, 3, 3, 5, - 4, 4, 3, 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, 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, 1, 1, 1, 2, 4, 2, 3, - 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 9, 12, 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, 2, 0 + 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 }; @@ -3514,6 +3323,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -3581,12 +3391,19 @@ do { \ } while (0) -/* YY_LOCATION_PRINT -- Print the location on the stream. +/* YYLOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ -# ifndef YY_LOCATION_PRINT -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# ifndef YYLOCATION_PRINT + +# if defined YY_LOCATION_PRINT + + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc)) + +# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ @@ -3614,15 +3431,23 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) res += YYFPRINTF (yyo, "-%d", end_col); } return res; - } +} -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) +# define YYLOCATION_PRINT yy_location_print_ + + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc)) # else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) + +# define YYLOCATION_PRINT(File, Loc) ((void) 0) + /* Temporary convenience wrapper in case some people defined the + undocumented and private YY_LOCATION_PRINT macros. */ +# define YY_LOCATION_PRINT YYLOCATION_PRINT + # endif -# endif /* !defined YY_LOCATION_PRINT */ +# endif /* !defined YYLOCATION_PRINT */ # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -3646,16 +3471,12 @@ 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); + YY_USE (yyoutput); + YY_USE (yylocationp); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -3671,7 +3492,7 @@ yy_symbol_print (FILE *yyo, YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - YY_LOCATION_PRINT (yyo, *yylocationp); + YYLOCATION_PRINT (yyo, yylocationp); YYFPRINTF (yyo, ": "); yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp); YYFPRINTF (yyo, ")"); @@ -3772,14 +3593,14 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) { - YYUSE (yyvaluep); - YYUSE (yylocationp); + YY_USE (yyvaluep); + YY_USE (yylocationp); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -3865,6 +3686,7 @@ YYLTYPE yylloc = yyloc_default; YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ + yylsp[0] = yylloc; goto yysetstate; @@ -3891,7 +3713,7 @@ yysetstate: if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -3922,7 +3744,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -3933,7 +3755,7 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); @@ -3957,6 +3779,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -4073,64 +3896,90 @@ yyreduce: switch (yyn) { case 3: /* grammar: START_CONST_EXPR const_expr */ -#line 461 "dtool/src/cppparser/cppBison.yxx" +#line 465 "dtool/src/cppparser/cppBison.yxx" { current_expr = (yyvsp[0].u.expr); } -#line 4081 "built/tmp/cppBison.yxx.c" +#line 3904 "built/tmp/cppBison.yxx.c" break; case 4: /* grammar: START_TYPE full_type */ -#line 465 "dtool/src/cppparser/cppBison.yxx" +#line 469 "dtool/src/cppparser/cppBison.yxx" { current_type = (yyvsp[0].u.type); } -#line 4089 "built/tmp/cppBison.yxx.c" +#line 3912 "built/tmp/cppBison.yxx.c" break; - case 10: /* constructor_init: name '(' optional_const_expr_comma ')' */ + case 6: /* cpp: cpp optional_attributes ';' */ +#line 477 "dtool/src/cppparser/cppBison.yxx" +{ + if (!(yyvsp[-1].attr_list).is_empty()) { + current_scope->add_declaration(new CPPDeclaration((yylsp[-1]).file, (yyvsp[-1].attr_list)), global_scope, current_lexer, (yylsp[-1])); + } +} +#line 3922 "built/tmp/cppBison.yxx.c" + break; + + case 7: /* $@1: %empty */ #line 483 "dtool/src/cppparser/cppBison.yxx" +{ + current_attributes = (yyvsp[0].attr_list); +} +#line 3930 "built/tmp/cppBison.yxx.c" + break; + + case 8: /* cpp: cpp optional_attributes $@1 declaration */ +#line 487 "dtool/src/cppparser/cppBison.yxx" +{ + current_attributes = CPPAttributeList(); +} +#line 3938 "built/tmp/cppBison.yxx.c" + break; + + case 11: /* constructor_init: name '(' optional_const_expr_comma ')' */ +#line 499 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[-1].u.expr); } -#line 4097 "built/tmp/cppBison.yxx.c" +#line 3946 "built/tmp/cppBison.yxx.c" break; - case 11: /* constructor_init: name '(' optional_const_expr_comma ')' ELLIPSIS */ -#line 487 "dtool/src/cppparser/cppBison.yxx" + case 12: /* constructor_init: name '(' optional_const_expr_comma ')' ELLIPSIS */ +#line 503 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[-2].u.expr); } -#line 4105 "built/tmp/cppBison.yxx.c" +#line 3954 "built/tmp/cppBison.yxx.c" break; - case 12: /* constructor_init: name '{' optional_const_expr_comma '}' */ -#line 491 "dtool/src/cppparser/cppBison.yxx" + case 13: /* constructor_init: name '{' optional_const_expr_comma '}' */ +#line 507 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[-1].u.expr); } -#line 4113 "built/tmp/cppBison.yxx.c" +#line 3962 "built/tmp/cppBison.yxx.c" break; - case 13: /* $@1: %empty */ -#line 503 "dtool/src/cppparser/cppBison.yxx" + case 14: /* $@2: %empty */ +#line 519 "dtool/src/cppparser/cppBison.yxx" { push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) | ((yyvsp[-1].u.integer) & CPPInstance::SC_c_binding)); } -#line 4122 "built/tmp/cppBison.yxx.c" +#line 3971 "built/tmp/cppBison.yxx.c" break; - case 14: /* extern_c: storage_class '{' $@1 cpp '}' */ -#line 508 "dtool/src/cppparser/cppBison.yxx" + case 15: /* extern_c: storage_class '{' $@2 cpp '}' */ +#line 524 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } -#line 4130 "built/tmp/cppBison.yxx.c" +#line 3979 "built/tmp/cppBison.yxx.c" break; - case 21: /* declaration: KW_BEGIN_PUBLISH */ -#line 521 "dtool/src/cppparser/cppBison.yxx" + case 22: /* declaration: KW_BEGIN_PUBLISH */ +#line 537 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); @@ -4143,11 +3992,11 @@ yyreduce: publish_nest_level++; current_scope->set_current_vis(V_published); } -#line 4147 "built/tmp/cppBison.yxx.c" +#line 3996 "built/tmp/cppBison.yxx.c" break; - case 22: /* declaration: KW_END_PUBLISH */ -#line 534 "dtool/src/cppparser/cppBison.yxx" + case 23: /* declaration: KW_END_PUBLISH */ +#line 550 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 1) { yyerror("Unmatched __end_publish", (yylsp[0])); @@ -4156,19 +4005,19 @@ yyreduce: } publish_nest_level = 0; } -#line 4160 "built/tmp/cppBison.yxx.c" +#line 4009 "built/tmp/cppBison.yxx.c" break; - case 23: /* declaration: KW_PUBLISHED ':' */ -#line 543 "dtool/src/cppparser/cppBison.yxx" + case 24: /* declaration: KW_PUBLISHED ':' */ +#line 559 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_published); } -#line 4168 "built/tmp/cppBison.yxx.c" +#line 4017 "built/tmp/cppBison.yxx.c" break; - case 24: /* declaration: KW_PUBLIC ':' */ -#line 547 "dtool/src/cppparser/cppBison.yxx" + case 25: /* declaration: KW_PUBLIC ':' */ +#line 563 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); @@ -4176,27 +4025,27 @@ yyreduce: current_scope->set_current_vis(V_public); } } -#line 4180 "built/tmp/cppBison.yxx.c" +#line 4029 "built/tmp/cppBison.yxx.c" break; - case 25: /* declaration: KW_PROTECTED ':' */ -#line 555 "dtool/src/cppparser/cppBison.yxx" + case 26: /* declaration: KW_PROTECTED ':' */ +#line 571 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_protected); } -#line 4188 "built/tmp/cppBison.yxx.c" +#line 4037 "built/tmp/cppBison.yxx.c" break; - case 26: /* declaration: KW_PRIVATE ':' */ -#line 559 "dtool/src/cppparser/cppBison.yxx" + case 27: /* declaration: KW_PRIVATE ':' */ +#line 575 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_private); } -#line 4196 "built/tmp/cppBison.yxx.c" +#line 4045 "built/tmp/cppBison.yxx.c" break; - case 27: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER maybe_comma_identifier ')' ';' */ -#line 563 "dtool/src/cppparser/cppBison.yxx" + case 28: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER maybe_comma_identifier ')' ';' */ +#line 579 "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) { @@ -4217,11 +4066,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-7])); } } -#line 4221 "built/tmp/cppBison.yxx.c" +#line 4070 "built/tmp/cppBison.yxx.c" break; - case 28: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 584 "dtool/src/cppparser/cppBison.yxx" + case 29: /* declaration: KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 600 "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) { @@ -4248,11 +4097,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } -#line 4252 "built/tmp/cppBison.yxx.c" +#line 4101 "built/tmp/cppBison.yxx.c" break; - case 29: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 611 "dtool/src/cppparser/cppBison.yxx" + case 30: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 627 "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) { @@ -4273,11 +4122,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } -#line 4277 "built/tmp/cppBison.yxx.c" +#line 4126 "built/tmp/cppBison.yxx.c" break; - case 30: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 632 "dtool/src/cppparser/cppBison.yxx" + case 31: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 648 "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) { @@ -4306,11 +4155,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } -#line 4310 "built/tmp/cppBison.yxx.c" +#line 4159 "built/tmp/cppBison.yxx.c" break; - case 31: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 661 "dtool/src/cppparser/cppBison.yxx" + case 32: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 677 "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) { @@ -4346,11 +4195,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } -#line 4350 "built/tmp/cppBison.yxx.c" +#line 4199 "built/tmp/cppBison.yxx.c" break; - case 32: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 697 "dtool/src/cppparser/cppBison.yxx" + case 33: /* declaration: KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 713 "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) { @@ -4393,11 +4242,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-14])); } } -#line 4397 "built/tmp/cppBison.yxx.c" +#line 4246 "built/tmp/cppBison.yxx.c" break; - case 33: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ')' ';' */ -#line 740 "dtool/src/cppparser/cppBison.yxx" + case 34: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ')' ';' */ +#line 756 "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) { @@ -4409,11 +4258,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-6])); } } -#line 4413 "built/tmp/cppBison.yxx.c" +#line 4262 "built/tmp/cppBison.yxx.c" break; - case 34: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 752 "dtool/src/cppparser/cppBison.yxx" + case 35: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 768 "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) { @@ -4434,11 +4283,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } -#line 4438 "built/tmp/cppBison.yxx.c" +#line 4287 "built/tmp/cppBison.yxx.c" break; - case 35: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER maybe_comma_identifier ')' ';' */ -#line 773 "dtool/src/cppparser/cppBison.yxx" + case 36: /* declaration: KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER maybe_comma_identifier ')' ';' */ +#line 789 "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) { @@ -4474,11 +4323,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-11])); } } -#line 4478 "built/tmp/cppBison.yxx.c" +#line 4327 "built/tmp/cppBison.yxx.c" break; - case 36: /* declaration: KW_MAKE_MAP_KEYS_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 809 "dtool/src/cppparser/cppBison.yxx" + case 37: /* declaration: KW_MAKE_MAP_KEYS_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 825 "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) { @@ -4512,11 +4361,11 @@ yyreduce: } } } -#line 4516 "built/tmp/cppBison.yxx.c" +#line 4365 "built/tmp/cppBison.yxx.c" break; - case 37: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 843 "dtool/src/cppparser/cppBison.yxx" + case 38: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 859 "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) { @@ -4538,11 +4387,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } -#line 4542 "built/tmp/cppBison.yxx.c" +#line 4391 "built/tmp/cppBison.yxx.c" break; - case 38: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 865 "dtool/src/cppparser/cppBison.yxx" + case 39: /* declaration: KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 881 "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) { @@ -4578,11 +4427,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } -#line 4582 "built/tmp/cppBison.yxx.c" +#line 4431 "built/tmp/cppBison.yxx.c" break; - case 39: /* declaration: KW_MAKE_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ -#line 901 "dtool/src/cppparser/cppBison.yxx" + case 40: /* declaration: KW_MAKE_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' */ +#line 917 "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) { @@ -4604,11 +4453,11 @@ yyreduce: current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[-8])); } } -#line 4608 "built/tmp/cppBison.yxx.c" +#line 4457 "built/tmp/cppBison.yxx.c" break; - case 40: /* declaration: KW_STATIC_ASSERT '(' const_expr ',' string_literal ')' ';' */ -#line 923 "dtool/src/cppparser/cppBison.yxx" + case 41: /* declaration: KW_STATIC_ASSERT '(' const_expr ',' string_literal ')' ';' */ +#line 939 "dtool/src/cppparser/cppBison.yxx" { CPPExpression::Result result = (yyvsp[-4].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { @@ -4619,11 +4468,11 @@ yyreduce: yywarning("static_assert failed: " + str.str(), (yylsp[-4])); } } -#line 4623 "built/tmp/cppBison.yxx.c" +#line 4472 "built/tmp/cppBison.yxx.c" break; - case 41: /* declaration: KW_STATIC_ASSERT '(' const_expr ')' ';' */ -#line 934 "dtool/src/cppparser/cppBison.yxx" + case 42: /* declaration: KW_STATIC_ASSERT '(' const_expr ')' ';' */ +#line 950 "dtool/src/cppparser/cppBison.yxx" { // This alternative version of static_assert was introduced in C++17. CPPExpression::Result result = (yyvsp[-2].u.expr)->evaluate(); @@ -4633,55 +4482,55 @@ yyreduce: yywarning("static_assert failed", (yylsp[-2])); } } -#line 4637 "built/tmp/cppBison.yxx.c" +#line 4486 "built/tmp/cppBison.yxx.c" break; - case 42: /* $@2: %empty */ -#line 947 "dtool/src/cppparser/cppBison.yxx" + case 43: /* $@3: %empty */ +#line 963 "dtool/src/cppparser/cppBison.yxx" { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); push_scope(new_scope); } -#line 4647 "built/tmp/cppBison.yxx.c" +#line 4496 "built/tmp/cppBison.yxx.c" break; - case 43: /* friend_declaration: KW_FRIEND $@2 declaration */ -#line 953 "dtool/src/cppparser/cppBison.yxx" + case 44: /* friend_declaration: KW_FRIEND $@3 declaration */ +#line 969 "dtool/src/cppparser/cppBison.yxx" { delete current_scope; pop_scope(); } -#line 4656 "built/tmp/cppBison.yxx.c" +#line 4505 "built/tmp/cppBison.yxx.c" break; - case 44: /* storage_class: empty */ -#line 962 "dtool/src/cppparser/cppBison.yxx" + case 45: /* storage_class: empty */ +#line 978 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = 0; } -#line 4664 "built/tmp/cppBison.yxx.c" +#line 4513 "built/tmp/cppBison.yxx.c" break; - case 45: /* storage_class: KW_CONST storage_class */ -#line 966 "dtool/src/cppparser/cppBison.yxx" + case 46: /* storage_class: KW_CONST storage_class */ +#line 982 "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 4673 "built/tmp/cppBison.yxx.c" +#line 4522 "built/tmp/cppBison.yxx.c" break; - case 46: /* storage_class: KW_EXTERN storage_class */ -#line 971 "dtool/src/cppparser/cppBison.yxx" + case 47: /* storage_class: KW_EXTERN storage_class */ +#line 987 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; } -#line 4681 "built/tmp/cppBison.yxx.c" +#line 4530 "built/tmp/cppBison.yxx.c" break; - case 47: /* storage_class: KW_EXTERN SIMPLE_STRING storage_class */ -#line 975 "dtool/src/cppparser/cppBison.yxx" + case 48: /* storage_class: KW_EXTERN SIMPLE_STRING storage_class */ +#line 991 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; if ((yyvsp[-1].str) == "C") { @@ -4692,43 +4541,43 @@ yyreduce: yywarning("Ignoring unknown linkage type \"" + (yyvsp[-1].str) + "\"", (yylsp[-1])); } } -#line 4696 "built/tmp/cppBison.yxx.c" +#line 4545 "built/tmp/cppBison.yxx.c" break; - case 48: /* storage_class: KW_STATIC storage_class */ -#line 986 "dtool/src/cppparser/cppBison.yxx" + case 49: /* storage_class: KW_STATIC storage_class */ +#line 1002 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; } -#line 4704 "built/tmp/cppBison.yxx.c" +#line 4553 "built/tmp/cppBison.yxx.c" break; - case 49: /* storage_class: KW_INLINE storage_class */ -#line 990 "dtool/src/cppparser/cppBison.yxx" + case 50: /* storage_class: KW_INLINE storage_class */ +#line 1006 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; } -#line 4712 "built/tmp/cppBison.yxx.c" +#line 4561 "built/tmp/cppBison.yxx.c" break; - case 50: /* storage_class: KW_VIRTUAL storage_class */ -#line 994 "dtool/src/cppparser/cppBison.yxx" + case 51: /* storage_class: KW_VIRTUAL storage_class */ +#line 1010 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual; } -#line 4720 "built/tmp/cppBison.yxx.c" +#line 4569 "built/tmp/cppBison.yxx.c" break; - case 51: /* storage_class: KW_EXPLICIT storage_class */ -#line 998 "dtool/src/cppparser/cppBison.yxx" + case 52: /* storage_class: KW_EXPLICIT storage_class */ +#line 1014 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; } -#line 4728 "built/tmp/cppBison.yxx.c" +#line 4577 "built/tmp/cppBison.yxx.c" break; - case 52: /* storage_class: KW_EXPLICIT_LPAREN const_expr ')' storage_class */ -#line 1002 "dtool/src/cppparser/cppBison.yxx" + case 53: /* storage_class: KW_EXPLICIT_LPAREN const_expr ')' storage_class */ +#line 1018 "dtool/src/cppparser/cppBison.yxx" { CPPExpression::Result result = (yyvsp[-2].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { @@ -4737,108 +4586,165 @@ yyreduce: (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; } } -#line 4741 "built/tmp/cppBison.yxx.c" +#line 4590 "built/tmp/cppBison.yxx.c" break; - case 53: /* storage_class: KW_REGISTER storage_class */ -#line 1011 "dtool/src/cppparser/cppBison.yxx" + case 54: /* storage_class: KW_REGISTER storage_class */ +#line 1027 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register; } -#line 4749 "built/tmp/cppBison.yxx.c" +#line 4598 "built/tmp/cppBison.yxx.c" break; - case 54: /* storage_class: KW_VOLATILE storage_class */ -#line 1015 "dtool/src/cppparser/cppBison.yxx" + case 55: /* storage_class: KW_VOLATILE storage_class */ +#line 1031 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile; } -#line 4757 "built/tmp/cppBison.yxx.c" +#line 4606 "built/tmp/cppBison.yxx.c" break; - case 55: /* storage_class: KW_MUTABLE storage_class */ -#line 1019 "dtool/src/cppparser/cppBison.yxx" + case 56: /* storage_class: KW_MUTABLE storage_class */ +#line 1035 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable; } -#line 4765 "built/tmp/cppBison.yxx.c" +#line 4614 "built/tmp/cppBison.yxx.c" break; - case 56: /* storage_class: KW_CONSTEVAL storage_class */ -#line 1023 "dtool/src/cppparser/cppBison.yxx" + case 57: /* storage_class: KW_CONSTEVAL storage_class */ +#line 1039 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_consteval; } -#line 4773 "built/tmp/cppBison.yxx.c" +#line 4622 "built/tmp/cppBison.yxx.c" break; - case 57: /* storage_class: KW_CONSTEXPR storage_class */ -#line 1027 "dtool/src/cppparser/cppBison.yxx" + case 58: /* storage_class: KW_CONSTEXPR storage_class */ +#line 1043 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr; } -#line 4781 "built/tmp/cppBison.yxx.c" +#line 4630 "built/tmp/cppBison.yxx.c" break; - case 58: /* storage_class: KW_CONSTINIT storage_class */ -#line 1031 "dtool/src/cppparser/cppBison.yxx" + case 59: /* storage_class: KW_CONSTINIT storage_class */ +#line 1047 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constinit; } -#line 4789 "built/tmp/cppBison.yxx.c" +#line 4638 "built/tmp/cppBison.yxx.c" break; - case 59: /* storage_class: KW_BLOCKING storage_class */ -#line 1035 "dtool/src/cppparser/cppBison.yxx" + case 60: /* storage_class: KW_BLOCKING storage_class */ +#line 1051 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking; } -#line 4797 "built/tmp/cppBison.yxx.c" +#line 4646 "built/tmp/cppBison.yxx.c" break; - case 60: /* storage_class: KW_EXTENSION storage_class */ -#line 1039 "dtool/src/cppparser/cppBison.yxx" + case 61: /* storage_class: KW_EXTENSION storage_class */ +#line 1055 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension; } -#line 4805 "built/tmp/cppBison.yxx.c" +#line 4654 "built/tmp/cppBison.yxx.c" break; - case 61: /* storage_class: KW_THREAD_LOCAL storage_class */ -#line 1043 "dtool/src/cppparser/cppBison.yxx" + case 62: /* storage_class: KW_THREAD_LOCAL storage_class */ +#line 1059 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; } -#line 4813 "built/tmp/cppBison.yxx.c" +#line 4662 "built/tmp/cppBison.yxx.c" break; - case 62: /* storage_class: ATTR_LEFT attribute_specifiers ATTR_RIGHT storage_class */ -#line 1047 "dtool/src/cppparser/cppBison.yxx" + case 63: /* optional_attributes: empty */ +#line 1066 "dtool/src/cppparser/cppBison.yxx" { - // Ignore attribute specifiers for now. - (yyval.u.integer) = (yyvsp[0].u.integer); + (yyval.attr_list) = CPPAttributeList(); } -#line 4822 "built/tmp/cppBison.yxx.c" +#line 4670 "built/tmp/cppBison.yxx.c" break; - case 63: /* storage_class: KW_ALIGNAS '(' const_expr ')' storage_class */ -#line 1052 "dtool/src/cppparser/cppBison.yxx" + case 64: /* optional_attributes: ATTR_LEFT attribute_specifiers ATTR_RIGHT optional_attributes */ +#line 1070 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer); + (yyval.attr_list) = (yyvsp[-2].attr_list); + (yyval.attr_list).add_attributes_from((yyvsp[0].attr_list)); } -#line 4830 "built/tmp/cppBison.yxx.c" +#line 4679 "built/tmp/cppBison.yxx.c" break; - case 64: /* storage_class: KW_ALIGNAS '(' type_decl ')' storage_class */ -#line 1056 "dtool/src/cppparser/cppBison.yxx" + case 65: /* optional_attributes: ATTR_LEFT KW_USING name ':' attribute_specifiers ATTR_RIGHT optional_attributes */ +#line 1075 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer); + (yyval.attr_list) = (yyvsp[-2].attr_list); + for (CPPAttributeList::Attribute &attr : (yyval.attr_list)._attributes) { + attr._ident->prepend((yyvsp[-4].u.identifier)); + } + (yyval.attr_list).add_attributes_from((yyvsp[0].attr_list)); } -#line 4838 "built/tmp/cppBison.yxx.c" +#line 4691 "built/tmp/cppBison.yxx.c" break; - case 70: /* $@3: %empty */ -#line 1074 "dtool/src/cppparser/cppBison.yxx" + case 66: /* optional_attributes: KW_ALIGNAS '(' const_expr ')' optional_attributes */ +#line 1083 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.attr_list) = (yyvsp[0].attr_list); + (yyval.attr_list).add_alignas((yyvsp[-2].u.expr)->as_expression()); +} +#line 4700 "built/tmp/cppBison.yxx.c" + break; + + case 67: /* optional_attributes: KW_ALIGNAS '(' type_decl ')' optional_attributes */ +#line 1088 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.attr_list) = (yyvsp[0].attr_list); + (yyval.attr_list).add_alignas((yyvsp[-2].u.decl)->as_type()); +} +#line 4709 "built/tmp/cppBison.yxx.c" + break; + + case 68: /* attribute_specifiers: attribute_specifier */ +#line 1096 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.attr_list) = (yyvsp[0].attr_list); +} +#line 4717 "built/tmp/cppBison.yxx.c" + break; + + case 69: /* attribute_specifiers: attribute_specifier ',' attribute_specifiers */ +#line 1100 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.attr_list) = (yyvsp[-2].attr_list); + (yyval.attr_list).add_attributes_from((yyvsp[0].attr_list)); +} +#line 4726 "built/tmp/cppBison.yxx.c" + break; + + case 70: /* attribute_specifier: name */ +#line 1108 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.attr_list) = CPPAttributeList(); + (yyval.attr_list).add_attribute((yyvsp[0].u.identifier)); +} +#line 4735 "built/tmp/cppBison.yxx.c" + break; + + case 71: /* attribute_specifier: name '(' formal_parameter_list ')' */ +#line 1113 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.attr_list) = CPPAttributeList(); + (yyval.attr_list).add_attribute((yyvsp[-3].u.identifier)); +} +#line 4744 "built/tmp/cppBison.yxx.c" + break; + + case 72: /* $@4: %empty */ +#line 1121 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // type_like_declaration. @@ -4849,19 +4755,19 @@ yyreduce: } push_storage_class((yyvsp[-1].u.integer)); } -#line 4853 "built/tmp/cppBison.yxx.c" +#line 4759 "built/tmp/cppBison.yxx.c" break; - case 71: /* type_like_declaration: storage_class var_type_decl $@3 multiple_instance_identifiers */ -#line 1085 "dtool/src/cppparser/cppBison.yxx" + case 73: /* type_like_declaration: storage_class var_type_decl $@4 multiple_instance_identifiers */ +#line 1132 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } -#line 4861 "built/tmp/cppBison.yxx.c" +#line 4767 "built/tmp/cppBison.yxx.c" break; - case 72: /* type_like_declaration: storage_class type_decl ';' */ -#line 1090 "dtool/src/cppparser/cppBison.yxx" + case 74: /* type_like_declaration: storage_class type_decl ';' */ +#line 1137 "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 @@ -4870,11 +4776,11 @@ yyreduce: current_scope->add_declaration((yyvsp[-1].u.decl), global_scope, current_lexer, (yylsp[-1])); } -#line 4874 "built/tmp/cppBison.yxx.c" +#line 4780 "built/tmp/cppBison.yxx.c" break; - case 73: /* $@4: %empty */ -#line 1099 "dtool/src/cppparser/cppBison.yxx" + case 75: /* $@5: %empty */ +#line 1146 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[0].u.instance) != nullptr) { // Push the scope so that the initializers can make use of things defined @@ -4883,11 +4789,11 @@ yyreduce: (yyvsp[0].u.instance)->_storage_class |= (current_storage_class | (yyvsp[-1].u.integer)); } } -#line 4887 "built/tmp/cppBison.yxx.c" +#line 4793 "built/tmp/cppBison.yxx.c" break; - case 74: /* type_like_declaration: storage_class constructor_prototype $@4 maybe_initialize_or_constructor_body */ -#line 1108 "dtool/src/cppparser/cppBison.yxx" + case 76: /* type_like_declaration: storage_class constructor_prototype $@5 maybe_initialize_or_constructor_body */ +#line 1155 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-2].u.instance) != nullptr) { pop_scope(); @@ -4895,11 +4801,11 @@ yyreduce: (yyvsp[-2].u.instance)->set_initializer((yyvsp[0].u.expr)); } } -#line 4899 "built/tmp/cppBison.yxx.c" +#line 4805 "built/tmp/cppBison.yxx.c" break; - case 75: /* type_like_declaration: storage_class function_prototype maybe_initialize_or_function_body */ -#line 1116 "dtool/src/cppparser/cppBison.yxx" + case 77: /* type_like_declaration: storage_class function_prototype maybe_initialize_or_function_body */ +#line 1163 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-1].u.instance) != nullptr) { (yyvsp[-1].u.instance)->_storage_class |= (current_storage_class | (yyvsp[-2].u.integer)); @@ -4907,41 +4813,43 @@ yyreduce: (yyvsp[-1].u.instance)->set_initializer((yyvsp[0].u.expr)); } } -#line 4911 "built/tmp/cppBison.yxx.c" +#line 4817 "built/tmp/cppBison.yxx.c" break; - case 77: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */ -#line 1132 "dtool/src/cppparser/cppBison.yxx" + case 79: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */ +#line 1179 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); } + (yyvsp[-1].u.inst_ident)->add_attributes(current_attributes); 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 4926 "built/tmp/cppBison.yxx.c" +#line 4833 "built/tmp/cppBison.yxx.c" break; - case 78: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' multiple_instance_identifiers */ -#line 1143 "dtool/src/cppparser/cppBison.yxx" + case 80: /* multiple_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' multiple_instance_identifiers */ +#line 1191 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); } + (yyvsp[-3].u.inst_ident)->add_attributes(current_attributes); 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 4941 "built/tmp/cppBison.yxx.c" +#line 4849 "built/tmp/cppBison.yxx.c" break; - case 79: /* $@5: %empty */ -#line 1158 "dtool/src/cppparser/cppBison.yxx" + case 81: /* $@6: %empty */ +#line 1207 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. @@ -4952,61 +4860,63 @@ yyreduce: } push_storage_class((yyvsp[-1].u.integer)); } -#line 4956 "built/tmp/cppBison.yxx.c" +#line 4864 "built/tmp/cppBison.yxx.c" break; - case 80: /* typedef_declaration: storage_class var_type_decl $@5 typedef_instance_identifiers */ -#line 1169 "dtool/src/cppparser/cppBison.yxx" + case 82: /* typedef_declaration: storage_class var_type_decl $@6 typedef_instance_identifiers */ +#line 1218 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } -#line 4964 "built/tmp/cppBison.yxx.c" +#line 4872 "built/tmp/cppBison.yxx.c" break; - case 81: /* typedef_declaration: storage_class function_prototype maybe_initialize_or_function_body */ -#line 1173 "dtool/src/cppparser/cppBison.yxx" + case 83: /* typedef_declaration: storage_class function_prototype maybe_initialize_or_function_body */ +#line 1222 "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); + CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope, inst->_attributes); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-1])); } } } -#line 4980 "built/tmp/cppBison.yxx.c" +#line 4888 "built/tmp/cppBison.yxx.c" break; - case 82: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */ -#line 1188 "dtool/src/cppparser/cppBison.yxx" + case 84: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body */ +#line 1237 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); } + (yyvsp[-1].u.inst_ident)->add_attributes(current_attributes); 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 4993 "built/tmp/cppBison.yxx.c" +#line 4902 "built/tmp/cppBison.yxx.c" break; - case 83: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' typedef_instance_identifiers */ -#line 1197 "dtool/src/cppparser/cppBison.yxx" + case 85: /* typedef_instance_identifiers: instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' typedef_instance_identifiers */ +#line 1247 "dtool/src/cppparser/cppBison.yxx" { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); } + (yyvsp[-3].u.inst_ident)->add_attributes(current_attributes); 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 5006 "built/tmp/cppBison.yxx.c" +#line 4916 "built/tmp/cppBison.yxx.c" break; - case 84: /* $@6: %empty */ -#line 1211 "dtool/src/cppparser/cppBison.yxx" + case 86: /* $@7: %empty */ +#line 1262 "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), @@ -5019,39 +4929,42 @@ yyreduce: push_scope(scope); } -#line 5023 "built/tmp/cppBison.yxx.c" +#line 4933 "built/tmp/cppBison.yxx.c" break; - case 85: /* constructor_prototype: IDENTIFIER '(' $@6 function_parameter_list ')' function_post */ -#line 1224 "dtool/src/cppparser/cppBison.yxx" + case 87: /* constructor_prototype: IDENTIFIER '(' $@7 function_parameter_list ')' function_post optional_attributes */ +#line 1275 "dtool/src/cppparser/cppBison.yxx" { - CPPScope *scope = (yyvsp[-5].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[-6].u.identifier)->get_scope(current_scope, global_scope); CPPType *type; - std::string simple_name = (yyvsp[-5].u.identifier)->get_simple_name(); + std::string simple_name = (yyvsp[-6].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()) { + } + else if (scope != nullptr && simple_name == scope->get_simple_name()) { // Neither does a constructor. type = new CPPSimpleType(CPPSimpleType::T_void); - } else { + } + 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])); + yywarning("function has no return type, assuming int", (yylsp[-6])); 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)); + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-6].u.identifier)); + ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); + ii->add_attributes(current_attributes); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-6]).file); } -#line 5051 "built/tmp/cppBison.yxx.c" +#line 4964 "built/tmp/cppBison.yxx.c" break; - case 86: /* $@7: %empty */ -#line 1250 "dtool/src/cppparser/cppBison.yxx" + case 88: /* $@8: %empty */ +#line 1304 "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), @@ -5064,29 +4977,30 @@ yyreduce: push_scope(scope); } -#line 5068 "built/tmp/cppBison.yxx.c" +#line 4981 "built/tmp/cppBison.yxx.c" break; - case 87: /* constructor_prototype: TYPENAME_IDENTIFIER '(' IDENTIFIER ')' '(' $@7 function_parameter_list ')' function_post */ -#line 1263 "dtool/src/cppparser/cppBison.yxx" + case 89: /* constructor_prototype: TYPENAME_IDENTIFIER '(' IDENTIFIER ')' '(' $@8 function_parameter_list ')' function_post optional_attributes */ +#line 1317 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); - CPPType *type = (yyvsp[-8].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = (yyvsp[-9].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])); + yyerror(string("internal error resolving type ") + (yyvsp[-9].u.identifier)->get_fully_scoped_name(), (yylsp[-9])); } assert(type != nullptr); - CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-6].u.identifier)); - ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-7].u.identifier)); + ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); + ii->add_attributes(current_attributes); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-8]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-9]).file); } -#line 5086 "built/tmp/cppBison.yxx.c" +#line 5000 "built/tmp/cppBison.yxx.c" break; - case 88: /* $@8: %empty */ -#line 1277 "dtool/src/cppparser/cppBison.yxx" + case 90: /* $@9: %empty */ +#line 1332 "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), @@ -5099,15 +5013,15 @@ yyreduce: push_scope(scope); } -#line 5103 "built/tmp/cppBison.yxx.c" +#line 5017 "built/tmp/cppBison.yxx.c" break; - case 89: /* constructor_prototype: TYPENAME_IDENTIFIER '(' $@8 function_parameter_list ')' function_post */ -#line 1290 "dtool/src/cppparser/cppBison.yxx" + case 91: /* constructor_prototype: TYPENAME_IDENTIFIER '(' $@9 function_parameter_list ')' function_post optional_attributes */ +#line 1345 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type; - if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name()) { + if ((yyvsp[-6].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 { @@ -5116,81 +5030,57 @@ yyreduce: 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)); + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-6].u.identifier)); + ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); + ii->add_attributes(current_attributes); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-6]).file); } -#line 5125 "built/tmp/cppBison.yxx.c" +#line 5040 "built/tmp/cppBison.yxx.c" break; - case 90: /* $@9: %empty */ -#line 1313 "dtool/src/cppparser/cppBison.yxx" + case 92: /* $@10: %empty */ +#line 1369 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } -#line 5133 "built/tmp/cppBison.yxx.c" +#line 5048 "built/tmp/cppBison.yxx.c" break; - case 91: /* function_prototype: '~' name '(' $@9 function_parameter_list ')' function_post */ -#line 1317 "dtool/src/cppparser/cppBison.yxx" + case 93: /* function_prototype: '~' name '(' $@10 function_parameter_list ')' function_post optional_attributes */ +#line 1373 "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])); + if ((yyvsp[-6].u.identifier)->is_scoped()) { + yyerror("Invalid destructor name: ~" + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { CPPIdentifier *ident = - new CPPIdentifier("~" + (yyvsp[-5].u.identifier)->get_simple_name(), (yylsp[-5])); - delete (yyvsp[-5].u.identifier); + new CPPIdentifier("~" + (yyvsp[-6].u.identifier)->get_simple_name(), (yylsp[-6])); + delete (yyvsp[-6].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)); + ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); + ii->add_attributes(current_attributes); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-6]).file); } } -#line 5156 "built/tmp/cppBison.yxx.c" - break; - - case 92: /* $@10: %empty */ -#line 1343 "dtool/src/cppparser/cppBison.yxx" -{ - push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); -} -#line 5164 "built/tmp/cppBison.yxx.c" - break; - - case 93: /* function_prototype: TYPENAME_IDENTIFIER '(' '*' instance_identifier ')' '(' $@10 function_parameter_list ')' function_post maybe_trailing_return_type */ -#line 1347 "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 5182 "built/tmp/cppBison.yxx.c" +#line 5072 "built/tmp/cppBison.yxx.c" break; case 94: /* $@11: %empty */ -#line 1361 "dtool/src/cppparser/cppBison.yxx" +#line 1400 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } -#line 5190 "built/tmp/cppBison.yxx.c" +#line 5080 "built/tmp/cppBison.yxx.c" break; - case 95: /* function_prototype: TYPENAME_IDENTIFIER '(' SCOPING '*' instance_identifier ')' '(' $@11 function_parameter_list ')' function_post maybe_trailing_return_type */ -#line 1365 "dtool/src/cppparser/cppBison.yxx" + case 95: /* function_prototype: TYPENAME_IDENTIFIER '(' '*' instance_identifier ')' '(' $@11 function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type */ +#line 1404 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type = (yyvsp[-11].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -5199,26 +5089,54 @@ yyreduce: } 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)); + CPPInstanceIdentifier *ii = (yyvsp[-8].u.inst_ident); + ii->add_modifier(IIT_pointer); + ii->add_func_modifier((yyvsp[-4].u.param_list), (yyvsp[-2].u.integer), nullptr, (yyvsp[-1].attr_list)); + ii->add_attributes(current_attributes); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-11]).file); } -#line 5208 "built/tmp/cppBison.yxx.c" +#line 5099 "built/tmp/cppBison.yxx.c" break; case 96: /* $@12: %empty */ -#line 1381 "dtool/src/cppparser/cppBison.yxx" +#line 1419 "dtool/src/cppparser/cppBison.yxx" +{ + push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); +} +#line 5107 "built/tmp/cppBison.yxx.c" + break; + + case 97: /* function_prototype: TYPENAME_IDENTIFIER '(' SCOPING '*' instance_identifier ')' '(' $@12 function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type */ +#line 1423 "dtool/src/cppparser/cppBison.yxx" +{ + pop_scope(); + CPPType *type = (yyvsp[-12].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == nullptr) { + yyerror(string("internal error resolving type ") + (yyvsp[-12].u.identifier)->get_fully_scoped_name(), (yylsp[-12])); + } + assert(type != nullptr); + + CPPInstanceIdentifier *ii = (yyvsp[-8].u.inst_ident); + ii->add_scoped_pointer_modifier((yyvsp[-10].u.identifier)); + ii->add_func_modifier((yyvsp[-4].u.param_list), (yyvsp[-2].u.integer), nullptr, (yyvsp[-1].attr_list)); + ii->add_attributes(current_attributes); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-12]).file); +} +#line 5126 "built/tmp/cppBison.yxx.c" + break; + + case 98: /* $@13: %empty */ +#line 1440 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-3].u.identifier) != nullptr) { push_scope((yyvsp[-3].u.identifier)->get_scope(current_scope, global_scope)); } } -#line 5218 "built/tmp/cppBison.yxx.c" +#line 5136 "built/tmp/cppBison.yxx.c" break; - case 97: /* function_prototype: KW_OPERATOR type not_paren_formal_parameter_identifier '(' $@12 function_parameter_list ')' function_post */ -#line 1387 "dtool/src/cppparser/cppBison.yxx" + case 99: /* function_prototype: KW_OPERATOR type not_paren_formal_parameter_identifier '(' $@13 function_parameter_list ')' function_post */ +#line 1446 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-7].u.identifier) != nullptr) { pop_scope(); @@ -5242,22 +5160,23 @@ yyreduce: } (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)); + (yyval.u.instance)->_attributes.add_attributes_from(current_attributes); } -#line 5247 "built/tmp/cppBison.yxx.c" +#line 5166 "built/tmp/cppBison.yxx.c" break; - case 98: /* $@13: %empty */ -#line 1412 "dtool/src/cppparser/cppBison.yxx" + case 100: /* $@14: %empty */ +#line 1472 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-4].u.identifier) != nullptr) { push_scope((yyvsp[-4].u.identifier)->get_scope(current_scope, global_scope)); } } -#line 5257 "built/tmp/cppBison.yxx.c" +#line 5176 "built/tmp/cppBison.yxx.c" break; - case 99: /* function_prototype: KW_OPERATOR KW_CONST type not_paren_formal_parameter_identifier '(' $@13 function_parameter_list ')' function_post */ -#line 1418 "dtool/src/cppparser/cppBison.yxx" + case 101: /* function_prototype: KW_OPERATOR KW_CONST type not_paren_formal_parameter_identifier '(' $@14 function_parameter_list ')' function_post */ +#line 1478 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[-8].u.identifier) != nullptr) { pop_scope(); @@ -5270,14 +5189,15 @@ yyreduce: ident->add_name("operator typecast"); } (yyvsp[-5].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[-5].u.inst_ident)->add_attributes(current_attributes); (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 5277 "built/tmp/cppBison.yxx.c" +#line 5197 "built/tmp/cppBison.yxx.c" break; - case 100: /* function_prototype: IDENTIFIER */ -#line 1438 "dtool/src/cppparser/cppBison.yxx" + case 102: /* function_prototype: IDENTIFIER */ +#line 1499 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *decl = (yyvsp[0].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); @@ -5287,43 +5207,43 @@ yyreduce: (yyval.u.instance) = nullptr; } } -#line 5291 "built/tmp/cppBison.yxx.c" +#line 5211 "built/tmp/cppBison.yxx.c" break; - case 101: /* function_post: empty */ -#line 1451 "dtool/src/cppparser/cppBison.yxx" + case 103: /* function_post: empty */ +#line 1512 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = 0; } -#line 5299 "built/tmp/cppBison.yxx.c" +#line 5219 "built/tmp/cppBison.yxx.c" break; - case 102: /* function_post: function_post KW_CONST */ -#line 1455 "dtool/src/cppparser/cppBison.yxx" + case 104: /* function_post: function_post KW_CONST */ +#line 1516 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; } -#line 5307 "built/tmp/cppBison.yxx.c" +#line 5227 "built/tmp/cppBison.yxx.c" break; - case 103: /* function_post: function_post KW_VOLATILE */ -#line 1459 "dtool/src/cppparser/cppBison.yxx" + case 105: /* function_post: function_post KW_VOLATILE */ +#line 1520 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; } -#line 5315 "built/tmp/cppBison.yxx.c" +#line 5235 "built/tmp/cppBison.yxx.c" break; - case 104: /* function_post: function_post KW_NOEXCEPT */ -#line 1463 "dtool/src/cppparser/cppBison.yxx" + case 106: /* function_post: function_post KW_NOEXCEPT */ +#line 1524 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; } -#line 5323 "built/tmp/cppBison.yxx.c" +#line 5243 "built/tmp/cppBison.yxx.c" break; - case 105: /* function_post: function_post KW_NOEXCEPT_LPAREN const_expr ')' */ -#line 1467 "dtool/src/cppparser/cppBison.yxx" + case 107: /* function_post: function_post KW_NOEXCEPT_LPAREN const_expr ')' */ +#line 1528 "dtool/src/cppparser/cppBison.yxx" { CPPExpression::Result result = (yyvsp[-1].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { @@ -5332,550 +5252,542 @@ yyreduce: (yyval.u.integer) = (yyvsp[-3].u.integer) | (int)CPPFunctionType::F_noexcept; } } -#line 5336 "built/tmp/cppBison.yxx.c" +#line 5256 "built/tmp/cppBison.yxx.c" break; - case 106: /* function_post: function_post KW_FINAL */ -#line 1476 "dtool/src/cppparser/cppBison.yxx" + case 108: /* function_post: function_post KW_FINAL */ +#line 1537 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; } -#line 5344 "built/tmp/cppBison.yxx.c" +#line 5264 "built/tmp/cppBison.yxx.c" break; - case 107: /* function_post: function_post KW_OVERRIDE */ -#line 1480 "dtool/src/cppparser/cppBison.yxx" + case 109: /* function_post: function_post KW_OVERRIDE */ +#line 1541 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; } -#line 5352 "built/tmp/cppBison.yxx.c" +#line 5272 "built/tmp/cppBison.yxx.c" break; - case 108: /* function_post: function_post '&' */ -#line 1484 "dtool/src/cppparser/cppBison.yxx" + case 110: /* function_post: function_post '&' */ +#line 1545 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; } -#line 5360 "built/tmp/cppBison.yxx.c" +#line 5280 "built/tmp/cppBison.yxx.c" break; - case 109: /* function_post: function_post ANDAND */ -#line 1488 "dtool/src/cppparser/cppBison.yxx" + case 111: /* function_post: function_post ANDAND */ +#line 1549 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; } -#line 5368 "built/tmp/cppBison.yxx.c" +#line 5288 "built/tmp/cppBison.yxx.c" break; - case 110: /* function_post: function_post KW_MUTABLE */ -#line 1492 "dtool/src/cppparser/cppBison.yxx" + case 112: /* function_post: function_post KW_MUTABLE */ +#line 1553 "dtool/src/cppparser/cppBison.yxx" { // Used for lambdas, currently ignored. (yyval.u.integer) = (yyvsp[-1].u.integer); } -#line 5377 "built/tmp/cppBison.yxx.c" +#line 5297 "built/tmp/cppBison.yxx.c" break; - case 111: /* function_post: function_post KW_CONSTEXPR */ -#line 1497 "dtool/src/cppparser/cppBison.yxx" + case 113: /* function_post: function_post KW_CONSTEXPR */ +#line 1558 "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 114: /* function_post: function_post KW_THROW '(' ')' */ +#line 1563 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.integer) = (yyvsp[-3].u.integer); +} +#line 5314 "built/tmp/cppBison.yxx.c" + break; + + case 115: /* function_post: function_post KW_THROW '(' name ')' */ +#line 1567 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.integer) = (yyvsp[-4].u.integer); +} +#line 5322 "built/tmp/cppBison.yxx.c" + break; + + case 116: /* function_post: function_post KW_THROW '(' name ELLIPSIS ')' */ +#line 1571 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.integer) = (yyvsp[-5].u.integer); +} +#line 5330 "built/tmp/cppBison.yxx.c" + break; + + case 117: /* function_operator: '!' */ +#line 1578 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "!"; +} +#line 5338 "built/tmp/cppBison.yxx.c" + break; + + case 118: /* function_operator: '~' */ +#line 1582 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "~"; +} +#line 5346 "built/tmp/cppBison.yxx.c" + break; + + case 119: /* function_operator: '*' */ +#line 1586 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "*"; +} +#line 5354 "built/tmp/cppBison.yxx.c" + break; + + case 120: /* function_operator: '/' */ +#line 1590 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "/"; +} +#line 5362 "built/tmp/cppBison.yxx.c" + break; + + case 121: /* function_operator: '%' */ +#line 1594 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "%"; +} +#line 5370 "built/tmp/cppBison.yxx.c" + break; + + case 122: /* function_operator: '+' */ +#line 1598 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "+"; +} +#line 5378 "built/tmp/cppBison.yxx.c" + break; + + case 123: /* function_operator: '-' */ +#line 1602 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.str) = "-"; +} #line 5386 "built/tmp/cppBison.yxx.c" break; - case 112: /* function_post: function_post KW_THROW '(' ')' */ -#line 1502 "dtool/src/cppparser/cppBison.yxx" + case 124: /* function_operator: '|' */ +#line 1606 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-3].u.integer); + (yyval.str) = "|"; } #line 5394 "built/tmp/cppBison.yxx.c" break; - case 113: /* function_post: function_post KW_THROW '(' name ')' */ -#line 1506 "dtool/src/cppparser/cppBison.yxx" + case 125: /* function_operator: '&' */ +#line 1610 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-4].u.integer); + (yyval.str) = "&"; } #line 5402 "built/tmp/cppBison.yxx.c" break; - case 114: /* function_post: function_post KW_THROW '(' name ELLIPSIS ')' */ -#line 1510 "dtool/src/cppparser/cppBison.yxx" + case 126: /* function_operator: '^' */ +#line 1614 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-5].u.integer); + (yyval.str) = "^"; } #line 5410 "built/tmp/cppBison.yxx.c" break; - case 115: /* function_post: function_post ATTR_LEFT attribute_specifiers ATTR_RIGHT */ -#line 1514 "dtool/src/cppparser/cppBison.yxx" + case 127: /* function_operator: OROR */ +#line 1618 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-3].u.integer); + (yyval.str) = "||"; } #line 5418 "built/tmp/cppBison.yxx.c" break; - case 116: /* function_operator: '!' */ -#line 1521 "dtool/src/cppparser/cppBison.yxx" + case 128: /* function_operator: ANDAND */ +#line 1622 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "!"; + (yyval.str) = "&&"; } #line 5426 "built/tmp/cppBison.yxx.c" break; - case 117: /* function_operator: '~' */ -#line 1525 "dtool/src/cppparser/cppBison.yxx" + case 129: /* function_operator: EQCOMPARE */ +#line 1626 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "~"; + (yyval.str) = "=="; } #line 5434 "built/tmp/cppBison.yxx.c" break; - case 118: /* function_operator: '*' */ -#line 1529 "dtool/src/cppparser/cppBison.yxx" + case 130: /* function_operator: NECOMPARE */ +#line 1630 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "*"; + (yyval.str) = "!="; } #line 5442 "built/tmp/cppBison.yxx.c" break; - case 119: /* function_operator: '/' */ -#line 1533 "dtool/src/cppparser/cppBison.yxx" + case 131: /* function_operator: LECOMPARE */ +#line 1634 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "/"; + (yyval.str) = "<="; } #line 5450 "built/tmp/cppBison.yxx.c" break; - case 120: /* function_operator: '%' */ -#line 1537 "dtool/src/cppparser/cppBison.yxx" + case 132: /* function_operator: GECOMPARE */ +#line 1638 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "%"; + (yyval.str) = ">="; } #line 5458 "built/tmp/cppBison.yxx.c" break; - case 121: /* function_operator: '+' */ -#line 1541 "dtool/src/cppparser/cppBison.yxx" + case 133: /* function_operator: '<' */ +#line 1642 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "+"; + (yyval.str) = "<"; } #line 5466 "built/tmp/cppBison.yxx.c" break; - case 122: /* function_operator: '-' */ -#line 1545 "dtool/src/cppparser/cppBison.yxx" + case 134: /* function_operator: '>' */ +#line 1646 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "-"; + (yyval.str) = ">"; } #line 5474 "built/tmp/cppBison.yxx.c" break; - case 123: /* function_operator: '|' */ -#line 1549 "dtool/src/cppparser/cppBison.yxx" + case 135: /* function_operator: SPACESHIP */ +#line 1650 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "|"; + (yyval.str) = "<=>"; } #line 5482 "built/tmp/cppBison.yxx.c" break; - case 124: /* function_operator: '&' */ -#line 1553 "dtool/src/cppparser/cppBison.yxx" + case 136: /* function_operator: LSHIFT */ +#line 1654 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&"; + (yyval.str) = "<<"; } #line 5490 "built/tmp/cppBison.yxx.c" break; - case 125: /* function_operator: '^' */ -#line 1557 "dtool/src/cppparser/cppBison.yxx" + case 137: /* function_operator: RSHIFT */ +#line 1658 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "^"; + (yyval.str) = ">>"; } #line 5498 "built/tmp/cppBison.yxx.c" break; - case 126: /* function_operator: OROR */ -#line 1561 "dtool/src/cppparser/cppBison.yxx" + case 138: /* function_operator: '=' */ +#line 1662 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "||"; + (yyval.str) = "="; } #line 5506 "built/tmp/cppBison.yxx.c" break; - case 127: /* function_operator: ANDAND */ -#line 1565 "dtool/src/cppparser/cppBison.yxx" + case 139: /* function_operator: ',' */ +#line 1666 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&&"; + (yyval.str) = ","; } #line 5514 "built/tmp/cppBison.yxx.c" break; - case 128: /* function_operator: EQCOMPARE */ -#line 1569 "dtool/src/cppparser/cppBison.yxx" + case 140: /* function_operator: PLUSPLUS */ +#line 1670 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "=="; + (yyval.str) = "++"; } #line 5522 "built/tmp/cppBison.yxx.c" break; - case 129: /* function_operator: NECOMPARE */ -#line 1573 "dtool/src/cppparser/cppBison.yxx" + case 141: /* function_operator: MINUSMINUS */ +#line 1674 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "!="; + (yyval.str) = "--"; } #line 5530 "built/tmp/cppBison.yxx.c" break; - case 130: /* function_operator: LECOMPARE */ -#line 1577 "dtool/src/cppparser/cppBison.yxx" + case 142: /* function_operator: TIMESEQUAL */ +#line 1678 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<="; + (yyval.str) = "*="; } #line 5538 "built/tmp/cppBison.yxx.c" break; - case 131: /* function_operator: GECOMPARE */ -#line 1581 "dtool/src/cppparser/cppBison.yxx" + case 143: /* function_operator: DIVIDEEQUAL */ +#line 1682 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">="; + (yyval.str) = "/="; } #line 5546 "built/tmp/cppBison.yxx.c" break; - case 132: /* function_operator: '<' */ -#line 1585 "dtool/src/cppparser/cppBison.yxx" + case 144: /* function_operator: MODEQUAL */ +#line 1686 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<"; + (yyval.str) = "%="; } #line 5554 "built/tmp/cppBison.yxx.c" break; - case 133: /* function_operator: '>' */ -#line 1589 "dtool/src/cppparser/cppBison.yxx" + case 145: /* function_operator: PLUSEQUAL */ +#line 1690 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">"; + (yyval.str) = "+="; } #line 5562 "built/tmp/cppBison.yxx.c" break; - case 134: /* function_operator: SPACESHIP */ -#line 1593 "dtool/src/cppparser/cppBison.yxx" + case 146: /* function_operator: MINUSEQUAL */ +#line 1694 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<=>"; + (yyval.str) = "-="; } #line 5570 "built/tmp/cppBison.yxx.c" break; - case 135: /* function_operator: LSHIFT */ -#line 1597 "dtool/src/cppparser/cppBison.yxx" + case 147: /* function_operator: OREQUAL */ +#line 1698 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<<"; + (yyval.str) = "|="; } #line 5578 "built/tmp/cppBison.yxx.c" break; - case 136: /* function_operator: RSHIFT */ -#line 1601 "dtool/src/cppparser/cppBison.yxx" + case 148: /* function_operator: ANDEQUAL */ +#line 1702 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">>"; + (yyval.str) = "&="; } #line 5586 "built/tmp/cppBison.yxx.c" break; - case 137: /* function_operator: '=' */ -#line 1605 "dtool/src/cppparser/cppBison.yxx" + case 149: /* function_operator: XOREQUAL */ +#line 1706 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "="; + (yyval.str) = "^="; } #line 5594 "built/tmp/cppBison.yxx.c" break; - case 138: /* function_operator: ',' */ -#line 1609 "dtool/src/cppparser/cppBison.yxx" + case 150: /* function_operator: LSHIFTEQUAL */ +#line 1710 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ","; + (yyval.str) = "<<="; } #line 5602 "built/tmp/cppBison.yxx.c" break; - case 139: /* function_operator: PLUSPLUS */ -#line 1613 "dtool/src/cppparser/cppBison.yxx" + case 151: /* function_operator: RSHIFTEQUAL */ +#line 1714 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "++"; + (yyval.str) = ">>="; } #line 5610 "built/tmp/cppBison.yxx.c" break; - case 140: /* function_operator: MINUSMINUS */ -#line 1617 "dtool/src/cppparser/cppBison.yxx" + case 152: /* function_operator: POINTSAT */ +#line 1718 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "--"; + (yyval.str) = "->"; } #line 5618 "built/tmp/cppBison.yxx.c" break; - case 141: /* function_operator: TIMESEQUAL */ -#line 1621 "dtool/src/cppparser/cppBison.yxx" + case 153: /* function_operator: '[' ']' */ +#line 1722 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "*="; + (yyval.str) = "[]"; } #line 5626 "built/tmp/cppBison.yxx.c" break; - case 142: /* function_operator: DIVIDEEQUAL */ -#line 1625 "dtool/src/cppparser/cppBison.yxx" + case 154: /* function_operator: '(' ')' */ +#line 1726 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "/="; + (yyval.str) = "()"; } #line 5634 "built/tmp/cppBison.yxx.c" break; - case 143: /* function_operator: MODEQUAL */ -#line 1629 "dtool/src/cppparser/cppBison.yxx" + case 155: /* function_operator: KW_NEW */ +#line 1730 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "%="; + (yyval.str) = "new"; } #line 5642 "built/tmp/cppBison.yxx.c" break; - case 144: /* function_operator: PLUSEQUAL */ -#line 1633 "dtool/src/cppparser/cppBison.yxx" + case 156: /* function_operator: KW_DELETE */ +#line 1734 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "+="; + (yyval.str) = "delete"; } #line 5650 "built/tmp/cppBison.yxx.c" break; - case 145: /* function_operator: MINUSEQUAL */ -#line 1637 "dtool/src/cppparser/cppBison.yxx" + case 161: /* $@15: %empty */ +#line 1748 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "-="; + push_scope(new CPPTemplateScope(current_scope)); } #line 5658 "built/tmp/cppBison.yxx.c" break; - case 146: /* function_operator: OREQUAL */ -#line 1641 "dtool/src/cppparser/cppBison.yxx" + case 162: /* template_declaration: KW_TEMPLATE $@15 '<' template_formal_parameters '>' more_template_declaration */ +#line 1752 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "|="; + pop_scope(); } #line 5666 "built/tmp/cppBison.yxx.c" break; - case 147: /* function_operator: ANDEQUAL */ -#line 1645 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "&="; -} -#line 5674 "built/tmp/cppBison.yxx.c" - break; - - case 148: /* function_operator: XOREQUAL */ -#line 1649 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "^="; -} -#line 5682 "built/tmp/cppBison.yxx.c" - break; - - case 149: /* function_operator: LSHIFTEQUAL */ -#line 1653 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "<<="; -} -#line 5690 "built/tmp/cppBison.yxx.c" - break; - - case 150: /* function_operator: RSHIFTEQUAL */ -#line 1657 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = ">>="; -} -#line 5698 "built/tmp/cppBison.yxx.c" - break; - - case 151: /* function_operator: POINTSAT */ -#line 1661 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "->"; -} -#line 5706 "built/tmp/cppBison.yxx.c" - break; - - case 152: /* function_operator: '[' ']' */ -#line 1665 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "[]"; -} -#line 5714 "built/tmp/cppBison.yxx.c" - break; - - case 153: /* function_operator: '(' ')' */ -#line 1669 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "()"; -} -#line 5722 "built/tmp/cppBison.yxx.c" - break; - - case 154: /* function_operator: KW_NEW */ -#line 1673 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "new"; -} -#line 5730 "built/tmp/cppBison.yxx.c" - break; - - case 155: /* function_operator: KW_DELETE */ -#line 1677 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.str) = "delete"; -} -#line 5738 "built/tmp/cppBison.yxx.c" - break; - - case 160: /* $@14: %empty */ -#line 1691 "dtool/src/cppparser/cppBison.yxx" -{ - push_scope(new CPPTemplateScope(current_scope)); -} -#line 5746 "built/tmp/cppBison.yxx.c" - break; - - case 161: /* template_declaration: KW_TEMPLATE $@14 '<' template_formal_parameters '>' more_template_declaration */ -#line 1695 "dtool/src/cppparser/cppBison.yxx" -{ - pop_scope(); -} -#line 5754 "built/tmp/cppBison.yxx.c" - break; - - case 166: /* template_nonempty_formal_parameters: template_formal_parameter */ -#line 1709 "dtool/src/cppparser/cppBison.yxx" + case 167: /* template_nonempty_formal_parameters: template_formal_parameter */ +#line 1766 "dtool/src/cppparser/cppBison.yxx" { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != nullptr); ts->add_template_parameter((yyvsp[0].u.decl)); } -#line 5764 "built/tmp/cppBison.yxx.c" +#line 5676 "built/tmp/cppBison.yxx.c" break; - case 167: /* template_nonempty_formal_parameters: template_nonempty_formal_parameters ',' template_formal_parameter */ -#line 1715 "dtool/src/cppparser/cppBison.yxx" + case 168: /* template_nonempty_formal_parameters: template_nonempty_formal_parameters ',' template_formal_parameter */ +#line 1772 "dtool/src/cppparser/cppBison.yxx" { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != nullptr); ts->add_template_parameter((yyvsp[0].u.decl)); } -#line 5774 "built/tmp/cppBison.yxx.c" +#line 5686 "built/tmp/cppBison.yxx.c" break; - case 170: /* template_formal_parameter: typename_keyword */ -#line 1729 "dtool/src/cppparser/cppBison.yxx" + case 171: /* template_formal_parameter: typename_keyword */ +#line 1786 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter(nullptr)); } -#line 5782 "built/tmp/cppBison.yxx.c" +#line 5694 "built/tmp/cppBison.yxx.c" break; - case 171: /* template_formal_parameter: typename_keyword name */ -#line 1733 "dtool/src/cppparser/cppBison.yxx" + case 172: /* template_formal_parameter: typename_keyword name */ +#line 1790 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); } -#line 5790 "built/tmp/cppBison.yxx.c" +#line 5702 "built/tmp/cppBison.yxx.c" break; - case 172: /* template_formal_parameter: typename_keyword name '=' full_type */ -#line 1737 "dtool/src/cppparser/cppBison.yxx" + case 173: /* template_formal_parameter: typename_keyword name '=' full_type */ +#line 1794 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[-2].u.identifier), (yyvsp[0].u.type))); } -#line 5798 "built/tmp/cppBison.yxx.c" +#line 5710 "built/tmp/cppBison.yxx.c" break; - case 173: /* template_formal_parameter: typename_keyword ELLIPSIS */ -#line 1741 "dtool/src/cppparser/cppBison.yxx" + case 174: /* template_formal_parameter: typename_keyword ELLIPSIS */ +#line 1798 "dtool/src/cppparser/cppBison.yxx" { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter(nullptr); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } -#line 5808 "built/tmp/cppBison.yxx.c" +#line 5720 "built/tmp/cppBison.yxx.c" break; - case 174: /* template_formal_parameter: typename_keyword ELLIPSIS name */ -#line 1747 "dtool/src/cppparser/cppBison.yxx" + case 175: /* template_formal_parameter: typename_keyword ELLIPSIS name */ +#line 1804 "dtool/src/cppparser/cppBison.yxx" { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[0].u.identifier)); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } -#line 5818 "built/tmp/cppBison.yxx.c" +#line 5730 "built/tmp/cppBison.yxx.c" break; - case 175: /* template_formal_parameter: template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */ -#line 1753 "dtool/src/cppparser/cppBison.yxx" + case 176: /* template_formal_parameter: template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */ +#line 1810 "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 5828 "built/tmp/cppBison.yxx.c" +#line 5740 "built/tmp/cppBison.yxx.c" break; - case 176: /* template_formal_parameter: KW_CONST template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */ -#line 1759 "dtool/src/cppparser/cppBison.yxx" + case 177: /* template_formal_parameter: KW_CONST template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize */ +#line 1816 "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 5839 "built/tmp/cppBison.yxx.c" +#line 5751 "built/tmp/cppBison.yxx.c" break; - case 177: /* template_formal_parameter: template_formal_parameter_type parameter_pack_identifier */ -#line 1766 "dtool/src/cppparser/cppBison.yxx" + case 178: /* template_formal_parameter: template_formal_parameter_type parameter_pack_identifier */ +#line 1823 "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 5848 "built/tmp/cppBison.yxx.c" +#line 5760 "built/tmp/cppBison.yxx.c" break; - case 178: /* template_formal_parameter: KW_CONST template_formal_parameter_type parameter_pack_identifier */ -#line 1771 "dtool/src/cppparser/cppBison.yxx" + case 179: /* template_formal_parameter: KW_CONST template_formal_parameter_type parameter_pack_identifier */ +#line 1828 "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 5858 "built/tmp/cppBison.yxx.c" +#line 5770 "built/tmp/cppBison.yxx.c" break; - case 179: /* template_formal_parameter_type: simple_type */ -#line 1780 "dtool/src/cppparser/cppBison.yxx" + case 180: /* template_formal_parameter_type: simple_type */ +#line 1837 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 5866 "built/tmp/cppBison.yxx.c" +#line 5778 "built/tmp/cppBison.yxx.c" break; - case 180: /* template_formal_parameter_type: IDENTIFIER */ -#line 1784 "dtool/src/cppparser/cppBison.yxx" + case 181: /* template_formal_parameter_type: IDENTIFIER */ +#line 1841 "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 5875 "built/tmp/cppBison.yxx.c" +#line 5787 "built/tmp/cppBison.yxx.c" break; - case 181: /* template_formal_parameter_type: TYPENAME_IDENTIFIER */ -#line 1789 "dtool/src/cppparser/cppBison.yxx" + case 182: /* template_formal_parameter_type: TYPENAME_IDENTIFIER */ +#line 1846 "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) { @@ -5883,11 +5795,11 @@ yyreduce: } assert((yyval.u.type) != nullptr); } -#line 5887 "built/tmp/cppBison.yxx.c" +#line 5799 "built/tmp/cppBison.yxx.c" break; - case 182: /* template_formal_parameter_type: TYPEPACK_IDENTIFIER */ -#line 1797 "dtool/src/cppparser/cppBison.yxx" + case 183: /* template_formal_parameter_type: TYPEPACK_IDENTIFIER */ +#line 1854 "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) { @@ -5895,128 +5807,128 @@ yyreduce: } assert((yyval.u.type) != nullptr); } -#line 5899 "built/tmp/cppBison.yxx.c" +#line 5811 "built/tmp/cppBison.yxx.c" break; - case 183: /* instance_identifier: name_no_final */ -#line 1809 "dtool/src/cppparser/cppBison.yxx" + case 184: /* instance_identifier: name_no_final optional_attributes */ +#line 1866 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier), (yyvsp[0].attr_list)); } -#line 5907 "built/tmp/cppBison.yxx.c" +#line 5819 "built/tmp/cppBison.yxx.c" break; - case 184: /* instance_identifier: KW_OPERATOR function_operator */ -#line 1813 "dtool/src/cppparser/cppBison.yxx" + case 185: /* instance_identifier: KW_OPERATOR function_operator optional_attributes */ +#line 1870 "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 5925 "built/tmp/cppBison.yxx.c" - break; - - case 185: /* instance_identifier: KW_OPERATOR SIMPLE_STRING IDENTIFIER */ -#line 1827 "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])); + ident = new CPPIdentifier("operator "+(yyvsp[-1].str), (yylsp[-1])); } else { - ident->_names.push_back("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name()); + ident->_names.push_back("operator "+(yyvsp[-1].str)); } - (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); + (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident, (yyvsp[0].attr_list)); } -#line 5944 "built/tmp/cppBison.yxx.c" +#line 5837 "built/tmp/cppBison.yxx.c" break; - case 186: /* instance_identifier: KW_CONST instance_identifier */ -#line 1842 "dtool/src/cppparser/cppBison.yxx" + case 186: /* instance_identifier: KW_OPERATOR SIMPLE_STRING IDENTIFIER optional_attributes */ +#line 1884 "dtool/src/cppparser/cppBison.yxx" +{ + // A C++11 literal operator. + if (!(yyvsp[-2].str).empty()) { + yyerror("expected empty string", (yylsp[-2])); + } + CPPIdentifier *ident = (yyvsp[-3].u.identifier); + if (ident == nullptr) { + ident = new CPPIdentifier("operator \"\" "+(yyvsp[-1].u.identifier)->get_simple_name(), (yylsp[-1])); + } else { + ident->_names.push_back("operator \"\" "+(yyvsp[-1].u.identifier)->get_simple_name()); + } + + (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident, (yyvsp[0].attr_list)); +} +#line 5856 "built/tmp/cppBison.yxx.c" + break; + + case 187: /* instance_identifier: KW_CONST instance_identifier */ +#line 1899 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 5953 "built/tmp/cppBison.yxx.c" +#line 5865 "built/tmp/cppBison.yxx.c" break; - case 187: /* instance_identifier: KW_VOLATILE instance_identifier */ -#line 1847 "dtool/src/cppparser/cppBison.yxx" + case 188: /* instance_identifier: KW_VOLATILE instance_identifier */ +#line 1904 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 5962 "built/tmp/cppBison.yxx.c" +#line 5874 "built/tmp/cppBison.yxx.c" break; - case 188: /* instance_identifier: '*' instance_identifier */ -#line 1852 "dtool/src/cppparser/cppBison.yxx" + case 189: /* instance_identifier: '*' optional_attributes instance_identifier */ +#line 1909 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-1].attr_list)); } -#line 5971 "built/tmp/cppBison.yxx.c" +#line 5883 "built/tmp/cppBison.yxx.c" break; - case 189: /* instance_identifier: '&' instance_identifier */ -#line 1857 "dtool/src/cppparser/cppBison.yxx" + case 190: /* instance_identifier: '&' optional_attributes instance_identifier */ +#line 1914 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-1].attr_list)); } -#line 5980 "built/tmp/cppBison.yxx.c" +#line 5892 "built/tmp/cppBison.yxx.c" break; - case 190: /* instance_identifier: ANDAND instance_identifier */ -#line 1862 "dtool/src/cppparser/cppBison.yxx" + case 191: /* instance_identifier: ANDAND optional_attributes instance_identifier */ +#line 1919 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-1].attr_list)); } -#line 5989 "built/tmp/cppBison.yxx.c" +#line 5901 "built/tmp/cppBison.yxx.c" break; - case 191: /* instance_identifier: SCOPING '*' instance_identifier */ -#line 1867 "dtool/src/cppparser/cppBison.yxx" + case 192: /* instance_identifier: SCOPING '*' optional_attributes instance_identifier */ +#line 1924 "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)); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier), (yyvsp[-1].attr_list)); } -#line 5998 "built/tmp/cppBison.yxx.c" +#line 5910 "built/tmp/cppBison.yxx.c" break; - case 192: /* instance_identifier: instance_identifier '[' optional_const_expr ']' */ -#line 1872 "dtool/src/cppparser/cppBison.yxx" + case 193: /* instance_identifier: instance_identifier '[' optional_const_expr ']' optional_attributes */ +#line 1929 "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)); + (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr), (yyvsp[0].attr_list)); } -#line 6007 "built/tmp/cppBison.yxx.c" +#line 5919 "built/tmp/cppBison.yxx.c" break; - case 193: /* instance_identifier: '(' instance_identifier ')' */ -#line 1877 "dtool/src/cppparser/cppBison.yxx" + case 194: /* instance_identifier: '(' instance_identifier ')' */ +#line 1934 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } -#line 6016 "built/tmp/cppBison.yxx.c" +#line 5928 "built/tmp/cppBison.yxx.c" break; - case 194: /* $@15: %empty */ -#line 1882 "dtool/src/cppparser/cppBison.yxx" + case 195: /* $@16: %empty */ +#line 1939 "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), @@ -6029,29 +5941,29 @@ yyreduce: push_scope(scope); } -#line 6033 "built/tmp/cppBison.yxx.c" +#line 5945 "built/tmp/cppBison.yxx.c" break; - case 195: /* instance_identifier: instance_identifier '(' $@15 formal_parameter_list ')' function_post */ -#line 1895 "dtool/src/cppparser/cppBison.yxx" + case 196: /* instance_identifier: instance_identifier '(' $@16 formal_parameter_list ')' function_post optional_attributes */ +#line 1952 "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) { + (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); + if ((yyvsp[-3].u.param_list)->is_parameter_expr() && (yyvsp[-1].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 { + (yyval.u.inst_ident)->add_initializer_modifier((yyvsp[-3].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)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); } } -#line 6051 "built/tmp/cppBison.yxx.c" +#line 5963 "built/tmp/cppBison.yxx.c" break; - case 196: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier maybe_trailing_return_type */ -#line 1913 "dtool/src/cppparser/cppBison.yxx" + case 197: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier maybe_trailing_return_type */ +#line 1970 "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 @@ -6061,689 +5973,777 @@ yyreduce: } (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); } -#line 6065 "built/tmp/cppBison.yxx.c" +#line 5977 "built/tmp/cppBison.yxx.c" break; - case 197: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier ':' const_expr */ -#line 1923 "dtool/src/cppparser/cppBison.yxx" + case 198: /* instance_identifier_and_maybe_trailing_return_type: instance_identifier ':' const_expr */ +#line 1980 "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 6075 "built/tmp/cppBison.yxx.c" +#line 5987 "built/tmp/cppBison.yxx.c" break; - case 198: /* maybe_trailing_return_type: empty */ -#line 1933 "dtool/src/cppparser/cppBison.yxx" + case 199: /* maybe_trailing_return_type: empty */ +#line 1990 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = nullptr; } -#line 6083 "built/tmp/cppBison.yxx.c" +#line 5995 "built/tmp/cppBison.yxx.c" break; - case 199: /* maybe_trailing_return_type: POINTSAT predefined_type empty_instance_identifier */ -#line 1937 "dtool/src/cppparser/cppBison.yxx" + case 200: /* maybe_trailing_return_type: POINTSAT predefined_type empty_instance_identifier */ +#line 1994 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 6091 "built/tmp/cppBison.yxx.c" +#line 6003 "built/tmp/cppBison.yxx.c" break; - case 200: /* maybe_trailing_return_type: POINTSAT KW_CONST predefined_type empty_instance_identifier */ -#line 1941 "dtool/src/cppparser/cppBison.yxx" + case 201: /* maybe_trailing_return_type: POINTSAT KW_CONST predefined_type empty_instance_identifier */ +#line 1998 "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 6100 "built/tmp/cppBison.yxx.c" +#line 6012 "built/tmp/cppBison.yxx.c" break; - case 201: /* maybe_comma_identifier: empty */ -#line 1950 "dtool/src/cppparser/cppBison.yxx" + case 202: /* maybe_comma_identifier: empty */ +#line 2007 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = nullptr; } -#line 6108 "built/tmp/cppBison.yxx.c" +#line 6020 "built/tmp/cppBison.yxx.c" break; - case 202: /* maybe_comma_identifier: ',' IDENTIFIER */ -#line 1954 "dtool/src/cppparser/cppBison.yxx" + case 203: /* maybe_comma_identifier: ',' IDENTIFIER */ +#line 2011 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 6116 "built/tmp/cppBison.yxx.c" +#line 6028 "built/tmp/cppBison.yxx.c" break; - case 203: /* function_parameter_list: empty */ -#line 1962 "dtool/src/cppparser/cppBison.yxx" + case 204: /* function_parameter_list: empty */ +#line 2019 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; } -#line 6124 "built/tmp/cppBison.yxx.c" +#line 6036 "built/tmp/cppBison.yxx.c" break; - case 204: /* function_parameter_list: ELLIPSIS */ -#line 1966 "dtool/src/cppparser/cppBison.yxx" + case 205: /* function_parameter_list: ELLIPSIS */ +#line 2023 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_includes_ellipsis = true; } -#line 6133 "built/tmp/cppBison.yxx.c" +#line 6045 "built/tmp/cppBison.yxx.c" break; - case 205: /* function_parameter_list: function_parameters */ -#line 1971 "dtool/src/cppparser/cppBison.yxx" + case 206: /* function_parameter_list: function_parameters */ +#line 2028 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[0].u.param_list); } +#line 6053 "built/tmp/cppBison.yxx.c" + break; + + case 207: /* function_parameter_list: function_parameters ',' ELLIPSIS */ +#line 2032 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 6062 "built/tmp/cppBison.yxx.c" + break; + + case 208: /* function_parameter_list: function_parameters ELLIPSIS */ +#line 2037 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = (yyvsp[-1].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 6071 "built/tmp/cppBison.yxx.c" + break; + + case 209: /* function_parameters: function_parameter */ +#line 2045 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); +} +#line 6080 "built/tmp/cppBison.yxx.c" + break; + + case 210: /* function_parameters: function_parameters ',' function_parameter */ +#line 2050 "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 6089 "built/tmp/cppBison.yxx.c" + break; + + case 211: /* formal_parameter_list: empty */ +#line 2058 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = new CPPParameterList; +} +#line 6097 "built/tmp/cppBison.yxx.c" + break; + + case 212: /* formal_parameter_list: ELLIPSIS */ +#line 2062 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 6106 "built/tmp/cppBison.yxx.c" + break; + + case 213: /* formal_parameter_list: formal_parameters */ +#line 2067 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = (yyvsp[0].u.param_list); +} +#line 6114 "built/tmp/cppBison.yxx.c" + break; + + case 214: /* formal_parameter_list: formal_parameters ',' ELLIPSIS */ +#line 2071 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 6123 "built/tmp/cppBison.yxx.c" + break; + + case 215: /* formal_parameter_list: formal_parameters ELLIPSIS */ +#line 2076 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = (yyvsp[-1].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 6132 "built/tmp/cppBison.yxx.c" + break; + + case 216: /* formal_parameters: formal_parameter */ +#line 2084 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); +} #line 6141 "built/tmp/cppBison.yxx.c" break; - case 206: /* function_parameter_list: function_parameters ',' ELLIPSIS */ -#line 1975 "dtool/src/cppparser/cppBison.yxx" + case 217: /* formal_parameters: formal_parameters ',' formal_parameter */ +#line 2089 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } #line 6150 "built/tmp/cppBison.yxx.c" break; - case 207: /* function_parameter_list: function_parameters ELLIPSIS */ -#line 1980 "dtool/src/cppparser/cppBison.yxx" + case 218: /* template_parameter_maybe_initialize: empty */ +#line 2097 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-1].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.expr) = nullptr; } -#line 6159 "built/tmp/cppBison.yxx.c" +#line 6158 "built/tmp/cppBison.yxx.c" break; - case 208: /* function_parameters: function_parameter */ -#line 1988 "dtool/src/cppparser/cppBison.yxx" + case 219: /* template_parameter_maybe_initialize: '=' no_angle_bracket_const_expr */ +#line 2101 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 6168 "built/tmp/cppBison.yxx.c" +#line 6166 "built/tmp/cppBison.yxx.c" break; - case 209: /* function_parameters: function_parameters ',' function_parameter */ -#line 1993 "dtool/src/cppparser/cppBison.yxx" + case 220: /* maybe_initialize: empty */ +#line 2108 "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)); + (yyval.u.expr) = nullptr; } -#line 6177 "built/tmp/cppBison.yxx.c" +#line 6174 "built/tmp/cppBison.yxx.c" break; - case 210: /* formal_parameter_list: empty */ -#line 2001 "dtool/src/cppparser/cppBison.yxx" + case 221: /* maybe_initialize: '=' const_expr */ +#line 2112 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 6185 "built/tmp/cppBison.yxx.c" +#line 6182 "built/tmp/cppBison.yxx.c" break; - case 211: /* formal_parameter_list: ELLIPSIS */ -#line 2005 "dtool/src/cppparser/cppBison.yxx" + case 222: /* maybe_initialize_or_constructor_body: ';' */ +#line 2119 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.expr) = nullptr; } -#line 6194 "built/tmp/cppBison.yxx.c" +#line 6190 "built/tmp/cppBison.yxx.c" break; - case 212: /* formal_parameter_list: formal_parameters */ -#line 2010 "dtool/src/cppparser/cppBison.yxx" + case 223: /* maybe_initialize_or_constructor_body: '{' code '}' */ +#line 2123 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[0].u.param_list); + (yyval.u.expr) = nullptr; } -#line 6202 "built/tmp/cppBison.yxx.c" +#line 6198 "built/tmp/cppBison.yxx.c" break; - case 213: /* formal_parameter_list: formal_parameters ',' ELLIPSIS */ -#line 2014 "dtool/src/cppparser/cppBison.yxx" + case 224: /* maybe_initialize_or_constructor_body: ':' constructor_inits '{' code '}' */ +#line 2127 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.expr) = nullptr; } -#line 6211 "built/tmp/cppBison.yxx.c" +#line 6206 "built/tmp/cppBison.yxx.c" break; - case 214: /* formal_parameter_list: formal_parameters ELLIPSIS */ -#line 2019 "dtool/src/cppparser/cppBison.yxx" + case 225: /* maybe_initialize_or_constructor_body: '=' KW_DEFAULT ';' */ +#line 2131 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-1].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } -#line 6220 "built/tmp/cppBison.yxx.c" +#line 6214 "built/tmp/cppBison.yxx.c" break; - case 215: /* formal_parameters: formal_parameter */ -#line 2027 "dtool/src/cppparser/cppBison.yxx" + case 226: /* maybe_initialize_or_constructor_body: '=' KW_DELETE ';' */ +#line 2135 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } -#line 6229 "built/tmp/cppBison.yxx.c" +#line 6222 "built/tmp/cppBison.yxx.c" break; - case 216: /* formal_parameters: formal_parameters ',' formal_parameter */ -#line 2032 "dtool/src/cppparser/cppBison.yxx" + case 227: /* maybe_initialize_or_function_body: ';' */ +#line 2142 "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)); + (yyval.u.expr) = nullptr; +} +#line 6230 "built/tmp/cppBison.yxx.c" + break; + + case 228: /* maybe_initialize_or_function_body: '{' code '}' */ +#line 2146 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.expr) = nullptr; } #line 6238 "built/tmp/cppBison.yxx.c" break; - case 217: /* template_parameter_maybe_initialize: empty */ -#line 2040 "dtool/src/cppparser/cppBison.yxx" + case 229: /* maybe_initialize_or_function_body: '=' const_expr ';' */ +#line 2150 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyval.u.expr) = (yyvsp[-1].u.expr); } #line 6246 "built/tmp/cppBison.yxx.c" break; - case 218: /* template_parameter_maybe_initialize: '=' no_angle_bracket_const_expr */ -#line 2044 "dtool/src/cppparser/cppBison.yxx" + case 230: /* maybe_initialize_or_function_body: '=' KW_DEFAULT ';' */ +#line 2154 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } #line 6254 "built/tmp/cppBison.yxx.c" break; - case 219: /* maybe_initialize: empty */ -#line 2051 "dtool/src/cppparser/cppBison.yxx" + case 231: /* maybe_initialize_or_function_body: '=' KW_DELETE ';' */ +#line 2158 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } #line 6262 "built/tmp/cppBison.yxx.c" break; - case 220: /* maybe_initialize: '=' const_expr */ -#line 2055 "dtool/src/cppparser/cppBison.yxx" + case 232: /* maybe_initialize_or_function_body: '=' '{' structure_init '}' */ +#line 2162 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = nullptr; } #line 6270 "built/tmp/cppBison.yxx.c" break; - case 221: /* maybe_initialize_or_constructor_body: ';' */ -#line 2062 "dtool/src/cppparser/cppBison.yxx" + case 236: /* structure_init_body: const_expr */ +#line 2175 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; } -#line 6278 "built/tmp/cppBison.yxx.c" +#line 6277 "built/tmp/cppBison.yxx.c" break; - case 222: /* maybe_initialize_or_constructor_body: '{' code '}' */ -#line 2066 "dtool/src/cppparser/cppBison.yxx" + case 240: /* function_parameter: optional_attributes type formal_parameter_identifier maybe_initialize */ +#line 2184 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyvsp[-1].u.inst_ident)->add_attributes((yyvsp[-3].attr_list)); + (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 6286 "built/tmp/cppBison.yxx.c" +#line 6287 "built/tmp/cppBison.yxx.c" break; - case 223: /* maybe_initialize_or_constructor_body: ':' constructor_inits '{' code '}' */ -#line 2070 "dtool/src/cppparser/cppBison.yxx" + case 241: /* function_parameter: optional_attributes KW_CONST type formal_parameter_identifier maybe_initialize */ +#line 2190 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyvsp[-1].u.inst_ident)->add_attributes((yyvsp[-4].attr_list)); + (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 6294 "built/tmp/cppBison.yxx.c" +#line 6298 "built/tmp/cppBison.yxx.c" break; - case 224: /* maybe_initialize_or_constructor_body: '=' KW_DEFAULT ';' */ -#line 2074 "dtool/src/cppparser/cppBison.yxx" + case 242: /* function_parameter: optional_attributes KW_CONST KW_REGISTER type formal_parameter_identifier maybe_initialize */ +#line 2197 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); + (yyvsp[-1].u.inst_ident)->add_attributes((yyvsp[-5].attr_list)); + (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 6302 "built/tmp/cppBison.yxx.c" +#line 6309 "built/tmp/cppBison.yxx.c" break; - case 225: /* maybe_initialize_or_constructor_body: '=' KW_DELETE ';' */ -#line 2078 "dtool/src/cppparser/cppBison.yxx" + case 243: /* function_parameter: optional_attributes type_pack parameter_pack_identifier maybe_initialize */ +#line 2204 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); + (yyvsp[-1].u.inst_ident)->add_attributes((yyvsp[-3].attr_list)); + (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 6310 "built/tmp/cppBison.yxx.c" +#line 6319 "built/tmp/cppBison.yxx.c" break; - case 226: /* maybe_initialize_or_function_body: ';' */ -#line 2085 "dtool/src/cppparser/cppBison.yxx" + case 244: /* function_parameter: optional_attributes KW_CONST type_pack parameter_pack_identifier maybe_initialize */ +#line 2210 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyvsp[-1].u.inst_ident)->add_attributes((yyvsp[-4].attr_list)); + (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 6318 "built/tmp/cppBison.yxx.c" +#line 6330 "built/tmp/cppBison.yxx.c" break; - case 227: /* maybe_initialize_or_function_body: '{' code '}' */ -#line 2089 "dtool/src/cppparser/cppBison.yxx" + case 245: /* function_parameter: optional_attributes KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize */ +#line 2217 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyvsp[-1].u.inst_ident)->add_attributes((yyvsp[-5].attr_list)); + (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 6326 "built/tmp/cppBison.yxx.c" +#line 6341 "built/tmp/cppBison.yxx.c" break; - case 228: /* maybe_initialize_or_function_body: '=' const_expr ';' */ -#line 2093 "dtool/src/cppparser/cppBison.yxx" + case 246: /* function_parameter: optional_attributes KW_REGISTER function_parameter */ +#line 2224 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[-1].u.expr); -} -#line 6334 "built/tmp/cppBison.yxx.c" - break; - - case 229: /* maybe_initialize_or_function_body: '=' KW_DEFAULT ';' */ -#line 2097 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); -} -#line 6342 "built/tmp/cppBison.yxx.c" - break; - - case 230: /* maybe_initialize_or_function_body: '=' KW_DELETE ';' */ -#line 2101 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); + (yyval.u.instance) = (yyvsp[0].u.instance); + (yyval.u.instance)->_attributes.add_attributes_from((yyvsp[-2].attr_list)); } #line 6350 "built/tmp/cppBison.yxx.c" break; - case 231: /* maybe_initialize_or_function_body: '=' '{' structure_init '}' */ -#line 2105 "dtool/src/cppparser/cppBison.yxx" + case 247: /* formal_parameter: function_parameter */ +#line 2236 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = nullptr; + (yyval.u.instance) = (yyvsp[0].u.instance); } #line 6358 "built/tmp/cppBison.yxx.c" break; - case 235: /* structure_init_body: const_expr */ -#line 2118 "dtool/src/cppparser/cppBison.yxx" -{ -} -#line 6365 "built/tmp/cppBison.yxx.c" - break; - - case 239: /* function_parameter: type formal_parameter_identifier maybe_initialize */ -#line 2127 "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 6374 "built/tmp/cppBison.yxx.c" - break; - - case 240: /* function_parameter: KW_CONST type formal_parameter_identifier maybe_initialize */ -#line 2132 "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 6384 "built/tmp/cppBison.yxx.c" - break; - - case 241: /* function_parameter: KW_CONST KW_REGISTER type formal_parameter_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[-2]).file); - (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); -} -#line 6394 "built/tmp/cppBison.yxx.c" - break; - - case 242: /* function_parameter: type_pack parameter_pack_identifier maybe_initialize */ -#line 2144 "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 6403 "built/tmp/cppBison.yxx.c" - break; - - case 243: /* function_parameter: KW_CONST type_pack parameter_pack_identifier maybe_initialize */ -#line 2149 "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 6413 "built/tmp/cppBison.yxx.c" - break; - - case 244: /* function_parameter: KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize */ -#line 2155 "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 6423 "built/tmp/cppBison.yxx.c" - break; - - case 245: /* function_parameter: KW_REGISTER function_parameter */ -#line 2161 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.instance) = (yyvsp[0].u.instance); -} -#line 6431 "built/tmp/cppBison.yxx.c" - break; - - case 246: /* function_parameter: ATTR_LEFT attribute_specifiers ATTR_RIGHT function_parameter */ -#line 2165 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.instance) = (yyvsp[0].u.instance); -} -#line 6439 "built/tmp/cppBison.yxx.c" - break; - - case 247: /* formal_parameter: function_parameter */ -#line 2176 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.instance) = (yyvsp[0].u.instance); -} -#line 6447 "built/tmp/cppBison.yxx.c" - break; - case 248: /* formal_parameter: formal_const_expr */ -#line 2180 "dtool/src/cppparser/cppBison.yxx" +#line 2240 "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 6458 "built/tmp/cppBison.yxx.c" +#line 6369 "built/tmp/cppBison.yxx.c" break; case 249: /* not_paren_formal_parameter_identifier: empty */ -#line 2190 "dtool/src/cppparser/cppBison.yxx" +#line 2250 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); } -#line 6466 "built/tmp/cppBison.yxx.c" +#line 6377 "built/tmp/cppBison.yxx.c" break; - case 250: /* not_paren_formal_parameter_identifier: name_no_final */ -#line 2194 "dtool/src/cppparser/cppBison.yxx" + case 250: /* not_paren_formal_parameter_identifier: name_no_final optional_attributes */ +#line 2254 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier), (yyvsp[0].attr_list)); } -#line 6474 "built/tmp/cppBison.yxx.c" +#line 6385 "built/tmp/cppBison.yxx.c" break; case 251: /* not_paren_formal_parameter_identifier: KW_CONST not_paren_formal_parameter_identifier */ -#line 2198 "dtool/src/cppparser/cppBison.yxx" +#line 2258 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6483 "built/tmp/cppBison.yxx.c" +#line 6394 "built/tmp/cppBison.yxx.c" break; case 252: /* not_paren_formal_parameter_identifier: KW_VOLATILE not_paren_formal_parameter_identifier */ -#line 2203 "dtool/src/cppparser/cppBison.yxx" +#line 2263 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6492 "built/tmp/cppBison.yxx.c" +#line 6403 "built/tmp/cppBison.yxx.c" break; - case 253: /* not_paren_formal_parameter_identifier: '*' not_paren_formal_parameter_identifier */ -#line 2208 "dtool/src/cppparser/cppBison.yxx" + case 253: /* not_paren_formal_parameter_identifier: '*' optional_attributes not_paren_formal_parameter_identifier */ +#line 2268 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-1].attr_list)); } -#line 6501 "built/tmp/cppBison.yxx.c" +#line 6412 "built/tmp/cppBison.yxx.c" break; - case 254: /* not_paren_formal_parameter_identifier: '&' not_paren_formal_parameter_identifier */ -#line 2213 "dtool/src/cppparser/cppBison.yxx" + case 254: /* not_paren_formal_parameter_identifier: '&' optional_attributes not_paren_formal_parameter_identifier */ +#line 2273 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-1].attr_list)); } -#line 6510 "built/tmp/cppBison.yxx.c" +#line 6421 "built/tmp/cppBison.yxx.c" break; - case 255: /* not_paren_formal_parameter_identifier: ANDAND not_paren_formal_parameter_identifier */ -#line 2218 "dtool/src/cppparser/cppBison.yxx" + case 255: /* not_paren_formal_parameter_identifier: ANDAND optional_attributes not_paren_formal_parameter_identifier */ +#line 2278 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-1].attr_list)); } -#line 6519 "built/tmp/cppBison.yxx.c" +#line 6430 "built/tmp/cppBison.yxx.c" break; - case 256: /* not_paren_formal_parameter_identifier: SCOPING '*' not_paren_formal_parameter_identifier */ -#line 2223 "dtool/src/cppparser/cppBison.yxx" + case 256: /* not_paren_formal_parameter_identifier: SCOPING '*' optional_attributes not_paren_formal_parameter_identifier */ +#line 2283 "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)); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier), (yyvsp[-1].attr_list)); } -#line 6528 "built/tmp/cppBison.yxx.c" +#line 6439 "built/tmp/cppBison.yxx.c" break; - case 257: /* not_paren_formal_parameter_identifier: not_paren_formal_parameter_identifier '[' optional_const_expr ']' */ -#line 2228 "dtool/src/cppparser/cppBison.yxx" + case 257: /* not_paren_formal_parameter_identifier: not_paren_formal_parameter_identifier '[' optional_const_expr ']' optional_attributes */ +#line 2288 "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)); + (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr), (yyvsp[0].attr_list)); +} +#line 6448 "built/tmp/cppBison.yxx.c" + break; + + case 258: /* formal_parameter_identifier: empty */ +#line 2296 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); +} +#line 6456 "built/tmp/cppBison.yxx.c" + break; + + case 259: /* formal_parameter_identifier: name_no_final optional_attributes */ +#line 2300 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier), (yyvsp[0].attr_list)); +} +#line 6464 "built/tmp/cppBison.yxx.c" + break; + + case 260: /* formal_parameter_identifier: KW_CONST formal_parameter_identifier */ +#line 2304 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); +} +#line 6473 "built/tmp/cppBison.yxx.c" + break; + + case 261: /* formal_parameter_identifier: KW_VOLATILE formal_parameter_identifier */ +#line 2309 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); +} +#line 6482 "built/tmp/cppBison.yxx.c" + break; + + case 262: /* formal_parameter_identifier: '*' optional_attributes formal_parameter_identifier */ +#line 2314 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-1].attr_list)); +} +#line 6491 "built/tmp/cppBison.yxx.c" + break; + + case 263: /* formal_parameter_identifier: '&' optional_attributes formal_parameter_identifier */ +#line 2319 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-1].attr_list)); +} +#line 6500 "built/tmp/cppBison.yxx.c" + break; + + case 264: /* formal_parameter_identifier: ANDAND optional_attributes formal_parameter_identifier */ +#line 2324 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-1].attr_list)); +} +#line 6509 "built/tmp/cppBison.yxx.c" + break; + + case 265: /* formal_parameter_identifier: SCOPING '*' optional_attributes formal_parameter_identifier */ +#line 2329 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier), (yyvsp[-1].attr_list)); +} +#line 6518 "built/tmp/cppBison.yxx.c" + break; + + case 266: /* formal_parameter_identifier: formal_parameter_identifier '[' optional_const_expr ']' optional_attributes */ +#line 2334 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr), (yyvsp[0].attr_list)); +} +#line 6527 "built/tmp/cppBison.yxx.c" + break; + + case 267: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post optional_attributes */ +#line 2339 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); } #line 6537 "built/tmp/cppBison.yxx.c" break; - case 258: /* formal_parameter_identifier: empty */ -#line 2236 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); -} -#line 6545 "built/tmp/cppBison.yxx.c" - break; - - case 259: /* formal_parameter_identifier: name_no_final */ -#line 2240 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); -} -#line 6553 "built/tmp/cppBison.yxx.c" - break; - - case 260: /* formal_parameter_identifier: KW_CONST formal_parameter_identifier */ -#line 2244 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); -} -#line 6562 "built/tmp/cppBison.yxx.c" - break; - - case 261: /* formal_parameter_identifier: KW_VOLATILE formal_parameter_identifier */ -#line 2249 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); -} -#line 6571 "built/tmp/cppBison.yxx.c" - break; - - case 262: /* formal_parameter_identifier: '*' formal_parameter_identifier */ -#line 2254 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); -} -#line 6580 "built/tmp/cppBison.yxx.c" - break; - - case 263: /* formal_parameter_identifier: '&' formal_parameter_identifier */ -#line 2259 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); -} -#line 6589 "built/tmp/cppBison.yxx.c" - break; - - case 264: /* formal_parameter_identifier: ANDAND formal_parameter_identifier */ -#line 2264 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); -} -#line 6598 "built/tmp/cppBison.yxx.c" - break; - - case 265: /* formal_parameter_identifier: SCOPING '*' formal_parameter_identifier */ -#line 2269 "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 6607 "built/tmp/cppBison.yxx.c" - break; - - case 266: /* formal_parameter_identifier: formal_parameter_identifier '[' optional_const_expr ']' */ -#line 2274 "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 6616 "built/tmp/cppBison.yxx.c" - break; - - case 267: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post */ -#line 2279 "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 6626 "built/tmp/cppBison.yxx.c" - break; - case 268: /* formal_parameter_identifier: '(' formal_parameter_identifier ')' */ -#line 2285 "dtool/src/cppparser/cppBison.yxx" +#line 2345 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } -#line 6635 "built/tmp/cppBison.yxx.c" +#line 6546 "built/tmp/cppBison.yxx.c" break; case 269: /* parameter_pack_identifier: ELLIPSIS */ -#line 2293 "dtool/src/cppparser/cppBison.yxx" +#line 2353 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); (yyval.u.inst_ident)->_packed = true; } -#line 6644 "built/tmp/cppBison.yxx.c" +#line 6555 "built/tmp/cppBison.yxx.c" break; - case 270: /* parameter_pack_identifier: ELLIPSIS name */ -#line 2298 "dtool/src/cppparser/cppBison.yxx" + case 270: /* parameter_pack_identifier: ELLIPSIS name optional_attributes */ +#line 2358 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier), (yyvsp[0].attr_list)); (yyval.u.inst_ident)->_packed = true; } -#line 6653 "built/tmp/cppBison.yxx.c" +#line 6564 "built/tmp/cppBison.yxx.c" break; case 271: /* parameter_pack_identifier: KW_CONST parameter_pack_identifier */ -#line 2303 "dtool/src/cppparser/cppBison.yxx" +#line 2363 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6662 "built/tmp/cppBison.yxx.c" +#line 6573 "built/tmp/cppBison.yxx.c" break; case 272: /* parameter_pack_identifier: KW_VOLATILE parameter_pack_identifier */ -#line 2308 "dtool/src/cppparser/cppBison.yxx" +#line 2368 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6671 "built/tmp/cppBison.yxx.c" +#line 6582 "built/tmp/cppBison.yxx.c" break; - case 273: /* parameter_pack_identifier: '*' parameter_pack_identifier */ -#line 2313 "dtool/src/cppparser/cppBison.yxx" + case 273: /* parameter_pack_identifier: '*' optional_attributes parameter_pack_identifier */ +#line 2373 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-1].attr_list)); } -#line 6680 "built/tmp/cppBison.yxx.c" +#line 6591 "built/tmp/cppBison.yxx.c" break; - case 274: /* parameter_pack_identifier: '&' parameter_pack_identifier */ -#line 2318 "dtool/src/cppparser/cppBison.yxx" + case 274: /* parameter_pack_identifier: '&' optional_attributes parameter_pack_identifier */ +#line 2378 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-1].attr_list)); } -#line 6689 "built/tmp/cppBison.yxx.c" +#line 6600 "built/tmp/cppBison.yxx.c" break; - case 275: /* parameter_pack_identifier: ANDAND parameter_pack_identifier */ -#line 2323 "dtool/src/cppparser/cppBison.yxx" + case 275: /* parameter_pack_identifier: ANDAND optional_attributes parameter_pack_identifier */ +#line 2383 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-1].attr_list)); } -#line 6698 "built/tmp/cppBison.yxx.c" +#line 6609 "built/tmp/cppBison.yxx.c" break; - case 276: /* parameter_pack_identifier: SCOPING '*' parameter_pack_identifier */ -#line 2328 "dtool/src/cppparser/cppBison.yxx" + case 276: /* parameter_pack_identifier: SCOPING '*' optional_attributes parameter_pack_identifier */ +#line 2388 "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)); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier), (yyvsp[-1].attr_list)); } -#line 6707 "built/tmp/cppBison.yxx.c" +#line 6618 "built/tmp/cppBison.yxx.c" break; - case 277: /* parameter_pack_identifier: parameter_pack_identifier '[' optional_const_expr ']' */ -#line 2333 "dtool/src/cppparser/cppBison.yxx" + case 277: /* parameter_pack_identifier: parameter_pack_identifier '[' optional_const_expr ']' optional_attributes */ +#line 2393 "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)); + (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr), (yyvsp[0].attr_list)); } -#line 6716 "built/tmp/cppBison.yxx.c" +#line 6627 "built/tmp/cppBison.yxx.c" break; - case 278: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post */ -#line 2338 "dtool/src/cppparser/cppBison.yxx" + case 278: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post optional_attributes */ +#line 2398 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); + (yyval.u.inst_ident) = (yyvsp[-6].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)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), nullptr, (yyvsp[0].attr_list)); +} +#line 6637 "built/tmp/cppBison.yxx.c" + break; + + case 279: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' */ +#line 2404 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); +} +#line 6646 "built/tmp/cppBison.yxx.c" + break; + + case 280: /* not_paren_empty_instance_identifier: empty */ +#line 2412 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); +} +#line 6654 "built/tmp/cppBison.yxx.c" + break; + + case 281: /* not_paren_empty_instance_identifier: ELLIPSIS */ +#line 2416 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); + (yyval.u.inst_ident)->_packed = true; +} +#line 6663 "built/tmp/cppBison.yxx.c" + break; + + case 282: /* not_paren_empty_instance_identifier: ELLIPSIS name optional_attributes */ +#line 2421 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier), (yyvsp[0].attr_list)); + (yyval.u.inst_ident)->_packed = true; +} +#line 6672 "built/tmp/cppBison.yxx.c" + break; + + case 283: /* not_paren_empty_instance_identifier: KW_CONST not_paren_empty_instance_identifier */ +#line 2426 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); +} +#line 6681 "built/tmp/cppBison.yxx.c" + break; + + case 284: /* not_paren_empty_instance_identifier: KW_VOLATILE not_paren_empty_instance_identifier */ +#line 2431 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); +} +#line 6690 "built/tmp/cppBison.yxx.c" + break; + + case 285: /* not_paren_empty_instance_identifier: '*' optional_attributes not_paren_empty_instance_identifier */ +#line 2436 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-1].attr_list)); +} +#line 6699 "built/tmp/cppBison.yxx.c" + break; + + case 286: /* not_paren_empty_instance_identifier: '&' optional_attributes not_paren_empty_instance_identifier */ +#line 2441 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-1].attr_list)); +} +#line 6708 "built/tmp/cppBison.yxx.c" + break; + + case 287: /* not_paren_empty_instance_identifier: ANDAND optional_attributes not_paren_empty_instance_identifier */ +#line 2446 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-1].attr_list)); +} +#line 6717 "built/tmp/cppBison.yxx.c" + break; + + case 288: /* not_paren_empty_instance_identifier: SCOPING '*' optional_attributes not_paren_empty_instance_identifier */ +#line 2451 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier), (yyvsp[-1].attr_list)); } #line 6726 "built/tmp/cppBison.yxx.c" break; - case 279: /* parameter_pack_identifier: '(' parameter_pack_identifier ')' */ -#line 2344 "dtool/src/cppparser/cppBison.yxx" + case 289: /* not_paren_empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' optional_attributes */ +#line 2456 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr), (yyvsp[0].attr_list)); } #line 6735 "built/tmp/cppBison.yxx.c" break; - case 280: /* not_paren_empty_instance_identifier: empty */ -#line 2352 "dtool/src/cppparser/cppBison.yxx" + case 290: /* empty_instance_identifier: empty */ +#line 2464 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); } #line 6743 "built/tmp/cppBison.yxx.c" break; - case 281: /* not_paren_empty_instance_identifier: ELLIPSIS */ -#line 2356 "dtool/src/cppparser/cppBison.yxx" + case 291: /* empty_instance_identifier: ELLIPSIS */ +#line 2468 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); (yyval.u.inst_ident)->_packed = true; @@ -6751,17 +6751,17 @@ yyreduce: #line 6752 "built/tmp/cppBison.yxx.c" break; - case 282: /* not_paren_empty_instance_identifier: ELLIPSIS name */ -#line 2361 "dtool/src/cppparser/cppBison.yxx" + case 292: /* empty_instance_identifier: ELLIPSIS name optional_attributes */ +#line 2473 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[-1].u.identifier), (yyvsp[0].attr_list)); (yyval.u.inst_ident)->_packed = true; } #line 6761 "built/tmp/cppBison.yxx.c" break; - case 283: /* not_paren_empty_instance_identifier: KW_CONST not_paren_empty_instance_identifier */ -#line 2366 "dtool/src/cppparser/cppBison.yxx" + case 293: /* empty_instance_identifier: KW_CONST empty_instance_identifier */ +#line 2478 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); @@ -6769,8 +6769,8 @@ yyreduce: #line 6770 "built/tmp/cppBison.yxx.c" break; - case 284: /* not_paren_empty_instance_identifier: KW_VOLATILE not_paren_empty_instance_identifier */ -#line 2371 "dtool/src/cppparser/cppBison.yxx" + case 294: /* empty_instance_identifier: KW_VOLATILE empty_instance_identifier */ +#line 2483 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); @@ -6778,193 +6778,104 @@ yyreduce: #line 6779 "built/tmp/cppBison.yxx.c" break; - case 285: /* not_paren_empty_instance_identifier: '*' not_paren_empty_instance_identifier */ -#line 2376 "dtool/src/cppparser/cppBison.yxx" + case 295: /* empty_instance_identifier: '*' optional_attributes not_paren_empty_instance_identifier */ +#line 2488 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-1].attr_list)); } #line 6788 "built/tmp/cppBison.yxx.c" break; - case 286: /* not_paren_empty_instance_identifier: '&' not_paren_empty_instance_identifier */ -#line 2381 "dtool/src/cppparser/cppBison.yxx" + case 296: /* empty_instance_identifier: '&' optional_attributes not_paren_empty_instance_identifier */ +#line 2493 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-1].attr_list)); } #line 6797 "built/tmp/cppBison.yxx.c" break; - case 287: /* not_paren_empty_instance_identifier: ANDAND not_paren_empty_instance_identifier */ -#line 2386 "dtool/src/cppparser/cppBison.yxx" + case 297: /* empty_instance_identifier: ANDAND optional_attributes not_paren_empty_instance_identifier */ +#line 2498 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-1].attr_list)); } #line 6806 "built/tmp/cppBison.yxx.c" break; - case 288: /* not_paren_empty_instance_identifier: SCOPING '*' not_paren_empty_instance_identifier */ -#line 2391 "dtool/src/cppparser/cppBison.yxx" + case 298: /* empty_instance_identifier: SCOPING '*' optional_attributes not_paren_empty_instance_identifier */ +#line 2503 "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)); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-3].u.identifier), (yyvsp[-1].attr_list)); } #line 6815 "built/tmp/cppBison.yxx.c" break; - case 289: /* not_paren_empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' */ -#line 2396 "dtool/src/cppparser/cppBison.yxx" + case 299: /* empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' optional_attributes */ +#line 2508 "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)); + (yyval.u.inst_ident) = (yyvsp[-4].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-2].u.expr), (yyvsp[0].attr_list)); } #line 6824 "built/tmp/cppBison.yxx.c" break; - case 290: /* empty_instance_identifier: empty */ -#line 2404 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); -} -#line 6832 "built/tmp/cppBison.yxx.c" - break; - - case 291: /* empty_instance_identifier: ELLIPSIS */ -#line 2408 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = new CPPInstanceIdentifier(nullptr); - (yyval.u.inst_ident)->_packed = true; -} -#line 6841 "built/tmp/cppBison.yxx.c" - break; - - case 292: /* empty_instance_identifier: ELLIPSIS name */ -#line 2413 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); - (yyval.u.inst_ident)->_packed = true; -} -#line 6850 "built/tmp/cppBison.yxx.c" - break; - - case 293: /* empty_instance_identifier: KW_CONST empty_instance_identifier */ -#line 2418 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); -} -#line 6859 "built/tmp/cppBison.yxx.c" - break; - - case 294: /* empty_instance_identifier: KW_VOLATILE empty_instance_identifier */ -#line 2423 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); -} -#line 6868 "built/tmp/cppBison.yxx.c" - break; - - case 295: /* empty_instance_identifier: '*' not_paren_empty_instance_identifier */ -#line 2428 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); -} -#line 6877 "built/tmp/cppBison.yxx.c" - break; - - case 296: /* empty_instance_identifier: '&' not_paren_empty_instance_identifier */ -#line 2433 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); -} -#line 6886 "built/tmp/cppBison.yxx.c" - break; - - case 297: /* empty_instance_identifier: ANDAND not_paren_empty_instance_identifier */ -#line 2438 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); -} -#line 6895 "built/tmp/cppBison.yxx.c" - break; - - case 298: /* empty_instance_identifier: SCOPING '*' not_paren_empty_instance_identifier */ -#line 2443 "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 6904 "built/tmp/cppBison.yxx.c" - break; - - case 299: /* empty_instance_identifier: not_paren_empty_instance_identifier '[' optional_const_expr ']' */ -#line 2448 "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 6913 "built/tmp/cppBison.yxx.c" - break; - - case 300: /* empty_instance_identifier: '(' function_parameter_list ')' function_post maybe_trailing_return_type */ -#line 2453 "dtool/src/cppparser/cppBison.yxx" + case 300: /* empty_instance_identifier: '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type */ +#line 2513 "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)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-4].u.param_list), (yyvsp[-2].u.integer), (yyvsp[0].u.type), (yyvsp[-1].attr_list)); } -#line 6923 "built/tmp/cppBison.yxx.c" +#line 6834 "built/tmp/cppBison.yxx.c" break; - case 301: /* empty_instance_identifier: '(' '*' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */ -#line 2459 "dtool/src/cppparser/cppBison.yxx" + case 301: /* empty_instance_identifier: '(' '*' optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type */ +#line 2519 "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) = (yyvsp[-7].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer, (yyvsp[-8].attr_list)); (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)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-4].u.param_list), (yyvsp[-2].u.integer), (yyvsp[0].u.type), (yyvsp[-1].attr_list)); } -#line 6934 "built/tmp/cppBison.yxx.c" +#line 6845 "built/tmp/cppBison.yxx.c" break; - case 302: /* empty_instance_identifier: '(' '&' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */ -#line 2466 "dtool/src/cppparser/cppBison.yxx" + case 302: /* empty_instance_identifier: '(' '&' optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type */ +#line 2526 "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) = (yyvsp[-7].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference, (yyvsp[-8].attr_list)); (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)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-4].u.param_list), (yyvsp[-2].u.integer), (yyvsp[0].u.type), (yyvsp[-1].attr_list)); } -#line 6945 "built/tmp/cppBison.yxx.c" +#line 6856 "built/tmp/cppBison.yxx.c" break; - case 303: /* empty_instance_identifier: '(' ANDAND not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type */ -#line 2473 "dtool/src/cppparser/cppBison.yxx" + case 303: /* empty_instance_identifier: '(' ANDAND optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type */ +#line 2533 "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) = (yyvsp[-7].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference, (yyvsp[-8].attr_list)); (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)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-4].u.param_list), (yyvsp[-2].u.integer), (yyvsp[0].u.type), (yyvsp[-1].attr_list)); } -#line 6956 "built/tmp/cppBison.yxx.c" +#line 6867 "built/tmp/cppBison.yxx.c" break; case 304: /* type: simple_type */ -#line 2483 "dtool/src/cppparser/cppBison.yxx" +#line 2543 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 6964 "built/tmp/cppBison.yxx.c" +#line 6875 "built/tmp/cppBison.yxx.c" break; case 305: /* type: TYPENAME_IDENTIFIER */ -#line 2487 "dtool/src/cppparser/cppBison.yxx" +#line 2547 "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) { @@ -6972,50 +6883,50 @@ yyreduce: } assert((yyval.u.type) != nullptr); } -#line 6976 "built/tmp/cppBison.yxx.c" +#line 6887 "built/tmp/cppBison.yxx.c" break; case 306: /* type: KW_TYPENAME name */ -#line 2495 "dtool/src/cppparser/cppBison.yxx" +#line 2555 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 6984 "built/tmp/cppBison.yxx.c" +#line 6895 "built/tmp/cppBison.yxx.c" break; case 307: /* type: anonymous_struct */ -#line 2499 "dtool/src/cppparser/cppBison.yxx" +#line 2559 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } -#line 6992 "built/tmp/cppBison.yxx.c" +#line 6903 "built/tmp/cppBison.yxx.c" break; case 308: /* type: named_struct */ -#line 2503 "dtool/src/cppparser/cppBison.yxx" +#line 2563 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } -#line 7000 "built/tmp/cppBison.yxx.c" +#line 6911 "built/tmp/cppBison.yxx.c" break; case 309: /* type: enum */ -#line 2507 "dtool/src/cppparser/cppBison.yxx" +#line 2567 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); } -#line 7008 "built/tmp/cppBison.yxx.c" +#line 6919 "built/tmp/cppBison.yxx.c" break; - case 310: /* type: struct_keyword struct_attributes name */ -#line 2511 "dtool/src/cppparser/cppBison.yxx" + case 310: /* type: struct_keyword optional_attributes name */ +#line 2571 "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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7024,18 +6935,18 @@ yyreduce: (yyval.u.type) = et; } } -#line 7028 "built/tmp/cppBison.yxx.c" +#line 6939 "built/tmp/cppBison.yxx.c" break; - case 311: /* type: enum_keyword name_no_final ':' enum_element_type */ -#line 2527 "dtool/src/cppparser/cppBison.yxx" + case 311: /* type: enum_keyword optional_attributes name_no_final ':' enum_element_type */ +#line 2587 "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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-4].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-4]).file, (yyvsp[-3].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7044,11 +6955,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 7048 "built/tmp/cppBison.yxx.c" +#line 6959 "built/tmp/cppBison.yxx.c" break; case 312: /* type: KW_DECLTYPE '(' const_expr ')' */ -#line 2543 "dtool/src/cppparser/cppBison.yxx" +#line 2603 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == nullptr) { @@ -7057,19 +6968,19 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 7061 "built/tmp/cppBison.yxx.c" +#line 6972 "built/tmp/cppBison.yxx.c" break; case 313: /* type: KW_DECLTYPE '(' KW_AUTO ')' */ -#line 2552 "dtool/src/cppparser/cppBison.yxx" +#line 2612 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 7069 "built/tmp/cppBison.yxx.c" +#line 6980 "built/tmp/cppBison.yxx.c" break; case 314: /* type: KW_UNDERLYING_TYPE '(' full_type ')' */ -#line 2556 "dtool/src/cppparser/cppBison.yxx" +#line 2616 "dtool/src/cppparser/cppBison.yxx" { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == nullptr) { @@ -7079,19 +6990,19 @@ yyreduce: (yyval.u.type) = enum_type->get_underlying_type(); } } -#line 7083 "built/tmp/cppBison.yxx.c" +#line 6994 "built/tmp/cppBison.yxx.c" break; case 315: /* type: KW_AUTO */ -#line 2566 "dtool/src/cppparser/cppBison.yxx" +#line 2626 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 7091 "built/tmp/cppBison.yxx.c" +#line 7002 "built/tmp/cppBison.yxx.c" break; case 316: /* type_pack: TYPEPACK_IDENTIFIER */ -#line 2573 "dtool/src/cppparser/cppBison.yxx" +#line 2633 "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) { @@ -7099,19 +7010,19 @@ yyreduce: } assert((yyval.u.type) != nullptr); } -#line 7103 "built/tmp/cppBison.yxx.c" +#line 7014 "built/tmp/cppBison.yxx.c" break; case 317: /* type_decl: simple_type */ -#line 2584 "dtool/src/cppparser/cppBison.yxx" +#line 2644 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 7111 "built/tmp/cppBison.yxx.c" +#line 7022 "built/tmp/cppBison.yxx.c" break; case 318: /* type_decl: TYPENAME_IDENTIFIER */ -#line 2588 "dtool/src/cppparser/cppBison.yxx" +#line 2648 "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) { @@ -7119,50 +7030,50 @@ yyreduce: } assert((yyval.u.decl) != nullptr); } -#line 7123 "built/tmp/cppBison.yxx.c" +#line 7034 "built/tmp/cppBison.yxx.c" break; case 319: /* type_decl: KW_TYPENAME name */ -#line 2596 "dtool/src/cppparser/cppBison.yxx" +#line 2656 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 7131 "built/tmp/cppBison.yxx.c" +#line 7042 "built/tmp/cppBison.yxx.c" break; case 320: /* type_decl: anonymous_struct */ -#line 2600 "dtool/src/cppparser/cppBison.yxx" +#line 2660 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); } -#line 7139 "built/tmp/cppBison.yxx.c" +#line 7050 "built/tmp/cppBison.yxx.c" break; case 321: /* type_decl: named_struct */ -#line 2604 "dtool/src/cppparser/cppBison.yxx" +#line 2664 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type))); } -#line 7147 "built/tmp/cppBison.yxx.c" +#line 7058 "built/tmp/cppBison.yxx.c" break; case 322: /* type_decl: enum */ -#line 2608 "dtool/src/cppparser/cppBison.yxx" +#line 2668 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type))); } -#line 7155 "built/tmp/cppBison.yxx.c" +#line 7066 "built/tmp/cppBison.yxx.c" break; - case 323: /* type_decl: struct_keyword struct_attributes name */ -#line 2612 "dtool/src/cppparser/cppBison.yxx" + case 323: /* type_decl: struct_keyword optional_attributes name */ +#line 2672 "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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7171,18 +7082,18 @@ yyreduce: (yyval.u.decl) = et; } } -#line 7175 "built/tmp/cppBison.yxx.c" +#line 7086 "built/tmp/cppBison.yxx.c" break; - case 324: /* type_decl: enum_keyword name_no_final ':' enum_element_type */ -#line 2628 "dtool/src/cppparser/cppBison.yxx" + case 324: /* type_decl: enum_keyword optional_attributes name_no_final ':' enum_element_type */ +#line 2688 "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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-4].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-4]).file, (yyvsp[-3].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7191,20 +7102,20 @@ yyreduce: (yyval.u.decl) = et; } } -#line 7195 "built/tmp/cppBison.yxx.c" +#line 7106 "built/tmp/cppBison.yxx.c" break; - case 325: /* type_decl: enum_keyword name */ -#line 2644 "dtool/src/cppparser/cppBison.yxx" + case 325: /* type_decl: enum_keyword optional_attributes name */ +#line 2704 "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])); + yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); 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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7213,11 +7124,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 7217 "built/tmp/cppBison.yxx.c" +#line 7128 "built/tmp/cppBison.yxx.c" break; case 326: /* type_decl: KW_DECLTYPE '(' const_expr ')' */ -#line 2662 "dtool/src/cppparser/cppBison.yxx" +#line 2722 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.decl) == nullptr) { @@ -7226,19 +7137,19 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 7230 "built/tmp/cppBison.yxx.c" +#line 7141 "built/tmp/cppBison.yxx.c" break; case 327: /* type_decl: KW_DECLTYPE '(' KW_AUTO ')' */ -#line 2671 "dtool/src/cppparser/cppBison.yxx" +#line 2731 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 7238 "built/tmp/cppBison.yxx.c" +#line 7149 "built/tmp/cppBison.yxx.c" break; case 328: /* type_decl: KW_UNDERLYING_TYPE '(' full_type ')' */ -#line 2675 "dtool/src/cppparser/cppBison.yxx" +#line 2735 "dtool/src/cppparser/cppBison.yxx" { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == nullptr) { @@ -7248,27 +7159,27 @@ yyreduce: (yyval.u.decl) = enum_type->get_underlying_type(); } } -#line 7252 "built/tmp/cppBison.yxx.c" +#line 7163 "built/tmp/cppBison.yxx.c" break; case 329: /* type_decl: KW_AUTO */ -#line 2685 "dtool/src/cppparser/cppBison.yxx" +#line 2745 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 7260 "built/tmp/cppBison.yxx.c" +#line 7171 "built/tmp/cppBison.yxx.c" break; case 330: /* predefined_type: simple_type */ -#line 2692 "dtool/src/cppparser/cppBison.yxx" +#line 2752 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 7268 "built/tmp/cppBison.yxx.c" +#line 7179 "built/tmp/cppBison.yxx.c" break; case 331: /* predefined_type: TYPENAME_IDENTIFIER */ -#line 2696 "dtool/src/cppparser/cppBison.yxx" +#line 2756 "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) { @@ -7276,26 +7187,26 @@ yyreduce: } assert((yyval.u.type) != nullptr); } -#line 7280 "built/tmp/cppBison.yxx.c" +#line 7191 "built/tmp/cppBison.yxx.c" break; case 332: /* predefined_type: KW_TYPENAME name */ -#line 2704 "dtool/src/cppparser/cppBison.yxx" +#line 2764 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 7288 "built/tmp/cppBison.yxx.c" +#line 7199 "built/tmp/cppBison.yxx.c" break; - case 333: /* predefined_type: struct_keyword struct_attributes name */ -#line 2708 "dtool/src/cppparser/cppBison.yxx" + case 333: /* predefined_type: struct_keyword optional_attributes name */ +#line 2768 "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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7304,18 +7215,18 @@ yyreduce: (yyval.u.type) = et; } } -#line 7308 "built/tmp/cppBison.yxx.c" +#line 7219 "built/tmp/cppBison.yxx.c" break; - case 334: /* predefined_type: enum_keyword name */ -#line 2724 "dtool/src/cppparser/cppBison.yxx" + case 334: /* predefined_type: enum_keyword optional_attributes name */ +#line 2784 "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)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list))) ->as_extension_type(); CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -7324,11 +7235,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 7328 "built/tmp/cppBison.yxx.c" +#line 7239 "built/tmp/cppBison.yxx.c" break; case 335: /* predefined_type: KW_DECLTYPE '(' const_expr ')' */ -#line 2740 "dtool/src/cppparser/cppBison.yxx" +#line 2800 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == nullptr) { @@ -7337,11 +7248,11 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 7341 "built/tmp/cppBison.yxx.c" +#line 7252 "built/tmp/cppBison.yxx.c" break; case 336: /* predefined_type: KW_UNDERLYING_TYPE '(' full_type ')' */ -#line 2749 "dtool/src/cppparser/cppBison.yxx" +#line 2809 "dtool/src/cppparser/cppBison.yxx" { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == nullptr) { @@ -7351,71 +7262,71 @@ yyreduce: (yyval.u.type) = enum_type->get_underlying_type(); } } -#line 7355 "built/tmp/cppBison.yxx.c" +#line 7266 "built/tmp/cppBison.yxx.c" break; case 337: /* predefined_type: KW_AUTO */ -#line 2759 "dtool/src/cppparser/cppBison.yxx" +#line 2819 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 7363 "built/tmp/cppBison.yxx.c" +#line 7274 "built/tmp/cppBison.yxx.c" break; case 338: /* var_type_decl: type_decl */ -#line 2766 "dtool/src/cppparser/cppBison.yxx" +#line 2826 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[0].u.decl); } -#line 7371 "built/tmp/cppBison.yxx.c" +#line 7282 "built/tmp/cppBison.yxx.c" break; case 339: /* var_type_decl: IDENTIFIER */ -#line 2770 "dtool/src/cppparser/cppBison.yxx" +#line 2830 "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 7381 "built/tmp/cppBison.yxx.c" +#line 7292 "built/tmp/cppBison.yxx.c" break; case 340: /* full_type: type empty_instance_identifier */ -#line 2778 "dtool/src/cppparser/cppBison.yxx" +#line 2838 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 7389 "built/tmp/cppBison.yxx.c" +#line 7300 "built/tmp/cppBison.yxx.c" break; case 341: /* full_type: KW_CONST type empty_instance_identifier */ -#line 2782 "dtool/src/cppparser/cppBison.yxx" +#line 2842 "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 7398 "built/tmp/cppBison.yxx.c" +#line 7309 "built/tmp/cppBison.yxx.c" break; case 342: /* full_type: type_pack empty_instance_identifier */ -#line 2787 "dtool/src/cppparser/cppBison.yxx" +#line 2847 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 7406 "built/tmp/cppBison.yxx.c" +#line 7317 "built/tmp/cppBison.yxx.c" break; case 343: /* full_type: KW_CONST type_pack empty_instance_identifier */ -#line 2791 "dtool/src/cppparser/cppBison.yxx" +#line 2851 "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 7415 "built/tmp/cppBison.yxx.c" +#line 7326 "built/tmp/cppBison.yxx.c" break; - case 348: /* $@16: %empty */ -#line 2806 "dtool/src/cppparser/cppBison.yxx" + case 344: /* $@17: %empty */ +#line 2859 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -7423,28 +7334,28 @@ yyreduce: 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, (yylsp[-2]).file, (yyvsp[-1].attr_list)); new_scope->set_struct_type(st); push_scope(new_scope); push_struct(st); } -#line 7433 "built/tmp/cppBison.yxx.c" +#line 7344 "built/tmp/cppBison.yxx.c" break; - case 349: /* anonymous_struct: struct_keyword struct_attributes '{' $@16 cpp '}' */ -#line 2820 "dtool/src/cppparser/cppBison.yxx" + case 345: /* anonymous_struct: struct_keyword optional_attributes '{' $@17 cpp '}' */ +#line 2873 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 7444 "built/tmp/cppBison.yxx.c" +#line 7355 "built/tmp/cppBison.yxx.c" break; - case 350: /* $@17: %empty */ -#line 2830 "dtool/src/cppparser/cppBison.yxx" + case 346: /* $@18: %empty */ +#line 2883 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -7457,260 +7368,260 @@ yyreduce: starting_vis); CPPStructType *st = new CPPStructType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, - new_scope, (yylsp[-2]).file); + new_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list)); new_scope->set_struct_type(st); current_scope->define_extension_type(st); push_scope(new_scope); push_struct(st); } -#line 7468 "built/tmp/cppBison.yxx.c" +#line 7379 "built/tmp/cppBison.yxx.c" break; - case 351: /* named_struct: struct_keyword struct_attributes name_no_final $@17 maybe_final maybe_class_derivation '{' cpp '}' */ -#line 2850 "dtool/src/cppparser/cppBison.yxx" + case 347: /* named_struct: struct_keyword optional_attributes name_no_final $@18 maybe_final maybe_class_derivation '{' cpp '}' */ +#line 2903 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 7479 "built/tmp/cppBison.yxx.c" +#line 7390 "built/tmp/cppBison.yxx.c" break; - case 353: /* maybe_final: KW_FINAL */ -#line 2861 "dtool/src/cppparser/cppBison.yxx" + case 349: /* maybe_final: KW_FINAL */ +#line 2914 "dtool/src/cppparser/cppBison.yxx" { current_struct->_final = true; } -#line 7487 "built/tmp/cppBison.yxx.c" +#line 7398 "built/tmp/cppBison.yxx.c" break; - case 358: /* base_specification: class_derivation_name */ -#line 2878 "dtool/src/cppparser/cppBison.yxx" + case 354: /* base_specification: class_derivation_name */ +#line 2931 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); } -#line 7495 "built/tmp/cppBison.yxx.c" +#line 7406 "built/tmp/cppBison.yxx.c" break; - case 359: /* base_specification: KW_PUBLIC class_derivation_name */ -#line 2882 "dtool/src/cppparser/cppBison.yxx" + case 355: /* base_specification: KW_PUBLIC class_derivation_name */ +#line 2935 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_public, false); } -#line 7503 "built/tmp/cppBison.yxx.c" +#line 7414 "built/tmp/cppBison.yxx.c" break; - case 360: /* base_specification: KW_PROTECTED class_derivation_name */ -#line 2886 "dtool/src/cppparser/cppBison.yxx" + case 356: /* base_specification: KW_PROTECTED class_derivation_name */ +#line 2939 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); } -#line 7511 "built/tmp/cppBison.yxx.c" +#line 7422 "built/tmp/cppBison.yxx.c" break; - case 361: /* base_specification: KW_PRIVATE class_derivation_name */ -#line 2890 "dtool/src/cppparser/cppBison.yxx" + case 357: /* base_specification: KW_PRIVATE class_derivation_name */ +#line 2943 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_private, false); } -#line 7519 "built/tmp/cppBison.yxx.c" +#line 7430 "built/tmp/cppBison.yxx.c" break; - case 362: /* base_specification: KW_VIRTUAL KW_PUBLIC class_derivation_name */ -#line 2894 "dtool/src/cppparser/cppBison.yxx" + case 358: /* base_specification: KW_VIRTUAL KW_PUBLIC class_derivation_name */ +#line 2947 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } -#line 7527 "built/tmp/cppBison.yxx.c" +#line 7438 "built/tmp/cppBison.yxx.c" break; - case 363: /* base_specification: KW_VIRTUAL KW_PROTECTED class_derivation_name */ -#line 2898 "dtool/src/cppparser/cppBison.yxx" + case 359: /* base_specification: KW_VIRTUAL KW_PROTECTED class_derivation_name */ +#line 2951 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } -#line 7535 "built/tmp/cppBison.yxx.c" +#line 7446 "built/tmp/cppBison.yxx.c" break; - case 364: /* base_specification: KW_VIRTUAL KW_PRIVATE class_derivation_name */ -#line 2902 "dtool/src/cppparser/cppBison.yxx" + case 360: /* base_specification: KW_VIRTUAL KW_PRIVATE class_derivation_name */ +#line 2955 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } -#line 7543 "built/tmp/cppBison.yxx.c" +#line 7454 "built/tmp/cppBison.yxx.c" break; - case 365: /* base_specification: KW_PUBLIC KW_VIRTUAL class_derivation_name */ -#line 2906 "dtool/src/cppparser/cppBison.yxx" + case 361: /* base_specification: KW_PUBLIC KW_VIRTUAL class_derivation_name */ +#line 2959 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } -#line 7551 "built/tmp/cppBison.yxx.c" +#line 7462 "built/tmp/cppBison.yxx.c" break; - case 366: /* base_specification: KW_PROTECTED KW_VIRTUAL class_derivation_name */ -#line 2910 "dtool/src/cppparser/cppBison.yxx" + case 362: /* base_specification: KW_PROTECTED KW_VIRTUAL class_derivation_name */ +#line 2963 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } -#line 7559 "built/tmp/cppBison.yxx.c" +#line 7470 "built/tmp/cppBison.yxx.c" break; - case 367: /* base_specification: KW_PRIVATE KW_VIRTUAL class_derivation_name */ -#line 2914 "dtool/src/cppparser/cppBison.yxx" + case 363: /* base_specification: KW_PRIVATE KW_VIRTUAL class_derivation_name */ +#line 2967 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } -#line 7567 "built/tmp/cppBison.yxx.c" +#line 7478 "built/tmp/cppBison.yxx.c" break; - case 368: /* enum: enum_decl '{' enum_body '}' */ -#line 2921 "dtool/src/cppparser/cppBison.yxx" + case 364: /* enum: enum_decl '{' enum_body '}' */ +#line 2974 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.enum_type) = current_enum; current_enum = nullptr; } -#line 7576 "built/tmp/cppBison.yxx.c" +#line 7487 "built/tmp/cppBison.yxx.c" break; - case 369: /* enum_decl: enum_keyword ':' enum_element_type */ -#line 2929 "dtool/src/cppparser/cppBison.yxx" + case 365: /* enum_decl: enum_keyword optional_attributes ':' enum_element_type */ +#line 2982 "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); + current_enum = new CPPEnumType((yyvsp[-3].u.extension_enum), nullptr, (yyvsp[0].u.type), current_scope, nullptr, (yylsp[-3]).file, (yyvsp[-2].attr_list)); } -#line 7584 "built/tmp/cppBison.yxx.c" +#line 7495 "built/tmp/cppBison.yxx.c" break; - case 370: /* enum_decl: enum_keyword */ -#line 2933 "dtool/src/cppparser/cppBison.yxx" + case 366: /* enum_decl: enum_keyword optional_attributes */ +#line 2986 "dtool/src/cppparser/cppBison.yxx" { - current_enum = new CPPEnumType((yyvsp[0].u.extension_enum), nullptr, current_scope, nullptr, (yylsp[0]).file); + current_enum = new CPPEnumType((yyvsp[-1].u.extension_enum), nullptr, current_scope, nullptr, (yylsp[-1]).file, (yyvsp[0].attr_list)); } -#line 7592 "built/tmp/cppBison.yxx.c" +#line 7503 "built/tmp/cppBison.yxx.c" break; - case 371: /* enum_decl: enum_keyword name_no_final ':' enum_element_type */ -#line 2937 "dtool/src/cppparser/cppBison.yxx" + case 367: /* enum_decl: enum_keyword optional_attributes name_no_final ':' enum_element_type */ +#line 2990 "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); + current_enum = new CPPEnumType((yyvsp[-4].u.extension_enum), (yyvsp[-2].u.identifier), (yyvsp[0].u.type), current_scope, new_scope, (yylsp[-4]).file, (yyvsp[-3].attr_list)); } -#line 7601 "built/tmp/cppBison.yxx.c" +#line 7512 "built/tmp/cppBison.yxx.c" break; - case 372: /* enum_decl: enum_keyword name_no_final */ -#line 2942 "dtool/src/cppparser/cppBison.yxx" + case 368: /* enum_decl: enum_keyword optional_attributes name_no_final */ +#line 2995 "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); + current_enum = new CPPEnumType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, new_scope, (yylsp[-2]).file, (yyvsp[-1].attr_list)); } -#line 7610 "built/tmp/cppBison.yxx.c" +#line 7521 "built/tmp/cppBison.yxx.c" break; - case 373: /* enum_element_type: simple_int_type */ -#line 2950 "dtool/src/cppparser/cppBison.yxx" + case 369: /* enum_element_type: simple_int_type */ +#line 3003 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 7618 "built/tmp/cppBison.yxx.c" +#line 7529 "built/tmp/cppBison.yxx.c" break; - case 374: /* enum_element_type: TYPENAME_IDENTIFIER */ -#line 2954 "dtool/src/cppparser/cppBison.yxx" + case 370: /* enum_element_type: TYPENAME_IDENTIFIER */ +#line 3007 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); } -#line 7626 "built/tmp/cppBison.yxx.c" +#line 7537 "built/tmp/cppBison.yxx.c" break; - case 376: /* enum_body_trailing_comma: enum_body_trailing_comma name ',' */ -#line 2962 "dtool/src/cppparser/cppBison.yxx" + case 372: /* enum_body_trailing_comma: enum_body_trailing_comma name optional_attributes ',' */ +#line 3015 "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])); + current_enum->add_element((yyvsp[-2].u.identifier)->get_simple_name(), nullptr, current_lexer, (yylsp[-2]), (yyvsp[-1].attr_list)); } -#line 7635 "built/tmp/cppBison.yxx.c" +#line 7546 "built/tmp/cppBison.yxx.c" break; - case 377: /* enum_body_trailing_comma: enum_body_trailing_comma name '=' const_expr ',' */ -#line 2967 "dtool/src/cppparser/cppBison.yxx" + case 373: /* enum_body_trailing_comma: enum_body_trailing_comma name optional_attributes '=' const_expr ',' */ +#line 3020 "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])); + current_enum->add_element((yyvsp[-4].u.identifier)->get_simple_name(), (yyvsp[-1].u.expr), current_lexer, (yylsp[-4]), (yyvsp[-3].attr_list)); } -#line 7644 "built/tmp/cppBison.yxx.c" +#line 7555 "built/tmp/cppBison.yxx.c" break; - case 379: /* enum_body: enum_body_trailing_comma name */ -#line 2975 "dtool/src/cppparser/cppBison.yxx" + case 375: /* enum_body: enum_body_trailing_comma name optional_attributes */ +#line 3028 "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])); + current_enum->add_element((yyvsp[-1].u.identifier)->get_simple_name(), nullptr, current_lexer, (yylsp[-1]), (yyvsp[0].attr_list)); } -#line 7653 "built/tmp/cppBison.yxx.c" +#line 7564 "built/tmp/cppBison.yxx.c" break; - case 380: /* enum_body: enum_body_trailing_comma name '=' const_expr */ -#line 2980 "dtool/src/cppparser/cppBison.yxx" + case 376: /* enum_body: enum_body_trailing_comma name optional_attributes '=' const_expr */ +#line 3033 "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])); + current_enum->add_element((yyvsp[-3].u.identifier)->get_simple_name(), (yyvsp[0].u.expr), current_lexer, (yylsp[-3]), (yyvsp[-2].attr_list)); } -#line 7662 "built/tmp/cppBison.yxx.c" +#line 7573 "built/tmp/cppBison.yxx.c" break; - case 381: /* enum_keyword: KW_ENUM */ -#line 2988 "dtool/src/cppparser/cppBison.yxx" + case 377: /* enum_keyword: KW_ENUM */ +#line 3041 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum; } -#line 7670 "built/tmp/cppBison.yxx.c" +#line 7581 "built/tmp/cppBison.yxx.c" break; - case 382: /* enum_keyword: KW_ENUM KW_CLASS */ -#line 2992 "dtool/src/cppparser/cppBison.yxx" + case 378: /* enum_keyword: KW_ENUM KW_CLASS */ +#line 3045 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; } -#line 7678 "built/tmp/cppBison.yxx.c" +#line 7589 "built/tmp/cppBison.yxx.c" break; - case 383: /* enum_keyword: KW_ENUM KW_STRUCT */ -#line 2996 "dtool/src/cppparser/cppBison.yxx" + case 379: /* enum_keyword: KW_ENUM KW_STRUCT */ +#line 3049 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; } -#line 7686 "built/tmp/cppBison.yxx.c" +#line 7597 "built/tmp/cppBison.yxx.c" break; - case 384: /* struct_keyword: KW_CLASS */ -#line 3003 "dtool/src/cppparser/cppBison.yxx" + case 380: /* struct_keyword: KW_CLASS */ +#line 3056 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_class; } -#line 7694 "built/tmp/cppBison.yxx.c" +#line 7605 "built/tmp/cppBison.yxx.c" break; - case 385: /* struct_keyword: KW_STRUCT */ -#line 3007 "dtool/src/cppparser/cppBison.yxx" + case 381: /* struct_keyword: KW_STRUCT */ +#line 3060 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_struct; } -#line 7702 "built/tmp/cppBison.yxx.c" +#line 7613 "built/tmp/cppBison.yxx.c" break; - case 386: /* struct_keyword: KW_UNION */ -#line 3011 "dtool/src/cppparser/cppBison.yxx" + case 382: /* struct_keyword: KW_UNION */ +#line 3064 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_union; } -#line 7710 "built/tmp/cppBison.yxx.c" +#line 7621 "built/tmp/cppBison.yxx.c" break; - case 387: /* $@18: %empty */ -#line 3018 "dtool/src/cppparser/cppBison.yxx" + case 383: /* $@19: %empty */ +#line 3071 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == nullptr) { @@ -7723,24 +7634,24 @@ yyreduce: 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])); + CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-3]).file, (yyvsp[-2].attr_list)); + current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-3])); current_scope->define_namespace(nspace); push_scope(scope); } -#line 7732 "built/tmp/cppBison.yxx.c" +#line 7643 "built/tmp/cppBison.yxx.c" break; - case 388: /* namespace_declaration: KW_NAMESPACE name '{' $@18 cpp '}' */ -#line 3036 "dtool/src/cppparser/cppBison.yxx" + case 384: /* namespace_declaration: KW_NAMESPACE optional_attributes name '{' $@19 cpp '}' */ +#line 3089 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } -#line 7740 "built/tmp/cppBison.yxx.c" +#line 7651 "built/tmp/cppBison.yxx.c" break; - case 389: /* $@19: %empty */ -#line 3040 "dtool/src/cppparser/cppBison.yxx" + case 385: /* $@20: %empty */ +#line 3093 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == nullptr) { @@ -7759,161 +7670,161 @@ yyreduce: current_scope->define_namespace(nspace); push_scope(scope); } -#line 7763 "built/tmp/cppBison.yxx.c" +#line 7674 "built/tmp/cppBison.yxx.c" break; - case 390: /* namespace_declaration: KW_INLINE KW_NAMESPACE name '{' $@19 cpp '}' */ -#line 3059 "dtool/src/cppparser/cppBison.yxx" + case 386: /* namespace_declaration: KW_INLINE KW_NAMESPACE name '{' $@20 cpp '}' */ +#line 3112 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } -#line 7771 "built/tmp/cppBison.yxx.c" +#line 7682 "built/tmp/cppBison.yxx.c" break; - case 393: /* using_declaration: KW_USING name ';' */ -#line 3068 "dtool/src/cppparser/cppBison.yxx" + case 389: /* using_declaration: KW_USING name ';' */ +#line 3121 "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 7781 "built/tmp/cppBison.yxx.c" +#line 7692 "built/tmp/cppBison.yxx.c" break; - case 394: /* using_declaration: KW_USING name '=' full_type ';' */ -#line 3074 "dtool/src/cppparser/cppBison.yxx" + case 390: /* using_declaration: KW_USING name optional_attributes '=' full_type ';' */ +#line 3127 "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); + CPPTypedefType *typedef_type = new CPPTypedefType((yyvsp[-1].u.type), (yyvsp[-4].u.identifier), current_scope, (yyvsp[-3].attr_list)); typedef_type->_using = true; - current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-4])); + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-5])); } -#line 7792 "built/tmp/cppBison.yxx.c" +#line 7703 "built/tmp/cppBison.yxx.c" break; - case 395: /* using_declaration: KW_USING KW_NAMESPACE name ';' */ -#line 3081 "dtool/src/cppparser/cppBison.yxx" + case 391: /* using_declaration: KW_USING KW_NAMESPACE name ';' */ +#line 3134 "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 7802 "built/tmp/cppBison.yxx.c" +#line 7713 "built/tmp/cppBison.yxx.c" break; - case 396: /* using_declaration: KW_USING KW_ENUM name ';' */ -#line 3087 "dtool/src/cppparser/cppBison.yxx" + case 392: /* using_declaration: KW_USING KW_ENUM name ';' */ +#line 3140 "dtool/src/cppparser/cppBison.yxx" { CPPUsing *using_decl = new CPPUsing((yyvsp[-1].u.identifier), false, (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 7812 "built/tmp/cppBison.yxx.c" +#line 7723 "built/tmp/cppBison.yxx.c" break; - case 400: /* simple_int_type: KW_BOOL */ -#line 3102 "dtool/src/cppparser/cppBison.yxx" + case 396: /* simple_int_type: KW_BOOL */ +#line 3155 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); } -#line 7820 "built/tmp/cppBison.yxx.c" +#line 7731 "built/tmp/cppBison.yxx.c" break; - case 401: /* simple_int_type: KW_CHAR */ -#line 3106 "dtool/src/cppparser/cppBison.yxx" + case 397: /* simple_int_type: KW_CHAR */ +#line 3159 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); } -#line 7828 "built/tmp/cppBison.yxx.c" +#line 7739 "built/tmp/cppBison.yxx.c" break; - case 402: /* simple_int_type: KW_WCHAR_T */ -#line 3110 "dtool/src/cppparser/cppBison.yxx" + case 398: /* simple_int_type: KW_WCHAR_T */ +#line 3163 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); } -#line 7836 "built/tmp/cppBison.yxx.c" +#line 7747 "built/tmp/cppBison.yxx.c" break; - case 403: /* simple_int_type: KW_CHAR8_T */ -#line 3114 "dtool/src/cppparser/cppBison.yxx" + case 399: /* simple_int_type: KW_CHAR8_T */ +#line 3167 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char8_t); } -#line 7844 "built/tmp/cppBison.yxx.c" +#line 7755 "built/tmp/cppBison.yxx.c" break; - case 404: /* simple_int_type: KW_CHAR16_T */ -#line 3118 "dtool/src/cppparser/cppBison.yxx" + case 400: /* simple_int_type: KW_CHAR16_T */ +#line 3171 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); } -#line 7852 "built/tmp/cppBison.yxx.c" +#line 7763 "built/tmp/cppBison.yxx.c" break; - case 405: /* simple_int_type: KW_CHAR32_T */ -#line 3122 "dtool/src/cppparser/cppBison.yxx" + case 401: /* simple_int_type: KW_CHAR32_T */ +#line 3175 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); } -#line 7860 "built/tmp/cppBison.yxx.c" +#line 7771 "built/tmp/cppBison.yxx.c" break; - case 406: /* simple_int_type: KW_SHORT */ -#line 3126 "dtool/src/cppparser/cppBison.yxx" + case 402: /* simple_int_type: KW_SHORT */ +#line 3179 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } -#line 7869 "built/tmp/cppBison.yxx.c" +#line 7780 "built/tmp/cppBison.yxx.c" break; - case 407: /* simple_int_type: KW_LONG */ -#line 3131 "dtool/src/cppparser/cppBison.yxx" + case 403: /* simple_int_type: KW_LONG */ +#line 3184 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } -#line 7878 "built/tmp/cppBison.yxx.c" +#line 7789 "built/tmp/cppBison.yxx.c" break; - case 408: /* simple_int_type: KW_UNSIGNED */ -#line 3136 "dtool/src/cppparser/cppBison.yxx" + case 404: /* simple_int_type: KW_UNSIGNED */ +#line 3189 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } -#line 7887 "built/tmp/cppBison.yxx.c" +#line 7798 "built/tmp/cppBison.yxx.c" break; - case 409: /* simple_int_type: KW_SIGNED */ -#line 3141 "dtool/src/cppparser/cppBison.yxx" + case 405: /* simple_int_type: KW_SIGNED */ +#line 3194 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } -#line 7896 "built/tmp/cppBison.yxx.c" +#line 7807 "built/tmp/cppBison.yxx.c" break; - case 410: /* simple_int_type: KW_INT */ -#line 3146 "dtool/src/cppparser/cppBison.yxx" + case 406: /* simple_int_type: KW_INT */ +#line 3199 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); } -#line 7904 "built/tmp/cppBison.yxx.c" +#line 7815 "built/tmp/cppBison.yxx.c" break; - case 411: /* simple_int_type: KW_SHORT simple_int_type */ -#line 3150 "dtool/src/cppparser/cppBison.yxx" + case 407: /* simple_int_type: KW_SHORT simple_int_type */ +#line 3203 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_short; } -#line 7913 "built/tmp/cppBison.yxx.c" +#line 7824 "built/tmp/cppBison.yxx.c" break; - case 412: /* simple_int_type: KW_LONG simple_int_type */ -#line 3155 "dtool/src/cppparser/cppBison.yxx" + case 408: /* simple_int_type: KW_LONG simple_int_type */ +#line 3208 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); if ((yyval.u.simple_type)->_flags & CPPSimpleType::F_long) { @@ -7922,501 +7833,501 @@ yyreduce: (yyval.u.simple_type)->_flags |= CPPSimpleType::F_long; } } -#line 7926 "built/tmp/cppBison.yxx.c" +#line 7837 "built/tmp/cppBison.yxx.c" break; - case 413: /* simple_int_type: KW_UNSIGNED simple_int_type */ -#line 3164 "dtool/src/cppparser/cppBison.yxx" + case 409: /* simple_int_type: KW_UNSIGNED simple_int_type */ +#line 3217 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; } -#line 7935 "built/tmp/cppBison.yxx.c" +#line 7846 "built/tmp/cppBison.yxx.c" break; - case 414: /* simple_int_type: KW_SIGNED simple_int_type */ -#line 3169 "dtool/src/cppparser/cppBison.yxx" + case 410: /* simple_int_type: KW_SIGNED simple_int_type */ +#line 3222 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; } -#line 7944 "built/tmp/cppBison.yxx.c" +#line 7855 "built/tmp/cppBison.yxx.c" break; - case 415: /* simple_float_type: KW_FLOAT */ -#line 3177 "dtool/src/cppparser/cppBison.yxx" + case 411: /* simple_float_type: KW_FLOAT */ +#line 3230 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); } -#line 7952 "built/tmp/cppBison.yxx.c" +#line 7863 "built/tmp/cppBison.yxx.c" break; - case 416: /* simple_float_type: KW_DOUBLE */ -#line 3181 "dtool/src/cppparser/cppBison.yxx" + case 412: /* simple_float_type: KW_DOUBLE */ +#line 3234 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); } -#line 7960 "built/tmp/cppBison.yxx.c" +#line 7871 "built/tmp/cppBison.yxx.c" break; - case 417: /* simple_float_type: KW_LONG KW_DOUBLE */ -#line 3185 "dtool/src/cppparser/cppBison.yxx" + case 413: /* simple_float_type: KW_LONG KW_DOUBLE */ +#line 3238 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } -#line 7969 "built/tmp/cppBison.yxx.c" +#line 7880 "built/tmp/cppBison.yxx.c" break; - case 418: /* simple_void_type: KW_VOID */ -#line 3193 "dtool/src/cppparser/cppBison.yxx" + case 414: /* simple_void_type: KW_VOID */ +#line 3246 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); } -#line 7977 "built/tmp/cppBison.yxx.c" +#line 7888 "built/tmp/cppBison.yxx.c" break; - case 419: /* $@20: %empty */ -#line 3202 "dtool/src/cppparser/cppBison.yxx" + case 415: /* $@21: %empty */ +#line 3255 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = false; } -#line 7985 "built/tmp/cppBison.yxx.c" +#line 7896 "built/tmp/cppBison.yxx.c" break; - case 420: /* code: $@20 code_block */ -#line 3206 "dtool/src/cppparser/cppBison.yxx" + case 416: /* code: $@21 code_block */ +#line 3259 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = true; } -#line 7993 "built/tmp/cppBison.yxx.c" +#line 7904 "built/tmp/cppBison.yxx.c" break; - case 535: /* element: KW_WHILE */ -#line 3251 "dtool/src/cppparser/cppBison.yxx" + case 531: /* element: KW_WHILE */ +#line 3304 "dtool/src/cppparser/cppBison.yxx" { } -#line 8000 "built/tmp/cppBison.yxx.c" +#line 7911 "built/tmp/cppBison.yxx.c" break; - case 559: /* optional_const_expr: empty */ -#line 3260 "dtool/src/cppparser/cppBison.yxx" + case 555: /* optional_const_expr: empty */ +#line 3313 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } -#line 8008 "built/tmp/cppBison.yxx.c" +#line 7919 "built/tmp/cppBison.yxx.c" break; - case 560: /* optional_const_expr: const_expr */ -#line 3264 "dtool/src/cppparser/cppBison.yxx" + case 556: /* optional_const_expr: const_expr */ +#line 3317 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8016 "built/tmp/cppBison.yxx.c" +#line 7927 "built/tmp/cppBison.yxx.c" break; - case 561: /* optional_const_expr_comma: empty */ -#line 3271 "dtool/src/cppparser/cppBison.yxx" + case 557: /* optional_const_expr_comma: empty */ +#line 3324 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = nullptr; } -#line 8024 "built/tmp/cppBison.yxx.c" +#line 7935 "built/tmp/cppBison.yxx.c" break; - case 562: /* optional_const_expr_comma: const_expr_comma */ -#line 3275 "dtool/src/cppparser/cppBison.yxx" + case 558: /* optional_const_expr_comma: const_expr_comma */ +#line 3328 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8032 "built/tmp/cppBison.yxx.c" +#line 7943 "built/tmp/cppBison.yxx.c" break; - case 563: /* const_expr_comma: const_expr */ -#line 3282 "dtool/src/cppparser/cppBison.yxx" + case 559: /* const_expr_comma: const_expr */ +#line 3335 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8040 "built/tmp/cppBison.yxx.c" +#line 7951 "built/tmp/cppBison.yxx.c" break; - case 564: /* const_expr_comma: const_expr_comma ',' const_expr */ -#line 3286 "dtool/src/cppparser/cppBison.yxx" + case 560: /* const_expr_comma: const_expr_comma ',' const_expr */ +#line 3339 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8048 "built/tmp/cppBison.yxx.c" +#line 7959 "built/tmp/cppBison.yxx.c" break; - case 565: /* no_angle_bracket_const_expr: const_operand */ -#line 3293 "dtool/src/cppparser/cppBison.yxx" + case 561: /* no_angle_bracket_const_expr: const_operand */ +#line 3346 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8056 "built/tmp/cppBison.yxx.c" +#line 7967 "built/tmp/cppBison.yxx.c" break; - case 566: /* no_angle_bracket_const_expr: '(' full_type ')' no_angle_bracket_const_expr */ -#line 3297 "dtool/src/cppparser/cppBison.yxx" + case 562: /* no_angle_bracket_const_expr: '(' full_type ')' no_angle_bracket_const_expr */ +#line 3350 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 8064 "built/tmp/cppBison.yxx.c" +#line 7975 "built/tmp/cppBison.yxx.c" break; - case 567: /* no_angle_bracket_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3301 "dtool/src/cppparser/cppBison.yxx" + case 563: /* no_angle_bracket_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3354 "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 8072 "built/tmp/cppBison.yxx.c" +#line 7983 "built/tmp/cppBison.yxx.c" break; - case 568: /* no_angle_bracket_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3305 "dtool/src/cppparser/cppBison.yxx" + case 564: /* no_angle_bracket_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3358 "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 8080 "built/tmp/cppBison.yxx.c" +#line 7991 "built/tmp/cppBison.yxx.c" break; - case 569: /* no_angle_bracket_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3309 "dtool/src/cppparser/cppBison.yxx" + case 565: /* no_angle_bracket_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3362 "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 8088 "built/tmp/cppBison.yxx.c" +#line 7999 "built/tmp/cppBison.yxx.c" break; - case 570: /* no_angle_bracket_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3313 "dtool/src/cppparser/cppBison.yxx" + case 566: /* no_angle_bracket_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3366 "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 8096 "built/tmp/cppBison.yxx.c" +#line 8007 "built/tmp/cppBison.yxx.c" break; - case 571: /* no_angle_bracket_const_expr: KW_SIZEOF '(' full_type ')' */ -#line 3317 "dtool/src/cppparser/cppBison.yxx" + case 567: /* no_angle_bracket_const_expr: KW_SIZEOF '(' full_type ')' */ +#line 3370 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } -#line 8104 "built/tmp/cppBison.yxx.c" +#line 8015 "built/tmp/cppBison.yxx.c" break; - case 572: /* no_angle_bracket_const_expr: KW_SIZEOF no_angle_bracket_const_expr */ -#line 3321 "dtool/src/cppparser/cppBison.yxx" + case 568: /* no_angle_bracket_const_expr: KW_SIZEOF no_angle_bracket_const_expr */ +#line 3374 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr))); } -#line 8112 "built/tmp/cppBison.yxx.c" +#line 8023 "built/tmp/cppBison.yxx.c" break; - case 573: /* no_angle_bracket_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ -#line 3325 "dtool/src/cppparser/cppBison.yxx" + case 569: /* no_angle_bracket_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ +#line 3378 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } -#line 8120 "built/tmp/cppBison.yxx.c" +#line 8031 "built/tmp/cppBison.yxx.c" break; - case 574: /* no_angle_bracket_const_expr: KW_ALIGNOF '(' full_type ')' */ -#line 3329 "dtool/src/cppparser/cppBison.yxx" + case 570: /* no_angle_bracket_const_expr: KW_ALIGNOF '(' full_type ')' */ +#line 3382 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } -#line 8128 "built/tmp/cppBison.yxx.c" +#line 8039 "built/tmp/cppBison.yxx.c" break; - case 575: /* no_angle_bracket_const_expr: '!' no_angle_bracket_const_expr */ -#line 3333 "dtool/src/cppparser/cppBison.yxx" + case 571: /* no_angle_bracket_const_expr: '!' no_angle_bracket_const_expr */ +#line 3386 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 8136 "built/tmp/cppBison.yxx.c" +#line 8047 "built/tmp/cppBison.yxx.c" break; - case 576: /* no_angle_bracket_const_expr: '~' no_angle_bracket_const_expr */ -#line 3337 "dtool/src/cppparser/cppBison.yxx" + case 572: /* no_angle_bracket_const_expr: '~' no_angle_bracket_const_expr */ +#line 3390 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 8144 "built/tmp/cppBison.yxx.c" +#line 8055 "built/tmp/cppBison.yxx.c" break; - case 577: /* no_angle_bracket_const_expr: '-' no_angle_bracket_const_expr */ -#line 3341 "dtool/src/cppparser/cppBison.yxx" + case 573: /* no_angle_bracket_const_expr: '-' no_angle_bracket_const_expr */ +#line 3394 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 8152 "built/tmp/cppBison.yxx.c" +#line 8063 "built/tmp/cppBison.yxx.c" break; - case 578: /* no_angle_bracket_const_expr: '+' no_angle_bracket_const_expr */ -#line 3345 "dtool/src/cppparser/cppBison.yxx" + case 574: /* no_angle_bracket_const_expr: '+' no_angle_bracket_const_expr */ +#line 3398 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 8160 "built/tmp/cppBison.yxx.c" +#line 8071 "built/tmp/cppBison.yxx.c" break; - case 579: /* no_angle_bracket_const_expr: '*' no_angle_bracket_const_expr */ -#line 3349 "dtool/src/cppparser/cppBison.yxx" + case 575: /* no_angle_bracket_const_expr: '*' no_angle_bracket_const_expr */ +#line 3402 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } -#line 8168 "built/tmp/cppBison.yxx.c" +#line 8079 "built/tmp/cppBison.yxx.c" break; - case 580: /* no_angle_bracket_const_expr: '&' no_angle_bracket_const_expr */ -#line 3353 "dtool/src/cppparser/cppBison.yxx" + case 576: /* no_angle_bracket_const_expr: '&' no_angle_bracket_const_expr */ +#line 3406 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 8176 "built/tmp/cppBison.yxx.c" +#line 8087 "built/tmp/cppBison.yxx.c" break; - case 581: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '*' no_angle_bracket_const_expr */ -#line 3357 "dtool/src/cppparser/cppBison.yxx" + case 577: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '*' no_angle_bracket_const_expr */ +#line 3410 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8184 "built/tmp/cppBison.yxx.c" +#line 8095 "built/tmp/cppBison.yxx.c" break; - case 582: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '/' no_angle_bracket_const_expr */ -#line 3361 "dtool/src/cppparser/cppBison.yxx" + case 578: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '/' no_angle_bracket_const_expr */ +#line 3414 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8192 "built/tmp/cppBison.yxx.c" +#line 8103 "built/tmp/cppBison.yxx.c" break; - case 583: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '%' no_angle_bracket_const_expr */ -#line 3365 "dtool/src/cppparser/cppBison.yxx" + case 579: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '%' no_angle_bracket_const_expr */ +#line 3418 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8200 "built/tmp/cppBison.yxx.c" +#line 8111 "built/tmp/cppBison.yxx.c" break; - case 584: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '+' no_angle_bracket_const_expr */ -#line 3369 "dtool/src/cppparser/cppBison.yxx" + case 580: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '+' no_angle_bracket_const_expr */ +#line 3422 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8208 "built/tmp/cppBison.yxx.c" +#line 8119 "built/tmp/cppBison.yxx.c" break; - case 585: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '-' no_angle_bracket_const_expr */ -#line 3373 "dtool/src/cppparser/cppBison.yxx" + case 581: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '-' no_angle_bracket_const_expr */ +#line 3426 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8216 "built/tmp/cppBison.yxx.c" +#line 8127 "built/tmp/cppBison.yxx.c" break; - case 586: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '|' no_angle_bracket_const_expr */ -#line 3377 "dtool/src/cppparser/cppBison.yxx" + case 582: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '|' no_angle_bracket_const_expr */ +#line 3430 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8224 "built/tmp/cppBison.yxx.c" +#line 8135 "built/tmp/cppBison.yxx.c" break; - case 587: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '^' no_angle_bracket_const_expr */ -#line 3381 "dtool/src/cppparser/cppBison.yxx" + case 583: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '^' no_angle_bracket_const_expr */ +#line 3434 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8232 "built/tmp/cppBison.yxx.c" +#line 8143 "built/tmp/cppBison.yxx.c" break; - case 588: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '&' no_angle_bracket_const_expr */ -#line 3385 "dtool/src/cppparser/cppBison.yxx" + case 584: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '&' no_angle_bracket_const_expr */ +#line 3438 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8240 "built/tmp/cppBison.yxx.c" +#line 8151 "built/tmp/cppBison.yxx.c" break; - case 589: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr OROR no_angle_bracket_const_expr */ -#line 3389 "dtool/src/cppparser/cppBison.yxx" + case 585: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr OROR no_angle_bracket_const_expr */ +#line 3442 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8248 "built/tmp/cppBison.yxx.c" +#line 8159 "built/tmp/cppBison.yxx.c" break; - case 590: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr ANDAND no_angle_bracket_const_expr */ -#line 3393 "dtool/src/cppparser/cppBison.yxx" + case 586: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr ANDAND no_angle_bracket_const_expr */ +#line 3446 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8256 "built/tmp/cppBison.yxx.c" +#line 8167 "built/tmp/cppBison.yxx.c" break; - case 591: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr EQCOMPARE no_angle_bracket_const_expr */ -#line 3397 "dtool/src/cppparser/cppBison.yxx" + case 587: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr EQCOMPARE no_angle_bracket_const_expr */ +#line 3450 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8264 "built/tmp/cppBison.yxx.c" +#line 8175 "built/tmp/cppBison.yxx.c" break; - case 592: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr NECOMPARE no_angle_bracket_const_expr */ -#line 3401 "dtool/src/cppparser/cppBison.yxx" + case 588: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr NECOMPARE no_angle_bracket_const_expr */ +#line 3454 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8272 "built/tmp/cppBison.yxx.c" +#line 8183 "built/tmp/cppBison.yxx.c" break; - case 593: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LECOMPARE no_angle_bracket_const_expr */ -#line 3405 "dtool/src/cppparser/cppBison.yxx" + case 589: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LECOMPARE no_angle_bracket_const_expr */ +#line 3458 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8280 "built/tmp/cppBison.yxx.c" +#line 8191 "built/tmp/cppBison.yxx.c" break; - case 594: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr GECOMPARE no_angle_bracket_const_expr */ -#line 3409 "dtool/src/cppparser/cppBison.yxx" + case 590: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr GECOMPARE no_angle_bracket_const_expr */ +#line 3462 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8288 "built/tmp/cppBison.yxx.c" +#line 8199 "built/tmp/cppBison.yxx.c" break; - case 595: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr SPACESHIP no_angle_bracket_const_expr */ -#line 3413 "dtool/src/cppparser/cppBison.yxx" + case 591: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr SPACESHIP no_angle_bracket_const_expr */ +#line 3466 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(SPACESHIP, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8296 "built/tmp/cppBison.yxx.c" +#line 8207 "built/tmp/cppBison.yxx.c" break; - case 596: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LSHIFT no_angle_bracket_const_expr */ -#line 3417 "dtool/src/cppparser/cppBison.yxx" + case 592: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr LSHIFT no_angle_bracket_const_expr */ +#line 3470 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8304 "built/tmp/cppBison.yxx.c" +#line 8215 "built/tmp/cppBison.yxx.c" break; - case 597: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr RSHIFT no_angle_bracket_const_expr */ -#line 3421 "dtool/src/cppparser/cppBison.yxx" + case 593: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr RSHIFT no_angle_bracket_const_expr */ +#line 3474 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8312 "built/tmp/cppBison.yxx.c" +#line 8223 "built/tmp/cppBison.yxx.c" break; - case 598: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '?' no_angle_bracket_const_expr ':' no_angle_bracket_const_expr */ -#line 3425 "dtool/src/cppparser/cppBison.yxx" + case 594: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '?' no_angle_bracket_const_expr ':' no_angle_bracket_const_expr */ +#line 3478 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8320 "built/tmp/cppBison.yxx.c" +#line 8231 "built/tmp/cppBison.yxx.c" break; - case 599: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '[' const_expr ']' */ -#line 3429 "dtool/src/cppparser/cppBison.yxx" + case 595: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '[' const_expr ']' */ +#line 3482 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8328 "built/tmp/cppBison.yxx.c" +#line 8239 "built/tmp/cppBison.yxx.c" break; - case 600: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' const_expr_comma ')' */ -#line 3433 "dtool/src/cppparser/cppBison.yxx" + case 596: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' const_expr_comma ')' */ +#line 3486 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8336 "built/tmp/cppBison.yxx.c" +#line 8247 "built/tmp/cppBison.yxx.c" break; - case 601: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' ')' */ -#line 3437 "dtool/src/cppparser/cppBison.yxx" + case 597: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '(' ')' */ +#line 3490 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } -#line 8344 "built/tmp/cppBison.yxx.c" +#line 8255 "built/tmp/cppBison.yxx.c" break; - case 602: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '.' name */ -#line 3441 "dtool/src/cppparser/cppBison.yxx" + case 598: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr '.' name */ +#line 3494 "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 8352 "built/tmp/cppBison.yxx.c" +#line 8263 "built/tmp/cppBison.yxx.c" break; - case 603: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr POINTSAT no_angle_bracket_const_expr */ -#line 3445 "dtool/src/cppparser/cppBison.yxx" + case 599: /* no_angle_bracket_const_expr: no_angle_bracket_const_expr POINTSAT no_angle_bracket_const_expr */ +#line 3498 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8360 "built/tmp/cppBison.yxx.c" +#line 8271 "built/tmp/cppBison.yxx.c" break; - case 604: /* no_angle_bracket_const_expr: '(' const_expr_comma ')' */ -#line 3449 "dtool/src/cppparser/cppBison.yxx" + case 600: /* no_angle_bracket_const_expr: '(' const_expr_comma ')' */ +#line 3502 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } -#line 8368 "built/tmp/cppBison.yxx.c" +#line 8279 "built/tmp/cppBison.yxx.c" break; - case 605: /* const_expr: const_operand */ -#line 3457 "dtool/src/cppparser/cppBison.yxx" + case 601: /* const_expr: const_operand */ +#line 3510 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8376 "built/tmp/cppBison.yxx.c" +#line 8287 "built/tmp/cppBison.yxx.c" break; - case 606: /* const_expr: '(' full_type ')' const_expr */ -#line 3461 "dtool/src/cppparser/cppBison.yxx" + case 602: /* const_expr: '(' full_type ')' const_expr */ +#line 3514 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 8384 "built/tmp/cppBison.yxx.c" +#line 8295 "built/tmp/cppBison.yxx.c" break; - case 607: /* const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3465 "dtool/src/cppparser/cppBison.yxx" + case 603: /* const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3518 "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 8392 "built/tmp/cppBison.yxx.c" +#line 8303 "built/tmp/cppBison.yxx.c" break; - case 608: /* const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3469 "dtool/src/cppparser/cppBison.yxx" + case 604: /* const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3522 "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 8400 "built/tmp/cppBison.yxx.c" +#line 8311 "built/tmp/cppBison.yxx.c" break; - case 609: /* const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3473 "dtool/src/cppparser/cppBison.yxx" + case 605: /* const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3526 "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 8408 "built/tmp/cppBison.yxx.c" +#line 8319 "built/tmp/cppBison.yxx.c" break; - case 610: /* const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3477 "dtool/src/cppparser/cppBison.yxx" + case 606: /* const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3530 "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 8416 "built/tmp/cppBison.yxx.c" +#line 8327 "built/tmp/cppBison.yxx.c" break; - case 611: /* const_expr: TYPENAME_IDENTIFIER '(' optional_const_expr_comma ')' */ -#line 3481 "dtool/src/cppparser/cppBison.yxx" + case 607: /* const_expr: TYPENAME_IDENTIFIER '(' optional_const_expr_comma ')' */ +#line 3534 "dtool/src/cppparser/cppBison.yxx" { // A constructor call. CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -8426,11 +8337,11 @@ yyreduce: assert(type != nullptr); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8430 "built/tmp/cppBison.yxx.c" +#line 8341 "built/tmp/cppBison.yxx.c" break; - case 612: /* const_expr: TYPENAME_IDENTIFIER '{' optional_const_expr_comma '}' */ -#line 3491 "dtool/src/cppparser/cppBison.yxx" + case 608: /* const_expr: TYPENAME_IDENTIFIER '{' optional_const_expr_comma '}' */ +#line 3544 "dtool/src/cppparser/cppBison.yxx" { // Aggregate initialization. CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -8440,193 +8351,193 @@ yyreduce: assert(type != nullptr); (yyval.u.expr) = new CPPExpression(CPPExpression::aggregate_init_op(type, (yyvsp[-1].u.expr))); } -#line 8444 "built/tmp/cppBison.yxx.c" +#line 8355 "built/tmp/cppBison.yxx.c" break; - case 613: /* const_expr: KW_INT '(' optional_const_expr_comma ')' */ -#line 3501 "dtool/src/cppparser/cppBison.yxx" + case 609: /* const_expr: KW_INT '(' optional_const_expr_comma ')' */ +#line 3554 "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 8454 "built/tmp/cppBison.yxx.c" +#line 8365 "built/tmp/cppBison.yxx.c" break; - case 614: /* const_expr: KW_CHAR '(' optional_const_expr_comma ')' */ -#line 3507 "dtool/src/cppparser/cppBison.yxx" + case 610: /* const_expr: KW_CHAR '(' optional_const_expr_comma ')' */ +#line 3560 "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 8464 "built/tmp/cppBison.yxx.c" +#line 8375 "built/tmp/cppBison.yxx.c" break; - case 615: /* const_expr: KW_WCHAR_T '(' optional_const_expr_comma ')' */ -#line 3513 "dtool/src/cppparser/cppBison.yxx" + case 611: /* const_expr: KW_WCHAR_T '(' optional_const_expr_comma ')' */ +#line 3566 "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 8474 "built/tmp/cppBison.yxx.c" +#line 8385 "built/tmp/cppBison.yxx.c" break; - case 616: /* const_expr: KW_CHAR8_T '(' optional_const_expr_comma ')' */ -#line 3519 "dtool/src/cppparser/cppBison.yxx" + case 612: /* const_expr: KW_CHAR8_T '(' optional_const_expr_comma ')' */ +#line 3572 "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 8484 "built/tmp/cppBison.yxx.c" +#line 8395 "built/tmp/cppBison.yxx.c" break; - case 617: /* const_expr: KW_CHAR16_T '(' optional_const_expr_comma ')' */ -#line 3525 "dtool/src/cppparser/cppBison.yxx" + case 613: /* const_expr: KW_CHAR16_T '(' optional_const_expr_comma ')' */ +#line 3578 "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 8494 "built/tmp/cppBison.yxx.c" +#line 8405 "built/tmp/cppBison.yxx.c" break; - case 618: /* const_expr: KW_CHAR32_T '(' optional_const_expr_comma ')' */ -#line 3531 "dtool/src/cppparser/cppBison.yxx" + case 614: /* const_expr: KW_CHAR32_T '(' optional_const_expr_comma ')' */ +#line 3584 "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 8504 "built/tmp/cppBison.yxx.c" +#line 8415 "built/tmp/cppBison.yxx.c" break; - case 619: /* const_expr: KW_BOOL '(' optional_const_expr_comma ')' */ -#line 3537 "dtool/src/cppparser/cppBison.yxx" + case 615: /* const_expr: KW_BOOL '(' optional_const_expr_comma ')' */ +#line 3590 "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 8514 "built/tmp/cppBison.yxx.c" +#line 8425 "built/tmp/cppBison.yxx.c" break; - case 620: /* const_expr: KW_SHORT '(' optional_const_expr_comma ')' */ -#line 3543 "dtool/src/cppparser/cppBison.yxx" + case 616: /* const_expr: KW_SHORT '(' optional_const_expr_comma ')' */ +#line 3596 "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 8525 "built/tmp/cppBison.yxx.c" +#line 8436 "built/tmp/cppBison.yxx.c" break; - case 621: /* const_expr: KW_LONG '(' optional_const_expr_comma ')' */ -#line 3550 "dtool/src/cppparser/cppBison.yxx" + case 617: /* const_expr: KW_LONG '(' optional_const_expr_comma ')' */ +#line 3603 "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 8536 "built/tmp/cppBison.yxx.c" +#line 8447 "built/tmp/cppBison.yxx.c" break; - case 622: /* const_expr: KW_UNSIGNED '(' optional_const_expr_comma ')' */ -#line 3557 "dtool/src/cppparser/cppBison.yxx" + case 618: /* const_expr: KW_UNSIGNED '(' optional_const_expr_comma ')' */ +#line 3610 "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 8547 "built/tmp/cppBison.yxx.c" +#line 8458 "built/tmp/cppBison.yxx.c" break; - case 623: /* const_expr: KW_SIGNED '(' optional_const_expr_comma ')' */ -#line 3564 "dtool/src/cppparser/cppBison.yxx" + case 619: /* const_expr: KW_SIGNED '(' optional_const_expr_comma ')' */ +#line 3617 "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 8558 "built/tmp/cppBison.yxx.c" +#line 8469 "built/tmp/cppBison.yxx.c" break; - case 624: /* const_expr: KW_FLOAT '(' optional_const_expr_comma ')' */ -#line 3571 "dtool/src/cppparser/cppBison.yxx" + case 620: /* const_expr: KW_FLOAT '(' optional_const_expr_comma ')' */ +#line 3624 "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 8568 "built/tmp/cppBison.yxx.c" +#line 8479 "built/tmp/cppBison.yxx.c" break; - case 625: /* const_expr: KW_DOUBLE '(' optional_const_expr_comma ')' */ -#line 3577 "dtool/src/cppparser/cppBison.yxx" + case 621: /* const_expr: KW_DOUBLE '(' optional_const_expr_comma ')' */ +#line 3630 "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 8578 "built/tmp/cppBison.yxx.c" +#line 8489 "built/tmp/cppBison.yxx.c" break; - case 626: /* const_expr: KW_SIZEOF '(' full_type ')' */ -#line 3583 "dtool/src/cppparser/cppBison.yxx" + case 622: /* const_expr: KW_SIZEOF '(' full_type ')' */ +#line 3636 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } -#line 8586 "built/tmp/cppBison.yxx.c" +#line 8497 "built/tmp/cppBison.yxx.c" break; - case 627: /* const_expr: KW_SIZEOF const_expr */ -#line 3587 "dtool/src/cppparser/cppBison.yxx" + case 623: /* const_expr: KW_SIZEOF const_expr */ +#line 3640 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr))); } -#line 8594 "built/tmp/cppBison.yxx.c" +#line 8505 "built/tmp/cppBison.yxx.c" break; - case 628: /* const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ -#line 3591 "dtool/src/cppparser/cppBison.yxx" + case 624: /* const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ +#line 3644 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } -#line 8602 "built/tmp/cppBison.yxx.c" +#line 8513 "built/tmp/cppBison.yxx.c" break; - case 629: /* const_expr: KW_ALIGNOF '(' full_type ')' */ -#line 3595 "dtool/src/cppparser/cppBison.yxx" + case 625: /* const_expr: KW_ALIGNOF '(' full_type ')' */ +#line 3648 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } -#line 8610 "built/tmp/cppBison.yxx.c" +#line 8521 "built/tmp/cppBison.yxx.c" break; - case 630: /* const_expr: KW_NEW predefined_type */ -#line 3599 "dtool/src/cppparser/cppBison.yxx" + case 626: /* const_expr: KW_NEW predefined_type */ +#line 3652 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); } -#line 8618 "built/tmp/cppBison.yxx.c" +#line 8529 "built/tmp/cppBison.yxx.c" break; - case 631: /* const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */ -#line 3603 "dtool/src/cppparser/cppBison.yxx" + case 627: /* const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */ +#line 3656 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); } -#line 8626 "built/tmp/cppBison.yxx.c" +#line 8537 "built/tmp/cppBison.yxx.c" break; - case 632: /* const_expr: KW_TYPEID '(' full_type ')' */ -#line 3607 "dtool/src/cppparser/cppBison.yxx" + case 628: /* const_expr: KW_TYPEID '(' full_type ')' */ +#line 3660 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); @@ -8637,11 +8548,11 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } -#line 8641 "built/tmp/cppBison.yxx.c" +#line 8552 "built/tmp/cppBison.yxx.c" break; - case 633: /* const_expr: KW_TYPEID '(' const_expr ')' */ -#line 3618 "dtool/src/cppparser/cppBison.yxx" + case 629: /* const_expr: KW_TYPEID '(' const_expr ')' */ +#line 3671 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); @@ -8652,620 +8563,622 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } -#line 8656 "built/tmp/cppBison.yxx.c" +#line 8567 "built/tmp/cppBison.yxx.c" break; - case 634: /* const_expr: '!' const_expr */ -#line 3629 "dtool/src/cppparser/cppBison.yxx" + case 630: /* const_expr: '!' const_expr */ +#line 3682 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 8664 "built/tmp/cppBison.yxx.c" +#line 8575 "built/tmp/cppBison.yxx.c" break; - case 635: /* const_expr: '~' const_expr */ -#line 3633 "dtool/src/cppparser/cppBison.yxx" + case 631: /* const_expr: '~' const_expr */ +#line 3686 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 8672 "built/tmp/cppBison.yxx.c" +#line 8583 "built/tmp/cppBison.yxx.c" break; - case 636: /* const_expr: '-' const_expr */ -#line 3637 "dtool/src/cppparser/cppBison.yxx" + case 632: /* const_expr: '-' const_expr */ +#line 3690 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 8680 "built/tmp/cppBison.yxx.c" +#line 8591 "built/tmp/cppBison.yxx.c" break; - case 637: /* const_expr: '+' const_expr */ -#line 3641 "dtool/src/cppparser/cppBison.yxx" + case 633: /* const_expr: '+' const_expr */ +#line 3694 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 8688 "built/tmp/cppBison.yxx.c" +#line 8599 "built/tmp/cppBison.yxx.c" break; - case 638: /* const_expr: '*' const_expr */ -#line 3645 "dtool/src/cppparser/cppBison.yxx" + case 634: /* const_expr: '*' const_expr */ +#line 3698 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } -#line 8696 "built/tmp/cppBison.yxx.c" +#line 8607 "built/tmp/cppBison.yxx.c" break; - case 639: /* const_expr: '&' const_expr */ -#line 3649 "dtool/src/cppparser/cppBison.yxx" + case 635: /* const_expr: '&' const_expr */ +#line 3702 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 8704 "built/tmp/cppBison.yxx.c" +#line 8615 "built/tmp/cppBison.yxx.c" break; - case 640: /* const_expr: const_expr '*' const_expr */ -#line 3653 "dtool/src/cppparser/cppBison.yxx" + case 636: /* const_expr: const_expr '*' const_expr */ +#line 3706 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8712 "built/tmp/cppBison.yxx.c" +#line 8623 "built/tmp/cppBison.yxx.c" break; - case 641: /* const_expr: const_expr '/' const_expr */ -#line 3657 "dtool/src/cppparser/cppBison.yxx" + case 637: /* const_expr: const_expr '/' const_expr */ +#line 3710 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8720 "built/tmp/cppBison.yxx.c" +#line 8631 "built/tmp/cppBison.yxx.c" break; - case 642: /* const_expr: const_expr '%' const_expr */ -#line 3661 "dtool/src/cppparser/cppBison.yxx" + case 638: /* const_expr: const_expr '%' const_expr */ +#line 3714 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8728 "built/tmp/cppBison.yxx.c" +#line 8639 "built/tmp/cppBison.yxx.c" break; - case 643: /* const_expr: const_expr '+' const_expr */ -#line 3665 "dtool/src/cppparser/cppBison.yxx" + case 639: /* const_expr: const_expr '+' const_expr */ +#line 3718 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8736 "built/tmp/cppBison.yxx.c" +#line 8647 "built/tmp/cppBison.yxx.c" break; - case 644: /* const_expr: const_expr '-' const_expr */ -#line 3669 "dtool/src/cppparser/cppBison.yxx" + case 640: /* const_expr: const_expr '-' const_expr */ +#line 3722 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8744 "built/tmp/cppBison.yxx.c" +#line 8655 "built/tmp/cppBison.yxx.c" break; - case 645: /* const_expr: const_expr '|' const_expr */ -#line 3673 "dtool/src/cppparser/cppBison.yxx" + case 641: /* const_expr: const_expr '|' const_expr */ +#line 3726 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8752 "built/tmp/cppBison.yxx.c" +#line 8663 "built/tmp/cppBison.yxx.c" break; - case 646: /* const_expr: const_expr '^' const_expr */ -#line 3677 "dtool/src/cppparser/cppBison.yxx" + case 642: /* const_expr: const_expr '^' const_expr */ +#line 3730 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8760 "built/tmp/cppBison.yxx.c" +#line 8671 "built/tmp/cppBison.yxx.c" break; - case 647: /* const_expr: const_expr '&' const_expr */ -#line 3681 "dtool/src/cppparser/cppBison.yxx" + case 643: /* const_expr: const_expr '&' const_expr */ +#line 3734 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8768 "built/tmp/cppBison.yxx.c" +#line 8679 "built/tmp/cppBison.yxx.c" break; - case 648: /* const_expr: const_expr OROR const_expr */ -#line 3685 "dtool/src/cppparser/cppBison.yxx" + case 644: /* const_expr: const_expr OROR const_expr */ +#line 3738 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8776 "built/tmp/cppBison.yxx.c" +#line 8687 "built/tmp/cppBison.yxx.c" break; - case 649: /* const_expr: const_expr ANDAND const_expr */ -#line 3689 "dtool/src/cppparser/cppBison.yxx" + case 645: /* const_expr: const_expr ANDAND const_expr */ +#line 3742 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8784 "built/tmp/cppBison.yxx.c" +#line 8695 "built/tmp/cppBison.yxx.c" break; - case 650: /* const_expr: const_expr EQCOMPARE const_expr */ -#line 3693 "dtool/src/cppparser/cppBison.yxx" + case 646: /* const_expr: const_expr EQCOMPARE const_expr */ +#line 3746 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8792 "built/tmp/cppBison.yxx.c" +#line 8703 "built/tmp/cppBison.yxx.c" break; - case 651: /* const_expr: const_expr NECOMPARE const_expr */ -#line 3697 "dtool/src/cppparser/cppBison.yxx" + case 647: /* const_expr: const_expr NECOMPARE const_expr */ +#line 3750 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8800 "built/tmp/cppBison.yxx.c" +#line 8711 "built/tmp/cppBison.yxx.c" break; - case 652: /* const_expr: const_expr LECOMPARE const_expr */ -#line 3701 "dtool/src/cppparser/cppBison.yxx" + case 648: /* const_expr: const_expr LECOMPARE const_expr */ +#line 3754 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8808 "built/tmp/cppBison.yxx.c" +#line 8719 "built/tmp/cppBison.yxx.c" break; - case 653: /* const_expr: const_expr GECOMPARE const_expr */ -#line 3705 "dtool/src/cppparser/cppBison.yxx" + case 649: /* const_expr: const_expr GECOMPARE const_expr */ +#line 3758 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8816 "built/tmp/cppBison.yxx.c" +#line 8727 "built/tmp/cppBison.yxx.c" break; - case 654: /* const_expr: const_expr SPACESHIP const_expr */ -#line 3709 "dtool/src/cppparser/cppBison.yxx" + case 650: /* const_expr: const_expr SPACESHIP const_expr */ +#line 3762 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(SPACESHIP, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8824 "built/tmp/cppBison.yxx.c" +#line 8735 "built/tmp/cppBison.yxx.c" break; - case 655: /* const_expr: const_expr '<' const_expr */ -#line 3713 "dtool/src/cppparser/cppBison.yxx" + case 651: /* const_expr: const_expr '<' const_expr */ +#line 3766 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8832 "built/tmp/cppBison.yxx.c" +#line 8743 "built/tmp/cppBison.yxx.c" break; - case 656: /* const_expr: const_expr '>' const_expr */ -#line 3717 "dtool/src/cppparser/cppBison.yxx" + case 652: /* const_expr: const_expr '>' const_expr */ +#line 3770 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8840 "built/tmp/cppBison.yxx.c" +#line 8751 "built/tmp/cppBison.yxx.c" break; - case 657: /* const_expr: const_expr LSHIFT const_expr */ -#line 3721 "dtool/src/cppparser/cppBison.yxx" + case 653: /* const_expr: const_expr LSHIFT const_expr */ +#line 3774 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8848 "built/tmp/cppBison.yxx.c" +#line 8759 "built/tmp/cppBison.yxx.c" break; - case 658: /* const_expr: const_expr RSHIFT const_expr */ -#line 3725 "dtool/src/cppparser/cppBison.yxx" + case 654: /* const_expr: const_expr RSHIFT const_expr */ +#line 3778 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8856 "built/tmp/cppBison.yxx.c" +#line 8767 "built/tmp/cppBison.yxx.c" break; - case 659: /* const_expr: const_expr '?' const_expr ':' const_expr */ -#line 3729 "dtool/src/cppparser/cppBison.yxx" + case 655: /* const_expr: const_expr '?' const_expr ':' const_expr */ +#line 3782 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8864 "built/tmp/cppBison.yxx.c" +#line 8775 "built/tmp/cppBison.yxx.c" break; - case 660: /* const_expr: const_expr '[' const_expr ']' */ -#line 3733 "dtool/src/cppparser/cppBison.yxx" + case 656: /* const_expr: const_expr '[' const_expr ']' */ +#line 3786 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8872 "built/tmp/cppBison.yxx.c" +#line 8783 "built/tmp/cppBison.yxx.c" break; - case 661: /* const_expr: const_expr '(' const_expr_comma ')' */ -#line 3737 "dtool/src/cppparser/cppBison.yxx" + case 657: /* const_expr: const_expr '(' const_expr_comma ')' */ +#line 3790 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8880 "built/tmp/cppBison.yxx.c" +#line 8791 "built/tmp/cppBison.yxx.c" break; - case 662: /* const_expr: const_expr '(' ')' */ -#line 3741 "dtool/src/cppparser/cppBison.yxx" + case 658: /* const_expr: const_expr '(' ')' */ +#line 3794 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } -#line 8888 "built/tmp/cppBison.yxx.c" +#line 8799 "built/tmp/cppBison.yxx.c" break; - case 663: /* const_expr: KW_NOEXCEPT_LPAREN const_expr ')' */ -#line 3745 "dtool/src/cppparser/cppBison.yxx" + case 659: /* const_expr: KW_NOEXCEPT_LPAREN const_expr ')' */ +#line 3798 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(KW_NOEXCEPT, (yyvsp[-1].u.expr)); } -#line 8896 "built/tmp/cppBison.yxx.c" +#line 8807 "built/tmp/cppBison.yxx.c" break; - case 664: /* const_expr: const_expr '.' name */ -#line 3749 "dtool/src/cppparser/cppBison.yxx" + case 660: /* const_expr: const_expr '.' name */ +#line 3802 "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 8904 "built/tmp/cppBison.yxx.c" +#line 8815 "built/tmp/cppBison.yxx.c" break; - case 665: /* const_expr: const_expr POINTSAT const_expr */ -#line 3753 "dtool/src/cppparser/cppBison.yxx" + case 661: /* const_expr: const_expr POINTSAT const_expr */ +#line 3806 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8912 "built/tmp/cppBison.yxx.c" +#line 8823 "built/tmp/cppBison.yxx.c" break; - case 666: /* const_expr: '(' const_expr_comma ')' */ -#line 3757 "dtool/src/cppparser/cppBison.yxx" + case 662: /* const_expr: '(' const_expr_comma ')' */ +#line 3810 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } -#line 8920 "built/tmp/cppBison.yxx.c" +#line 8831 "built/tmp/cppBison.yxx.c" break; - case 667: /* const_operand: INTEGER */ -#line 3764 "dtool/src/cppparser/cppBison.yxx" + case 663: /* const_operand: INTEGER */ +#line 3817 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 8928 "built/tmp/cppBison.yxx.c" +#line 8839 "built/tmp/cppBison.yxx.c" break; - case 668: /* const_operand: KW_TRUE */ -#line 3768 "dtool/src/cppparser/cppBison.yxx" + case 664: /* const_operand: KW_TRUE */ +#line 3821 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(true); } -#line 8936 "built/tmp/cppBison.yxx.c" +#line 8847 "built/tmp/cppBison.yxx.c" break; - case 669: /* const_operand: KW_FALSE */ -#line 3772 "dtool/src/cppparser/cppBison.yxx" + case 665: /* const_operand: KW_FALSE */ +#line 3825 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(false); } -#line 8944 "built/tmp/cppBison.yxx.c" +#line 8855 "built/tmp/cppBison.yxx.c" break; - case 670: /* const_operand: CHAR_TOK */ -#line 3776 "dtool/src/cppparser/cppBison.yxx" + case 666: /* const_operand: CHAR_TOK */ +#line 3829 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 8952 "built/tmp/cppBison.yxx.c" +#line 8863 "built/tmp/cppBison.yxx.c" break; - case 671: /* const_operand: REAL */ -#line 3780 "dtool/src/cppparser/cppBison.yxx" + case 667: /* const_operand: REAL */ +#line 3833 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); } -#line 8960 "built/tmp/cppBison.yxx.c" +#line 8871 "built/tmp/cppBison.yxx.c" break; - case 672: /* const_operand: string_literal */ -#line 3784 "dtool/src/cppparser/cppBison.yxx" + case 668: /* const_operand: string_literal */ +#line 3837 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8968 "built/tmp/cppBison.yxx.c" +#line 8879 "built/tmp/cppBison.yxx.c" break; - case 673: /* const_operand: CUSTOM_LITERAL */ -#line 3788 "dtool/src/cppparser/cppBison.yxx" + case 669: /* const_operand: CUSTOM_LITERAL */ +#line 3841 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8976 "built/tmp/cppBison.yxx.c" +#line 8887 "built/tmp/cppBison.yxx.c" break; - case 674: /* const_operand: IDENTIFIER */ -#line 3792 "dtool/src/cppparser/cppBison.yxx" + case 670: /* const_operand: IDENTIFIER */ +#line 3845 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); } -#line 8984 "built/tmp/cppBison.yxx.c" +#line 8895 "built/tmp/cppBison.yxx.c" break; - case 675: /* const_operand: KW_FINAL */ -#line 3796 "dtool/src/cppparser/cppBison.yxx" + case 671: /* const_operand: KW_FINAL */ +#line 3849 "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 8905 "built/tmp/cppBison.yxx.c" + break; + + case 672: /* const_operand: KW_OVERRIDE */ +#line 3855 "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 8915 "built/tmp/cppBison.yxx.c" + break; + + case 673: /* const_operand: KW_NULLPTR */ +#line 3861 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); +} +#line 8923 "built/tmp/cppBison.yxx.c" + break; + + case 674: /* const_operand: '[' capture_list ']' function_post optional_attributes maybe_trailing_return_type '{' code '}' */ +#line 3865 "dtool/src/cppparser/cppBison.yxx" +{ + (yyvsp[-7].u.closure_type)->_flags = (yyvsp[-5].u.integer); + (yyvsp[-7].u.closure_type)->_attributes = (yyvsp[-4].attr_list); + (yyvsp[-7].u.closure_type)->_return_type = (yyvsp[-3].u.type); + (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-7].u.closure_type))); +} +#line 8934 "built/tmp/cppBison.yxx.c" + break; + + case 675: /* const_operand: '[' capture_list ']' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type '{' code '}' */ +#line 3872 "dtool/src/cppparser/cppBison.yxx" +{ + (yyvsp[-10].u.closure_type)->_parameters = (yyvsp[-7].u.param_list); + (yyvsp[-10].u.closure_type)->_flags = (yyvsp[-5].u.integer); + (yyvsp[-10].u.closure_type)->_attributes = (yyvsp[-4].attr_list); + (yyvsp[-10].u.closure_type)->_return_type = (yyvsp[-3].u.type); + (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-10].u.closure_type))); +} +#line 8946 "built/tmp/cppBison.yxx.c" + break; + + case 676: /* const_operand: KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' */ +#line 3880 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type))); +} +#line 8954 "built/tmp/cppBison.yxx.c" + break; + + case 677: /* const_operand: KW_IS_ABSTRACT '(' full_type ')' */ +#line 3884 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); +} +#line 8962 "built/tmp/cppBison.yxx.c" + break; + + case 678: /* const_operand: KW_IS_BASE_OF '(' full_type ',' full_type ')' */ +#line 3888 "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 8970 "built/tmp/cppBison.yxx.c" + break; + + case 679: /* const_operand: KW_IS_CLASS '(' full_type ')' */ +#line 3892 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); +} +#line 8978 "built/tmp/cppBison.yxx.c" + break; + + case 680: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ')' */ +#line 3896 "dtool/src/cppparser/cppBison.yxx" +{ + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); +} +#line 8986 "built/tmp/cppBison.yxx.c" + break; + + case 681: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ',' full_type ')' */ +#line 3900 "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 8994 "built/tmp/cppBison.yxx.c" break; - case 676: /* const_operand: KW_OVERRIDE */ -#line 3802 "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 9004 "built/tmp/cppBison.yxx.c" - break; - - case 677: /* const_operand: KW_NULLPTR */ -#line 3808 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); -} -#line 9012 "built/tmp/cppBison.yxx.c" - break; - - case 678: /* const_operand: '[' capture_list ']' function_post maybe_trailing_return_type '{' code '}' */ -#line 3812 "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 9022 "built/tmp/cppBison.yxx.c" - break; - - case 679: /* const_operand: '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' */ -#line 3818 "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 9033 "built/tmp/cppBison.yxx.c" - break; - - case 680: /* const_operand: KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' */ -#line 3825 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type))); -} -#line 9041 "built/tmp/cppBison.yxx.c" - break; - - case 681: /* const_operand: KW_IS_ABSTRACT '(' full_type ')' */ -#line 3829 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); -} -#line 9049 "built/tmp/cppBison.yxx.c" - break; - - case 682: /* const_operand: KW_IS_BASE_OF '(' full_type ',' full_type ')' */ -#line 3833 "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 9057 "built/tmp/cppBison.yxx.c" - break; - - case 683: /* const_operand: KW_IS_CLASS '(' full_type ')' */ -#line 3837 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); -} -#line 9065 "built/tmp/cppBison.yxx.c" - break; - - case 684: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ')' */ -#line 3841 "dtool/src/cppparser/cppBison.yxx" -{ - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); -} -#line 9073 "built/tmp/cppBison.yxx.c" - break; - - case 685: /* const_operand: KW_IS_CONSTRUCTIBLE '(' full_type ',' full_type ')' */ -#line 3845 "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 9081 "built/tmp/cppBison.yxx.c" - break; - - case 686: /* const_operand: KW_IS_CONVERTIBLE_TO '(' full_type ',' full_type ')' */ -#line 3849 "dtool/src/cppparser/cppBison.yxx" + case 682: /* const_operand: KW_IS_CONVERTIBLE_TO '(' full_type ',' full_type ')' */ +#line 3904 "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 9089 "built/tmp/cppBison.yxx.c" +#line 9002 "built/tmp/cppBison.yxx.c" break; - case 687: /* const_operand: KW_IS_DESTRUCTIBLE '(' full_type ')' */ -#line 3853 "dtool/src/cppparser/cppBison.yxx" + case 683: /* const_operand: KW_IS_DESTRUCTIBLE '(' full_type ')' */ +#line 3908 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type))); } -#line 9097 "built/tmp/cppBison.yxx.c" +#line 9010 "built/tmp/cppBison.yxx.c" break; - case 688: /* const_operand: KW_IS_EMPTY '(' full_type ')' */ -#line 3857 "dtool/src/cppparser/cppBison.yxx" + case 684: /* const_operand: KW_IS_EMPTY '(' full_type ')' */ +#line 3912 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type))); } -#line 9105 "built/tmp/cppBison.yxx.c" +#line 9018 "built/tmp/cppBison.yxx.c" break; - case 689: /* const_operand: KW_IS_ENUM '(' full_type ')' */ -#line 3861 "dtool/src/cppparser/cppBison.yxx" + case 685: /* const_operand: KW_IS_ENUM '(' full_type ')' */ +#line 3916 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type))); } -#line 9113 "built/tmp/cppBison.yxx.c" +#line 9026 "built/tmp/cppBison.yxx.c" break; - case 690: /* const_operand: KW_IS_FINAL '(' full_type ')' */ -#line 3865 "dtool/src/cppparser/cppBison.yxx" + case 686: /* const_operand: KW_IS_FINAL '(' full_type ')' */ +#line 3920 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type))); } -#line 9121 "built/tmp/cppBison.yxx.c" +#line 9034 "built/tmp/cppBison.yxx.c" break; - case 691: /* const_operand: KW_IS_FUNDAMENTAL '(' full_type ')' */ -#line 3869 "dtool/src/cppparser/cppBison.yxx" + case 687: /* const_operand: KW_IS_FUNDAMENTAL '(' full_type ')' */ +#line 3924 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type))); } -#line 9129 "built/tmp/cppBison.yxx.c" +#line 9042 "built/tmp/cppBison.yxx.c" break; - case 692: /* const_operand: KW_IS_POD '(' full_type ')' */ -#line 3873 "dtool/src/cppparser/cppBison.yxx" + case 688: /* const_operand: KW_IS_POD '(' full_type ')' */ +#line 3928 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type))); } -#line 9137 "built/tmp/cppBison.yxx.c" +#line 9050 "built/tmp/cppBison.yxx.c" break; - case 693: /* const_operand: KW_IS_POLYMORPHIC '(' full_type ')' */ -#line 3877 "dtool/src/cppparser/cppBison.yxx" + case 689: /* const_operand: KW_IS_POLYMORPHIC '(' full_type ')' */ +#line 3932 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type))); } -#line 9145 "built/tmp/cppBison.yxx.c" +#line 9058 "built/tmp/cppBison.yxx.c" break; - case 694: /* const_operand: KW_IS_STANDARD_LAYOUT '(' full_type ')' */ -#line 3881 "dtool/src/cppparser/cppBison.yxx" + case 690: /* const_operand: KW_IS_STANDARD_LAYOUT '(' full_type ')' */ +#line 3936 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[-1].u.type))); } -#line 9153 "built/tmp/cppBison.yxx.c" +#line 9066 "built/tmp/cppBison.yxx.c" break; - case 695: /* const_operand: KW_IS_TRIVIAL '(' full_type ')' */ -#line 3885 "dtool/src/cppparser/cppBison.yxx" + case 691: /* const_operand: KW_IS_TRIVIAL '(' full_type ')' */ +#line 3940 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type))); } -#line 9161 "built/tmp/cppBison.yxx.c" +#line 9074 "built/tmp/cppBison.yxx.c" break; - case 696: /* const_operand: KW_IS_UNION '(' full_type ')' */ -#line 3889 "dtool/src/cppparser/cppBison.yxx" + case 692: /* const_operand: KW_IS_UNION '(' full_type ')' */ +#line 3944 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type))); } -#line 9169 "built/tmp/cppBison.yxx.c" +#line 9082 "built/tmp/cppBison.yxx.c" break; - case 697: /* formal_const_expr: formal_const_operand */ -#line 3903 "dtool/src/cppparser/cppBison.yxx" + case 693: /* formal_const_expr: formal_const_operand */ +#line 3958 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 9177 "built/tmp/cppBison.yxx.c" +#line 9090 "built/tmp/cppBison.yxx.c" break; - case 698: /* formal_const_expr: '(' full_type ')' const_expr */ -#line 3907 "dtool/src/cppparser/cppBison.yxx" + case 694: /* formal_const_expr: '(' full_type ')' const_expr */ +#line 3962 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 9185 "built/tmp/cppBison.yxx.c" +#line 9098 "built/tmp/cppBison.yxx.c" break; - case 699: /* formal_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3911 "dtool/src/cppparser/cppBison.yxx" + case 695: /* formal_const_expr: KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3966 "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 9193 "built/tmp/cppBison.yxx.c" +#line 9106 "built/tmp/cppBison.yxx.c" break; - case 700: /* formal_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3915 "dtool/src/cppparser/cppBison.yxx" + case 696: /* formal_const_expr: KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3970 "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 9201 "built/tmp/cppBison.yxx.c" +#line 9114 "built/tmp/cppBison.yxx.c" break; - case 701: /* formal_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3919 "dtool/src/cppparser/cppBison.yxx" + case 697: /* formal_const_expr: KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3974 "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 9209 "built/tmp/cppBison.yxx.c" +#line 9122 "built/tmp/cppBison.yxx.c" break; - case 702: /* formal_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ -#line 3923 "dtool/src/cppparser/cppBison.yxx" + case 698: /* formal_const_expr: KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' */ +#line 3978 "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 9217 "built/tmp/cppBison.yxx.c" +#line 9130 "built/tmp/cppBison.yxx.c" break; - case 703: /* formal_const_expr: KW_SIZEOF '(' full_type ')' */ -#line 3927 "dtool/src/cppparser/cppBison.yxx" + case 699: /* formal_const_expr: KW_SIZEOF '(' full_type ')' */ +#line 3982 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } -#line 9225 "built/tmp/cppBison.yxx.c" +#line 9138 "built/tmp/cppBison.yxx.c" break; - case 704: /* formal_const_expr: KW_SIZEOF formal_const_expr */ -#line 3931 "dtool/src/cppparser/cppBison.yxx" + case 700: /* formal_const_expr: KW_SIZEOF formal_const_expr */ +#line 3986 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[0].u.expr))); } -#line 9233 "built/tmp/cppBison.yxx.c" +#line 9146 "built/tmp/cppBison.yxx.c" break; - case 705: /* formal_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ -#line 3935 "dtool/src/cppparser/cppBison.yxx" + case 701: /* formal_const_expr: KW_SIZEOF ELLIPSIS '(' name ')' */ +#line 3990 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } -#line 9241 "built/tmp/cppBison.yxx.c" +#line 9154 "built/tmp/cppBison.yxx.c" break; - case 706: /* formal_const_expr: KW_ALIGNOF '(' full_type ')' */ -#line 3939 "dtool/src/cppparser/cppBison.yxx" + case 702: /* formal_const_expr: KW_ALIGNOF '(' full_type ')' */ +#line 3994 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } -#line 9249 "built/tmp/cppBison.yxx.c" +#line 9162 "built/tmp/cppBison.yxx.c" break; - case 707: /* formal_const_expr: KW_NEW predefined_type */ -#line 3943 "dtool/src/cppparser/cppBison.yxx" + case 703: /* formal_const_expr: KW_NEW predefined_type */ +#line 3998 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); } -#line 9257 "built/tmp/cppBison.yxx.c" +#line 9170 "built/tmp/cppBison.yxx.c" break; - case 708: /* formal_const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */ -#line 3947 "dtool/src/cppparser/cppBison.yxx" + case 704: /* formal_const_expr: KW_NEW predefined_type '(' optional_const_expr_comma ')' */ +#line 4002 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); } -#line 9265 "built/tmp/cppBison.yxx.c" +#line 9178 "built/tmp/cppBison.yxx.c" break; - case 709: /* formal_const_expr: KW_TYPEID '(' full_type ')' */ -#line 3951 "dtool/src/cppparser/cppBison.yxx" + case 705: /* formal_const_expr: KW_TYPEID '(' full_type ')' */ +#line 4006 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); @@ -9276,11 +9189,11 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } -#line 9280 "built/tmp/cppBison.yxx.c" +#line 9193 "built/tmp/cppBison.yxx.c" break; - case 710: /* formal_const_expr: KW_TYPEID '(' const_expr ')' */ -#line 3962 "dtool/src/cppparser/cppBison.yxx" + case 706: /* formal_const_expr: KW_TYPEID '(' const_expr ')' */ +#line 4017 "dtool/src/cppparser/cppBison.yxx" { CPPIdentifier ident(""); ident.add_name("std"); @@ -9291,417 +9204,417 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } -#line 9295 "built/tmp/cppBison.yxx.c" +#line 9208 "built/tmp/cppBison.yxx.c" break; - case 711: /* formal_const_expr: '!' const_expr */ -#line 3973 "dtool/src/cppparser/cppBison.yxx" + case 707: /* formal_const_expr: '!' const_expr */ +#line 4028 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 9303 "built/tmp/cppBison.yxx.c" +#line 9216 "built/tmp/cppBison.yxx.c" break; - case 712: /* formal_const_expr: '~' const_expr */ -#line 3977 "dtool/src/cppparser/cppBison.yxx" + case 708: /* formal_const_expr: '~' const_expr */ +#line 4032 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 9311 "built/tmp/cppBison.yxx.c" +#line 9224 "built/tmp/cppBison.yxx.c" break; - case 713: /* formal_const_expr: '-' const_expr */ -#line 3981 "dtool/src/cppparser/cppBison.yxx" + case 709: /* formal_const_expr: '-' const_expr */ +#line 4036 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 9319 "built/tmp/cppBison.yxx.c" +#line 9232 "built/tmp/cppBison.yxx.c" break; - case 714: /* formal_const_expr: '+' const_expr */ -#line 3985 "dtool/src/cppparser/cppBison.yxx" + case 710: /* formal_const_expr: '+' const_expr */ +#line 4040 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 9327 "built/tmp/cppBison.yxx.c" +#line 9240 "built/tmp/cppBison.yxx.c" break; - case 715: /* formal_const_expr: '&' const_expr */ -#line 3989 "dtool/src/cppparser/cppBison.yxx" + case 711: /* formal_const_expr: '&' const_expr */ +#line 4044 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 9335 "built/tmp/cppBison.yxx.c" +#line 9248 "built/tmp/cppBison.yxx.c" break; - case 716: /* formal_const_expr: formal_const_expr '*' const_expr */ -#line 3993 "dtool/src/cppparser/cppBison.yxx" + case 712: /* formal_const_expr: formal_const_expr '*' const_expr */ +#line 4048 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9343 "built/tmp/cppBison.yxx.c" +#line 9256 "built/tmp/cppBison.yxx.c" break; - case 717: /* formal_const_expr: formal_const_expr '/' const_expr */ -#line 3997 "dtool/src/cppparser/cppBison.yxx" + case 713: /* formal_const_expr: formal_const_expr '/' const_expr */ +#line 4052 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9351 "built/tmp/cppBison.yxx.c" +#line 9264 "built/tmp/cppBison.yxx.c" break; - case 718: /* formal_const_expr: formal_const_expr '%' const_expr */ -#line 4001 "dtool/src/cppparser/cppBison.yxx" + case 714: /* formal_const_expr: formal_const_expr '%' const_expr */ +#line 4056 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9359 "built/tmp/cppBison.yxx.c" +#line 9272 "built/tmp/cppBison.yxx.c" break; - case 719: /* formal_const_expr: formal_const_expr '+' const_expr */ -#line 4005 "dtool/src/cppparser/cppBison.yxx" + case 715: /* formal_const_expr: formal_const_expr '+' const_expr */ +#line 4060 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9367 "built/tmp/cppBison.yxx.c" +#line 9280 "built/tmp/cppBison.yxx.c" break; - case 720: /* formal_const_expr: formal_const_expr '-' const_expr */ -#line 4009 "dtool/src/cppparser/cppBison.yxx" + case 716: /* formal_const_expr: formal_const_expr '-' const_expr */ +#line 4064 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9375 "built/tmp/cppBison.yxx.c" +#line 9288 "built/tmp/cppBison.yxx.c" break; - case 721: /* formal_const_expr: formal_const_expr '|' const_expr */ -#line 4013 "dtool/src/cppparser/cppBison.yxx" + case 717: /* formal_const_expr: formal_const_expr '|' const_expr */ +#line 4068 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9383 "built/tmp/cppBison.yxx.c" +#line 9296 "built/tmp/cppBison.yxx.c" break; - case 722: /* formal_const_expr: formal_const_expr '^' const_expr */ -#line 4017 "dtool/src/cppparser/cppBison.yxx" + case 718: /* formal_const_expr: formal_const_expr '^' const_expr */ +#line 4072 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9391 "built/tmp/cppBison.yxx.c" +#line 9304 "built/tmp/cppBison.yxx.c" break; - case 723: /* formal_const_expr: formal_const_expr '&' const_expr */ -#line 4021 "dtool/src/cppparser/cppBison.yxx" + case 719: /* formal_const_expr: formal_const_expr '&' const_expr */ +#line 4076 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9399 "built/tmp/cppBison.yxx.c" +#line 9312 "built/tmp/cppBison.yxx.c" break; - case 724: /* formal_const_expr: formal_const_expr OROR const_expr */ -#line 4025 "dtool/src/cppparser/cppBison.yxx" + case 720: /* formal_const_expr: formal_const_expr OROR const_expr */ +#line 4080 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9407 "built/tmp/cppBison.yxx.c" +#line 9320 "built/tmp/cppBison.yxx.c" break; - case 725: /* formal_const_expr: formal_const_expr ANDAND const_expr */ -#line 4029 "dtool/src/cppparser/cppBison.yxx" + case 721: /* formal_const_expr: formal_const_expr ANDAND const_expr */ +#line 4084 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9415 "built/tmp/cppBison.yxx.c" +#line 9328 "built/tmp/cppBison.yxx.c" break; - case 726: /* formal_const_expr: formal_const_expr EQCOMPARE const_expr */ -#line 4033 "dtool/src/cppparser/cppBison.yxx" + case 722: /* formal_const_expr: formal_const_expr EQCOMPARE const_expr */ +#line 4088 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9423 "built/tmp/cppBison.yxx.c" +#line 9336 "built/tmp/cppBison.yxx.c" break; - case 727: /* formal_const_expr: formal_const_expr NECOMPARE const_expr */ -#line 4037 "dtool/src/cppparser/cppBison.yxx" + case 723: /* formal_const_expr: formal_const_expr NECOMPARE const_expr */ +#line 4092 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9431 "built/tmp/cppBison.yxx.c" +#line 9344 "built/tmp/cppBison.yxx.c" break; - case 728: /* formal_const_expr: formal_const_expr LECOMPARE const_expr */ -#line 4041 "dtool/src/cppparser/cppBison.yxx" + case 724: /* formal_const_expr: formal_const_expr LECOMPARE const_expr */ +#line 4096 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9439 "built/tmp/cppBison.yxx.c" +#line 9352 "built/tmp/cppBison.yxx.c" break; - case 729: /* formal_const_expr: formal_const_expr GECOMPARE const_expr */ -#line 4045 "dtool/src/cppparser/cppBison.yxx" + case 725: /* formal_const_expr: formal_const_expr GECOMPARE const_expr */ +#line 4100 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9447 "built/tmp/cppBison.yxx.c" +#line 9360 "built/tmp/cppBison.yxx.c" break; - case 730: /* formal_const_expr: formal_const_expr SPACESHIP const_expr */ -#line 4049 "dtool/src/cppparser/cppBison.yxx" + case 726: /* formal_const_expr: formal_const_expr SPACESHIP const_expr */ +#line 4104 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(SPACESHIP, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9455 "built/tmp/cppBison.yxx.c" +#line 9368 "built/tmp/cppBison.yxx.c" break; - case 731: /* formal_const_expr: formal_const_expr '<' const_expr */ -#line 4053 "dtool/src/cppparser/cppBison.yxx" + case 727: /* formal_const_expr: formal_const_expr '<' const_expr */ +#line 4108 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9463 "built/tmp/cppBison.yxx.c" +#line 9376 "built/tmp/cppBison.yxx.c" break; - case 732: /* formal_const_expr: formal_const_expr '>' const_expr */ -#line 4057 "dtool/src/cppparser/cppBison.yxx" + case 728: /* formal_const_expr: formal_const_expr '>' const_expr */ +#line 4112 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9471 "built/tmp/cppBison.yxx.c" +#line 9384 "built/tmp/cppBison.yxx.c" break; - case 733: /* formal_const_expr: formal_const_expr LSHIFT const_expr */ -#line 4061 "dtool/src/cppparser/cppBison.yxx" + case 729: /* formal_const_expr: formal_const_expr LSHIFT const_expr */ +#line 4116 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9479 "built/tmp/cppBison.yxx.c" +#line 9392 "built/tmp/cppBison.yxx.c" break; - case 734: /* formal_const_expr: formal_const_expr RSHIFT const_expr */ -#line 4065 "dtool/src/cppparser/cppBison.yxx" + case 730: /* formal_const_expr: formal_const_expr RSHIFT const_expr */ +#line 4120 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9487 "built/tmp/cppBison.yxx.c" +#line 9400 "built/tmp/cppBison.yxx.c" break; - case 735: /* formal_const_expr: formal_const_expr '?' const_expr ':' const_expr */ -#line 4069 "dtool/src/cppparser/cppBison.yxx" + case 731: /* formal_const_expr: formal_const_expr '?' const_expr ':' const_expr */ +#line 4124 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9495 "built/tmp/cppBison.yxx.c" +#line 9408 "built/tmp/cppBison.yxx.c" break; - case 736: /* formal_const_expr: formal_const_expr '[' const_expr ']' */ -#line 4073 "dtool/src/cppparser/cppBison.yxx" + case 732: /* formal_const_expr: formal_const_expr '[' const_expr ']' */ +#line 4128 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 9503 "built/tmp/cppBison.yxx.c" +#line 9416 "built/tmp/cppBison.yxx.c" break; - case 737: /* formal_const_expr: formal_const_expr '(' const_expr_comma ')' */ -#line 4077 "dtool/src/cppparser/cppBison.yxx" + case 733: /* formal_const_expr: formal_const_expr '(' const_expr_comma ')' */ +#line 4132 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 9511 "built/tmp/cppBison.yxx.c" +#line 9424 "built/tmp/cppBison.yxx.c" break; - case 738: /* formal_const_expr: formal_const_expr '(' ')' */ -#line 4081 "dtool/src/cppparser/cppBison.yxx" + case 734: /* formal_const_expr: formal_const_expr '(' ')' */ +#line 4136 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } -#line 9519 "built/tmp/cppBison.yxx.c" +#line 9432 "built/tmp/cppBison.yxx.c" break; - case 739: /* formal_const_expr: formal_const_expr '.' name */ -#line 4085 "dtool/src/cppparser/cppBison.yxx" + case 735: /* formal_const_expr: formal_const_expr '.' name */ +#line 4140 "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 9527 "built/tmp/cppBison.yxx.c" +#line 9440 "built/tmp/cppBison.yxx.c" break; - case 740: /* formal_const_expr: formal_const_expr POINTSAT const_expr */ -#line 4089 "dtool/src/cppparser/cppBison.yxx" + case 736: /* formal_const_expr: formal_const_expr POINTSAT const_expr */ +#line 4144 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9535 "built/tmp/cppBison.yxx.c" +#line 9448 "built/tmp/cppBison.yxx.c" break; - case 741: /* formal_const_expr: '(' const_expr_comma ')' */ -#line 4093 "dtool/src/cppparser/cppBison.yxx" + case 737: /* formal_const_expr: '(' const_expr_comma ')' */ +#line 4148 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[-1].u.expr); } -#line 9543 "built/tmp/cppBison.yxx.c" +#line 9456 "built/tmp/cppBison.yxx.c" break; - case 742: /* formal_const_operand: INTEGER */ -#line 4100 "dtool/src/cppparser/cppBison.yxx" + case 738: /* formal_const_operand: INTEGER */ +#line 4155 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 9551 "built/tmp/cppBison.yxx.c" +#line 9464 "built/tmp/cppBison.yxx.c" break; - case 743: /* formal_const_operand: KW_TRUE */ -#line 4104 "dtool/src/cppparser/cppBison.yxx" + case 739: /* formal_const_operand: KW_TRUE */ +#line 4159 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(true); } -#line 9559 "built/tmp/cppBison.yxx.c" +#line 9472 "built/tmp/cppBison.yxx.c" break; - case 744: /* formal_const_operand: KW_FALSE */ -#line 4108 "dtool/src/cppparser/cppBison.yxx" + case 740: /* formal_const_operand: KW_FALSE */ +#line 4163 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(false); } -#line 9567 "built/tmp/cppBison.yxx.c" +#line 9480 "built/tmp/cppBison.yxx.c" break; - case 745: /* formal_const_operand: CHAR_TOK */ -#line 4112 "dtool/src/cppparser/cppBison.yxx" + case 741: /* formal_const_operand: CHAR_TOK */ +#line 4167 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 9575 "built/tmp/cppBison.yxx.c" +#line 9488 "built/tmp/cppBison.yxx.c" break; - case 746: /* formal_const_operand: REAL */ -#line 4116 "dtool/src/cppparser/cppBison.yxx" + case 742: /* formal_const_operand: REAL */ +#line 4171 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); } -#line 9583 "built/tmp/cppBison.yxx.c" +#line 9496 "built/tmp/cppBison.yxx.c" break; - case 747: /* formal_const_operand: string_literal */ -#line 4120 "dtool/src/cppparser/cppBison.yxx" + case 743: /* formal_const_operand: string_literal */ +#line 4175 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 9591 "built/tmp/cppBison.yxx.c" +#line 9504 "built/tmp/cppBison.yxx.c" break; - case 748: /* formal_const_operand: CUSTOM_LITERAL */ -#line 4124 "dtool/src/cppparser/cppBison.yxx" + case 744: /* formal_const_operand: CUSTOM_LITERAL */ +#line 4179 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 9599 "built/tmp/cppBison.yxx.c" +#line 9512 "built/tmp/cppBison.yxx.c" break; - case 749: /* formal_const_operand: IDENTIFIER */ -#line 4128 "dtool/src/cppparser/cppBison.yxx" + case 745: /* formal_const_operand: IDENTIFIER */ +#line 4183 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); } -#line 9607 "built/tmp/cppBison.yxx.c" +#line 9520 "built/tmp/cppBison.yxx.c" break; - case 750: /* formal_const_operand: KW_FINAL */ -#line 4132 "dtool/src/cppparser/cppBison.yxx" + case 746: /* formal_const_operand: KW_FINAL */ +#line 4187 "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 9617 "built/tmp/cppBison.yxx.c" +#line 9530 "built/tmp/cppBison.yxx.c" break; - case 751: /* formal_const_operand: KW_OVERRIDE */ -#line 4138 "dtool/src/cppparser/cppBison.yxx" + case 747: /* formal_const_operand: KW_OVERRIDE */ +#line 4193 "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 9627 "built/tmp/cppBison.yxx.c" +#line 9540 "built/tmp/cppBison.yxx.c" break; - case 752: /* formal_const_operand: KW_NULLPTR */ -#line 4144 "dtool/src/cppparser/cppBison.yxx" + case 748: /* formal_const_operand: KW_NULLPTR */ +#line 4199 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } -#line 9635 "built/tmp/cppBison.yxx.c" +#line 9548 "built/tmp/cppBison.yxx.c" break; - case 753: /* capture_list: empty */ -#line 4152 "dtool/src/cppparser/cppBison.yxx" + case 749: /* capture_list: empty */ +#line 4207 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(); } -#line 9643 "built/tmp/cppBison.yxx.c" +#line 9556 "built/tmp/cppBison.yxx.c" break; - case 754: /* capture_list: '=' */ -#line 4156 "dtool/src/cppparser/cppBison.yxx" + case 750: /* capture_list: '=' */ +#line 4211 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); } -#line 9651 "built/tmp/cppBison.yxx.c" +#line 9564 "built/tmp/cppBison.yxx.c" break; - case 755: /* capture_list: '&' */ -#line 4160 "dtool/src/cppparser/cppBison.yxx" + case 751: /* capture_list: '&' */ +#line 4215 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); } -#line 9659 "built/tmp/cppBison.yxx.c" +#line 9572 "built/tmp/cppBison.yxx.c" break; - case 756: /* capture_list: capture maybe_initialize */ -#line 4164 "dtool/src/cppparser/cppBison.yxx" + case 752: /* capture_list: capture maybe_initialize */ +#line 4219 "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 9670 "built/tmp/cppBison.yxx.c" +#line 9583 "built/tmp/cppBison.yxx.c" break; - case 757: /* capture_list: capture_list ',' capture maybe_initialize */ -#line 4171 "dtool/src/cppparser/cppBison.yxx" + case 753: /* capture_list: capture_list ',' capture maybe_initialize */ +#line 4226 "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 9681 "built/tmp/cppBison.yxx.c" +#line 9594 "built/tmp/cppBison.yxx.c" break; - case 758: /* capture: '&' name */ -#line 4181 "dtool/src/cppparser/cppBison.yxx" + case 754: /* capture: '&' name */ +#line 4236 "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 9691 "built/tmp/cppBison.yxx.c" +#line 9604 "built/tmp/cppBison.yxx.c" break; - case 759: /* capture: '&' name ELLIPSIS */ -#line 4187 "dtool/src/cppparser/cppBison.yxx" + case 755: /* capture: '&' name ELLIPSIS */ +#line 4242 "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 9701 "built/tmp/cppBison.yxx.c" +#line 9614 "built/tmp/cppBison.yxx.c" break; - case 760: /* capture: name */ -#line 4193 "dtool/src/cppparser/cppBison.yxx" + case 756: /* capture: name */ +#line 4248 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); @@ -9711,11 +9624,11 @@ yyreduce: (yyval.u.capture)->_type = CPPClosureType::CT_by_value; } } -#line 9715 "built/tmp/cppBison.yxx.c" +#line 9628 "built/tmp/cppBison.yxx.c" break; - case 761: /* capture: '*' name */ -#line 4203 "dtool/src/cppparser/cppBison.yxx" + case 757: /* capture: '*' name */ +#line 4258 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); @@ -9724,11 +9637,11 @@ yyreduce: yywarning("only capture name 'this' may be preceded by an asterisk", (yylsp[0])); } } -#line 9728 "built/tmp/cppBison.yxx.c" +#line 9641 "built/tmp/cppBison.yxx.c" break; - case 762: /* class_derivation_name: name */ -#line 4215 "dtool/src/cppparser/cppBison.yxx" + case 758: /* class_derivation_name: name */ +#line 4270 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true); if (type == nullptr) { @@ -9736,177 +9649,177 @@ yyreduce: } (yyval.u.type) = type; } -#line 9740 "built/tmp/cppBison.yxx.c" +#line 9653 "built/tmp/cppBison.yxx.c" break; - case 763: /* class_derivation_name: KW_TYPENAME name */ -#line 4223 "dtool/src/cppparser/cppBison.yxx" + case 759: /* class_derivation_name: KW_TYPENAME name */ +#line 4278 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 9748 "built/tmp/cppBison.yxx.c" +#line 9661 "built/tmp/cppBison.yxx.c" break; - case 764: /* class_derivation_name: name ELLIPSIS */ -#line 4227 "dtool/src/cppparser/cppBison.yxx" + case 760: /* class_derivation_name: name ELLIPSIS */ +#line 4282 "dtool/src/cppparser/cppBison.yxx" { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[-1].u.identifier)); ctp->_packed = true; (yyval.u.type) = CPPType::new_type(ctp); } -#line 9758 "built/tmp/cppBison.yxx.c" +#line 9671 "built/tmp/cppBison.yxx.c" break; - case 765: /* name: IDENTIFIER */ -#line 4257 "dtool/src/cppparser/cppBison.yxx" + case 761: /* name: IDENTIFIER */ +#line 4312 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9766 "built/tmp/cppBison.yxx.c" +#line 9679 "built/tmp/cppBison.yxx.c" break; - case 766: /* name: TYPENAME_IDENTIFIER */ -#line 4261 "dtool/src/cppparser/cppBison.yxx" + case 762: /* name: TYPENAME_IDENTIFIER */ +#line 4316 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9774 "built/tmp/cppBison.yxx.c" +#line 9687 "built/tmp/cppBison.yxx.c" break; - case 767: /* name: TYPEPACK_IDENTIFIER */ -#line 4265 "dtool/src/cppparser/cppBison.yxx" + case 763: /* name: TYPEPACK_IDENTIFIER */ +#line 4320 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9782 "built/tmp/cppBison.yxx.c" +#line 9695 "built/tmp/cppBison.yxx.c" break; - case 768: /* name: KW_FINAL */ -#line 4269 "dtool/src/cppparser/cppBison.yxx" + case 764: /* name: KW_FINAL */ +#line 4324 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); } -#line 9790 "built/tmp/cppBison.yxx.c" +#line 9703 "built/tmp/cppBison.yxx.c" break; - case 769: /* name: KW_OVERRIDE */ -#line 4273 "dtool/src/cppparser/cppBison.yxx" + case 765: /* name: KW_OVERRIDE */ +#line 4328 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } -#line 9798 "built/tmp/cppBison.yxx.c" +#line 9711 "built/tmp/cppBison.yxx.c" break; - case 770: /* name: KW_SIGNED */ -#line 4277 "dtool/src/cppparser/cppBison.yxx" + case 766: /* name: KW_SIGNED */ +#line 4332 "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 9808 "built/tmp/cppBison.yxx.c" +#line 9721 "built/tmp/cppBison.yxx.c" break; - case 771: /* name: KW_FLOAT */ -#line 4283 "dtool/src/cppparser/cppBison.yxx" + case 767: /* name: KW_FLOAT */ +#line 4338 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); } -#line 9816 "built/tmp/cppBison.yxx.c" +#line 9729 "built/tmp/cppBison.yxx.c" break; - case 772: /* name: KW_PUBLIC */ -#line 4287 "dtool/src/cppparser/cppBison.yxx" + case 768: /* name: KW_PUBLIC */ +#line 4342 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); } -#line 9824 "built/tmp/cppBison.yxx.c" +#line 9737 "built/tmp/cppBison.yxx.c" break; - case 773: /* name: KW_PRIVATE */ -#line 4291 "dtool/src/cppparser/cppBison.yxx" + case 769: /* name: KW_PRIVATE */ +#line 4346 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); } -#line 9832 "built/tmp/cppBison.yxx.c" +#line 9745 "built/tmp/cppBison.yxx.c" break; - case 774: /* name: KW_STATIC */ -#line 4295 "dtool/src/cppparser/cppBison.yxx" + case 770: /* name: KW_STATIC */ +#line 4350 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); } -#line 9840 "built/tmp/cppBison.yxx.c" +#line 9753 "built/tmp/cppBison.yxx.c" break; - case 775: /* name: KW_DEFAULT */ -#line 4299 "dtool/src/cppparser/cppBison.yxx" + case 771: /* name: KW_DEFAULT */ +#line 4354 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("default", (yylsp[0])); } -#line 9848 "built/tmp/cppBison.yxx.c" +#line 9761 "built/tmp/cppBison.yxx.c" break; - case 776: /* name_no_final: IDENTIFIER */ -#line 4310 "dtool/src/cppparser/cppBison.yxx" + case 772: /* name_no_final: IDENTIFIER */ +#line 4365 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9856 "built/tmp/cppBison.yxx.c" +#line 9769 "built/tmp/cppBison.yxx.c" break; - case 777: /* name_no_final: TYPENAME_IDENTIFIER */ -#line 4314 "dtool/src/cppparser/cppBison.yxx" + case 773: /* name_no_final: TYPENAME_IDENTIFIER */ +#line 4369 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9864 "built/tmp/cppBison.yxx.c" +#line 9777 "built/tmp/cppBison.yxx.c" break; - case 778: /* name_no_final: TYPEPACK_IDENTIFIER */ -#line 4318 "dtool/src/cppparser/cppBison.yxx" + case 774: /* name_no_final: TYPEPACK_IDENTIFIER */ +#line 4373 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9872 "built/tmp/cppBison.yxx.c" +#line 9785 "built/tmp/cppBison.yxx.c" break; - case 779: /* name_no_final: KW_OVERRIDE */ -#line 4322 "dtool/src/cppparser/cppBison.yxx" + case 775: /* name_no_final: KW_OVERRIDE */ +#line 4377 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } -#line 9880 "built/tmp/cppBison.yxx.c" +#line 9793 "built/tmp/cppBison.yxx.c" break; - case 780: /* string_literal: SIMPLE_STRING */ -#line 4330 "dtool/src/cppparser/cppBison.yxx" + case 776: /* string_literal: SIMPLE_STRING */ +#line 4385 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); } -#line 9888 "built/tmp/cppBison.yxx.c" +#line 9801 "built/tmp/cppBison.yxx.c" break; - case 781: /* string_literal: STRING_LITERAL */ -#line 4334 "dtool/src/cppparser/cppBison.yxx" + case 777: /* string_literal: STRING_LITERAL */ +#line 4389 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 9896 "built/tmp/cppBison.yxx.c" +#line 9809 "built/tmp/cppBison.yxx.c" break; - case 782: /* string_literal: string_literal SIMPLE_STRING */ -#line 4338 "dtool/src/cppparser/cppBison.yxx" + case 778: /* string_literal: string_literal SIMPLE_STRING */ +#line 4393 "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 9906 "built/tmp/cppBison.yxx.c" +#line 9819 "built/tmp/cppBison.yxx.c" break; - case 783: /* string_literal: string_literal STRING_LITERAL */ -#line 4344 "dtool/src/cppparser/cppBison.yxx" + case 779: /* string_literal: string_literal STRING_LITERAL */ +#line 4399 "dtool/src/cppparser/cppBison.yxx" { // We have to check that the two literal types match up. (yyval.u.expr) = (yyvsp[-1].u.expr); @@ -9915,11 +9828,11 @@ yyreduce: } (yyval.u.expr)->_str += (yyvsp[0].u.expr)->_str; } -#line 9919 "built/tmp/cppBison.yxx.c" +#line 9832 "built/tmp/cppBison.yxx.c" break; -#line 9923 "built/tmp/cppBison.yxx.c" +#line 9836 "built/tmp/cppBison.yxx.c" default: break; } @@ -10003,6 +9916,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -10066,7 +9980,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -10074,24 +9988,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (&yylloc, YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at diff --git a/dtool/src/cppparser/cppBison.h.prebuilt b/dtool/src/cppparser/cppBison.h.prebuilt index 5015b5d58f..0099c87989 100644 --- a/dtool/src/cppparser/cppBison.h.prebuilt +++ b/dtool/src/cppparser/cppBison.h.prebuilt @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.3. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ 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 . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -208,6 +208,7 @@ extern int cppyydebug; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -380,6 +381,8 @@ struct YYLTYPE + int cppyyparse (void); + #endif /* !YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED */ diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index 8ef39b0de6..79d9e4496c 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -48,6 +48,7 @@ static CPPEnumType *current_enum = nullptr; static int current_storage_class = 0; static CPPType *current_type = nullptr; static CPPExpression *current_expr = nullptr; +static CPPAttributeList current_attributes; static int publish_nest_level = 0; static CPPVisibility publish_previous; static YYLTYPE publish_loc; @@ -363,6 +364,9 @@ pop_struct() { %token START_CONST_EXPR %token START_TYPE +%type optional_attributes +%type attribute_specifiers +%type attribute_specifier %type storage_class %type constructor_prototype %type function_prototype @@ -469,8 +473,20 @@ grammar: cpp: empty - | cpp ';' - | cpp declaration + | cpp optional_attributes ';' +{ + if (!$2.is_empty()) { + current_scope->add_declaration(new CPPDeclaration(@2.file, $2), global_scope, current_lexer, @2); + } +} + | cpp optional_attributes +{ + current_attributes = $2; +} + declaration +{ + current_attributes = CPPAttributeList(); +} ; constructor_inits: @@ -1043,30 +1059,61 @@ storage_class: { $$ = $2 | (int)CPPInstance::SC_thread_local; } - | ATTR_LEFT attribute_specifiers ATTR_RIGHT storage_class + ; + +optional_attributes: + empty { - // Ignore attribute specifiers for now. - $$ = $4; + $$ = CPPAttributeList(); } - | KW_ALIGNAS '(' const_expr ')' storage_class + | ATTR_LEFT attribute_specifiers ATTR_RIGHT optional_attributes +{ + $$ = $2; + $$.add_attributes_from($4); +} + | ATTR_LEFT KW_USING name ':' attribute_specifiers ATTR_RIGHT optional_attributes { $$ = $5; + for (CPPAttributeList::Attribute &attr : $$._attributes) { + attr._ident->prepend($3); + } + $$.add_attributes_from($7); } - | KW_ALIGNAS '(' type_decl ')' storage_class + | KW_ALIGNAS '(' const_expr ')' optional_attributes { $$ = $5; + $$.add_alignas($3->as_expression()); +} + | KW_ALIGNAS '(' type_decl ')' optional_attributes +{ + $$ = $5; + $$.add_alignas($3->as_type()); } ; attribute_specifiers: attribute_specifier +{ + $$ = $1; +} | attribute_specifier ',' attribute_specifiers +{ + $$ = $1; + $$.add_attributes_from($3); +} ; attribute_specifier: name +{ + $$ = CPPAttributeList(); + $$.add_attribute($1); +} | name '(' formal_parameter_list ')' - | KW_USING name ':' attribute_specifier +{ + $$ = CPPAttributeList(); + $$.add_attribute($1); +} ; type_like_declaration: @@ -1133,6 +1180,7 @@ multiple_instance_identifiers: if (current_storage_class & CPPInstance::SC_const) { $1->add_modifier(IIT_const); } + $1->add_attributes(current_attributes); CPPInstance *inst = new CPPInstance(current_type, $1, current_storage_class, @1.file); @@ -1144,6 +1192,7 @@ multiple_instance_identifiers: if (current_storage_class & CPPInstance::SC_const) { $1->add_modifier(IIT_const); } + $1->add_attributes(current_attributes); CPPInstance *inst = new CPPInstance(current_type, $1, current_storage_class, @1.file); @@ -1176,7 +1225,7 @@ typedef_declaration: if (inst != nullptr) { inst->_storage_class |= (current_storage_class | $1); current_scope->add_declaration(inst, global_scope, current_lexer, @2); - CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope); + CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope, inst->_attributes); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, @2); } } @@ -1189,6 +1238,7 @@ typedef_instance_identifiers: if (current_storage_class & CPPInstance::SC_const) { $1->add_modifier(IIT_const); } + $1->add_attributes(current_attributes); CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, $1, current_scope, @1.file); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, @1); @@ -1198,6 +1248,7 @@ typedef_instance_identifiers: if (current_storage_class & CPPInstance::SC_const) { $1->add_modifier(IIT_const); } + $1->add_attributes(current_attributes); CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, $1, current_scope, @1.file); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, @1); @@ -1220,7 +1271,7 @@ constructor_prototype: push_scope(scope); } - function_parameter_list ')' function_post + function_parameter_list ')' function_post optional_attributes { CPPScope *scope = $1->get_scope(current_scope, global_scope); CPPType *type; @@ -1228,10 +1279,12 @@ constructor_prototype: 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()) { + } + else if (scope != nullptr && simple_name == scope->get_simple_name()) { // Neither does a constructor. type = new CPPSimpleType(CPPSimpleType::T_void); - } else { + } + else { // This isn't a constructor, so it has an implicit return type of // int. yywarning("function has no return type, assuming int", @1); @@ -1240,7 +1293,8 @@ constructor_prototype: pop_scope(); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier($1); - ii->add_func_modifier($4, $6); + ii->add_func_modifier($4, $6, nullptr, $7); + ii->add_attributes(current_attributes); $$ = new CPPInstance(type, ii, 0, @1.file); } @@ -1259,7 +1313,7 @@ constructor_prototype: push_scope(scope); } - function_parameter_list ')' function_post + function_parameter_list ')' function_post optional_attributes { pop_scope(); CPPType *type = $1->find_type(current_scope, global_scope, false, current_lexer); @@ -1269,7 +1323,8 @@ constructor_prototype: assert(type != nullptr); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier($3); - ii->add_func_modifier($7, $9); + ii->add_func_modifier($7, $9, nullptr, $10); + ii->add_attributes(current_attributes); $$ = new CPPInstance(type, ii, 0, @1.file); } @@ -1286,7 +1341,7 @@ constructor_prototype: push_scope(scope); } - function_parameter_list ')' function_post + function_parameter_list ')' function_post optional_attributes { pop_scope(); CPPType *type; @@ -1300,7 +1355,8 @@ constructor_prototype: } CPPInstanceIdentifier *ii = new CPPInstanceIdentifier($1); - ii->add_func_modifier($4, $6); + ii->add_func_modifier($4, $6, nullptr, $7); + ii->add_attributes(current_attributes); $$ = new CPPInstance(type, ii, 0, @1.file); } @@ -1313,7 +1369,7 @@ function_prototype: { push_scope($2->get_scope(current_scope, global_scope)); } - function_parameter_list ')' function_post + function_parameter_list ')' function_post optional_attributes { pop_scope(); if ($2->is_scoped()) { @@ -1327,7 +1383,8 @@ function_prototype: type = new CPPSimpleType(CPPSimpleType::T_void); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier(ident); - ii->add_func_modifier($5, $7); + ii->add_func_modifier($5, $7, nullptr, $8); + ii->add_attributes(current_attributes); $$ = new CPPInstance(type, ii, 0, @2.file); } @@ -1343,7 +1400,7 @@ function_prototype: { push_scope($4->get_scope(current_scope, global_scope)); } - function_parameter_list ')' function_post maybe_trailing_return_type + function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type { pop_scope(); CPPType *type = $1->find_type(current_scope, global_scope, false, current_lexer); @@ -1354,14 +1411,15 @@ function_prototype: CPPInstanceIdentifier *ii = $4; ii->add_modifier(IIT_pointer); - ii->add_func_modifier($8, $10); + ii->add_func_modifier($8, $10, nullptr, $11); + ii->add_attributes(current_attributes); $$ = new CPPInstance(type, ii, 0, @1.file); } | TYPENAME_IDENTIFIER '(' SCOPING '*' instance_identifier ')' '(' { push_scope($5->get_scope(current_scope, global_scope)); } - function_parameter_list ')' function_post maybe_trailing_return_type + function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type { pop_scope(); CPPType *type = $1->find_type(current_scope, global_scope, false, current_lexer); @@ -1372,7 +1430,8 @@ function_prototype: CPPInstanceIdentifier *ii = $5; ii->add_scoped_pointer_modifier($3); - ii->add_func_modifier($9, $11); + ii->add_func_modifier($9, $11, nullptr, $12); + ii->add_attributes(current_attributes); $$ = new CPPInstance(type, ii, 0, @1.file); } @@ -1407,6 +1466,7 @@ function_prototype: } $$ = CPPInstance::make_typecast_function (new CPPInstance($2, $3, 0, @3.file), ident, $6, $8); + $$->_attributes.add_attributes_from(current_attributes); } | KW_OPERATOR KW_CONST type not_paren_formal_parameter_identifier '(' { @@ -1427,6 +1487,7 @@ function_prototype: ident->add_name("operator typecast"); } $4->add_modifier(IIT_const); + $4->add_attributes(current_attributes); $$ = CPPInstance::make_typecast_function (new CPPInstance($3, $4, 0, @4.file), ident, $7, $9); } @@ -1509,10 +1570,6 @@ function_post: | function_post KW_THROW '(' name ELLIPSIS ')' { $$ = $1; -} - | function_post ATTR_LEFT attribute_specifiers ATTR_RIGHT -{ - $$ = $1; } ; @@ -1805,11 +1862,11 @@ template_formal_parameter_type: instance_identifier: - name_no_final + name_no_final optional_attributes { - $$ = new CPPInstanceIdentifier($1); + $$ = new CPPInstanceIdentifier($1, $2); } - | KW_OPERATOR function_operator + | KW_OPERATOR function_operator optional_attributes { // For an operator function. We implement this simply by building a // ficticious name for the function; in other respects it's just @@ -1821,9 +1878,9 @@ instance_identifier: ident->_names.push_back("operator "+$2); } - $$ = new CPPInstanceIdentifier(ident); + $$ = new CPPInstanceIdentifier(ident, $3); } - | KW_OPERATOR SIMPLE_STRING IDENTIFIER + | KW_OPERATOR SIMPLE_STRING IDENTIFIER optional_attributes { // A C++11 literal operator. if (!$2.empty()) { @@ -1836,7 +1893,7 @@ instance_identifier: ident->_names.push_back("operator \"\" "+$3->get_simple_name()); } - $$ = new CPPInstanceIdentifier(ident); + $$ = new CPPInstanceIdentifier(ident, $4); } | KW_CONST instance_identifier %prec UNARY { @@ -1848,30 +1905,30 @@ instance_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_pointer); -} - | '&' instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_reference); -} - | ANDAND instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_rvalue_reference); -} - | SCOPING '*' instance_identifier %prec UNARY + | '*' optional_attributes instance_identifier %prec UNARY { $$ = $3; - $$->add_scoped_pointer_modifier($1); + $$->add_modifier(IIT_pointer, $2); } - | instance_identifier '[' optional_const_expr ']' + | '&' optional_attributes instance_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_reference, $2); +} + | ANDAND optional_attributes instance_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference, $2); +} + | SCOPING '*' optional_attributes instance_identifier %prec UNARY +{ + $$ = $4; + $$->add_scoped_pointer_modifier($1, $3); +} + | instance_identifier '[' optional_const_expr ']' optional_attributes { $$ = $1; - $$->add_array_modifier($3); + $$->add_array_modifier($3, $5); } | '(' instance_identifier ')' { @@ -1891,7 +1948,7 @@ instance_identifier: push_scope(scope); } - formal_parameter_list ')' function_post + formal_parameter_list ')' function_post optional_attributes { pop_scope(); $$ = $1; @@ -1899,10 +1956,10 @@ instance_identifier: // Oops, this must have been an instance declaration with a // parameter list, not a function prototype. $$->add_initializer_modifier($4); - - } else { + } + else { // This was (probably) a function prototype. - $$->add_func_modifier($4, $6); + $$->add_func_modifier($4, $6, nullptr, $7); } } ; @@ -2123,47 +2180,50 @@ structure_init_body: ; function_parameter: - type formal_parameter_identifier maybe_initialize + optional_attributes type formal_parameter_identifier maybe_initialize { - $$ = new CPPInstance($1, $2, 0, @2.file); - $$->set_initializer($3); -} - | KW_CONST type formal_parameter_identifier maybe_initialize -{ - $3->add_modifier(IIT_const); + $3->add_attributes($1); $$ = new CPPInstance($2, $3, 0, @3.file); $$->set_initializer($4); } - | KW_CONST KW_REGISTER type formal_parameter_identifier maybe_initialize + | optional_attributes KW_CONST type formal_parameter_identifier maybe_initialize { + $4->add_attributes($1); $4->add_modifier(IIT_const); - $$ = new CPPInstance($3, $4, 0, @3.file); + $$ = new CPPInstance($3, $4, 0, @4.file); $$->set_initializer($5); } - | type_pack parameter_pack_identifier maybe_initialize + | optional_attributes KW_CONST KW_REGISTER type formal_parameter_identifier maybe_initialize { - $$ = new CPPInstance($1, $2, 0, @2.file); - $$->set_initializer($3); + $5->add_attributes($1); + $5->add_modifier(IIT_const); + $$ = new CPPInstance($4, $5, 0, @4.file); + $$->set_initializer($6); } - | KW_CONST type_pack parameter_pack_identifier maybe_initialize + | optional_attributes type_pack parameter_pack_identifier maybe_initialize { - $3->add_modifier(IIT_const); + $3->add_attributes($1); $$ = new CPPInstance($2, $3, 0, @3.file); $$->set_initializer($4); } - | KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize + | optional_attributes KW_CONST type_pack parameter_pack_identifier maybe_initialize { + $4->add_attributes($1); $4->add_modifier(IIT_const); - $$ = new CPPInstance($3, $4, 0, @3.file); + $$ = new CPPInstance($3, $4, 0, @4.file); $$->set_initializer($5); } - | KW_REGISTER function_parameter + | optional_attributes KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize { - $$ = $2; + $5->add_attributes($1); + $5->add_modifier(IIT_const); + $$ = new CPPInstance($4, $5, 0, @4.file); + $$->set_initializer($6); } - | ATTR_LEFT attribute_specifiers ATTR_RIGHT function_parameter + | optional_attributes KW_REGISTER function_parameter { - $$ = $4; + $$ = $3; + $$->_attributes.add_attributes_from($1); } ; @@ -2190,9 +2250,9 @@ not_paren_formal_parameter_identifier: { $$ = new CPPInstanceIdentifier(nullptr); } - | name_no_final + | name_no_final optional_attributes { - $$ = new CPPInstanceIdentifier($1); + $$ = new CPPInstanceIdentifier($1, $2); } | KW_CONST not_paren_formal_parameter_identifier %prec UNARY { @@ -2204,30 +2264,30 @@ not_paren_formal_parameter_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' not_paren_formal_parameter_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_pointer); -} - | '&' not_paren_formal_parameter_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_reference); -} - | ANDAND not_paren_formal_parameter_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_rvalue_reference); -} - | SCOPING '*' not_paren_formal_parameter_identifier %prec UNARY + | '*' optional_attributes not_paren_formal_parameter_identifier %prec UNARY { $$ = $3; - $$->add_scoped_pointer_modifier($1); + $$->add_modifier(IIT_pointer, $2); } - | not_paren_formal_parameter_identifier '[' optional_const_expr ']' + | '&' optional_attributes not_paren_formal_parameter_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_reference, $2); +} + | ANDAND optional_attributes not_paren_formal_parameter_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference, $2); +} + | SCOPING '*' optional_attributes not_paren_formal_parameter_identifier %prec UNARY +{ + $$ = $4; + $$->add_scoped_pointer_modifier($1, $3); +} + | not_paren_formal_parameter_identifier '[' optional_const_expr ']' optional_attributes { $$ = $1; - $$->add_array_modifier($3); + $$->add_array_modifier($3, $5); } ; @@ -2236,9 +2296,9 @@ formal_parameter_identifier: { $$ = new CPPInstanceIdentifier(nullptr); } - | name_no_final + | name_no_final optional_attributes { - $$ = new CPPInstanceIdentifier($1); + $$ = new CPPInstanceIdentifier($1, $2); } | KW_CONST formal_parameter_identifier %prec UNARY { @@ -2250,36 +2310,36 @@ formal_parameter_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' formal_parameter_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_pointer); -} - | '&' formal_parameter_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_reference); -} - | ANDAND formal_parameter_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_rvalue_reference); -} - | SCOPING '*' formal_parameter_identifier %prec UNARY + | '*' optional_attributes formal_parameter_identifier %prec UNARY { $$ = $3; - $$->add_scoped_pointer_modifier($1); + $$->add_modifier(IIT_pointer, $2); } - | formal_parameter_identifier '[' optional_const_expr ']' + | '&' optional_attributes formal_parameter_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_reference, $2); +} + | ANDAND optional_attributes formal_parameter_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference, $2); +} + | SCOPING '*' optional_attributes formal_parameter_identifier %prec UNARY +{ + $$ = $4; + $$->add_scoped_pointer_modifier($1, $3); +} + | formal_parameter_identifier '[' optional_const_expr ']' optional_attributes { $$ = $1; - $$->add_array_modifier($3); + $$->add_array_modifier($3, $5); } - | '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post + | '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post optional_attributes { $$ = $2; $$->add_modifier(IIT_paren); - $$->add_func_modifier($5, $7); + $$->add_func_modifier($5, $7, nullptr, $8); } | '(' formal_parameter_identifier ')' { @@ -2294,9 +2354,9 @@ parameter_pack_identifier: $$ = new CPPInstanceIdentifier(nullptr); $$->_packed = true; } - | ELLIPSIS name + | ELLIPSIS name optional_attributes { - $$ = new CPPInstanceIdentifier($2); + $$ = new CPPInstanceIdentifier($2, $3); $$->_packed = true; } | KW_CONST parameter_pack_identifier %prec UNARY @@ -2309,36 +2369,36 @@ parameter_pack_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' parameter_pack_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_pointer); -} - | '&' parameter_pack_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_reference); -} - | ANDAND parameter_pack_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_rvalue_reference); -} - | SCOPING '*' parameter_pack_identifier %prec UNARY + | '*' optional_attributes parameter_pack_identifier %prec UNARY { $$ = $3; - $$->add_scoped_pointer_modifier($1); + $$->add_modifier(IIT_pointer, $2); } - | parameter_pack_identifier '[' optional_const_expr ']' + | '&' optional_attributes parameter_pack_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_reference, $2); +} + | ANDAND optional_attributes parameter_pack_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference, $2); +} + | SCOPING '*' optional_attributes parameter_pack_identifier %prec UNARY +{ + $$ = $4; + $$->add_scoped_pointer_modifier($1, $3); +} + | parameter_pack_identifier '[' optional_const_expr ']' optional_attributes { $$ = $1; - $$->add_array_modifier($3); + $$->add_array_modifier($3, $5); } - | '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post + | '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post optional_attributes { $$ = $2; $$->add_modifier(IIT_paren); - $$->add_func_modifier($5, $7); + $$->add_func_modifier($5, $7, nullptr, $8); } | '(' parameter_pack_identifier ')' { @@ -2357,9 +2417,9 @@ not_paren_empty_instance_identifier: $$ = new CPPInstanceIdentifier(nullptr); $$->_packed = true; } - | ELLIPSIS name + | ELLIPSIS name optional_attributes { - $$ = new CPPInstanceIdentifier($2); + $$ = new CPPInstanceIdentifier($2, $3); $$->_packed = true; } | KW_CONST not_paren_empty_instance_identifier %prec UNARY @@ -2372,30 +2432,30 @@ not_paren_empty_instance_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' not_paren_empty_instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_pointer); -} - | '&' not_paren_empty_instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_reference); -} - | ANDAND not_paren_empty_instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_rvalue_reference); -} - | SCOPING '*' not_paren_empty_instance_identifier %prec UNARY + | '*' optional_attributes not_paren_empty_instance_identifier %prec UNARY { $$ = $3; - $$->add_scoped_pointer_modifier($1); + $$->add_modifier(IIT_pointer, $2); } - | not_paren_empty_instance_identifier '[' optional_const_expr ']' + | '&' optional_attributes not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_reference, $2); +} + | ANDAND optional_attributes not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference, $2); +} + | SCOPING '*' optional_attributes not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $4; + $$->add_scoped_pointer_modifier($1, $3); +} + | not_paren_empty_instance_identifier '[' optional_const_expr ']' optional_attributes { $$ = $1; - $$->add_array_modifier($3); + $$->add_array_modifier($3, $5); } ; @@ -2409,9 +2469,9 @@ empty_instance_identifier: $$ = new CPPInstanceIdentifier(nullptr); $$->_packed = true; } - | ELLIPSIS name + | ELLIPSIS name optional_attributes { - $$ = new CPPInstanceIdentifier($2); + $$ = new CPPInstanceIdentifier($2, $3); $$->_packed = true; } | KW_CONST empty_instance_identifier %prec UNARY @@ -2424,57 +2484,57 @@ empty_instance_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' not_paren_empty_instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_pointer); -} - | '&' not_paren_empty_instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_reference); -} - | ANDAND not_paren_empty_instance_identifier %prec UNARY -{ - $$ = $2; - $$->add_modifier(IIT_rvalue_reference); -} - | SCOPING '*' not_paren_empty_instance_identifier %prec UNARY + | '*' optional_attributes not_paren_empty_instance_identifier %prec UNARY { $$ = $3; - $$->add_scoped_pointer_modifier($1); + $$->add_modifier(IIT_pointer, $2); } - | not_paren_empty_instance_identifier '[' optional_const_expr ']' + | '&' optional_attributes not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_reference, $2); +} + | ANDAND optional_attributes not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference, $2); +} + | SCOPING '*' optional_attributes not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $4; + $$->add_scoped_pointer_modifier($1, $3); +} + | not_paren_empty_instance_identifier '[' optional_const_expr ']' optional_attributes { $$ = $1; - $$->add_array_modifier($3); + $$->add_array_modifier($3, $5); } - | '(' function_parameter_list ')' function_post maybe_trailing_return_type + | '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type { $$ = new CPPInstanceIdentifier(nullptr); $$->add_modifier(IIT_paren); - $$->add_func_modifier($2, $4, $5); + $$->add_func_modifier($2, $4, $6, $5); } - | '(' '*' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type + | '(' '*' optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type { - $$ = $3; - $$->add_modifier(IIT_pointer); + $$ = $4; + $$->add_modifier(IIT_pointer, $3); $$->add_modifier(IIT_paren); - $$->add_func_modifier($6, $8, $9); + $$->add_func_modifier($7, $9, $11, $10); } - | '(' '&' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type + | '(' '&' optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type { - $$ = $3; - $$->add_modifier(IIT_reference); + $$ = $4; + $$->add_modifier(IIT_reference, $3); $$->add_modifier(IIT_paren); - $$->add_func_modifier($6, $8, $9); + $$->add_func_modifier($7, $9, $11, $10); } - | '(' ANDAND not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type + | '(' ANDAND optional_attributes not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type { - $$ = $3; - $$->add_modifier(IIT_rvalue_reference); + $$ = $4; + $$->add_modifier(IIT_rvalue_reference, $3); $$->add_modifier(IIT_paren); - $$->add_func_modifier($6, $8, $9); + $$->add_func_modifier($7, $9, $11, $10); } ; @@ -2507,14 +2567,14 @@ type: { $$ = CPPType::new_type($1); } - | struct_keyword struct_attributes name + | struct_keyword optional_attributes name { CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -2523,16 +2583,16 @@ type: $$ = et; } } - | enum_keyword name_no_final ':' enum_element_type + | enum_keyword optional_attributes name_no_final ':' enum_element_type { - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } @@ -2608,14 +2668,14 @@ type_decl: { $$ = new CPPTypeDeclaration(CPPType::new_type($1)); } - | struct_keyword struct_attributes name + | struct_keyword optional_attributes name { CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -2624,34 +2684,34 @@ type_decl: $$ = et; } } - | enum_keyword name_no_final ':' enum_element_type + | enum_keyword optional_attributes name_no_final ':' enum_element_type { - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } $$ = et; } } - | enum_keyword name + | enum_keyword optional_attributes name { - yywarning(string("C++ does not permit forward declaration of untyped enum ") + $2->get_fully_scoped_name(), @1); + yywarning(string("C++ does not permit forward declaration of untyped enum ") + $3->get_fully_scoped_name(), @1); - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } @@ -2704,14 +2764,14 @@ predefined_type: { $$ = CPPType::new_type(new CPPTBDType($2)); } - | struct_keyword struct_attributes name + | struct_keyword optional_attributes name { CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { @@ -2720,16 +2780,16 @@ predefined_type: $$ = et; } } - | enum_keyword name + | enum_keyword optional_attributes name { - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != nullptr) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file, $2)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != nullptr) { scope->define_extension_type(et); } @@ -2794,15 +2854,8 @@ full_type: } ; -struct_attributes: - empty - | struct_attributes ATTR_LEFT attribute_specifiers ATTR_RIGHT - | struct_attributes KW_ALIGNAS '(' const_expr ')' - | struct_attributes KW_ALIGNAS '(' type_decl ')' - ; - anonymous_struct: - struct_keyword struct_attributes '{' + struct_keyword optional_attributes '{' { CPPVisibility starting_vis = ($1 == CPPExtensionType::T_class) ? V_private : V_public; @@ -2810,7 +2863,7 @@ anonymous_struct: CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("anon"), starting_vis); CPPStructType *st = new CPPStructType($1, nullptr, current_scope, - new_scope, @1.file); + new_scope, @1.file, $2); new_scope->set_struct_type(st); push_scope(new_scope); @@ -2826,7 +2879,7 @@ anonymous_struct: ; named_struct: - struct_keyword struct_attributes name_no_final + struct_keyword optional_attributes name_no_final { CPPVisibility starting_vis = ($1 == CPPExtensionType::T_class) ? V_private : V_public; @@ -2839,7 +2892,7 @@ named_struct: starting_vis); CPPStructType *st = new CPPStructType($1, $3, current_scope, - new_scope, @1.file); + new_scope, @1.file, $2); new_scope->set_struct_type(st); current_scope->define_extension_type(st); @@ -2925,23 +2978,23 @@ enum: ; enum_decl: - enum_keyword ':' enum_element_type + enum_keyword optional_attributes ':' enum_element_type { - current_enum = new CPPEnumType($1, nullptr, $3, current_scope, nullptr, @1.file); + current_enum = new CPPEnumType($1, nullptr, $4, current_scope, nullptr, @1.file, $2); } - | enum_keyword + | enum_keyword optional_attributes { - current_enum = new CPPEnumType($1, nullptr, current_scope, nullptr, @1.file); + current_enum = new CPPEnumType($1, nullptr, current_scope, nullptr, @1.file, $2); } - | enum_keyword name_no_final ':' enum_element_type + | enum_keyword optional_attributes name_no_final ':' enum_element_type { - CPPScope *new_scope = new CPPScope(current_scope, $2->_names.back(), V_public); - current_enum = new CPPEnumType($1, $2, $4, current_scope, new_scope, @1.file); + CPPScope *new_scope = new CPPScope(current_scope, $3->_names.back(), V_public); + current_enum = new CPPEnumType($1, $3, $5, current_scope, new_scope, @1.file, $2); } - | enum_keyword name_no_final + | enum_keyword optional_attributes name_no_final { - CPPScope *new_scope = new CPPScope(current_scope, $2->_names.back(), V_public); - current_enum = new CPPEnumType($1, $2, current_scope, new_scope, @1.file); + CPPScope *new_scope = new CPPScope(current_scope, $3->_names.back(), V_public); + current_enum = new CPPEnumType($1, $3, current_scope, new_scope, @1.file, $2); } ; @@ -2958,28 +3011,28 @@ enum_element_type: enum_body_trailing_comma: empty - | enum_body_trailing_comma name ',' + | enum_body_trailing_comma name optional_attributes ',' { assert(current_enum != nullptr); - current_enum->add_element($2->get_simple_name(), nullptr, current_lexer, @2); + current_enum->add_element($2->get_simple_name(), nullptr, current_lexer, @2, $3); } - | enum_body_trailing_comma name '=' const_expr ',' + | enum_body_trailing_comma name optional_attributes '=' const_expr ',' { assert(current_enum != nullptr); - current_enum->add_element($2->get_simple_name(), $4, current_lexer, @2); + current_enum->add_element($2->get_simple_name(), $5, current_lexer, @2, $3); }; enum_body: enum_body_trailing_comma - | enum_body_trailing_comma name + | enum_body_trailing_comma name optional_attributes { assert(current_enum != nullptr); - current_enum->add_element($2->get_simple_name(), nullptr, current_lexer, @2); + current_enum->add_element($2->get_simple_name(), nullptr, current_lexer, @2, $3); } - | enum_body_trailing_comma name '=' const_expr + | enum_body_trailing_comma name optional_attributes '=' const_expr { assert(current_enum != nullptr); - current_enum->add_element($2->get_simple_name(), $4, current_lexer, @2); + current_enum->add_element($2->get_simple_name(), $5, current_lexer, @2, $3); } ; @@ -3014,20 +3067,20 @@ struct_keyword: ; namespace_declaration: - KW_NAMESPACE name '{' + KW_NAMESPACE optional_attributes name '{' { - CPPScope *scope = $2->find_scope(current_scope, global_scope, current_lexer); + CPPScope *scope = $3->find_scope(current_scope, global_scope, current_lexer); if (scope == nullptr) { // This must be a new namespace declaration. CPPScope *parent_scope = - $2->get_scope(current_scope, global_scope, current_lexer); + $3->get_scope(current_scope, global_scope, current_lexer); if (parent_scope == nullptr) { parent_scope = current_scope; } - scope = new CPPScope(parent_scope, $2->_names.back(), V_public); + scope = new CPPScope(parent_scope, $3->_names.back(), V_public); } - CPPNamespace *nspace = new CPPNamespace($2, scope, @1.file); + CPPNamespace *nspace = new CPPNamespace($3, scope, @1.file, $2); current_scope->add_declaration(nspace, global_scope, current_lexer, @1); current_scope->define_namespace(nspace); push_scope(scope); @@ -3070,10 +3123,10 @@ using_declaration: current_scope->add_declaration(using_decl, global_scope, current_lexer, @1); current_scope->add_using(using_decl, global_scope, current_lexer); } - | KW_USING name '=' full_type ';' + | KW_USING name optional_attributes '=' full_type ';' { // This is really just an alternative way to declare a typedef. - CPPTypedefType *typedef_type = new CPPTypedefType($4, $2, current_scope); + CPPTypedefType *typedef_type = new CPPTypedefType($5, $2, current_scope, $3); typedef_type->_using = true; current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, @1); } @@ -3808,17 +3861,19 @@ const_operand: { $$ = new CPPExpression(CPPExpression::get_nullptr()); } - | '[' capture_list ']' function_post maybe_trailing_return_type '{' code '}' + | '[' capture_list ']' function_post optional_attributes maybe_trailing_return_type '{' code '}' { $2->_flags = $4; - $2->_return_type = $5; + $2->_attributes = $5; + $2->_return_type = $6; $$ = new CPPExpression(CPPExpression::lambda($2)); } - | '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' + | '[' capture_list ']' '(' function_parameter_list ')' function_post optional_attributes maybe_trailing_return_type '{' code '}' { $2->_parameters = $5; $2->_flags = $7; - $2->_return_type = $8; + $2->_attributes = $8; + $2->_return_type = $9; $$ = new CPPExpression(CPPExpression::lambda($2)); } | KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' diff --git a/dtool/src/cppparser/cppBisonDefs.h b/dtool/src/cppparser/cppBisonDefs.h index 9e8f71f9b1..2859ee30ab 100644 --- a/dtool/src/cppparser/cppBisonDefs.h +++ b/dtool/src/cppparser/cppBisonDefs.h @@ -23,6 +23,7 @@ #include +#include "cppAttributeList.h" #include "cppClosureType.h" #include "cppExtensionType.h" #include "cppFile.h" @@ -65,6 +66,7 @@ extern CPPPreprocessor *current_lexer; class cppyystype { public: std::string str; + CPPAttributeList attr_list; union { unsigned long long integer; long double real; diff --git a/dtool/src/cppparser/cppClosureType.cxx b/dtool/src/cppparser/cppClosureType.cxx index 1d12602c3b..5c201580f1 100644 --- a/dtool/src/cppparser/cppClosureType.cxx +++ b/dtool/src/cppparser/cppClosureType.cxx @@ -152,6 +152,10 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) cons out << " noexcept"; } + if (!_attributes.is_empty()) { + out << " " << _attributes; + } + if (_return_type != nullptr) { out << " -> "; _return_type->output(out, indent_level, scope, false); diff --git a/dtool/src/cppparser/cppDeclaration.cxx b/dtool/src/cppparser/cppDeclaration.cxx index 0125ed4289..ef7e87bdf6 100644 --- a/dtool/src/cppparser/cppDeclaration.cxx +++ b/dtool/src/cppparser/cppDeclaration.cxx @@ -18,8 +18,9 @@ * */ CPPDeclaration:: -CPPDeclaration(const CPPFile &file) : - _file(file) +CPPDeclaration(const CPPFile &file, CPPAttributeList attr) : + _file(file), + _attributes(std::move(attr)) { _vis = V_unknown; _template_scope = nullptr; @@ -34,7 +35,8 @@ CPPDeclaration(const CPPDeclaration ©) : _vis(copy._vis), _template_scope(copy._template_scope), _file(copy._file), - _leading_comment(copy._leading_comment) + _leading_comment(copy._leading_comment), + _attributes(copy._attributes) { } @@ -47,6 +49,7 @@ operator = (const CPPDeclaration ©) { _template_scope = copy._template_scope; _file = copy._file; _leading_comment = copy._leading_comment; + _attributes = copy._attributes; return *this; } @@ -135,6 +138,22 @@ substitute_decl(SubstDecl &subst, CPPScope *, CPPScope *) { return this; } +/** + * + */ +void CPPDeclaration:: +output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) const { + out << _attributes; +} + +/** + * + */ +CPPDeclaration::SubType CPPDeclaration:: +get_subtype() const { + return ST_empty; +} + /** * */ diff --git a/dtool/src/cppparser/cppDeclaration.h b/dtool/src/cppparser/cppDeclaration.h index 967dc6b6ec..73c8fd49bb 100644 --- a/dtool/src/cppparser/cppDeclaration.h +++ b/dtool/src/cppparser/cppDeclaration.h @@ -19,6 +19,7 @@ #include "cppVisibility.h" #include "cppFile.h" #include "cppCommentBlock.h" +#include "cppAttributeList.h" #include #include @@ -59,6 +60,9 @@ class CPPPreprocessor; class CPPDeclaration { public: enum SubType { + // Empty declaration + ST_empty, + // Subtypes of CPPDeclaration ST_instance, ST_type_declaration, @@ -87,7 +91,7 @@ public: ST_closure, }; - CPPDeclaration(const CPPFile &file); + CPPDeclaration(const CPPFile &file, CPPAttributeList attr = CPPAttributeList()); CPPDeclaration(const CPPDeclaration ©); virtual ~CPPDeclaration() {}; @@ -114,9 +118,9 @@ public: Instantiations _instantiations; virtual void output(std::ostream &out, int indent_level, CPPScope *scope, - bool complete) const=0; + bool complete) const; - virtual SubType get_subtype() const=0; + virtual SubType get_subtype() const; virtual CPPInstance *as_instance(); virtual CPPClassTemplateParameter *as_class_template_parameter(); @@ -216,6 +220,7 @@ public: CPPTemplateScope *_template_scope; CPPFile _file; CPPCommentBlock *_leading_comment; + CPPAttributeList _attributes; protected: virtual bool is_equal(const CPPDeclaration *other) const; diff --git a/dtool/src/cppparser/cppEnumType.cxx b/dtool/src/cppparser/cppEnumType.cxx index 11fcd5da3e..5ff18a65b0 100644 --- a/dtool/src/cppparser/cppEnumType.cxx +++ b/dtool/src/cppparser/cppEnumType.cxx @@ -26,8 +26,8 @@ */ CPPEnumType:: CPPEnumType(Type type, CPPIdentifier *ident, CPPScope *current_scope, - CPPScope *scope, const CPPFile &file) : - CPPExtensionType(type, ident, current_scope, file), + CPPScope *scope, const CPPFile &file, CPPAttributeList attr) : + CPPExtensionType(type, ident, current_scope, file, std::move(attr)), _scope(scope), _element_type(nullptr), _last_value(nullptr) @@ -44,8 +44,9 @@ CPPEnumType(Type type, CPPIdentifier *ident, CPPScope *current_scope, */ CPPEnumType:: CPPEnumType(Type type, CPPIdentifier *ident, CPPType *element_type, - CPPScope *current_scope, CPPScope *scope, const CPPFile &file) : - CPPExtensionType(type, ident, current_scope, file), + CPPScope *current_scope, CPPScope *scope, const CPPFile &file, + CPPAttributeList attr) : + CPPExtensionType(type, ident, current_scope, file, std::move(attr)), _scope(scope), _element_type(element_type), _last_value(nullptr) @@ -89,7 +90,9 @@ get_underlying_type() { * */ CPPInstance *CPPEnumType:: -add_element(const std::string &name, CPPExpression *value, CPPPreprocessor *preprocessor, const cppyyltype &pos) { +add_element(const std::string &name, CPPExpression *value, + CPPPreprocessor *preprocessor, const cppyyltype &pos, + CPPAttributeList attr) { CPPIdentifier *ident = new CPPIdentifier(name); ident->_native_scope = _parent_scope; @@ -102,6 +105,7 @@ add_element(const std::string &name, CPPExpression *value, CPPPreprocessor *prep inst = new CPPInstance(this, ident); } inst->_storage_class |= CPPInstance::SC_constexpr; + inst->_attributes = std::move(attr); _elements.push_back(inst); if (value == nullptr) { @@ -269,9 +273,12 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) cons out << _type << " "; } out << _ident->get_local_name(scope); - - } else { + } + else { out << _type; + if (!_attributes.is_empty()) { + out << " " << _attributes; + } if (_ident != nullptr) { out << " " << _ident->get_local_name(scope); } @@ -280,11 +287,15 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) cons } out << " {\n"; - Elements::const_iterator ei; - for (ei = _elements.begin(); ei != _elements.end(); ++ei) { - indent(out, indent_level + 2) << (*ei)->get_local_name(); - if ((*ei)->_initializer != nullptr) { - out << " = " << *(*ei)->_initializer; + for (CPPInstance *element : _elements) { + indent(out, indent_level + 2) << element->get_local_name(); + + if (!element->_attributes.is_empty()) { + out << " " << element->_attributes; + } + + if (element->_initializer != nullptr) { + out << " = " << *element->_initializer; } out << ",\n"; } diff --git a/dtool/src/cppparser/cppEnumType.h b/dtool/src/cppparser/cppEnumType.h index 678e1985c3..f2be4891c4 100644 --- a/dtool/src/cppparser/cppEnumType.h +++ b/dtool/src/cppparser/cppEnumType.h @@ -32,15 +32,18 @@ class CPPScope; class CPPEnumType : public CPPExtensionType { public: CPPEnumType(Type type, CPPIdentifier *ident, CPPScope *current_scope, - CPPScope *scope, const CPPFile &file); + CPPScope *scope, const CPPFile &file, + CPPAttributeList attr = CPPAttributeList()); CPPEnumType(Type type, CPPIdentifier *ident, CPPType *element_type, - CPPScope *current_scope, CPPScope *scope, const CPPFile &file); + CPPScope *current_scope, CPPScope *scope, const CPPFile &file, + CPPAttributeList attr = CPPAttributeList()); bool is_scoped() const; CPPType *get_underlying_type(); CPPInstance *add_element(const std::string &name, CPPExpression *value, - CPPPreprocessor *preprocessor, const cppyyltype &pos); + CPPPreprocessor *preprocessor, const cppyyltype &pos, + CPPAttributeList attr = CPPAttributeList()); virtual bool is_incomplete() const; diff --git a/dtool/src/cppparser/cppExtensionType.cxx b/dtool/src/cppparser/cppExtensionType.cxx index b7d23cb667..48e6b83488 100644 --- a/dtool/src/cppparser/cppExtensionType.cxx +++ b/dtool/src/cppparser/cppExtensionType.cxx @@ -23,7 +23,7 @@ CPPExtensionType:: CPPExtensionType(CPPExtensionType::Type type, CPPIdentifier *ident, CPPScope *current_scope, - const CPPFile &file) : + const CPPFile &file, CPPAttributeList attr) : CPPType(file), _type(type), _ident(ident), _alignment(nullptr) @@ -31,6 +31,7 @@ CPPExtensionType(CPPExtensionType::Type type, if (_ident != nullptr) { _ident->_native_scope = current_scope; } + _attributes = std::move(attr); } /** @@ -215,6 +216,9 @@ output(std::ostream &out, int, CPPScope *scope, bool complete) const { if (complete || cppparser_output_class_keyword) { out << _type << " "; } + if (complete && !_attributes.is_empty()) { + out << _attributes << " "; + } out << _ident->get_local_name(scope); } else if (!_typedefs.empty()) { diff --git a/dtool/src/cppparser/cppExtensionType.h b/dtool/src/cppparser/cppExtensionType.h index b47c084c88..1f3881a2fa 100644 --- a/dtool/src/cppparser/cppExtensionType.h +++ b/dtool/src/cppparser/cppExtensionType.h @@ -39,7 +39,7 @@ public: }; CPPExtensionType(Type type, CPPIdentifier *ident, CPPScope *current_scope, - const CPPFile &file); + const CPPFile &file, CPPAttributeList attr = CPPAttributeList()); virtual std::string get_simple_name() const; virtual std::string get_local_name(CPPScope *scope = nullptr) const; diff --git a/dtool/src/cppparser/cppFunctionType.cxx b/dtool/src/cppparser/cppFunctionType.cxx index 731b6b0cf5..6b927a9099 100644 --- a/dtool/src/cppparser/cppFunctionType.cxx +++ b/dtool/src/cppparser/cppFunctionType.cxx @@ -224,10 +224,13 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete, if (_flags & F_override) { out << " override"; } + if (!_attributes.is_empty()) { + out << " " << _attributes; + } out << " -> "; _return_type->output(out, indent_level, scope, false); - - } else { + } + else { _return_type->output(out, indent_level, scope, complete); out << "("; _parameters->output(out, scope, true, num_default_parameters); @@ -244,6 +247,9 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete, if (_flags & F_override) { out << " override"; } + if (!_attributes.is_empty()) { + out << " " << _attributes; + } } } @@ -278,8 +284,8 @@ output_instance(ostream &out, int indent_level, CPPScope *scope, if (_flags & (F_constructor | F_destructor)) { // No return type for constructors and destructors. out << prename << name << str; - - } else if (_flags & F_trailing_return_type) { + } + else if (_flags & F_trailing_return_type) { // It was declared using trailing return type, so let's format it that // way. out << "auto "; @@ -291,12 +297,13 @@ output_instance(ostream &out, int indent_level, CPPScope *scope, } out << str; - - } else if (_flags & F_operator_typecast) { + } + else if (_flags & F_operator_typecast) { out << "operator "; - _return_type->output_instance(out, indent_level, scope, complete, "", prename + str); - - } else { + _return_type->output_instance(out, indent_level, scope, complete, + "", prename + str); + } + else { if (prename.empty()) { _return_type->output_instance(out, indent_level, scope, complete, "", prename + name + str); @@ -322,6 +329,10 @@ output_instance(ostream &out, int indent_level, CPPScope *scope, out << " override"; } + if (!_attributes.is_empty()) { + out << " " << _attributes; + } + if (_flags & F_trailing_return_type) { out << " -> "; _return_type->output(out, indent_level, scope, false); diff --git a/dtool/src/cppparser/cppIdentifier.cxx b/dtool/src/cppparser/cppIdentifier.cxx index e339baf24e..5c7a8d72ab 100644 --- a/dtool/src/cppparser/cppIdentifier.cxx +++ b/dtool/src/cppparser/cppIdentifier.cxx @@ -84,6 +84,14 @@ add_name(const CPPNameComponent &name) { _names.push_back(name); } +/** + * + */ +void CPPIdentifier:: +prepend(CPPIdentifier *ident) { + _names.insert(_names.begin(), ident->_names.begin(), ident->_names.end()); +} + /** * */ diff --git a/dtool/src/cppparser/cppIdentifier.h b/dtool/src/cppparser/cppIdentifier.h index 8916320450..bd6d3df862 100644 --- a/dtool/src/cppparser/cppIdentifier.h +++ b/dtool/src/cppparser/cppIdentifier.h @@ -41,6 +41,8 @@ public: void add_name(const std::string &name); void add_name(const CPPNameComponent &name); + void prepend(CPPIdentifier *ident); + bool operator == (const CPPIdentifier &other) const; bool operator != (const CPPIdentifier &other) const; bool operator < (const CPPIdentifier &other) const; diff --git a/dtool/src/cppparser/cppInstance.cxx b/dtool/src/cppparser/cppInstance.cxx index 750f8cc8be..4a55adab5f 100644 --- a/dtool/src/cppparser/cppInstance.cxx +++ b/dtool/src/cppparser/cppInstance.cxx @@ -37,7 +37,6 @@ CPPInstance(CPPType *type, const string &name, int storage_class) : _type(type), _ident(new CPPIdentifier(name)), _storage_class(storage_class), - _alignment(nullptr), _bit_width(-1) { _initializer = nullptr; @@ -52,7 +51,6 @@ CPPInstance(CPPType *type, CPPIdentifier *ident, int storage_class) : _type(type), _ident(ident), _storage_class(storage_class), - _alignment(nullptr), _bit_width(-1) { _initializer = nullptr; @@ -66,11 +64,11 @@ CPPInstance(CPPType *type, CPPIdentifier *ident, int storage_class) : CPPInstance:: CPPInstance(CPPType *type, CPPInstanceIdentifier *ii, int storage_class, const CPPFile &file) : - CPPDeclaration(file), - _alignment(nullptr) + CPPDeclaration(file) { _type = ii->unroll_type(type); _ident = ii->_ident; + _attributes = ii->_attributes; ii->_ident = nullptr; _storage_class = storage_class; _initializer = nullptr; @@ -111,7 +109,6 @@ CPPInstance(const CPPInstance ©) : _ident(copy._ident), _initializer(copy._initializer), _storage_class(copy._storage_class), - _alignment(copy._alignment), _bit_width(copy._bit_width) { assert(_type != nullptr); @@ -156,7 +153,7 @@ operator == (const CPPInstance &other) const { if (_storage_class != other._storage_class) { return false; } - if (_alignment != other._alignment) { + if (_attributes != other._attributes) { return false; } @@ -200,8 +197,8 @@ operator < (const CPPInstance &other) const { if (_storage_class != other._storage_class) { return _storage_class < other._storage_class; } - if (_alignment != other._alignment) { - return _alignment < other._alignment; + if (_attributes != other._attributes) { + return _attributes < other._attributes; } // We *do* care about the identifier. We need to differentiate types of @@ -264,7 +261,7 @@ set_initializer(CPPExpression *initializer) { */ void CPPInstance:: set_alignment(int align) { - _alignment = new CPPExpression(align); + _attributes.add_alignas(align); } /** @@ -274,7 +271,7 @@ set_alignment(int align) { */ void CPPInstance:: set_alignment(CPPExpression *const_expr) { - _alignment = const_expr; + _attributes.add_alignas(const_expr); } /** @@ -544,8 +541,8 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete, indent(out, indent_level); } - if (_alignment != nullptr) { - out << "alignas(" << *_alignment << ") "; + if (!_attributes.is_empty()) { + out << _attributes << " "; } if (_storage_class & SC_static) { @@ -600,8 +597,8 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete, _type->as_function_type()-> output_instance(out, indent_level, scope, complete, "", name, num_default_parameters); - - } else { + } + else { _type->output_instance(out, indent_level, scope, complete, "", name); } @@ -623,7 +620,6 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete, } } - /** * */ diff --git a/dtool/src/cppparser/cppInstance.h b/dtool/src/cppparser/cppInstance.h index 8e2118186a..8e8c427f52 100644 --- a/dtool/src/cppparser/cppInstance.h +++ b/dtool/src/cppparser/cppInstance.h @@ -19,6 +19,7 @@ #include "cppDeclaration.h" #include "cppType.h" #include "cppTemplateParameterList.h" +#include "cppAttributeList.h" class CPPInstanceIdentifier; class CPPIdentifier; @@ -127,7 +128,6 @@ public: CPPExpression *_initializer; int _storage_class; - CPPExpression *_alignment; int _bit_width; private: diff --git a/dtool/src/cppparser/cppInstanceIdentifier.cxx b/dtool/src/cppparser/cppInstanceIdentifier.cxx index 891383cacc..8c47c7d7ba 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.cxx +++ b/dtool/src/cppparser/cppInstanceIdentifier.cxx @@ -25,20 +25,22 @@ * */ CPPInstanceIdentifier::Modifier:: -Modifier(CPPInstanceIdentifierType type) : +Modifier(CPPInstanceIdentifierType type, CPPAttributeList attr) : _type(type), _func_params(nullptr), _func_flags(0), _scoping(nullptr), - _expr(nullptr) { + _expr(nullptr), + _attributes(std::move(attr)) { } /** * */ CPPInstanceIdentifier::Modifier CPPInstanceIdentifier::Modifier:: -func_type(CPPParameterList *params, int flags, CPPType *trailing_return_type) { - Modifier mod(IIT_func); +func_type(CPPParameterList *params, int flags, CPPType *trailing_return_type, + CPPAttributeList attr) { + Modifier mod(IIT_func, std::move(attr)); mod._func_params = params; mod._func_flags = flags; mod._trailing_return_type = trailing_return_type; @@ -49,8 +51,8 @@ func_type(CPPParameterList *params, int flags, CPPType *trailing_return_type) { * */ CPPInstanceIdentifier::Modifier CPPInstanceIdentifier::Modifier:: -array_type(CPPExpression *expr) { - Modifier mod(IIT_array); +array_type(CPPExpression *expr, CPPAttributeList attr) { + Modifier mod(IIT_array, std::move(attr)); mod._expr = expr; return mod; } @@ -59,8 +61,8 @@ array_type(CPPExpression *expr) { * */ CPPInstanceIdentifier::Modifier CPPInstanceIdentifier::Modifier:: -scoped_pointer_type(CPPIdentifier *scoping) { - Modifier mod(IIT_scoped_pointer); +scoped_pointer_type(CPPIdentifier *scoping, CPPAttributeList attr) { + Modifier mod(IIT_scoped_pointer, std::move(attr)); mod._scoping = scoping; return mod; } @@ -86,6 +88,17 @@ CPPInstanceIdentifier(CPPIdentifier *ident) : _packed(false) { } +/** + * + */ +CPPInstanceIdentifier:: +CPPInstanceIdentifier(CPPIdentifier *ident, CPPAttributeList attributes) : + _ident(ident), + _attributes(std::move(attributes)), + _bit_width(nullptr), + _packed(false) { +} + /** * Unrolls the list of type punctuation on either side of the identifier to * determine the actual type represented by the identifier, given the @@ -103,15 +116,16 @@ unroll_type(CPPType *start_type) { * */ void CPPInstanceIdentifier:: -add_modifier(CPPInstanceIdentifierType type) { - _modifiers.push_back(Modifier(type)); +add_modifier(CPPInstanceIdentifierType type, CPPAttributeList attr) { + _modifiers.push_back(Modifier(type, std::move(attr))); } /** * */ void CPPInstanceIdentifier:: -add_func_modifier(CPPParameterList *params, int flags, CPPType *trailing_return_type) { +add_func_modifier(CPPParameterList *params, int flags, + CPPType *trailing_return_type, CPPAttributeList attr) { // As a special hack, if we added a parameter list to an operator function, // check if the parameter list is empty. If it is, this is really a unary // operator, so set the unary_op flag. Operators () and [] are never @@ -134,22 +148,22 @@ add_func_modifier(CPPParameterList *params, int flags, CPPType *trailing_return_ flags |= CPPFunctionType::F_trailing_return_type; } - _modifiers.push_back(Modifier::func_type(params, flags, trailing_return_type)); + _modifiers.push_back(Modifier::func_type(params, flags, trailing_return_type, std::move(attr))); } /** * */ void CPPInstanceIdentifier:: -add_scoped_pointer_modifier(CPPIdentifier *scoping) { - _modifiers.push_back(Modifier::scoped_pointer_type(scoping)); +add_scoped_pointer_modifier(CPPIdentifier *scoping, CPPAttributeList attr) { + _modifiers.push_back(Modifier::scoped_pointer_type(scoping, std::move(attr))); } /** * */ void CPPInstanceIdentifier:: -add_array_modifier(CPPExpression *expr) { +add_array_modifier(CPPExpression *expr, CPPAttributeList attr) { // Special case for operator new[] and delete[]. We're not really adding an // array modifier to them, but appending [] to the identifier. This is to // work around a parser ambiguity. @@ -158,7 +172,7 @@ add_array_modifier(CPPExpression *expr) { _ident->_names.back().append_name("[]"); } else { - _modifiers.push_back(Modifier::array_type(expr)); + _modifiers.push_back(Modifier::array_type(expr, std::move(attr))); } } @@ -187,6 +201,14 @@ add_trailing_return_type(CPPType *type) { std::cerr << "trailing return type can only be added to a function\n"; } +/** + * Add attributes to the instance (not the type). + */ +void CPPInstanceIdentifier:: +add_attributes(const CPPAttributeList &attributes) { + _attributes.add_attributes_from(attributes); +} + /** * Returns the initializer parameter list that was set for this particular * instance, e.g. if the instance were: @@ -316,5 +338,7 @@ r_unroll_type(CPPType *start_type, abort(); } + result->_attributes = mod._attributes; + return CPPType::new_type(result); } diff --git a/dtool/src/cppparser/cppInstanceIdentifier.h b/dtool/src/cppparser/cppInstanceIdentifier.h index 9cf7a3edbe..8a69504609 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.h +++ b/dtool/src/cppparser/cppInstanceIdentifier.h @@ -15,6 +15,7 @@ #define CPPINSTANCEIDENTIFIER_H #include "dtoolbase.h" +#include "cppAttributeList.h" #include #include @@ -48,18 +49,25 @@ enum CPPInstanceIdentifierType { class CPPInstanceIdentifier { public: CPPInstanceIdentifier(CPPIdentifier *ident); + CPPInstanceIdentifier(CPPIdentifier *ident, CPPAttributeList attributes); CPPType *unroll_type(CPPType *start_type); - void add_modifier(CPPInstanceIdentifierType type); + void add_modifier(CPPInstanceIdentifierType type, + CPPAttributeList attr = CPPAttributeList()); void add_func_modifier(CPPParameterList *params, int flags, - CPPType *trailing_return_type = nullptr); - void add_scoped_pointer_modifier(CPPIdentifier *scoping); - void add_array_modifier(CPPExpression *expr); + CPPType *trailing_return_type = nullptr, + CPPAttributeList attr = CPPAttributeList()); + void add_scoped_pointer_modifier(CPPIdentifier *scoping, + CPPAttributeList attr = CPPAttributeList()); + void add_array_modifier(CPPExpression *expr, + CPPAttributeList attr = CPPAttributeList()); void add_initializer_modifier(CPPParameterList *params); void add_trailing_return_type(CPPType *type); + void add_attributes(const CPPAttributeList &attributes); + CPPParameterList *get_initializer() const; CPPScope *get_scope(CPPScope *current_scope, CPPScope *global_scope, @@ -69,11 +77,14 @@ public: class Modifier { public: - Modifier(CPPInstanceIdentifierType type); + Modifier(CPPInstanceIdentifierType type, + CPPAttributeList attr = CPPAttributeList()); static Modifier func_type(CPPParameterList *params, int flags, - CPPType *trailing_return_type); - static Modifier array_type(CPPExpression *expr); - static Modifier scoped_pointer_type(CPPIdentifier *scoping); + CPPType *trailing_return_type, + CPPAttributeList attr); + static Modifier array_type(CPPExpression *expr, CPPAttributeList attr); + static Modifier scoped_pointer_type(CPPIdentifier *scoping, + CPPAttributeList attr); static Modifier initializer_type(CPPParameterList *params); CPPInstanceIdentifierType _type; @@ -82,10 +93,13 @@ public: CPPIdentifier *_scoping; CPPExpression *_expr; CPPType *_trailing_return_type; + CPPAttributeList _attributes; }; typedef std::vector Modifiers; Modifiers _modifiers; + CPPAttributeList _attributes; + // If not null, indicates a bitfield CPPExpression *_bit_width; diff --git a/dtool/src/cppparser/cppNamespace.cxx b/dtool/src/cppparser/cppNamespace.cxx index a72f4b093d..ae37bced70 100644 --- a/dtool/src/cppparser/cppNamespace.cxx +++ b/dtool/src/cppparser/cppNamespace.cxx @@ -20,8 +20,9 @@ * */ CPPNamespace:: -CPPNamespace(CPPIdentifier *ident, CPPScope *scope, const CPPFile &file) : - CPPDeclaration(file), +CPPNamespace(CPPIdentifier *ident, CPPScope *scope, const CPPFile &file, + CPPAttributeList attr) : + CPPDeclaration(file, std::move(attr)), _is_inline(false), _ident(ident), _scope(scope) @@ -77,15 +78,20 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) cons if (_is_inline) { out << "inline "; } + out << "namespace "; + if (!complete && _ident != nullptr) { // If we have a name, use it. out << "namespace " << _ident->get_local_name(scope); - - } else { + } + else { + if (!_attributes.is_empty()) { + out << _attributes << " "; + } if (_ident != nullptr) { - out << "namespace " << _ident->get_local_name(scope) << " {\n"; + out << _ident->get_local_name(scope) << " {\n"; } else { - out << "namespace {\n"; + out << "{\n"; } _scope->write(out, indent_level + 2, _scope); diff --git a/dtool/src/cppparser/cppNamespace.h b/dtool/src/cppparser/cppNamespace.h index ca4d1dcf04..d8b3e7bd21 100644 --- a/dtool/src/cppparser/cppNamespace.h +++ b/dtool/src/cppparser/cppNamespace.h @@ -27,7 +27,7 @@ class CPPScope; class CPPNamespace : public CPPDeclaration { public: CPPNamespace(CPPIdentifier *ident, CPPScope *scope, - const CPPFile &file); + const CPPFile &file, CPPAttributeList attr = CPPAttributeList()); std::string get_simple_name() const; std::string get_local_name(CPPScope *scope = nullptr) const; diff --git a/dtool/src/cppparser/cppPointerType.cxx b/dtool/src/cppparser/cppPointerType.cxx index bba2a82333..a3317c3f4f 100644 --- a/dtool/src/cppparser/cppPointerType.cxx +++ b/dtool/src/cppparser/cppPointerType.cxx @@ -247,6 +247,12 @@ output_instance(std::ostream &out, int indent_level, CPPScope *scope, star = ftype->_class_owner->get_fully_scoped_name() + "::*"; } + if (!_attributes.is_empty()) { + std::ostringstream strm; + strm << star << _attributes << " "; + star = strm.str(); + } + _pointing_at->output_instance(out, indent_level, scope, complete, star + prename, name); } diff --git a/dtool/src/cppparser/cppReferenceType.cxx b/dtool/src/cppparser/cppReferenceType.cxx index 42526789a3..b61979a0e7 100644 --- a/dtool/src/cppparser/cppReferenceType.cxx +++ b/dtool/src/cppparser/cppReferenceType.cxx @@ -228,13 +228,16 @@ output_instance(std::ostream &out, int indent_level, CPPScope *scope, bool complete, const std::string &prename, const std::string &name) const { - if (_value_category == VC_rvalue) { - _pointing_at->output_instance(out, indent_level, scope, complete, - "&&" + prename, name); - } else { - _pointing_at->output_instance(out, indent_level, scope, complete, - "&" + prename, name); + std::string prefix((_value_category == VC_rvalue) ? "&&" : "&"); + + if (!_attributes.is_empty()) { + std::ostringstream strm; + strm << prefix << _attributes << " "; + prefix = strm.str(); } + + _pointing_at->output_instance(out, indent_level, scope, complete, + prefix + prename, name); } /** diff --git a/dtool/src/cppparser/cppStructType.cxx b/dtool/src/cppparser/cppStructType.cxx index e08d4a4a4e..ce5bcc2ffb 100644 --- a/dtool/src/cppparser/cppStructType.cxx +++ b/dtool/src/cppparser/cppStructType.cxx @@ -41,8 +41,8 @@ output(std::ostream &out) const { CPPStructType:: CPPStructType(CPPStructType::Type type, CPPIdentifier *ident, CPPScope *current_scope, CPPScope *scope, - const CPPFile &file) : - CPPExtensionType(type, ident, current_scope, file), + const CPPFile &file, CPPAttributeList attr) : + CPPExtensionType(type, ident, current_scope, file, std::move(attr)), _scope(scope), _final(false) { @@ -1261,10 +1261,14 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) cons get_template_scope()->_parameters.write_formal(out, scope); indent(out, indent_level); } + out << _type; + + if (!_attributes.is_empty()) { + out << " " << _attributes; + } + if (_ident != nullptr) { - out << _type << " " << _ident->get_local_name(scope); - } else { - out << _type; + out << " " << _ident->get_local_name(scope); } if (_final) { diff --git a/dtool/src/cppparser/cppStructType.h b/dtool/src/cppparser/cppStructType.h index 57537b389e..2119e7f233 100644 --- a/dtool/src/cppparser/cppStructType.h +++ b/dtool/src/cppparser/cppStructType.h @@ -35,7 +35,8 @@ public: CPPStructType(Type type, CPPIdentifier *ident, CPPScope *current_scope, CPPScope *scope, - const CPPFile &file); + const CPPFile &file, + CPPAttributeList attr = CPPAttributeList()); CPPStructType(const CPPStructType ©); void operator = (const CPPStructType ©); diff --git a/dtool/src/cppparser/cppTypedefType.cxx b/dtool/src/cppparser/cppTypedefType.cxx index 6924fca4a0..295507ac25 100644 --- a/dtool/src/cppparser/cppTypedefType.cxx +++ b/dtool/src/cppparser/cppTypedefType.cxx @@ -43,7 +43,8 @@ CPPTypedefType(CPPType *type, const string &name, CPPScope *current_scope) : * */ CPPTypedefType:: -CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope) : +CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope, + CPPAttributeList attr) : CPPType(CPPFile()), _type(type), _ident(ident), @@ -53,6 +54,8 @@ CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope) : _ident->_native_scope = current_scope; } _subst_decl_recursive_protect = false; + + _attributes = std::move(attr); } /** @@ -69,6 +72,7 @@ CPPTypedefType(CPPType *type, CPPInstanceIdentifier *ii, assert(ii != nullptr); _type = ii->unroll_type(type); _ident = ii->_ident; + _attributes = std::move(ii->_attributes); ii->_ident = nullptr; delete ii; @@ -388,9 +392,16 @@ output(std::ostream &out, int indent_level, CPPScope *scope, bool complete) cons get_template_scope()->_parameters.write_formal(out, scope); indent(out, indent_level); } - out << "using " << name << " = "; + out << "using " << name; + if (!_attributes.is_empty()) { + out << " " << _attributes; + } + out << " = "; _type->output(out, 0, scope, false); } else { + if (!_attributes.is_empty()) { + out << _attributes << " "; + } out << "typedef "; _type->output_instance(out, indent_level, scope, false, "", name); } diff --git a/dtool/src/cppparser/cppTypedefType.h b/dtool/src/cppparser/cppTypedefType.h index c8d7ffd6be..9591300ac1 100644 --- a/dtool/src/cppparser/cppTypedefType.h +++ b/dtool/src/cppparser/cppTypedefType.h @@ -28,7 +28,8 @@ class CPPInstanceIdentifier; class CPPTypedefType : public CPPType { public: CPPTypedefType(CPPType *type, const std::string &name, CPPScope *current_scope); - CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope); + CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope, + CPPAttributeList attr = CPPAttributeList()); CPPTypedefType(CPPType *type, CPPInstanceIdentifier *ii, CPPScope *current_scope, const CPPFile &file); diff --git a/dtool/src/cppparser/p3cppParser_composite1.cxx b/dtool/src/cppparser/p3cppParser_composite1.cxx index e8020dd64d..3cf2094252 100644 --- a/dtool/src/cppparser/p3cppParser_composite1.cxx +++ b/dtool/src/cppparser/p3cppParser_composite1.cxx @@ -1,4 +1,4 @@ - +#include "cppAttributeList.cxx" #include "cppFunctionType.cxx" #include "cppGlobals.cxx" #include "cppCommentBlock.cxx" diff --git a/dtool/src/parser-inc/stdtypedefs.h b/dtool/src/parser-inc/stdtypedefs.h index d3fd7363d1..edce659739 100644 --- a/dtool/src/parser-inc/stdtypedefs.h +++ b/dtool/src/parser-inc/stdtypedefs.h @@ -47,8 +47,4 @@ namespace std { typedef decltype(nullptr) nullptr_t; } -// One day, we might extend interrogate to be able to parse this, -// but we currently don't need it. -#define alignas(x) - #endif