From caa03c53dd2f96c8bb13a72e6be61b3af6e92759 Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 15 Feb 2016 21:14:42 +0100 Subject: [PATCH] Interrogate cppparser improvements, C++11/14/17 additions: * Support trailing return type. * Ignore C++14 digit separators. * Parse C++14 binary number representations. * Support "using"-style type aliases. * Support decltype and auto with "new". * Remove silly "long float" and "long long float". * Support default visibility with class inheritance. * Remove -longlong hack since C++11 supports long long natively. * Support unary plus operator. * Preserve bitfield definitions. * Support constructor inits using braces. * Support override/final specifiers. * Ignore [[attributes]] in certain cases * Add support for typeid() in expressions * Parse (but ignore) lambda expressions * Differentiate between casts, add const_cast/reinterpret_cast * Support thread_local variables. --- dtool/src/cppparser/cppBison.cxx.prebuilt | 7517 +++++++++-------- dtool/src/cppparser/cppBison.h.prebuilt | 368 +- dtool/src/cppparser/cppBison.yxx | 594 +- dtool/src/cppparser/cppEnumType.cxx | 39 +- dtool/src/cppparser/cppEnumType.h | 2 + dtool/src/cppparser/cppExpression.cxx | 192 +- dtool/src/cppparser/cppExpression.h | 89 +- dtool/src/cppparser/cppExtensionType.cxx | 4 +- dtool/src/cppparser/cppFunctionType.cxx | 67 +- dtool/src/cppparser/cppFunctionType.h | 3 + dtool/src/cppparser/cppInstance.cxx | 17 +- dtool/src/cppparser/cppInstance.h | 3 + dtool/src/cppparser/cppInstanceIdentifier.cxx | 45 +- dtool/src/cppparser/cppInstanceIdentifier.h | 11 +- dtool/src/cppparser/cppPreprocessor.cxx | 86 +- dtool/src/cppparser/cppPreprocessor.h | 1 + dtool/src/cppparser/cppStructType.cxx | 22 +- dtool/src/cppparser/cppStructType.h | 1 + dtool/src/cppparser/cppToken.cxx | 4 + dtool/src/cppparser/cppTypedefType.cxx | 22 +- dtool/src/cppparser/cppTypedefType.h | 1 + dtool/src/dtoolbase/dtoolbase_cc.h | 4 +- dtool/src/interrogate/interrogate.cxx | 5 +- dtool/src/parser-inc/typeinfo | 23 +- 24 files changed, 5377 insertions(+), 3743 deletions(-) diff --git a/dtool/src/cppparser/cppBison.cxx.prebuilt b/dtool/src/cppparser/cppBison.cxx.prebuilt index d20ad47a8c..f77f3b77d6 100644 --- a/dtool/src/cppparser/cppBison.cxx.prebuilt +++ b/dtool/src/cppparser/cppBison.cxx.prebuilt @@ -328,95 +328,101 @@ extern int cppyydebug; UNARY_NOT = 281, UNARY_NEGATE = 282, UNARY_MINUS = 283, - UNARY_STAR = 284, - UNARY_REF = 285, - POINTSAT = 286, - SCOPE = 287, - PLUSPLUS = 288, - MINUSMINUS = 289, - TIMESEQUAL = 290, - DIVIDEEQUAL = 291, - MODEQUAL = 292, - PLUSEQUAL = 293, - MINUSEQUAL = 294, - OREQUAL = 295, - ANDEQUAL = 296, - XOREQUAL = 297, - LSHIFTEQUAL = 298, - RSHIFTEQUAL = 299, - KW_ALIGNAS = 300, - KW_ALIGNOF = 301, - KW_AUTO = 302, - KW_BEGIN_PUBLISH = 303, - KW_BLOCKING = 304, - KW_BOOL = 305, - KW_CATCH = 306, - KW_CHAR = 307, - KW_CHAR16_T = 308, - KW_CHAR32_T = 309, - KW_CLASS = 310, - KW_CONST = 311, - KW_CONSTEXPR = 312, - KW_DECLTYPE = 313, - KW_DEFAULT = 314, - KW_DELETE = 315, - KW_DOUBLE = 316, - KW_DYNAMIC_CAST = 317, - KW_ELSE = 318, - KW_END_PUBLISH = 319, - KW_ENUM = 320, - KW_EXTENSION = 321, - KW_EXTERN = 322, - KW_EXPLICIT = 323, - KW_PUBLISHED = 324, - KW_FALSE = 325, - KW_FLOAT = 326, - KW_FRIEND = 327, - KW_FOR = 328, - KW_GOTO = 329, - KW_IF = 330, - KW_INLINE = 331, - KW_INT = 332, - KW_LONG = 333, - KW_LONGLONG = 334, - KW_MAKE_PROPERTY = 335, - KW_MAKE_PROPERTY2 = 336, - KW_MAKE_SEQ = 337, - KW_MUTABLE = 338, - KW_NAMESPACE = 339, - KW_NEW = 340, - KW_NOEXCEPT = 341, - KW_NULLPTR = 342, - KW_OPERATOR = 343, - KW_PRIVATE = 344, - KW_PROTECTED = 345, - KW_PUBLIC = 346, - KW_REGISTER = 347, - KW_RETURN = 348, - KW_SHORT = 349, - KW_SIGNED = 350, - KW_SIZEOF = 351, - KW_STATIC = 352, - KW_STATIC_ASSERT = 353, - KW_STATIC_CAST = 354, - KW_STRUCT = 355, - KW_TEMPLATE = 356, - KW_THROW = 357, - KW_TRUE = 358, - KW_TRY = 359, - KW_TYPEDEF = 360, - KW_TYPENAME = 361, - KW_UNION = 362, - KW_UNSIGNED = 363, - KW_USING = 364, - KW_VIRTUAL = 365, - KW_VOID = 366, - KW_VOLATILE = 367, - KW_WCHAR_T = 368, - KW_WHILE = 369, - START_CPP = 370, - START_CONST_EXPR = 371, - START_TYPE = 372 + UNARY_PLUS = 284, + UNARY_STAR = 285, + UNARY_REF = 286, + POINTSAT = 287, + SCOPE = 288, + PLUSPLUS = 289, + MINUSMINUS = 290, + TIMESEQUAL = 291, + DIVIDEEQUAL = 292, + MODEQUAL = 293, + PLUSEQUAL = 294, + MINUSEQUAL = 295, + OREQUAL = 296, + ANDEQUAL = 297, + XOREQUAL = 298, + LSHIFTEQUAL = 299, + RSHIFTEQUAL = 300, + KW_ALIGNAS = 301, + KW_ALIGNOF = 302, + KW_AUTO = 303, + KW_BEGIN_PUBLISH = 304, + KW_BLOCKING = 305, + KW_BOOL = 306, + KW_CATCH = 307, + KW_CHAR = 308, + KW_CHAR16_T = 309, + KW_CHAR32_T = 310, + KW_CLASS = 311, + KW_CONST = 312, + KW_CONSTEXPR = 313, + KW_CONST_CAST = 314, + KW_DECLTYPE = 315, + KW_DEFAULT = 316, + KW_DELETE = 317, + KW_DOUBLE = 318, + KW_DYNAMIC_CAST = 319, + KW_ELSE = 320, + KW_END_PUBLISH = 321, + KW_ENUM = 322, + KW_EXTENSION = 323, + KW_EXTERN = 324, + KW_EXPLICIT = 325, + KW_PUBLISHED = 326, + KW_FALSE = 327, + KW_FINAL = 328, + KW_FLOAT = 329, + KW_FRIEND = 330, + KW_FOR = 331, + KW_GOTO = 332, + KW_IF = 333, + KW_INLINE = 334, + KW_INT = 335, + KW_LONG = 336, + KW_MAKE_PROPERTY = 337, + KW_MAKE_PROPERTY2 = 338, + KW_MAKE_SEQ = 339, + KW_MUTABLE = 340, + KW_NAMESPACE = 341, + KW_NEW = 342, + KW_NOEXCEPT = 343, + KW_NULLPTR = 344, + KW_OPERATOR = 345, + KW_OVERRIDE = 346, + KW_PRIVATE = 347, + KW_PROTECTED = 348, + KW_PUBLIC = 349, + KW_REGISTER = 350, + KW_REINTERPRET_CAST = 351, + KW_RETURN = 352, + KW_SHORT = 353, + KW_SIGNED = 354, + KW_SIZEOF = 355, + KW_STATIC = 356, + KW_STATIC_ASSERT = 357, + KW_STATIC_CAST = 358, + KW_STRUCT = 359, + KW_TEMPLATE = 360, + KW_THREAD_LOCAL = 361, + KW_THROW = 362, + KW_TRUE = 363, + KW_TRY = 364, + KW_TYPEDEF = 365, + KW_TYPEID = 366, + KW_TYPENAME = 367, + KW_UNION = 368, + KW_UNSIGNED = 369, + KW_USING = 370, + KW_VIRTUAL = 371, + KW_VOID = 372, + KW_VOLATILE = 373, + KW_WCHAR_T = 374, + KW_WHILE = 375, + START_CPP = 376, + START_CONST_EXPR = 377, + START_TYPE = 378 }; #endif /* Tokens. */ @@ -446,95 +452,101 @@ extern int cppyydebug; #define UNARY_NOT 281 #define UNARY_NEGATE 282 #define UNARY_MINUS 283 -#define UNARY_STAR 284 -#define UNARY_REF 285 -#define POINTSAT 286 -#define SCOPE 287 -#define PLUSPLUS 288 -#define MINUSMINUS 289 -#define TIMESEQUAL 290 -#define DIVIDEEQUAL 291 -#define MODEQUAL 292 -#define PLUSEQUAL 293 -#define MINUSEQUAL 294 -#define OREQUAL 295 -#define ANDEQUAL 296 -#define XOREQUAL 297 -#define LSHIFTEQUAL 298 -#define RSHIFTEQUAL 299 -#define KW_ALIGNAS 300 -#define KW_ALIGNOF 301 -#define KW_AUTO 302 -#define KW_BEGIN_PUBLISH 303 -#define KW_BLOCKING 304 -#define KW_BOOL 305 -#define KW_CATCH 306 -#define KW_CHAR 307 -#define KW_CHAR16_T 308 -#define KW_CHAR32_T 309 -#define KW_CLASS 310 -#define KW_CONST 311 -#define KW_CONSTEXPR 312 -#define KW_DECLTYPE 313 -#define KW_DEFAULT 314 -#define KW_DELETE 315 -#define KW_DOUBLE 316 -#define KW_DYNAMIC_CAST 317 -#define KW_ELSE 318 -#define KW_END_PUBLISH 319 -#define KW_ENUM 320 -#define KW_EXTENSION 321 -#define KW_EXTERN 322 -#define KW_EXPLICIT 323 -#define KW_PUBLISHED 324 -#define KW_FALSE 325 -#define KW_FLOAT 326 -#define KW_FRIEND 327 -#define KW_FOR 328 -#define KW_GOTO 329 -#define KW_IF 330 -#define KW_INLINE 331 -#define KW_INT 332 -#define KW_LONG 333 -#define KW_LONGLONG 334 -#define KW_MAKE_PROPERTY 335 -#define KW_MAKE_PROPERTY2 336 -#define KW_MAKE_SEQ 337 -#define KW_MUTABLE 338 -#define KW_NAMESPACE 339 -#define KW_NEW 340 -#define KW_NOEXCEPT 341 -#define KW_NULLPTR 342 -#define KW_OPERATOR 343 -#define KW_PRIVATE 344 -#define KW_PROTECTED 345 -#define KW_PUBLIC 346 -#define KW_REGISTER 347 -#define KW_RETURN 348 -#define KW_SHORT 349 -#define KW_SIGNED 350 -#define KW_SIZEOF 351 -#define KW_STATIC 352 -#define KW_STATIC_ASSERT 353 -#define KW_STATIC_CAST 354 -#define KW_STRUCT 355 -#define KW_TEMPLATE 356 -#define KW_THROW 357 -#define KW_TRUE 358 -#define KW_TRY 359 -#define KW_TYPEDEF 360 -#define KW_TYPENAME 361 -#define KW_UNION 362 -#define KW_UNSIGNED 363 -#define KW_USING 364 -#define KW_VIRTUAL 365 -#define KW_VOID 366 -#define KW_VOLATILE 367 -#define KW_WCHAR_T 368 -#define KW_WHILE 369 -#define START_CPP 370 -#define START_CONST_EXPR 371 -#define START_TYPE 372 +#define UNARY_PLUS 284 +#define UNARY_STAR 285 +#define UNARY_REF 286 +#define POINTSAT 287 +#define SCOPE 288 +#define PLUSPLUS 289 +#define MINUSMINUS 290 +#define TIMESEQUAL 291 +#define DIVIDEEQUAL 292 +#define MODEQUAL 293 +#define PLUSEQUAL 294 +#define MINUSEQUAL 295 +#define OREQUAL 296 +#define ANDEQUAL 297 +#define XOREQUAL 298 +#define LSHIFTEQUAL 299 +#define RSHIFTEQUAL 300 +#define KW_ALIGNAS 301 +#define KW_ALIGNOF 302 +#define KW_AUTO 303 +#define KW_BEGIN_PUBLISH 304 +#define KW_BLOCKING 305 +#define KW_BOOL 306 +#define KW_CATCH 307 +#define KW_CHAR 308 +#define KW_CHAR16_T 309 +#define KW_CHAR32_T 310 +#define KW_CLASS 311 +#define KW_CONST 312 +#define KW_CONSTEXPR 313 +#define KW_CONST_CAST 314 +#define KW_DECLTYPE 315 +#define KW_DEFAULT 316 +#define KW_DELETE 317 +#define KW_DOUBLE 318 +#define KW_DYNAMIC_CAST 319 +#define KW_ELSE 320 +#define KW_END_PUBLISH 321 +#define KW_ENUM 322 +#define KW_EXTENSION 323 +#define KW_EXTERN 324 +#define KW_EXPLICIT 325 +#define KW_PUBLISHED 326 +#define KW_FALSE 327 +#define KW_FINAL 328 +#define KW_FLOAT 329 +#define KW_FRIEND 330 +#define KW_FOR 331 +#define KW_GOTO 332 +#define KW_IF 333 +#define KW_INLINE 334 +#define KW_INT 335 +#define KW_LONG 336 +#define KW_MAKE_PROPERTY 337 +#define KW_MAKE_PROPERTY2 338 +#define KW_MAKE_SEQ 339 +#define KW_MUTABLE 340 +#define KW_NAMESPACE 341 +#define KW_NEW 342 +#define KW_NOEXCEPT 343 +#define KW_NULLPTR 344 +#define KW_OPERATOR 345 +#define KW_OVERRIDE 346 +#define KW_PRIVATE 347 +#define KW_PROTECTED 348 +#define KW_PUBLIC 349 +#define KW_REGISTER 350 +#define KW_REINTERPRET_CAST 351 +#define KW_RETURN 352 +#define KW_SHORT 353 +#define KW_SIGNED 354 +#define KW_SIZEOF 355 +#define KW_STATIC 356 +#define KW_STATIC_ASSERT 357 +#define KW_STATIC_CAST 358 +#define KW_STRUCT 359 +#define KW_TEMPLATE 360 +#define KW_THREAD_LOCAL 361 +#define KW_THROW 362 +#define KW_TRUE 363 +#define KW_TRY 364 +#define KW_TYPEDEF 365 +#define KW_TYPEID 366 +#define KW_TYPENAME 367 +#define KW_UNION 368 +#define KW_UNSIGNED 369 +#define KW_USING 370 +#define KW_VIRTUAL 371 +#define KW_VOID 372 +#define KW_VOLATILE 373 +#define KW_WCHAR_T 374 +#define KW_WHILE 375 +#define START_CPP 376 +#define START_CONST_EXPR 377 +#define START_TYPE 378 @@ -577,7 +589,7 @@ int cppyyparse (); /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ -#line 581 "built/tmp/cppBison.yxx.c" +#line 593 "built/tmp/cppBison.yxx.c" #ifdef short # undef short @@ -797,22 +809,22 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 79 +#define YYFINAL 85 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 4690 +#define YYLAST 5299 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 142 +#define YYNTOKENS 148 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 95 +#define YYNNTS 109 /* YYNRULES -- Number of rules. */ -#define YYNRULES 593 +#define YYNRULES 669 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1101 +#define YYNSTATES 1311 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 372 +#define YYMAXUTOK 378 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -823,16 +835,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 140, 2, 2, 2, 133, 126, 2, - 136, 138, 131, 129, 119, 130, 135, 132, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 121, 120, - 127, 122, 128, 123, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 147, 2, 2, 2, 139, 132, 2, + 142, 144, 137, 135, 125, 136, 141, 138, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 127, 126, + 133, 128, 134, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 137, 2, 141, 125, 2, 2, 2, 2, 2, + 2, 143, 2, 146, 131, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 118, 124, 139, 134, 2, 2, 2, + 2, 2, 2, 124, 130, 145, 140, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -857,7 +869,7 @@ static const yytype_uint8 yytranslate[] = 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117 + 115, 116, 117, 118, 119, 120, 121, 122, 123 }; #if YYDEBUG @@ -866,322 +878,366 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint16 yyprhs[] = { 0, 0, 3, 6, 9, 12, 14, 17, 20, 22, - 26, 31, 32, 38, 40, 42, 44, 46, 48, 50, - 53, 55, 57, 60, 63, 66, 69, 77, 87, 97, - 111, 121, 128, 133, 134, 138, 140, 143, 147, 150, - 153, 156, 159, 162, 165, 168, 171, 174, 177, 179, - 183, 187, 188, 193, 194, 200, 203, 208, 211, 216, - 217, 222, 223, 229, 233, 236, 241, 244, 249, 250, - 257, 258, 265, 266, 274, 275, 286, 287, 299, 300, - 309, 310, 320, 322, 324, 326, 329, 334, 340, 342, - 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, - 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, - 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, - 404, 406, 408, 410, 413, 416, 418, 420, 422, 424, - 425, 432, 435, 437, 439, 441, 445, 448, 453, 456, - 461, 465, 470, 472, 474, 476, 478, 481, 485, 488, - 491, 494, 497, 500, 504, 509, 513, 517, 518, 525, - 527, 529, 531, 535, 538, 540, 544, 546, 549, 551, - 554, 556, 560, 566, 570, 574, 578, 583, 585, 587, - 590, 592, 596, 600, 606, 610, 615, 621, 624, 626, - 628, 630, 632, 635, 638, 641, 644, 647, 651, 656, - 658, 660, 662, 665, 668, 671, 674, 677, 681, 686, - 694, 698, 700, 703, 706, 709, 712, 715, 719, 724, - 732, 734, 736, 739, 741, 743, 745, 748, 753, 758, - 760, 762, 764, 767, 769, 771, 773, 776, 781, 784, - 789, 791, 793, 795, 798, 801, 804, 806, 808, 811, - 815, 816, 822, 823, 831, 833, 835, 838, 842, 845, - 848, 851, 855, 859, 863, 867, 871, 875, 880, 885, - 888, 892, 894, 896, 898, 900, 904, 910, 912, 915, - 920, 922, 924, 926, 928, 929, 936, 937, 945, 950, - 956, 959, 963, 965, 967, 969, 971, 973, 975, 977, - 979, 981, 983, 985, 987, 989, 991, 994, 997, 1000, - 1003, 1005, 1008, 1010, 1014, 1017, 1019, 1020, 1023, 1025, - 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, - 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, - 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, - 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102, 1104, 1106, - 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, - 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146, - 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1166, - 1168, 1170, 1172, 1174, 1176, 1178, 1180, 1182, 1184, 1186, - 1188, 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204, 1206, - 1208, 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224, 1226, - 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244, 1246, - 1248, 1250, 1252, 1254, 1256, 1258, 1260, 1262, 1266, 1268, - 1270, 1272, 1274, 1276, 1280, 1282, 1287, 1295, 1303, 1308, - 1313, 1316, 1319, 1322, 1325, 1328, 1332, 1336, 1340, 1344, - 1348, 1352, 1356, 1360, 1364, 1368, 1372, 1376, 1380, 1384, - 1388, 1392, 1398, 1403, 1408, 1412, 1416, 1420, 1424, 1426, - 1431, 1439, 1447, 1452, 1457, 1462, 1467, 1472, 1477, 1482, - 1487, 1492, 1497, 1502, 1507, 1512, 1517, 1522, 1525, 1531, - 1534, 1537, 1540, 1543, 1546, 1550, 1554, 1558, 1562, 1566, - 1570, 1574, 1578, 1582, 1586, 1590, 1594, 1598, 1602, 1606, - 1610, 1614, 1618, 1624, 1629, 1634, 1638, 1642, 1646, 1650, - 1652, 1654, 1656, 1658, 1660, 1662, 1664, 1666, 1668, 1670, - 1675, 1683, 1691, 1696, 1701, 1704, 1710, 1713, 1716, 1719, - 1722, 1726, 1730, 1734, 1738, 1742, 1746, 1750, 1754, 1758, - 1762, 1766, 1770, 1774, 1778, 1782, 1786, 1790, 1794, 1800, - 1805, 1810, 1814, 1818, 1822, 1826, 1828, 1830, 1832, 1834, - 1836, 1838, 1840, 1842, 1844, 1846, 1849, 1852, 1854, 1856, - 1858, 1860, 1863, 1866 + 26, 31, 36, 37, 43, 45, 47, 49, 51, 53, + 55, 58, 60, 62, 65, 68, 71, 74, 82, 92, + 102, 116, 126, 134, 140, 141, 145, 147, 150, 154, + 157, 160, 163, 166, 169, 172, 175, 178, 181, 184, + 187, 194, 196, 200, 202, 207, 209, 213, 217, 221, + 222, 227, 228, 234, 237, 242, 245, 250, 251, 256, + 257, 263, 267, 270, 275, 278, 283, 284, 291, 292, + 299, 300, 308, 309, 321, 322, 335, 336, 345, 346, + 356, 358, 360, 362, 365, 368, 371, 374, 379, 385, + 387, 389, 391, 393, 395, 397, 399, 401, 403, 405, + 407, 409, 411, 413, 415, 417, 419, 421, 423, 425, + 427, 429, 431, 433, 435, 437, 439, 441, 443, 445, + 447, 449, 451, 453, 455, 458, 461, 463, 465, 467, + 469, 470, 477, 480, 482, 484, 486, 490, 493, 498, + 501, 506, 510, 515, 517, 519, 521, 523, 526, 530, + 533, 536, 539, 542, 545, 549, 554, 558, 559, 566, + 569, 573, 575, 579, 584, 586, 588, 590, 594, 597, + 599, 603, 605, 607, 609, 613, 616, 618, 622, 624, + 627, 629, 632, 634, 638, 644, 648, 652, 654, 658, + 662, 666, 670, 675, 677, 679, 682, 684, 688, 692, + 698, 702, 707, 713, 716, 718, 720, 722, 724, 727, + 730, 733, 736, 739, 743, 748, 750, 752, 755, 758, + 761, 764, 767, 771, 776, 784, 788, 790, 793, 796, + 799, 802, 805, 809, 814, 816, 819, 822, 825, 828, + 831, 835, 840, 846, 856, 866, 876, 878, 880, 883, + 885, 887, 889, 892, 897, 902, 904, 906, 908, 911, + 913, 915, 917, 920, 925, 928, 933, 935, 937, 939, + 942, 945, 948, 953, 955, 957, 959, 962, 966, 967, + 973, 974, 983, 985, 987, 989, 991, 994, 998, 1000, + 1003, 1006, 1009, 1013, 1017, 1021, 1025, 1029, 1033, 1038, + 1043, 1046, 1050, 1052, 1054, 1056, 1058, 1062, 1068, 1070, + 1073, 1078, 1080, 1082, 1084, 1086, 1087, 1094, 1095, 1103, + 1108, 1114, 1118, 1124, 1129, 1131, 1133, 1135, 1137, 1139, + 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1158, 1161, + 1164, 1167, 1169, 1171, 1174, 1176, 1177, 1180, 1182, 1185, + 1187, 1189, 1191, 1193, 1195, 1197, 1199, 1201, 1203, 1205, + 1207, 1209, 1211, 1213, 1215, 1217, 1219, 1221, 1223, 1225, + 1227, 1229, 1231, 1233, 1235, 1237, 1239, 1241, 1243, 1245, + 1247, 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263, 1265, + 1267, 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, 1285, + 1287, 1289, 1291, 1293, 1295, 1297, 1299, 1301, 1303, 1305, + 1307, 1309, 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, + 1327, 1329, 1331, 1333, 1335, 1337, 1339, 1341, 1343, 1345, + 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, 1365, + 1367, 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385, + 1387, 1389, 1391, 1393, 1395, 1397, 1399, 1401, 1403, 1405, + 1407, 1409, 1411, 1413, 1415, 1417, 1419, 1421, 1423, 1425, + 1427, 1429, 1431, 1435, 1437, 1439, 1441, 1443, 1445, 1449, + 1451, 1456, 1464, 1472, 1480, 1488, 1493, 1498, 1501, 1504, + 1507, 1510, 1513, 1516, 1520, 1524, 1528, 1532, 1536, 1540, + 1544, 1548, 1552, 1556, 1560, 1564, 1568, 1572, 1576, 1580, + 1586, 1591, 1596, 1600, 1604, 1608, 1612, 1614, 1619, 1627, + 1635, 1643, 1651, 1656, 1661, 1666, 1671, 1676, 1681, 1686, + 1691, 1696, 1701, 1706, 1711, 1716, 1721, 1726, 1729, 1735, + 1740, 1745, 1748, 1751, 1754, 1757, 1760, 1763, 1767, 1771, + 1775, 1779, 1783, 1787, 1791, 1795, 1799, 1803, 1807, 1811, + 1815, 1819, 1823, 1827, 1831, 1835, 1841, 1846, 1851, 1855, + 1859, 1863, 1867, 1869, 1871, 1873, 1875, 1877, 1879, 1881, + 1883, 1885, 1887, 1889, 1898, 1910, 1912, 1917, 1925, 1933, + 1941, 1949, 1954, 1959, 1962, 1968, 1973, 1978, 1981, 1984, + 1987, 1990, 1993, 1997, 2001, 2005, 2009, 2013, 2017, 2021, + 2025, 2029, 2033, 2037, 2041, 2045, 2049, 2053, 2057, 2061, + 2065, 2071, 2076, 2081, 2085, 2089, 2093, 2097, 2099, 2101, + 2103, 2105, 2107, 2109, 2111, 2113, 2115, 2117, 2119, 2121, + 2123, 2127, 2129, 2131, 2134, 2136, 2138, 2141, 2144, 2146, + 2148, 2150, 2152, 2154, 2156, 2158, 2160, 2162, 2165, 2168 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 143, 0, -1, 115, 144, -1, 116, 229, -1, 117, - 198, -1, 236, -1, 144, 120, -1, 144, 149, -1, - 146, -1, 145, 119, 146, -1, 234, 136, 226, 138, - -1, -1, 152, 118, 148, 144, 139, -1, 153, -1, - 175, -1, 147, -1, 213, -1, 216, -1, 150, -1, - 105, 159, -1, 48, -1, 64, -1, 69, 121, -1, - 91, 121, -1, 90, 121, -1, 89, 121, -1, 80, - 136, 10, 119, 10, 138, 120, -1, 80, 136, 10, - 119, 10, 119, 10, 138, 120, -1, 81, 136, 10, - 119, 10, 119, 10, 138, 120, -1, 81, 136, 10, - 119, 10, 119, 10, 119, 10, 119, 10, 138, 120, - -1, 82, 136, 10, 119, 10, 119, 10, 138, 120, - -1, 98, 136, 229, 119, 235, 138, -1, 98, 136, - 229, 138, -1, -1, 72, 151, 149, -1, 236, -1, - 67, 152, -1, 67, 6, 152, -1, 97, 152, -1, - 76, 152, -1, 110, 152, -1, 68, 152, -1, 92, - 152, -1, 112, 152, -1, 83, 152, -1, 57, 152, - -1, 49, 152, -1, 66, 152, -1, 154, -1, 152, - 195, 120, -1, 152, 164, 187, -1, -1, 152, 197, - 155, 157, -1, -1, 152, 56, 197, 156, 158, -1, - 181, 187, -1, 181, 186, 119, 157, -1, 181, 187, - -1, 181, 186, 119, 158, -1, -1, 152, 197, 160, - 162, -1, -1, 152, 56, 197, 161, 163, -1, 152, - 164, 187, -1, 181, 187, -1, 181, 186, 119, 162, - -1, 181, 187, -1, 181, 186, 119, 163, -1, -1, - 10, 136, 165, 183, 138, 172, -1, -1, 11, 136, - 166, 183, 138, 172, -1, -1, 134, 234, 136, 167, - 183, 138, 172, -1, -1, 11, 136, 131, 181, 138, - 136, 168, 183, 138, 172, -1, -1, 11, 136, 12, - 131, 181, 138, 136, 169, 183, 138, 172, -1, -1, - 88, 194, 191, 136, 170, 183, 138, 172, -1, -1, - 88, 56, 194, 191, 136, 171, 183, 138, 172, -1, - 10, -1, 236, -1, 56, -1, 172, 86, -1, 172, - 102, 136, 138, -1, 172, 102, 136, 234, 138, -1, - 140, -1, 134, -1, 131, -1, 132, -1, 133, -1, - 129, -1, 130, -1, 124, -1, 126, -1, 125, -1, - 15, -1, 16, -1, 17, -1, 18, -1, 19, -1, - 20, -1, 127, -1, 128, -1, 21, -1, 22, -1, - 122, -1, 119, -1, 33, -1, 34, -1, 35, -1, - 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, - 41, -1, 42, -1, 43, -1, 44, -1, 31, -1, - 137, 141, -1, 136, 138, -1, 85, -1, 60, -1, - 153, -1, 175, -1, -1, 101, 176, 127, 177, 128, - 174, -1, 101, 153, -1, 236, -1, 178, -1, 179, - -1, 178, 119, 179, -1, 55, 234, -1, 55, 234, - 122, 198, -1, 106, 234, -1, 106, 234, 122, 198, - -1, 180, 192, 185, -1, 56, 180, 192, 185, -1, - 217, -1, 10, -1, 11, -1, 234, -1, 88, 173, - -1, 88, 6, 10, -1, 56, 181, -1, 112, 181, - -1, 131, 181, -1, 126, 181, -1, 16, 181, -1, - 12, 131, 181, -1, 181, 137, 225, 141, -1, 181, - 121, 4, -1, 136, 181, 138, -1, -1, 181, 136, - 182, 183, 138, 172, -1, 236, -1, 14, -1, 184, - -1, 184, 119, 14, -1, 184, 14, -1, 190, -1, - 184, 119, 190, -1, 236, -1, 122, 228, -1, 236, - -1, 122, 229, -1, 120, -1, 118, 221, 139, -1, - 121, 145, 118, 221, 139, -1, 122, 229, 120, -1, - 122, 59, 120, -1, 122, 60, 120, -1, 122, 118, - 188, 139, -1, 236, -1, 189, -1, 189, 119, -1, - 229, -1, 118, 188, 139, -1, 189, 119, 229, -1, - 189, 119, 118, 188, 139, -1, 194, 192, 186, -1, - 56, 194, 192, 186, -1, 56, 92, 194, 192, 186, - -1, 92, 190, -1, 231, -1, 236, -1, 10, -1, - 11, -1, 56, 191, -1, 112, 191, -1, 131, 191, - -1, 126, 191, -1, 16, 191, -1, 12, 131, 191, - -1, 191, 137, 225, 141, -1, 236, -1, 10, -1, - 11, -1, 56, 192, -1, 112, 192, -1, 131, 192, - -1, 126, 192, -1, 16, 192, -1, 12, 131, 192, - -1, 192, 137, 225, 141, -1, 136, 192, 138, 136, - 183, 138, 172, -1, 136, 192, 138, -1, 236, -1, - 56, 193, -1, 112, 193, -1, 131, 193, -1, 126, - 193, -1, 16, 193, -1, 12, 131, 193, -1, 193, - 137, 225, 141, -1, 136, 193, 138, 136, 183, 138, - 172, -1, 217, -1, 11, -1, 106, 234, -1, 199, - -1, 201, -1, 206, -1, 212, 234, -1, 211, 234, - 121, 208, -1, 58, 136, 229, 138, -1, 47, -1, - 217, -1, 11, -1, 106, 234, -1, 199, -1, 201, - -1, 206, -1, 212, 234, -1, 211, 234, 121, 208, - -1, 211, 234, -1, 58, 136, 229, 138, -1, 47, - -1, 217, -1, 11, -1, 106, 234, -1, 212, 234, - -1, 211, 234, -1, 195, -1, 10, -1, 194, 193, - -1, 56, 194, 193, -1, -1, 212, 118, 200, 144, - 139, -1, -1, 212, 234, 202, 203, 118, 144, 139, - -1, 236, -1, 204, -1, 121, 205, -1, 204, 119, - 205, -1, 91, 233, -1, 90, 233, -1, 89, 233, - -1, 110, 91, 233, -1, 110, 90, 233, -1, 110, - 89, 233, -1, 91, 110, 233, -1, 90, 110, 233, - -1, 89, 110, 233, -1, 207, 118, 210, 139, -1, - 211, 234, 121, 208, -1, 211, 234, -1, 211, 121, - 208, -1, 211, -1, 218, -1, 11, -1, 236, -1, - 209, 234, 119, -1, 209, 234, 122, 229, 119, -1, - 209, -1, 209, 234, -1, 209, 234, 122, 229, -1, - 65, -1, 55, -1, 100, -1, 107, -1, -1, 84, - 234, 118, 214, 144, 139, -1, -1, 76, 84, 234, - 118, 215, 144, 139, -1, 84, 118, 144, 139, -1, - 76, 84, 118, 144, 139, -1, 109, 234, -1, 109, - 84, 234, -1, 218, -1, 219, -1, 220, -1, 50, - -1, 52, -1, 113, -1, 53, -1, 54, -1, 94, - -1, 78, -1, 79, -1, 108, -1, 95, -1, 77, - -1, 94, 218, -1, 78, 218, -1, 108, 218, -1, - 95, 218, -1, 71, -1, 78, 71, -1, 61, -1, - 78, 78, 71, -1, 78, 61, -1, 111, -1, -1, - 222, 223, -1, 236, -1, 223, 224, -1, 3, -1, - 4, -1, 6, -1, 8, -1, 9, -1, 5, -1, - 10, -1, 11, -1, 12, -1, 7, -1, 14, -1, - 15, -1, 16, -1, 17, -1, 18, -1, 19, -1, - 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, - 31, -1, 32, -1, 33, -1, 34, -1, 35, -1, - 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, - 41, -1, 42, -1, 43, -1, 44, -1, 45, -1, - 46, -1, 47, -1, 50, -1, 51, -1, 52, -1, - 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, - 58, -1, 59, -1, 60, -1, 61, -1, 62, -1, - 63, -1, 65, -1, 67, -1, 68, -1, 70, -1, - 71, -1, 72, -1, 73, -1, 74, -1, 75, -1, - 76, -1, 77, -1, 78, -1, 83, -1, 84, -1, - 85, -1, 87, -1, 88, -1, 89, -1, 90, -1, - 91, -1, 69, -1, 92, -1, 93, -1, 94, -1, - 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, - 100, -1, 102, -1, 103, -1, 104, -1, 105, -1, - 106, -1, 107, -1, 108, -1, 109, -1, 110, -1, - 111, -1, 112, -1, 113, -1, 114, -1, 129, -1, - 130, -1, 131, -1, 132, -1, 126, -1, 124, -1, - 125, -1, 140, -1, 134, -1, 122, -1, 133, -1, - 127, -1, 128, -1, 136, -1, 138, -1, 135, -1, - 119, -1, 120, -1, 121, -1, 137, -1, 141, -1, - 123, -1, 118, 223, 139, -1, 236, -1, 229, -1, - 236, -1, 227, -1, 229, -1, 227, 119, 229, -1, - 230, -1, 136, 198, 138, 228, -1, 99, 127, 198, - 128, 136, 227, 138, -1, 62, 127, 198, 128, 136, - 227, 138, -1, 96, 136, 198, 138, -1, 46, 136, - 198, 138, -1, 140, 228, -1, 134, 228, -1, 130, - 228, -1, 131, 228, -1, 126, 228, -1, 228, 131, - 228, -1, 228, 132, 228, -1, 228, 133, 228, -1, - 228, 129, 228, -1, 228, 130, 228, -1, 228, 124, - 228, -1, 228, 125, 228, -1, 228, 126, 228, -1, - 228, 15, 228, -1, 228, 16, 228, -1, 228, 17, - 228, -1, 228, 18, 228, -1, 228, 19, 228, -1, - 228, 20, 228, -1, 228, 21, 228, -1, 228, 22, - 228, -1, 228, 123, 228, 121, 228, -1, 228, 137, - 229, 141, -1, 228, 136, 227, 138, -1, 228, 136, - 138, -1, 228, 135, 228, -1, 228, 31, 228, -1, - 136, 227, 138, -1, 230, -1, 136, 198, 138, 229, - -1, 99, 127, 198, 128, 136, 227, 138, -1, 62, - 127, 198, 128, 136, 227, 138, -1, 11, 136, 226, - 138, -1, 77, 136, 226, 138, -1, 52, 136, 226, - 138, -1, 113, 136, 226, 138, -1, 53, 136, 226, - 138, -1, 54, 136, 226, 138, -1, 50, 136, 226, - 138, -1, 94, 136, 226, 138, -1, 78, 136, 226, - 138, -1, 108, 136, 226, 138, -1, 95, 136, 226, - 138, -1, 71, 136, 226, 138, -1, 61, 136, 226, - 138, -1, 96, 136, 198, 138, -1, 46, 136, 198, - 138, -1, 85, 196, -1, 85, 196, 136, 226, 138, - -1, 140, 229, -1, 134, 229, -1, 130, 229, -1, - 131, 229, -1, 126, 229, -1, 229, 131, 229, -1, - 229, 132, 229, -1, 229, 133, 229, -1, 229, 129, - 229, -1, 229, 130, 229, -1, 229, 124, 229, -1, - 229, 125, 229, -1, 229, 126, 229, -1, 229, 15, - 229, -1, 229, 16, 229, -1, 229, 17, 229, -1, - 229, 18, 229, -1, 229, 19, 229, -1, 229, 20, - 229, -1, 229, 127, 229, -1, 229, 128, 229, -1, - 229, 21, 229, -1, 229, 22, 229, -1, 229, 123, - 229, 121, 229, -1, 229, 137, 229, 141, -1, 229, - 136, 227, 138, -1, 229, 136, 138, -1, 229, 135, - 229, -1, 229, 31, 229, -1, 136, 227, 138, -1, - 4, -1, 103, -1, 70, -1, 5, -1, 3, -1, - 235, -1, 9, -1, 10, -1, 87, -1, 232, -1, - 136, 198, 138, 229, -1, 99, 127, 198, 128, 136, - 227, 138, -1, 62, 127, 198, 128, 136, 227, 138, - -1, 96, 136, 198, 138, -1, 46, 136, 198, 138, - -1, 85, 196, -1, 85, 196, 136, 226, 138, -1, - 140, 229, -1, 134, 229, -1, 130, 229, -1, 126, - 229, -1, 231, 131, 229, -1, 231, 132, 229, -1, - 231, 133, 229, -1, 231, 129, 229, -1, 231, 130, - 229, -1, 231, 124, 229, -1, 231, 125, 229, -1, - 231, 126, 229, -1, 231, 15, 229, -1, 231, 16, - 229, -1, 231, 17, 229, -1, 231, 18, 229, -1, - 231, 19, 229, -1, 231, 20, 229, -1, 231, 127, - 229, -1, 231, 128, 229, -1, 231, 21, 229, -1, - 231, 22, 229, -1, 231, 123, 229, 121, 229, -1, - 231, 137, 229, 141, -1, 231, 136, 227, 138, -1, - 231, 136, 138, -1, 231, 135, 229, -1, 231, 31, - 229, -1, 136, 227, 138, -1, 4, -1, 103, -1, - 70, -1, 5, -1, 3, -1, 235, -1, 9, -1, - 10, -1, 87, -1, 234, -1, 212, 234, -1, 106, - 234, -1, 10, -1, 11, -1, 6, -1, 8, -1, - 235, 6, -1, 235, 8, -1, -1 + 149, 0, -1, 121, 150, -1, 122, 246, -1, 123, + 214, -1, 256, -1, 150, 126, -1, 150, 155, -1, + 152, -1, 151, 125, 152, -1, 253, 142, 243, 144, + -1, 253, 124, 243, 145, -1, -1, 158, 124, 154, + 150, 145, -1, 161, -1, 184, -1, 153, -1, 230, + -1, 233, -1, 156, -1, 110, 167, -1, 49, -1, + 66, -1, 71, 127, -1, 94, 127, -1, 93, 127, + -1, 92, 127, -1, 82, 142, 253, 125, 10, 144, + 126, -1, 82, 142, 253, 125, 10, 125, 10, 144, + 126, -1, 83, 142, 253, 125, 10, 125, 10, 144, + 126, -1, 83, 142, 253, 125, 10, 125, 10, 125, + 10, 125, 10, 144, 126, -1, 84, 142, 253, 125, + 10, 125, 10, 144, 126, -1, 102, 142, 246, 125, + 255, 144, 126, -1, 102, 142, 246, 144, 126, -1, + -1, 75, 157, 155, -1, 256, -1, 69, 158, -1, + 69, 6, 158, -1, 101, 158, -1, 79, 158, -1, + 116, 158, -1, 70, 158, -1, 95, 158, -1, 118, + 158, -1, 85, 158, -1, 58, 158, -1, 50, 158, + -1, 68, 158, -1, 106, 158, -1, 143, 143, 159, + 146, 146, 158, -1, 160, -1, 160, 125, 159, -1, + 253, -1, 253, 142, 196, 144, -1, 162, -1, 158, + 211, 126, -1, 158, 172, 200, -1, 158, 175, 201, + -1, -1, 158, 213, 163, 165, -1, -1, 158, 57, + 213, 164, 166, -1, 192, 201, -1, 192, 199, 125, + 165, -1, 192, 201, -1, 192, 199, 125, 166, -1, + -1, 158, 213, 168, 170, -1, -1, 158, 57, 213, + 169, 171, -1, 158, 175, 201, -1, 192, 201, -1, + 192, 199, 125, 170, -1, 192, 201, -1, 192, 199, + 125, 171, -1, -1, 10, 142, 173, 194, 144, 181, + -1, -1, 11, 142, 174, 194, 144, 181, -1, -1, + 140, 253, 142, 176, 194, 144, 181, -1, -1, 11, + 142, 137, 190, 144, 142, 177, 194, 144, 181, 193, + -1, -1, 11, 142, 12, 137, 190, 144, 142, 178, + 194, 144, 181, 193, -1, -1, 90, 210, 206, 142, + 179, 194, 144, 181, -1, -1, 90, 57, 210, 206, + 142, 180, 194, 144, 181, -1, 10, -1, 256, -1, + 57, -1, 181, 88, -1, 181, 73, -1, 181, 91, + -1, 181, 85, -1, 181, 107, 142, 144, -1, 181, + 107, 142, 253, 144, -1, 147, -1, 140, -1, 137, + -1, 138, -1, 139, -1, 135, -1, 136, -1, 130, + -1, 132, -1, 131, -1, 15, -1, 16, -1, 17, + -1, 18, -1, 19, -1, 20, -1, 133, -1, 134, + -1, 21, -1, 22, -1, 128, -1, 125, -1, 34, + -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, + -1, 40, -1, 41, -1, 42, -1, 43, -1, 44, + -1, 45, -1, 32, -1, 143, 146, -1, 142, 144, + -1, 87, -1, 62, -1, 161, -1, 184, -1, -1, + 105, 185, 133, 186, 134, 183, -1, 105, 161, -1, + 256, -1, 187, -1, 188, -1, 187, 125, 188, -1, + 56, 253, -1, 56, 253, 128, 214, -1, 112, 253, + -1, 112, 253, 128, 214, -1, 189, 207, 198, -1, + 57, 189, 207, 198, -1, 234, -1, 10, -1, 11, + -1, 254, -1, 90, 182, -1, 90, 6, 10, -1, + 57, 190, -1, 118, 190, -1, 137, 190, -1, 132, + 190, -1, 16, 190, -1, 12, 137, 190, -1, 190, + 143, 242, 146, -1, 142, 190, 144, -1, -1, 190, + 142, 191, 196, 144, 181, -1, 190, 193, -1, 190, + 127, 4, -1, 256, -1, 32, 212, 209, -1, 32, + 57, 212, 209, -1, 256, -1, 14, -1, 195, -1, + 195, 125, 14, -1, 195, 14, -1, 204, -1, 195, + 125, 204, -1, 256, -1, 14, -1, 197, -1, 197, + 125, 14, -1, 197, 14, -1, 205, -1, 197, 125, + 205, -1, 256, -1, 128, 245, -1, 256, -1, 128, + 246, -1, 126, -1, 124, 238, 145, -1, 127, 151, + 124, 238, 145, -1, 128, 61, 126, -1, 128, 62, + 126, -1, 126, -1, 124, 238, 145, -1, 128, 246, + 126, -1, 128, 61, 126, -1, 128, 62, 126, -1, + 128, 124, 202, 145, -1, 256, -1, 203, -1, 203, + 125, -1, 246, -1, 124, 202, 145, -1, 203, 125, + 246, -1, 203, 125, 124, 202, 145, -1, 210, 207, + 199, -1, 57, 210, 207, 199, -1, 57, 95, 210, + 207, 199, -1, 95, 204, -1, 204, -1, 248, -1, + 256, -1, 254, -1, 57, 206, -1, 118, 206, -1, + 137, 206, -1, 132, 206, -1, 16, 206, -1, 12, + 137, 206, -1, 206, 143, 242, 146, -1, 256, -1, + 254, -1, 57, 207, -1, 118, 207, -1, 137, 207, + -1, 132, 207, -1, 16, 207, -1, 12, 137, 207, + -1, 207, 143, 242, 146, -1, 142, 207, 144, 142, + 194, 144, 181, -1, 142, 207, 144, -1, 256, -1, + 57, 208, -1, 118, 208, -1, 137, 208, -1, 132, + 208, -1, 16, 208, -1, 12, 137, 208, -1, 208, + 143, 242, 146, -1, 256, -1, 57, 209, -1, 118, + 209, -1, 137, 208, -1, 132, 208, -1, 16, 208, + -1, 12, 137, 208, -1, 208, 143, 242, 146, -1, + 142, 194, 144, 181, 193, -1, 142, 137, 208, 144, + 142, 194, 144, 181, 193, -1, 142, 132, 208, 144, + 142, 194, 144, 181, 193, -1, 142, 16, 208, 144, + 142, 194, 144, 181, 193, -1, 234, -1, 11, -1, + 112, 253, -1, 215, -1, 217, -1, 223, -1, 229, + 253, -1, 228, 254, 127, 225, -1, 60, 142, 246, + 144, -1, 48, -1, 234, -1, 11, -1, 112, 253, + -1, 215, -1, 217, -1, 223, -1, 229, 253, -1, + 228, 254, 127, 225, -1, 228, 253, -1, 60, 142, + 246, 144, -1, 48, -1, 234, -1, 11, -1, 112, + 253, -1, 229, 253, -1, 228, 253, -1, 60, 142, + 246, 144, -1, 48, -1, 211, -1, 10, -1, 210, + 209, -1, 57, 210, 209, -1, -1, 229, 124, 216, + 150, 145, -1, -1, 229, 254, 218, 219, 220, 124, + 150, 145, -1, 256, -1, 73, -1, 256, -1, 221, + -1, 127, 222, -1, 221, 125, 222, -1, 252, -1, + 94, 252, -1, 93, 252, -1, 92, 252, -1, 116, + 94, 252, -1, 116, 93, 252, -1, 116, 92, 252, + -1, 94, 116, 252, -1, 93, 116, 252, -1, 92, + 116, 252, -1, 224, 124, 227, 145, -1, 228, 254, + 127, 225, -1, 228, 254, -1, 228, 127, 225, -1, + 228, -1, 235, -1, 11, -1, 256, -1, 226, 253, + 125, -1, 226, 253, 128, 246, 125, -1, 226, -1, + 226, 253, -1, 226, 253, 128, 246, -1, 67, -1, + 56, -1, 104, -1, 113, -1, -1, 86, 253, 124, + 231, 150, 145, -1, -1, 79, 86, 253, 124, 232, + 150, 145, -1, 86, 124, 150, 145, -1, 79, 86, + 124, 150, 145, -1, 115, 253, 126, -1, 115, 253, + 128, 214, 126, -1, 115, 86, 253, 126, -1, 235, + -1, 236, -1, 237, -1, 51, -1, 53, -1, 119, + -1, 54, -1, 55, -1, 98, -1, 81, -1, 114, + -1, 99, -1, 80, -1, 98, 235, -1, 81, 235, + -1, 114, 235, -1, 99, 235, -1, 74, -1, 63, + -1, 81, 63, -1, 117, -1, -1, 239, 240, -1, + 256, -1, 240, 241, -1, 3, -1, 4, -1, 6, + -1, 8, -1, 9, -1, 5, -1, 10, -1, 11, + -1, 12, -1, 7, -1, 14, -1, 15, -1, 16, + -1, 17, -1, 18, -1, 19, -1, 20, -1, 21, + -1, 22, -1, 23, -1, 24, -1, 32, -1, 33, + -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, + -1, 39, -1, 40, -1, 41, -1, 42, -1, 43, + -1, 44, -1, 45, -1, 46, -1, 47, -1, 48, + -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, + -1, 56, -1, 57, -1, 58, -1, 59, -1, 60, + -1, 61, -1, 62, -1, 63, -1, 64, -1, 65, + -1, 67, -1, 69, -1, 70, -1, 72, -1, 73, + -1, 74, -1, 75, -1, 76, -1, 77, -1, 78, + -1, 79, -1, 80, -1, 81, -1, 85, -1, 86, + -1, 87, -1, 89, -1, 90, -1, 91, -1, 92, + -1, 93, -1, 94, -1, 71, -1, 95, -1, 96, + -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, + -1, 102, -1, 103, -1, 104, -1, 106, -1, 107, + -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, + -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, + -1, 118, -1, 119, -1, 120, -1, 135, -1, 136, + -1, 137, -1, 138, -1, 132, -1, 130, -1, 131, + -1, 147, -1, 140, -1, 128, -1, 139, -1, 133, + -1, 134, -1, 142, -1, 144, -1, 141, -1, 125, + -1, 126, -1, 127, -1, 143, -1, 146, -1, 129, + -1, 124, 240, 145, -1, 256, -1, 246, -1, 256, + -1, 244, -1, 246, -1, 244, 125, 246, -1, 247, + -1, 142, 214, 144, 245, -1, 103, 133, 214, 134, + 142, 244, 144, -1, 64, 133, 214, 134, 142, 244, + 144, -1, 59, 133, 214, 134, 142, 244, 144, -1, + 96, 133, 214, 134, 142, 244, 144, -1, 100, 142, + 214, 144, -1, 47, 142, 214, 144, -1, 147, 245, + -1, 140, 245, -1, 136, 245, -1, 135, 245, -1, + 137, 245, -1, 132, 245, -1, 245, 137, 245, -1, + 245, 138, 245, -1, 245, 139, 245, -1, 245, 135, + 245, -1, 245, 136, 245, -1, 245, 130, 245, -1, + 245, 131, 245, -1, 245, 132, 245, -1, 245, 15, + 245, -1, 245, 16, 245, -1, 245, 17, 245, -1, + 245, 18, 245, -1, 245, 19, 245, -1, 245, 20, + 245, -1, 245, 21, 245, -1, 245, 22, 245, -1, + 245, 129, 245, 127, 245, -1, 245, 143, 246, 146, + -1, 245, 142, 244, 144, -1, 245, 142, 144, -1, + 245, 141, 245, -1, 245, 32, 245, -1, 142, 244, + 144, -1, 247, -1, 142, 214, 144, 246, -1, 103, + 133, 214, 134, 142, 244, 144, -1, 64, 133, 214, + 134, 142, 244, 144, -1, 59, 133, 214, 134, 142, + 244, 144, -1, 96, 133, 214, 134, 142, 244, 144, + -1, 11, 142, 243, 144, -1, 80, 142, 243, 144, + -1, 53, 142, 243, 144, -1, 119, 142, 243, 144, + -1, 54, 142, 243, 144, -1, 55, 142, 243, 144, + -1, 51, 142, 243, 144, -1, 98, 142, 243, 144, + -1, 81, 142, 243, 144, -1, 114, 142, 243, 144, + -1, 99, 142, 243, 144, -1, 74, 142, 243, 144, + -1, 63, 142, 243, 144, -1, 100, 142, 214, 144, + -1, 47, 142, 214, 144, -1, 87, 212, -1, 87, + 212, 142, 243, 144, -1, 111, 142, 214, 144, -1, + 111, 142, 246, 144, -1, 147, 246, -1, 140, 246, + -1, 136, 246, -1, 135, 246, -1, 137, 246, -1, + 132, 246, -1, 246, 137, 246, -1, 246, 138, 246, + -1, 246, 139, 246, -1, 246, 135, 246, -1, 246, + 136, 246, -1, 246, 130, 246, -1, 246, 131, 246, + -1, 246, 132, 246, -1, 246, 15, 246, -1, 246, + 16, 246, -1, 246, 17, 246, -1, 246, 18, 246, + -1, 246, 19, 246, -1, 246, 20, 246, -1, 246, + 133, 246, -1, 246, 134, 246, -1, 246, 21, 246, + -1, 246, 22, 246, -1, 246, 129, 246, 127, 246, + -1, 246, 143, 246, 146, -1, 246, 142, 244, 144, + -1, 246, 142, 144, -1, 246, 141, 246, -1, 246, + 32, 246, -1, 142, 244, 144, -1, 4, -1, 108, + -1, 72, -1, 5, -1, 3, -1, 255, -1, 9, + -1, 10, -1, 73, -1, 91, -1, 89, -1, 143, + 250, 146, 181, 193, 124, 238, 145, -1, 143, 250, + 146, 142, 194, 144, 181, 193, 124, 238, 145, -1, + 249, -1, 142, 214, 144, 246, -1, 103, 133, 214, + 134, 142, 244, 144, -1, 64, 133, 214, 134, 142, + 244, 144, -1, 59, 133, 214, 134, 142, 244, 144, + -1, 96, 133, 214, 134, 142, 244, 144, -1, 100, + 142, 214, 144, -1, 47, 142, 214, 144, -1, 87, + 212, -1, 87, 212, 142, 243, 144, -1, 111, 142, + 214, 144, -1, 111, 142, 246, 144, -1, 147, 246, + -1, 140, 246, -1, 136, 246, -1, 135, 246, -1, + 132, 246, -1, 248, 137, 246, -1, 248, 138, 246, + -1, 248, 139, 246, -1, 248, 135, 246, -1, 248, + 136, 246, -1, 248, 130, 246, -1, 248, 131, 246, + -1, 248, 132, 246, -1, 248, 15, 246, -1, 248, + 16, 246, -1, 248, 17, 246, -1, 248, 18, 246, + -1, 248, 19, 246, -1, 248, 20, 246, -1, 248, + 133, 246, -1, 248, 134, 246, -1, 248, 21, 246, + -1, 248, 22, 246, -1, 248, 129, 246, 127, 246, + -1, 248, 143, 246, 146, -1, 248, 142, 244, 144, + -1, 248, 142, 144, -1, 248, 141, 246, -1, 248, + 32, 246, -1, 142, 244, 144, -1, 4, -1, 108, + -1, 72, -1, 5, -1, 3, -1, 255, -1, 9, + -1, 10, -1, 73, -1, 91, -1, 89, -1, 256, + -1, 251, -1, 251, 125, 250, -1, 132, -1, 128, + -1, 132, 253, -1, 253, -1, 253, -1, 229, 253, + -1, 112, 253, -1, 10, -1, 11, -1, 73, -1, + 91, -1, 10, -1, 11, -1, 91, -1, 6, -1, + 8, -1, 255, 6, -1, 255, 8, -1, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 406, 406, 407, 411, 418, 419, 420, 424, 425, - 429, 442, 441, 453, 454, 455, 456, 457, 458, 459, - 460, 473, 482, 486, 494, 498, 502, 513, 534, 556, - 589, 611, 622, 636, 635, 650, 654, 658, 669, 673, - 677, 681, 685, 689, 693, 697, 701, 705, 712, 716, - 725, 737, 736, 752, 751, 773, 781, 792, 801, 815, - 814, 830, 829, 844, 859, 865, 874, 881, 894, 893, - 918, 917, 942, 941, 972, 971, 990, 989, 1010, 1009, - 1041, 1040, 1066, 1079, 1083, 1087, 1091, 1095, 1102, 1106, - 1110, 1114, 1118, 1122, 1126, 1130, 1134, 1138, 1142, 1146, - 1150, 1154, 1158, 1162, 1166, 1170, 1174, 1178, 1182, 1186, - 1190, 1194, 1198, 1202, 1206, 1210, 1214, 1218, 1222, 1226, - 1230, 1234, 1238, 1242, 1246, 1250, 1254, 1261, 1262, 1267, - 1266, 1274, 1278, 1279, 1283, 1289, 1298, 1302, 1306, 1310, - 1314, 1320, 1330, 1334, 1339, 1351, 1355, 1369, 1384, 1389, - 1394, 1399, 1404, 1409, 1414, 1419, 1424, 1430, 1429, 1451, - 1455, 1460, 1464, 1469, 1477, 1482, 1490, 1494, 1501, 1505, - 1512, 1516, 1520, 1524, 1528, 1532, 1536, 1543, 1544, 1545, - 1549, 1552, 1553, 1554, 1558, 1563, 1569, 1575, 1579, 1589, - 1593, 1597, 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1639, - 1643, 1647, 1651, 1656, 1661, 1666, 1671, 1676, 1681, 1686, - 1692, 1700, 1704, 1709, 1714, 1719, 1724, 1729, 1734, 1739, - 1748, 1752, 1760, 1764, 1768, 1772, 1776, 1792, 1808, 1817, - 1824, 1828, 1836, 1840, 1844, 1848, 1852, 1868, 1884, 1902, - 1911, 1918, 1922, 1930, 1934, 1950, 1969, 1973, 1981, 1987, - 1998, 1997, 2022, 2021, 2051, 2052, 2056, 2057, 2061, 2065, - 2069, 2073, 2077, 2081, 2085, 2089, 2093, 2100, 2108, 2112, - 2116, 2120, 2127, 2131, 2138, 2139, 2145, 2153, 2154, 2160, - 2169, 2176, 2180, 2184, 2192, 2191, 2214, 2213, 2236, 2237, - 2241, 2247, 2256, 2257, 2258, 2262, 2266, 2270, 2274, 2278, - 2282, 2287, 2292, 2297, 2302, 2307, 2311, 2316, 2325, 2330, - 2338, 2342, 2347, 2351, 2356, 2364, 2374, 2374, 2384, 2385, - 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, - 2399, 2399, 2399, 2400, 2400, 2400, 2400, 2401, 2401, 2401, - 2401, 2401, 2402, 2402, 2402, 2403, 2403, 2403, 2403, 2403, - 2404, 2404, 2404, 2404, 2404, 2405, 2405, 2405, 2405, 2405, - 2406, 2406, 2406, 2407, 2407, 2407, 2407, 2407, 2408, 2408, - 2408, 2408, 2408, 2409, 2409, 2409, 2410, 2410, 2410, 2410, - 2410, 2410, 2411, 2411, 2411, 2411, 2412, 2412, 2412, 2412, - 2412, 2413, 2413, 2413, 2413, 2414, 2414, 2414, 2414, 2414, - 2415, 2415, 2415, 2415, 2415, 2416, 2416, 2416, 2416, 2416, - 2417, 2417, 2417, 2417, 2417, 2420, 2420, 2420, 2420, 2420, - 2420, 2420, 2420, 2420, 2420, 2420, 2421, 2421, 2421, 2421, - 2421, 2421, 2421, 2421, 2421, 2421, 2422, 2422, 2426, 2430, - 2437, 2441, 2448, 2452, 2459, 2463, 2467, 2471, 2475, 2479, - 2483, 2487, 2491, 2495, 2499, 2503, 2507, 2511, 2515, 2519, - 2523, 2527, 2531, 2535, 2539, 2543, 2547, 2551, 2555, 2559, - 2563, 2567, 2571, 2575, 2579, 2583, 2587, 2591, 2599, 2603, - 2607, 2611, 2615, 2625, 2631, 2637, 2643, 2649, 2655, 2661, - 2668, 2675, 2682, 2689, 2695, 2701, 2705, 2709, 2713, 2717, - 2721, 2725, 2729, 2733, 2737, 2741, 2745, 2749, 2753, 2757, - 2761, 2765, 2769, 2773, 2777, 2781, 2785, 2789, 2793, 2797, - 2801, 2805, 2809, 2813, 2817, 2821, 2825, 2829, 2833, 2840, - 2844, 2848, 2852, 2856, 2860, 2864, 2868, 2872, 2886, 2890, - 2894, 2898, 2902, 2906, 2910, 2914, 2918, 2922, 2926, 2930, - 2934, 2938, 2942, 2946, 2950, 2954, 2958, 2962, 2966, 2970, - 2974, 2978, 2982, 2986, 2990, 2994, 2998, 3002, 3006, 3010, - 3014, 3018, 3022, 3026, 3030, 3037, 3041, 3045, 3049, 3053, - 3057, 3061, 3065, 3069, 3076, 3084, 3092, 3118, 3122, 3129, - 3133, 3137, 3143, 3154 + 0, 421, 421, 422, 426, 433, 434, 435, 439, 440, + 444, 448, 461, 460, 472, 473, 474, 475, 476, 477, + 478, 479, 492, 501, 505, 513, 517, 521, 532, 553, + 575, 608, 630, 641, 655, 654, 669, 673, 677, 688, + 692, 696, 700, 704, 708, 712, 716, 720, 724, 728, + 732, 740, 741, 745, 746, 750, 754, 763, 771, 783, + 782, 798, 797, 819, 827, 838, 847, 861, 860, 876, + 875, 890, 905, 911, 920, 927, 940, 939, 964, 963, + 991, 990, 1021, 1020, 1039, 1038, 1059, 1058, 1090, 1089, + 1115, 1128, 1132, 1136, 1140, 1144, 1148, 1153, 1157, 1168, + 1172, 1176, 1180, 1184, 1188, 1192, 1196, 1200, 1204, 1208, + 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1240, 1244, 1248, + 1252, 1256, 1260, 1264, 1268, 1272, 1276, 1280, 1284, 1288, + 1292, 1296, 1300, 1304, 1308, 1312, 1316, 1320, 1327, 1328, + 1333, 1332, 1340, 1344, 1345, 1349, 1355, 1364, 1368, 1372, + 1376, 1380, 1386, 1396, 1400, 1405, 1417, 1421, 1435, 1450, + 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1491, 1490, 1512, + 1522, 1532, 1536, 1540, 1549, 1553, 1558, 1562, 1567, 1575, + 1580, 1588, 1592, 1597, 1601, 1606, 1614, 1619, 1627, 1631, + 1638, 1642, 1649, 1653, 1657, 1661, 1665, 1672, 1676, 1680, + 1684, 1688, 1692, 1699, 1700, 1701, 1705, 1708, 1709, 1710, + 1714, 1719, 1725, 1731, 1742, 1746, 1756, 1760, 1764, 1769, + 1774, 1779, 1784, 1789, 1794, 1802, 1806, 1810, 1815, 1820, + 1825, 1830, 1835, 1840, 1845, 1851, 1859, 1863, 1868, 1873, + 1878, 1883, 1888, 1893, 1901, 1905, 1910, 1915, 1920, 1925, + 1930, 1935, 1940, 1946, 1953, 1960, 1970, 1974, 1982, 1986, + 1990, 1994, 1998, 2014, 2030, 2039, 2046, 2050, 2058, 2062, + 2066, 2070, 2074, 2090, 2106, 2124, 2133, 2140, 2144, 2152, + 2156, 2172, 2188, 2197, 2204, 2208, 2216, 2220, 2229, 2228, + 2253, 2252, 2282, 2283, 2290, 2291, 2295, 2296, 2300, 2304, + 2308, 2312, 2316, 2320, 2324, 2328, 2332, 2336, 2343, 2351, + 2355, 2359, 2363, 2370, 2374, 2381, 2382, 2388, 2396, 2397, + 2403, 2412, 2419, 2423, 2427, 2435, 2434, 2457, 2456, 2479, + 2480, 2484, 2490, 2497, 2506, 2507, 2508, 2512, 2516, 2520, + 2524, 2528, 2532, 2537, 2542, 2547, 2552, 2556, 2561, 2570, + 2575, 2583, 2587, 2591, 2599, 2609, 2609, 2619, 2620, 2624, + 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, + 2634, 2634, 2635, 2635, 2635, 2635, 2636, 2636, 2636, 2636, + 2636, 2637, 2637, 2637, 2638, 2638, 2638, 2638, 2638, 2639, + 2639, 2639, 2639, 2639, 2640, 2640, 2640, 2640, 2640, 2641, + 2641, 2641, 2641, 2641, 2642, 2642, 2642, 2642, 2643, 2643, + 2643, 2643, 2643, 2644, 2644, 2644, 2644, 2644, 2645, 2645, + 2645, 2645, 2645, 2645, 2646, 2646, 2646, 2646, 2646, 2647, + 2647, 2647, 2647, 2648, 2648, 2648, 2648, 2649, 2649, 2649, + 2649, 2649, 2650, 2650, 2650, 2651, 2651, 2651, 2651, 2651, + 2652, 2652, 2652, 2652, 2652, 2653, 2653, 2653, 2653, 2653, + 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656, + 2656, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, + 2657, 2658, 2658, 2662, 2666, 2673, 2677, 2684, 2688, 2695, + 2699, 2703, 2707, 2711, 2715, 2719, 2723, 2727, 2731, 2735, + 2739, 2743, 2747, 2751, 2755, 2759, 2763, 2767, 2771, 2775, + 2779, 2783, 2787, 2791, 2795, 2799, 2803, 2807, 2811, 2815, + 2819, 2823, 2827, 2831, 2835, 2839, 2847, 2851, 2855, 2859, + 2863, 2867, 2871, 2881, 2887, 2893, 2899, 2905, 2911, 2917, + 2924, 2931, 2938, 2945, 2951, 2957, 2961, 2965, 2969, 2973, + 2984, 2995, 2999, 3003, 3007, 3011, 3015, 3019, 3023, 3027, + 3031, 3035, 3039, 3043, 3047, 3051, 3055, 3059, 3063, 3067, + 3071, 3075, 3079, 3083, 3087, 3091, 3095, 3099, 3103, 3107, + 3111, 3115, 3122, 3126, 3130, 3134, 3138, 3142, 3146, 3150, + 3154, 3160, 3166, 3170, 3174, 3188, 3192, 3196, 3200, 3204, + 3208, 3212, 3216, 3220, 3224, 3228, 3239, 3250, 3254, 3258, + 3262, 3266, 3270, 3274, 3278, 3282, 3286, 3290, 3294, 3298, + 3302, 3306, 3310, 3314, 3318, 3322, 3326, 3330, 3334, 3338, + 3342, 3346, 3350, 3354, 3358, 3362, 3366, 3373, 3377, 3381, + 3385, 3389, 3393, 3397, 3401, 3405, 3411, 3417, 3425, 3426, + 3427, 3431, 3432, 3433, 3434, 3438, 3446, 3454, 3482, 3486, + 3490, 3494, 3505, 3509, 3513, 3521, 3525, 3529, 3535, 3546 }; #endif @@ -1195,56 +1251,62 @@ static const char *const yytname[] = "IDENTIFIER", "TYPENAME_IDENTIFIER", "SCOPING", "TYPEDEFNAME", "ELLIPSIS", "OROR", "ANDAND", "EQCOMPARE", "NECOMPARE", "LECOMPARE", "GECOMPARE", "LSHIFT", "RSHIFT", "POINTSAT_STAR", "DOT_STAR", "UNARY", - "UNARY_NOT", "UNARY_NEGATE", "UNARY_MINUS", "UNARY_STAR", "UNARY_REF", - "POINTSAT", "SCOPE", "PLUSPLUS", "MINUSMINUS", "TIMESEQUAL", + "UNARY_NOT", "UNARY_NEGATE", "UNARY_MINUS", "UNARY_PLUS", "UNARY_STAR", + "UNARY_REF", "POINTSAT", "SCOPE", "PLUSPLUS", "MINUSMINUS", "TIMESEQUAL", "DIVIDEEQUAL", "MODEQUAL", "PLUSEQUAL", "MINUSEQUAL", "OREQUAL", "ANDEQUAL", "XOREQUAL", "LSHIFTEQUAL", "RSHIFTEQUAL", "KW_ALIGNAS", "KW_ALIGNOF", "KW_AUTO", "KW_BEGIN_PUBLISH", "KW_BLOCKING", "KW_BOOL", "KW_CATCH", "KW_CHAR", "KW_CHAR16_T", "KW_CHAR32_T", "KW_CLASS", - "KW_CONST", "KW_CONSTEXPR", "KW_DECLTYPE", "KW_DEFAULT", "KW_DELETE", - "KW_DOUBLE", "KW_DYNAMIC_CAST", "KW_ELSE", "KW_END_PUBLISH", "KW_ENUM", - "KW_EXTENSION", "KW_EXTERN", "KW_EXPLICIT", "KW_PUBLISHED", "KW_FALSE", - "KW_FLOAT", "KW_FRIEND", "KW_FOR", "KW_GOTO", "KW_IF", "KW_INLINE", - "KW_INT", "KW_LONG", "KW_LONGLONG", "KW_MAKE_PROPERTY", + "KW_CONST", "KW_CONSTEXPR", "KW_CONST_CAST", "KW_DECLTYPE", "KW_DEFAULT", + "KW_DELETE", "KW_DOUBLE", "KW_DYNAMIC_CAST", "KW_ELSE", "KW_END_PUBLISH", + "KW_ENUM", "KW_EXTENSION", "KW_EXTERN", "KW_EXPLICIT", "KW_PUBLISHED", + "KW_FALSE", "KW_FINAL", "KW_FLOAT", "KW_FRIEND", "KW_FOR", "KW_GOTO", + "KW_IF", "KW_INLINE", "KW_INT", "KW_LONG", "KW_MAKE_PROPERTY", "KW_MAKE_PROPERTY2", "KW_MAKE_SEQ", "KW_MUTABLE", "KW_NAMESPACE", - "KW_NEW", "KW_NOEXCEPT", "KW_NULLPTR", "KW_OPERATOR", "KW_PRIVATE", - "KW_PROTECTED", "KW_PUBLIC", "KW_REGISTER", "KW_RETURN", "KW_SHORT", - "KW_SIGNED", "KW_SIZEOF", "KW_STATIC", "KW_STATIC_ASSERT", - "KW_STATIC_CAST", "KW_STRUCT", "KW_TEMPLATE", "KW_THROW", "KW_TRUE", - "KW_TRY", "KW_TYPEDEF", "KW_TYPENAME", "KW_UNION", "KW_UNSIGNED", + "KW_NEW", "KW_NOEXCEPT", "KW_NULLPTR", "KW_OPERATOR", "KW_OVERRIDE", + "KW_PRIVATE", "KW_PROTECTED", "KW_PUBLIC", "KW_REGISTER", + "KW_REINTERPRET_CAST", "KW_RETURN", "KW_SHORT", "KW_SIGNED", "KW_SIZEOF", + "KW_STATIC", "KW_STATIC_ASSERT", "KW_STATIC_CAST", "KW_STRUCT", + "KW_TEMPLATE", "KW_THREAD_LOCAL", "KW_THROW", "KW_TRUE", "KW_TRY", + "KW_TYPEDEF", "KW_TYPEID", "KW_TYPENAME", "KW_UNION", "KW_UNSIGNED", "KW_USING", "KW_VIRTUAL", "KW_VOID", "KW_VOLATILE", "KW_WCHAR_T", "KW_WHILE", "START_CPP", "START_CONST_EXPR", "START_TYPE", "'{'", "','", "';'", "':'", "'='", "'?'", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'.'", "'('", "'['", "')'", "'}'", - "'!'", "']'", "$accept", "grammar", "cpp", "constructor_inits", + "']'", "'!'", "$accept", "grammar", "cpp", "constructor_inits", "constructor_init", "extern_c", "$@1", "declaration", - "friend_declaration", "$@2", "storage_class", "type_like_declaration", + "friend_declaration", "$@2", "storage_class", "attribute_specifiers", + "attribute_specifier", "type_like_declaration", "multiple_var_declaration", "$@3", "$@4", "multiple_instance_identifiers", "multiple_const_instance_identifiers", "typedef_declaration", "$@5", "$@6", "typedef_instance_identifiers", - "typedef_const_instance_identifiers", "function_prototype", "$@7", "$@8", - "$@9", "$@10", "$@11", "$@12", "$@13", "function_post", - "function_operator", "more_template_declaration", "template_declaration", - "$@14", "template_formal_parameters", + "typedef_const_instance_identifiers", "constructor_prototype", "$@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", "template_formal_parameter", "template_formal_parameter_type", "instance_identifier", "$@15", - "formal_parameter_list", "formal_parameters", + "instance_identifier_and_maybe_trailing_return_type", + "maybe_trailing_return_type", "function_parameter_list", + "function_parameters", "formal_parameter_list", "formal_parameters", "template_parameter_maybe_initialize", "maybe_initialize", + "maybe_initialize_or_constructor_body", "maybe_initialize_or_function_body", "structure_init", - "structure_init_body", "formal_parameter", + "structure_init_body", "function_parameter", "formal_parameter", "not_paren_formal_parameter_identifier", "formal_parameter_identifier", - "empty_instance_identifier", "type", "type_decl", "predefined_type", - "var_type_decl", "full_type", "anonymous_struct", "$@16", "named_struct", - "$@17", "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", + "not_paren_empty_instance_identifier", "empty_instance_identifier", + "type", "type_decl", "predefined_type", "var_type_decl", "full_type", + "anonymous_struct", "$@16", "named_struct", "$@17", "maybe_final", + "maybe_class_derivation", "class_derivation", "base_specification", + "enum", "enum_decl", "enum_element_type", "enum_body_trailing_comma", + "enum_body", "enum_keyword", "struct_keyword", "namespace_declaration", + "$@18", "$@19", "using_declaration", "simple_type", "simple_int_type", "simple_float_type", "simple_void_type", "code", "$@20", "code_block", "element", "optional_const_expr", "optional_const_expr_comma", "const_expr_comma", "no_angle_bracket_const_expr", "const_expr", "const_operand", "formal_const_expr", "formal_const_operand", - "class_derivation_name", "name", "string_literal", "empty", YY_NULL + "capture_list", "capture", "class_derivation_name", "name", + "name_no_final", "string_literal", "empty", YY_NULL }; #endif @@ -1264,113 +1326,124 @@ static const yytype_uint16 yytoknum[] = 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, 123, 44, - 59, 58, 61, 63, 124, 94, 38, 60, 62, 43, - 45, 42, 47, 37, 126, 46, 40, 91, 41, 125, - 33, 93 + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 123, 44, 59, 58, 61, 63, + 124, 94, 38, 60, 62, 43, 45, 42, 47, 37, + 126, 46, 40, 91, 41, 125, 93, 33 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_uint16 yyr1[] = { - 0, 142, 143, 143, 143, 144, 144, 144, 145, 145, - 146, 148, 147, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 151, 150, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, - 153, 155, 154, 156, 154, 157, 157, 158, 158, 160, - 159, 161, 159, 159, 162, 162, 163, 163, 165, 164, - 166, 164, 167, 164, 168, 164, 169, 164, 170, 164, - 171, 164, 164, 172, 172, 172, 172, 172, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 174, 174, 176, - 175, 175, 177, 177, 178, 178, 179, 179, 179, 179, - 179, 179, 180, 180, 180, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 182, 181, 183, - 183, 183, 183, 183, 184, 184, 185, 185, 186, 186, - 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, - 189, 189, 189, 189, 190, 190, 190, 190, 190, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 0, 148, 149, 149, 149, 150, 150, 150, 151, 151, + 152, 152, 154, 153, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 157, 156, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 160, 160, 161, 161, 161, 161, 163, + 162, 164, 162, 165, 165, 166, 166, 168, 167, 169, + 167, 167, 170, 170, 171, 171, 173, 172, 174, 172, + 176, 175, 177, 175, 178, 175, 179, 175, 180, 175, + 175, 181, 181, 181, 181, 181, 181, 181, 181, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, + 185, 184, 184, 186, 186, 187, 187, 188, 188, 188, + 188, 188, 188, 189, 189, 189, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 191, 190, 192, + 192, 193, 193, 193, 194, 194, 194, 194, 194, 195, 195, 196, 196, 196, 196, 196, 197, 197, 198, 198, - 200, 199, 202, 201, 203, 203, 204, 204, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 206, 207, 207, - 207, 207, 208, 208, 209, 209, 209, 210, 210, 210, - 211, 212, 212, 212, 214, 213, 215, 213, 213, 213, - 216, 216, 217, 217, 217, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 219, 219, 219, 219, 219, 220, 222, 221, 223, 223, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, - 226, 226, 227, 227, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 233, 233, 233, 234, 234, 235, - 235, 235, 235, 236 + 199, 199, 200, 200, 200, 200, 200, 201, 201, 201, + 201, 201, 201, 202, 202, 202, 203, 203, 203, 203, + 204, 204, 204, 204, 205, 205, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 208, 208, 208, 208, + 208, 208, 208, 208, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, + 212, 212, 212, 212, 213, 213, 214, 214, 216, 215, + 218, 217, 219, 219, 220, 220, 221, 221, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 223, 224, + 224, 224, 224, 225, 225, 226, 226, 226, 227, 227, + 227, 228, 229, 229, 229, 231, 230, 232, 230, 230, + 230, 233, 233, 233, 234, 234, 234, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 236, 236, 236, 237, 239, 238, 240, 240, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 242, 242, 243, 243, 244, 244, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, + 250, 251, 251, 251, 251, 252, 252, 252, 253, 253, + 253, 253, 254, 254, 254, 255, 255, 255, 255, 256 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, - 4, 0, 5, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 2, 2, 2, 2, 7, 9, 9, 13, - 9, 6, 4, 0, 3, 1, 2, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, - 3, 0, 4, 0, 5, 2, 4, 2, 4, 0, - 4, 0, 5, 3, 2, 4, 2, 4, 0, 6, - 0, 6, 0, 7, 0, 10, 0, 11, 0, 8, - 0, 9, 1, 1, 1, 2, 4, 5, 1, 1, + 4, 4, 0, 5, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 2, 2, 2, 7, 9, 9, + 13, 9, 7, 5, 0, 3, 1, 2, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 6, 1, 3, 1, 4, 1, 3, 3, 3, 0, + 4, 0, 5, 2, 4, 2, 4, 0, 4, 0, + 5, 3, 2, 4, 2, 4, 0, 6, 0, 6, + 0, 7, 0, 11, 0, 12, 0, 8, 0, 9, + 1, 1, 1, 2, 2, 2, 2, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, - 6, 2, 1, 1, 1, 3, 2, 4, 2, 4, - 3, 4, 1, 1, 1, 1, 2, 3, 2, 2, - 2, 2, 2, 3, 4, 3, 3, 0, 6, 1, - 1, 1, 3, 2, 1, 3, 1, 2, 1, 2, - 1, 3, 5, 3, 3, 3, 4, 1, 1, 2, - 1, 3, 3, 5, 3, 4, 5, 2, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 3, 4, 1, - 1, 1, 2, 2, 2, 2, 2, 3, 4, 7, - 3, 1, 2, 2, 2, 2, 2, 3, 4, 7, - 1, 1, 2, 1, 1, 1, 2, 4, 4, 1, - 1, 1, 2, 1, 1, 1, 2, 4, 2, 4, - 1, 1, 1, 2, 2, 2, 1, 1, 2, 3, - 0, 5, 0, 7, 1, 1, 2, 3, 2, 2, - 2, 3, 3, 3, 3, 3, 3, 4, 4, 2, - 3, 1, 1, 1, 1, 3, 5, 1, 2, 4, - 1, 1, 1, 1, 0, 6, 0, 7, 4, 5, - 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 1, 2, 1, 3, 2, 1, 0, 2, 1, 2, + 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, + 0, 6, 2, 1, 1, 1, 3, 2, 4, 2, + 4, 3, 4, 1, 1, 1, 1, 2, 3, 2, + 2, 2, 2, 2, 3, 4, 3, 0, 6, 2, + 3, 1, 3, 4, 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, 2, 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, 3, 4, 1, 2, 2, 2, 2, 2, + 3, 4, 5, 9, 9, 9, 1, 1, 2, 1, + 1, 1, 2, 4, 4, 1, 1, 1, 2, 1, + 1, 1, 2, 4, 2, 4, 1, 1, 1, 2, + 2, 2, 4, 1, 1, 1, 2, 3, 0, 5, + 0, 8, 1, 1, 1, 1, 2, 3, 1, 2, + 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, + 2, 3, 1, 1, 1, 1, 3, 5, 1, 2, + 4, 1, 1, 1, 1, 0, 6, 0, 7, 4, + 5, 3, 5, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 1, 1, 2, 1, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1382,23 +1455,26 @@ static const yytype_uint8 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, 3, 1, 1, - 1, 1, 1, 3, 1, 4, 7, 7, 4, 4, - 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 5, 4, 4, 3, 3, 3, 3, 1, 4, + 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, 4, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 4, 4, 3, 3, 3, 3, 1, 4, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 2, 5, 2, - 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 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, 5, 4, 4, 3, 3, 3, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 7, 7, 4, 4, 2, 5, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 8, 11, 1, 4, 7, 7, 7, + 7, 4, 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, 3, 3, 3, 3, 3, 3, 3, 5, 4, - 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, - 1, 2, 2, 0 + 5, 4, 4, 3, 3, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 1, 2, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 0 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -1406,1340 +1482,1525 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 593, 0, 0, 0, 593, 5, 533, 529, 532, - 589, 590, 535, 536, 0, 0, 0, 0, 0, 0, - 0, 0, 531, 0, 0, 0, 0, 537, 0, 0, - 0, 0, 530, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 478, 534, 221, 229, 295, 296, 298, 299, - 281, 0, 0, 312, 280, 310, 305, 301, 302, 300, - 304, 282, 0, 283, 303, 315, 297, 593, 4, 223, - 224, 225, 0, 271, 0, 220, 292, 293, 294, 1, - 20, 593, 593, 21, 593, 593, 593, 0, 33, 593, - 0, 0, 0, 593, 0, 0, 0, 0, 593, 593, - 0, 593, 593, 0, 593, 593, 6, 15, 7, 18, - 0, 13, 48, 14, 16, 17, 35, 593, 0, 593, - 593, 593, 593, 593, 0, 593, 593, 593, 242, 0, - 497, 0, 0, 241, 593, 593, 0, 0, 593, 593, - 503, 501, 502, 500, 221, 295, 296, 298, 299, 312, - 310, 305, 301, 300, 304, 303, 297, 0, 0, 442, - 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 669, 0, 0, 0, 669, 5, 586, 582, 585, + 665, 666, 588, 589, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 584, 590, 0, 0, 0, 0, 592, + 591, 0, 0, 0, 0, 0, 583, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 669, 0, 3, 526, + 587, 257, 265, 337, 338, 340, 341, 322, 0, 0, + 352, 321, 351, 346, 343, 342, 345, 323, 0, 324, + 344, 354, 339, 669, 4, 259, 260, 261, 0, 312, + 0, 256, 334, 335, 336, 1, 21, 669, 669, 22, + 669, 669, 669, 0, 34, 669, 0, 0, 0, 669, + 0, 0, 0, 0, 669, 669, 0, 669, 669, 669, + 0, 669, 669, 6, 0, 16, 7, 19, 0, 14, + 55, 15, 17, 18, 36, 669, 0, 669, 669, 669, + 669, 0, 669, 0, 669, 669, 669, 278, 283, 0, + 0, 547, 0, 0, 277, 0, 669, 669, 0, 0, + 0, 669, 669, 556, 554, 553, 555, 552, 257, 337, + 338, 340, 341, 352, 351, 346, 343, 342, 345, 344, + 339, 0, 0, 487, 658, 659, 660, 661, 652, 651, + 0, 649, 654, 648, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 591, 592, 593, 0, 314, 311, - 301, 307, 301, 306, 309, 587, 588, 222, 308, 0, - 593, 593, 593, 593, 593, 593, 248, 211, 593, 0, - 269, 250, 226, 593, 46, 45, 47, 593, 36, 41, - 22, 593, 0, 39, 0, 0, 0, 44, 593, 0, - 25, 24, 23, 42, 38, 0, 0, 131, 0, 0, - 19, 0, 290, 40, 43, 247, 231, 240, 0, 0, - 0, 0, 11, 0, 0, 246, 51, 233, 234, 235, - 271, 0, 230, 0, 441, 440, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 243, 593, 245, 244, - 0, 0, 0, 0, 0, 0, 0, 0, 528, 512, - 513, 514, 515, 516, 517, 520, 521, 527, 0, 509, - 510, 511, 518, 519, 507, 508, 504, 505, 506, 526, - 525, 0, 0, 249, 0, 313, 593, 216, 212, 213, - 215, 214, 0, 593, 277, 0, 274, 273, 270, 272, - 0, 593, 593, 37, 34, 593, 0, 0, 0, 0, - 593, 284, 0, 593, 0, 0, 246, 59, 291, 68, - 70, 247, 231, 53, 0, 0, 593, 232, 593, 0, - 316, 170, 0, 0, 50, 49, 0, 238, 236, 482, - 496, 488, 484, 486, 487, 494, 0, 493, 483, 490, - 0, 489, 492, 495, 0, 491, 485, 479, 443, 0, - 524, 523, 228, 217, 0, 0, 439, 438, 278, 267, - 227, 593, 0, 0, 255, 254, 593, 286, 0, 0, - 0, 288, 593, 0, 32, 143, 144, 0, 0, 0, - 0, 133, 134, 593, 142, 132, 61, 63, 0, 593, - 0, 0, 593, 0, 0, 593, 190, 191, 0, 593, - 593, 593, 593, 593, 0, 189, 593, 72, 0, 593, - 0, 8, 0, 0, 0, 593, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 52, 593, 145, 0, 0, - 498, 0, 522, 593, 218, 275, 0, 251, 0, 0, - 0, 0, 256, 593, 0, 289, 593, 0, 0, 0, - 593, 0, 136, 593, 138, 593, 0, 200, 201, 0, - 593, 593, 593, 593, 593, 593, 593, 199, 0, 60, - 593, 579, 575, 578, 581, 582, 160, 0, 0, 0, - 577, 0, 583, 0, 0, 0, 576, 0, 0, 0, - 0, 0, 0, 161, 164, 593, 188, 538, 580, 159, - 0, 0, 0, 54, 593, 239, 0, 593, 196, 192, - 193, 195, 194, 78, 593, 12, 593, 171, 317, 318, - 316, 0, 593, 174, 175, 593, 0, 178, 180, 177, - 173, 0, 152, 148, 0, 98, 99, 100, 101, 102, - 103, 106, 107, 122, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 126, 125, 109, 108, - 95, 97, 96, 104, 105, 93, 94, 90, 91, 92, - 89, 0, 0, 88, 146, 149, 151, 150, 0, 0, - 0, 157, 593, 0, 55, 168, 237, 0, 0, 0, - 279, 0, 0, 0, 260, 584, 0, 259, 0, 258, - 0, 0, 0, 593, 257, 593, 0, 0, 0, 0, - 285, 31, 0, 593, 0, 127, 130, 128, 135, 593, - 206, 202, 203, 205, 204, 0, 0, 593, 140, 166, - 62, 593, 0, 64, 0, 0, 593, 0, 544, 187, - 0, 0, 549, 548, 547, 0, 0, 546, 593, 163, - 0, 593, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 667, 668, + 669, 0, 353, 343, 348, 347, 350, 258, 349, 0, + 669, 669, 669, 669, 669, 669, 0, 286, 244, 669, + 662, 663, 664, 0, 310, 658, 659, 661, 288, 262, + 290, 669, 47, 46, 48, 669, 37, 42, 23, 669, + 0, 40, 0, 0, 0, 45, 669, 0, 26, 25, + 24, 43, 39, 0, 0, 142, 0, 49, 0, 20, + 0, 0, 41, 44, 0, 285, 267, 276, 0, 0, + 0, 0, 12, 0, 0, 0, 284, 59, 269, 270, + 271, 312, 0, 266, 0, 486, 485, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 669, 281, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 581, 653, 669, 669, 565, 566, + 567, 568, 569, 570, 573, 574, 580, 0, 562, 563, + 564, 571, 572, 560, 561, 557, 558, 559, 579, 578, + 0, 0, 287, 0, 669, 0, 669, 669, 669, 669, + 669, 249, 236, 0, 245, 0, 246, 248, 247, 175, + 669, 0, 0, 669, 669, 0, 176, 179, 669, 174, + 669, 318, 0, 315, 314, 311, 313, 0, 669, 669, + 38, 35, 669, 0, 0, 0, 0, 669, 325, 0, + 669, 285, 267, 0, 0, 284, 67, 0, 331, 0, + 0, 51, 53, 76, 78, 285, 267, 61, 0, 0, + 669, 268, 669, 0, 355, 192, 0, 0, 57, 355, + 197, 0, 58, 56, 0, 274, 310, 272, 532, 546, + 538, 534, 536, 537, 0, 544, 0, 543, 533, 540, + 0, 0, 0, 539, 542, 545, 0, 549, 550, 541, + 535, 527, 488, 92, 669, 669, 91, 650, 0, 577, + 576, 264, 250, 669, 241, 237, 238, 240, 239, 669, + 0, 0, 669, 213, 0, 0, 669, 178, 0, 0, + 669, 669, 669, 669, 669, 669, 669, 226, 225, 0, + 484, 483, 319, 308, 263, 669, 293, 669, 292, 669, + 327, 0, 0, 0, 329, 669, 0, 0, 154, 155, + 0, 0, 0, 0, 144, 145, 669, 153, 143, 0, + 69, 71, 0, 333, 0, 0, 0, 669, 669, 0, + 0, 669, 0, 0, 669, 0, 669, 669, 669, 669, + 669, 0, 217, 216, 669, 80, 0, 669, 0, 8, + 0, 0, 0, 0, 0, 0, 669, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 60, 669, 669, 156, + 0, 0, 0, 282, 548, 0, 0, 0, 0, 94, + 96, 93, 95, 0, 0, 171, 575, 242, 0, 0, + 669, 669, 0, 0, 669, 177, 180, 669, 231, 227, + 228, 230, 229, 0, 0, 669, 210, 190, 251, 316, + 0, 289, 0, 0, 295, 294, 330, 669, 0, 0, + 0, 669, 0, 33, 147, 669, 149, 669, 0, 669, + 0, 68, 669, 332, 669, 52, 641, 637, 640, 643, + 644, 182, 0, 0, 0, 639, 645, 0, 647, 646, + 0, 0, 0, 638, 0, 0, 0, 0, 0, 0, + 0, 0, 183, 214, 186, 215, 595, 642, 181, 0, + 0, 0, 0, 62, 669, 275, 0, 669, 222, 218, + 219, 221, 220, 86, 669, 13, 669, 193, 356, 357, + 355, 0, 669, 669, 195, 196, 198, 200, 201, 669, + 0, 204, 206, 203, 199, 0, 163, 159, 0, 109, + 110, 111, 112, 113, 114, 117, 118, 133, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 137, 136, 120, 119, 106, 108, 107, 115, 116, 104, + 105, 101, 102, 103, 100, 0, 0, 99, 157, 160, + 162, 161, 0, 0, 167, 669, 169, 0, 0, 63, + 273, 0, 0, 0, 0, 669, 0, 669, 0, 355, + 243, 669, 669, 211, 669, 669, 252, 232, 235, 191, + 0, 320, 0, 0, 0, 0, 0, 296, 0, 298, + 655, 669, 0, 669, 0, 0, 0, 0, 326, 0, + 0, 669, 0, 138, 141, 139, 146, 0, 151, 188, + 70, 669, 0, 72, 50, 0, 0, 0, 603, 0, + 0, 0, 0, 611, 610, 609, 608, 0, 0, 607, + 54, 185, 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, 593, 0, - 57, 80, 197, 593, 0, 0, 320, 321, 325, 322, - 329, 323, 324, 326, 327, 328, 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, 392, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 593, 431, 432, 433, 424, 436, 420, 421, 419, - 426, 427, 415, 416, 417, 418, 425, 423, 430, 428, - 434, 429, 422, 435, 319, 0, 9, 0, 0, 176, - 179, 153, 147, 124, 123, 156, 155, 169, 593, 0, - 0, 481, 480, 593, 276, 586, 266, 585, 265, 264, - 263, 262, 261, 253, 287, 0, 26, 0, 0, 137, - 141, 139, 207, 210, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 167, 444, 0, 0, 66, 0, - 0, 593, 593, 0, 593, 0, 0, 0, 574, 84, - 69, 83, 162, 165, 0, 184, 558, 559, 560, 561, - 562, 563, 566, 567, 573, 0, 555, 556, 557, 564, - 565, 553, 554, 550, 551, 552, 572, 571, 0, 0, - 0, 74, 71, 0, 593, 0, 198, 593, 0, 172, - 10, 181, 593, 182, 0, 154, 56, 219, 0, 0, - 0, 0, 593, 0, 0, 0, 0, 454, 452, 453, - 451, 0, 0, 450, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 669, 0, 0, 669, + 0, 65, 88, 223, 669, 0, 0, 359, 360, 364, + 361, 368, 362, 363, 365, 366, 367, 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, 408, 409, 410, 411, + 412, 413, 414, 434, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 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, 669, 476, + 477, 478, 469, 481, 465, 466, 464, 471, 472, 460, + 461, 462, 463, 470, 468, 475, 473, 479, 474, 480, + 467, 358, 0, 9, 0, 0, 0, 202, 205, 164, + 158, 135, 134, 166, 170, 669, 0, 191, 0, 530, + 529, 531, 528, 669, 669, 172, 97, 0, 0, 0, + 212, 0, 0, 669, 233, 317, 0, 301, 0, 300, + 0, 299, 657, 0, 0, 0, 656, 669, 297, 328, + 0, 27, 0, 0, 32, 148, 152, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 208, 0, 65, 543, 593, - 185, 0, 0, 542, 0, 539, 85, 0, 169, 0, - 570, 569, 76, 593, 58, 0, 593, 73, 437, 0, - 593, 27, 0, 28, 30, 0, 0, 0, 0, 0, - 0, 477, 463, 464, 465, 466, 467, 468, 469, 470, - 476, 0, 460, 461, 462, 458, 459, 455, 456, 457, - 475, 474, 0, 0, 67, 186, 0, 545, 0, 0, - 568, 593, 0, 593, 79, 183, 158, 0, 593, 449, - 0, 448, 0, 445, 0, 473, 472, 0, 0, 86, - 0, 0, 593, 81, 0, 209, 0, 0, 471, 541, - 540, 87, 593, 75, 0, 0, 0, 77, 29, 447, - 446 + 0, 189, 489, 0, 74, 0, 0, 0, 0, 669, + 0, 0, 0, 0, 0, 0, 636, 184, 187, 620, + 621, 622, 623, 624, 625, 628, 629, 635, 0, 617, + 618, 619, 626, 627, 615, 616, 612, 613, 614, 634, + 633, 0, 0, 77, 0, 82, 79, 0, 669, 0, + 224, 669, 0, 194, 11, 10, 207, 669, 208, 0, + 165, 64, 0, 173, 98, 593, 669, 669, 669, 0, + 307, 306, 305, 304, 303, 302, 291, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 502, 500, 499, + 501, 498, 0, 0, 497, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 602, 0, + 0, 0, 0, 601, 0, 605, 606, 596, 0, 632, + 631, 84, 669, 66, 0, 669, 81, 482, 0, 669, + 355, 669, 669, 669, 669, 28, 0, 29, 31, 0, + 0, 0, 0, 0, 0, 0, 525, 511, 512, 513, + 514, 515, 516, 517, 518, 524, 0, 508, 509, 510, + 506, 507, 503, 504, 505, 523, 522, 0, 0, 75, + 0, 0, 604, 0, 0, 630, 669, 0, 669, 87, + 209, 168, 0, 255, 254, 253, 234, 0, 496, 0, + 0, 0, 495, 0, 490, 0, 521, 520, 0, 0, + 0, 0, 0, 669, 89, 594, 0, 0, 0, 0, + 0, 519, 599, 598, 600, 597, 669, 669, 0, 0, + 0, 0, 0, 669, 83, 30, 493, 492, 494, 491, + 85 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 4, 5, 450, 451, 107, 358, 108, 109, 221, - 110, 111, 112, 366, 433, 465, 543, 240, 428, 508, - 509, 670, 254, 429, 432, 556, 1013, 1061, 723, 944, - 910, 614, 656, 113, 238, 420, 421, 422, 423, 466, - 858, 532, 533, 668, 623, 364, 566, 567, 534, 444, - 506, 206, 67, 346, 130, 256, 68, 69, 331, 70, - 332, 403, 404, 482, 71, 72, 328, 324, 325, 73, - 74, 114, 412, 486, 115, 75, 76, 77, 78, 448, - 449, 558, 844, 395, 263, 264, 894, 159, 42, 536, - 537, 634, 467, 43, 116 + -1, 4, 5, 558, 559, 115, 422, 116, 117, 249, + 118, 410, 411, 119, 120, 434, 542, 576, 683, 269, + 532, 640, 641, 820, 284, 538, 541, 285, 696, 1202, + 1256, 874, 1118, 465, 758, 814, 121, 266, 523, 524, + 525, 526, 577, 1015, 578, 594, 375, 376, 671, 672, + 818, 616, 428, 432, 710, 711, 377, 674, 551, 496, + 226, 227, 73, 405, 141, 287, 74, 75, 388, 76, + 389, 507, 623, 624, 797, 77, 78, 385, 381, 382, + 79, 80, 122, 515, 627, 123, 81, 82, 83, 84, + 556, 557, 698, 1001, 499, 294, 295, 1071, 173, 49, + 675, 676, 180, 181, 799, 800, 579, 50, 124 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -656 +#define YYPACT_NINF -755 static const yytype_int16 yypact[] = { - 351, -656, 2508, 3720, 19, 2632, -656, -656, -656, -656, - -656, -656, -656, -656, -135, -103, -99, -85, -60, -28, - -13, -27, -656, 11, 45, 74, 3926, -656, 83, 88, - 98, 16, -656, 105, 111, 2508, 2508, 2508, 2508, 1680, - 2508, 3135, -656, 109, -656, -656, -656, -656, -656, -656, - -656, 3906, 121, -656, -656, -656, -656, 4521, -656, 3527, - 3527, -656, 306, -656, 3527, -656, -656, 293, -656, -656, - -656, -656, 42, 20, 24, -656, -656, -656, -656, -656, - -656, 4578, 4578, -656, 4578, 2516, 4578, 43, -656, 4528, - 123, 135, 137, 4578, 64, 140, 154, 156, 4578, 4578, - 143, 4421, 4578, 47, 4578, 4578, -656, -656, -656, -656, - 2725, -656, -656, -656, -656, -656, -656, 2508, 3720, 2508, - 2508, 2508, 2508, 2508, 3720, 2508, 2508, 2508, -656, 306, - 150, 306, 306, -656, 2508, 2508, 3720, 3720, 2508, 2508, - 184, 184, 184, 184, -135, -99, -85, -60, -28, -13, - 11, 45, 4414, 1891, 3324, 3709, 111, 164, -76, 3135, - 184, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, - 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, - 2508, 2508, 2003, 2508, -656, -656, 293, 2508, -656, -656, - 3771, -656, 3527, -656, -656, -656, -656, -656, -656, 175, - 293, 293, 293, 293, 293, 293, 173, -656, -656, 3833, - 222, -656, 34, 4578, -656, -656, -656, 4578, -656, -656, - -656, 4471, 78, -656, 379, 381, 389, -656, -656, 296, - -656, -656, -656, -656, -656, 2508, 2795, -656, 269, 2857, - -656, 306, -656, -656, -656, 261, 279, -656, 3589, 289, - 3782, 306, -656, 306, 329, 310, -656, -656, -656, -656, - 20, 24, -656, 294, 307, -656, 315, 317, 324, 325, - 331, 340, 352, 345, 349, 355, -656, 2508, -656, -656, - 359, 360, 368, 361, 369, 370, 2508, 2508, -656, 3219, - 864, 3481, 3481, 738, 738, 532, 532, -656, 2977, 3340, - 3378, 3393, 738, 738, 215, 215, 184, 184, 184, -656, - -656, -73, 1037, 173, 2922, -656, 293, 173, 173, 173, - 173, 173, 186, 2508, 306, 371, -656, -656, -656, -656, - 3833, -656, 391, -656, -656, -656, 395, 401, 402, 404, - 3974, -656, 947, 3609, 3589, 329, -656, -656, -656, -656, - 9, -656, -656, -656, 2508, 3906, 182, -656, -656, 388, - -656, -656, 306, 1902, -656, -656, 244, 100, 34, -656, - -656, -656, -656, -656, -656, -656, 392, -656, -656, -656, - 387, -656, -656, -656, 393, -656, -656, 184, 3135, 2508, - -656, -656, -656, 173, 394, 390, 3135, -656, 192, -656, - 409, 4039, 277, 414, 416, -656, 4104, -656, 526, 527, - 528, -656, -656, 124, -656, -656, -656, 306, 3671, 306, - 413, 423, -656, 348, -656, -656, -656, -656, 244, 1133, - 417, 244, 1133, 244, 2956, 182, -656, -656, 418, 182, - 182, 182, 182, 182, 217, -656, 4169, -656, 405, -656, - 288, -656, 411, 425, 430, 2104, 2995, 420, 244, 244, - 2634, 244, 244, 244, 244, -656, 512, -656, 3833, 2508, - -656, 2508, 3135, 1133, -656, -656, 2508, -656, 595, 743, - 792, 386, -656, -656, 277, -656, -656, -71, 435, 439, - 4234, 53, 437, 348, 438, 4556, 3609, -656, -656, 434, - 348, 348, 348, 348, 348, 348, -114, -656, 244, -656, - 512, -656, -656, -656, -656, -656, -656, 436, 3844, 442, - -656, 3926, -656, 1791, 440, 443, -656, 2508, 2508, 2508, - 1680, 2508, 441, 26, -656, 348, 3169, -656, 109, -656, - 244, 191, 465, -656, 512, -656, 226, 182, 415, 415, - 415, 415, 415, -656, 2508, -656, 1133, -656, 1541, -656, - -656, 306, 2508, -656, -656, 2104, 432, 454, 3135, -656, - -656, 244, 284, 284, 567, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, 469, 468, -656, -656, 284, 284, 284, 248, 103, - 1902, -656, 2508, 459, -656, -656, 409, 76, 90, 472, - 3046, 306, 433, 306, -656, -656, 433, -656, 433, -656, - 433, 433, 433, 4299, -656, 4364, 570, 461, 601, 602, - -656, -656, 3720, -114, 3720, -656, -656, -656, -656, 348, - 476, 476, 476, 476, 476, 308, 675, 2508, -656, -656, - -656, 512, 497, -656, 3720, 3906, 348, 3720, 481, -656, - 3720, 3720, 184, 184, 184, 485, 93, 184, 563, -656, - 1244, -58, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, - 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, - 2508, 2508, 2508, 2205, 2508, 280, 620, 495, 563, 516, - -656, -656, 415, 1133, 496, 498, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, 500, -656, 503, 505, -656, - 2306, 284, -656, -656, -656, -656, -656, 2995, 1133, 501, - 244, -656, -656, 563, -656, -656, -656, -656, -656, -656, - -656, -656, -656, -656, -656, 507, -656, 107, 513, -656, - -656, -656, 476, 518, 519, 530, 523, 533, 675, 675, - 675, 675, 1680, 675, 3203, -656, 531, 552, -656, 244, - 538, 348, -58, 554, 2508, 550, 561, 2508, -656, -656, - 7, -656, -656, -656, 2508, -656, 3219, 864, 3481, 3481, - 738, 738, 532, 532, -656, 3012, 3340, 3378, 3393, 738, - 738, 215, 215, 184, 184, 184, -656, -656, 113, 1262, - 555, -656, 7, 244, 1133, 556, -656, 563, 1402, -656, - -656, -656, 2104, 3135, 558, -656, -656, 7, 572, 683, - 577, 578, 1133, 3720, 3720, 3720, 3720, 204, 204, 204, - 204, 562, 125, 204, 675, 675, 675, 675, 675, 675, - 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, - 675, 675, 675, 2407, 2508, -656, 244, -656, -656, -58, - -656, 568, 565, -656, 573, 184, -656, 575, 3135, 2508, - -656, -656, -656, 1133, -656, 585, 563, 7, -656, 560, - 563, -656, 587, -656, -656, 586, 588, 597, 589, 600, - 675, -656, 3257, 1915, 3542, 3542, 1995, 1995, 583, 583, - -656, 3186, 3408, 3423, 3461, 241, 241, 204, 204, 204, - -656, -656, 131, 1698, -656, -656, 2508, -656, 2508, 28, - 3135, 1133, 591, 563, 7, -656, 7, 720, 563, -656, - 596, -656, 598, 204, 675, -656, -656, 146, 155, -656, - 593, 604, 563, 7, 608, 7, 2508, 2508, 3203, -656, - -656, -656, 563, 7, 613, 163, 169, 7, -656, -656, - -656 + 365, -755, 2777, 4408, 50, 2969, -755, -755, -755, -755, + -755, -755, -755, -755, -61, -39, 6, 23, 53, 63, + -34, 93, 10, -755, -755, 98, 102, 104, 4607, -755, + -755, 78, 114, 134, 141, 135, -755, 166, 182, 192, + 2777, 2777, 2777, 2777, 2777, 1416, 84, 2777, 3633, -755, + 117, -755, -755, -755, -755, -755, -755, -755, 4629, 195, + -755, -755, -755, -755, 2652, 2740, 2740, -755, 382, -755, + 2740, -755, -755, 185, -755, -755, -755, -755, 262, 126, + 69, -755, -755, -755, -755, -755, -755, 5156, 5156, -755, + 5156, 359, 5156, 247, -755, 5112, 218, 248, 258, 5156, + 290, 275, 279, 288, 5156, 5156, 299, 5126, 5156, 5156, + 360, 5156, 5156, -755, 302, -755, -755, -755, 3179, -755, + -755, -755, -755, -755, -755, 2777, 4408, 2777, 2777, 2777, + 2777, 4408, 2777, 4408, 2777, 2777, 2777, -755, -755, 311, + 382, 314, 382, 382, -755, 4408, 2777, 2777, 4408, 4408, + 1416, 2777, 2777, 90, 90, 90, 90, 90, -61, 6, + 23, 53, 63, 93, 98, 102, 2119, 2292, 2455, 2540, + 192, 330, -60, 3633, -755, -755, -755, -755, -755, 382, + 333, 373, -755, -755, 90, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2217, 2777, -755, -755, + 185, 2777, -755, 2740, -755, -755, -755, -755, -755, 347, + 31, 185, 185, 31, 31, 3948, 356, -755, 366, -755, + -755, -755, -755, 1119, 388, 17, 45, 154, -755, -755, + -755, 5156, -755, -755, -755, 5156, -755, -755, -755, 5059, + 294, -755, 382, 382, 382, -755, -755, 399, -755, -755, + -755, -755, -755, 2777, 3083, -755, 397, -755, 3251, -755, + 382, 115, -755, -755, 382, 226, 384, -755, 4175, 396, + 4475, 382, -755, 382, 393, 238, 398, -755, -755, -755, + -755, 219, 69, -755, 395, 416, -755, 400, 406, 407, + 409, 417, 429, 428, 440, 431, 438, 439, 2777, -755, + 2777, -755, -755, 454, 448, 449, 451, 462, 458, 3356, + 460, 461, 2777, 2777, -755, -755, 64, 84, 3815, 3835, + 946, 946, 486, 486, 206, 206, -755, 3449, 3851, 3899, + 4036, 486, 486, 121, 121, 90, 90, 90, -755, -755, + -47, 1299, -755, 3377, 31, 473, 31, 31, 31, 31, + 31, 468, -755, 356, -755, 356, -755, 468, 468, -755, + 31, 4530, 4386, 31, 31, 469, 27, -755, 1148, -755, + 2777, 382, 467, -755, -755, -755, -755, 1119, -755, 543, + -755, -755, -755, 495, 492, 505, 506, 4681, -755, 1318, + 2876, 403, 478, 4175, 238, -755, -755, 507, -755, 4408, + 489, 511, 498, -755, 34, -755, -755, -755, 2777, 4629, + 500, -755, -755, 502, -755, -755, 382, 15, -755, -755, + -755, 2105, -755, -755, 786, -755, 527, -755, -755, -755, + -755, -755, -755, -755, 514, -755, 515, -755, -755, -755, + 3395, 517, 520, -755, -755, -755, 522, -755, -755, -755, + -755, 90, 3633, -755, 4247, 672, -755, -755, 2777, -755, + -755, -755, 468, 31, 468, 468, 468, 468, 468, 2777, + -4, 4629, 1148, -755, 12, 108, 608, -755, 4319, 529, + 1148, 1148, 1148, 1148, 1148, 1148, -45, -755, -755, 521, + 3633, -755, -12, -755, 544, 4735, -755, 546, -755, 4789, + -755, 665, 667, 669, -755, -755, 315, 556, -755, -755, + 382, 2204, 382, 550, 560, -755, 1148, -755, -755, 34, + -755, -755, 786, -755, 561, 542, 382, 1533, 4247, 552, + 786, 4247, 786, 3413, 500, 553, 500, 500, 500, 500, + 500, 293, -755, -755, 4843, -755, 547, -755, 334, -755, + -68, 568, 570, 562, 579, 583, 2329, 3578, 573, 786, + 786, 3082, 786, 786, 786, 786, -755, 186, 436, -755, + 1119, 2777, 2777, -755, -755, 2777, 2777, 588, 4552, -755, + -755, -755, -755, 592, 612, -755, 3633, 468, 593, 596, + 1148, -45, 599, 600, 672, -755, -755, 1148, 603, 603, + 603, 603, 603, 306, 2777, 2777, -755, -755, 604, -755, + 2777, -755, 2386, 624, 629, -755, -755, -755, -43, 630, + 633, 4897, 36, -755, 621, 1148, 631, 4286, 2876, -13, + 786, -755, 436, -755, 5156, -755, -755, -755, -755, -755, + -755, -755, 619, 632, 635, -755, -755, 4607, -755, -755, + 637, 646, 638, -755, 648, 2777, 2777, 2777, 2777, 1416, + 2777, 622, 57, -755, -755, 3651, -755, 117, -755, 628, + 786, 361, 647, -755, 436, -755, 324, 500, 649, 649, + 649, 649, 649, -755, 2777, -755, 4247, -755, 1843, -755, + -755, 382, 2777, 2777, -755, -755, -755, -755, -755, 2329, + 654, 650, 3633, -755, -755, 786, 328, 328, 763, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, 659, 658, -755, -755, 328, + 328, 328, 391, 801, -755, 2777, -755, 2105, 681, -755, + 544, 39, 66, 123, 149, 608, 4607, 185, 41, -755, + -755, 4247, -45, -755, 4247, 4247, -755, 603, 666, 3633, + 668, 3597, 587, 783, 897, 382, 493, -755, 382, -755, + -755, -755, 2386, 4951, 808, 695, 812, 814, -755, 699, + 4408, -13, 4408, -755, -755, -755, -755, 2889, -755, -755, + -755, 436, 701, -755, -755, 4408, 4408, 4408, 687, 4408, + 4408, 4408, 1416, 90, 90, 90, 90, 686, 152, 90, + -755, -755, 1988, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, + 2777, 2777, 2777, 2777, 2441, 2777, 608, 465, 689, 608, + 707, -755, -755, 649, 4247, 690, 691, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, -755, -755, -755, -755, -755, -755, -755, -755, + -755, -755, 696, -755, 697, 702, 700, -755, 2553, 328, + -755, -755, -755, -755, -755, 1533, 704, 3578, 786, -755, + -755, -755, -755, 672, 185, -755, -755, 703, 716, 708, + -755, 718, 719, 4247, -755, -755, 1030, -755, 1030, -755, + 1030, -755, -755, 1030, 1030, 1030, -755, 5005, -755, -755, + 720, -755, 163, 722, -755, -755, -755, -755, 727, 737, + 742, 745, 743, 753, 2889, 2889, 2889, 2889, 2889, 1416, + 2889, 3798, -755, 765, -755, 786, 744, 757, 758, 2777, + 759, 750, 764, 756, 3431, 2777, -755, -755, -755, 3815, + 3835, 946, 946, 486, 486, 206, 206, -755, 3615, 3851, + 3899, 4036, 486, 486, 121, 121, 90, 90, 90, -755, + -755, 236, 1553, 325, 760, -755, 325, 786, 4247, 761, + -755, 608, 1698, -755, -755, -755, -755, 2329, 3633, 767, + -755, -755, 779, -755, -755, -755, 608, 608, 608, 768, + -755, -755, -755, -755, -755, -755, -755, 787, 899, 788, + 790, 4408, 4408, 4408, 4408, 4408, 4408, 241, 241, 241, + 241, 241, 773, 250, 241, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2889, 2889, 2665, 2777, 786, -755, -755, 777, + 778, 780, 784, -755, 785, -755, -755, 90, 2777, -755, + -755, -755, 4247, -755, 781, 608, 325, -755, 789, 608, + -755, 672, 672, 672, 608, -755, 797, -755, -755, 796, + 798, 807, 809, 806, 818, 2889, -755, 1224, 3882, 3244, + 3244, 2868, 2868, 510, 510, -755, 3669, 4052, 4069, 4078, + 674, 674, 241, 241, 241, -755, -755, 251, 2008, -755, + 2777, 2777, -755, 2777, 2777, 3633, 4247, 810, 608, 325, + -755, 325, 811, -755, -755, -755, 325, 919, -755, 800, + 816, 817, -755, 820, 241, 2889, -755, -755, 278, 282, + 286, 287, 825, 608, 325, -755, 827, 2777, 2777, 2777, + 2777, 3798, -755, -755, -755, -755, 608, 672, 804, 295, + 317, 318, 332, 672, -755, -755, -755, -755, -755, -755, + -755 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -656, -656, -196, -656, 174, -656, -656, 515, -656, -656, - 72, -97, -656, -656, -656, -113, -195, -656, -656, -656, - -149, -247, 522, -656, -656, -656, -656, -656, -656, -656, - -655, -656, -656, 256, -656, -656, -656, 259, 334, -381, - -656, -388, -656, 110, -508, -338, -559, -656, -501, -144, - -406, -132, -37, -92, 243, -147, -34, -61, -656, -19, - -656, -656, -656, 281, 0, -656, -289, -656, -656, 1, - 278, -656, -656, -656, -656, -6, -4, -656, -656, 206, - -656, -54, -656, -442, -110, -36, 118, 421, -150, -656, - -656, -374, 149, -387, -1 + -755, -755, -230, -755, 259, -755, -755, 723, -755, -755, + 207, 437, -755, -105, -755, -755, -755, -42, -142, -755, + -755, -755, -96, -206, -755, -755, -755, 713, -755, -755, + -755, -755, -755, -386, -755, -755, 345, -755, -755, -755, + 346, 464, -465, -755, -523, -541, -449, -755, -32, -755, + 175, -546, -755, -397, -693, -755, -341, 145, -480, -433, + 795, -197, -41, -98, -551, -166, 28, -70, -755, -65, + -755, -755, -755, -755, 188, -64, -755, -354, -755, -755, + 2, -7, -755, -755, -755, -755, 1, 21, -755, -755, + -428, -755, 13, -755, -445, -124, -27, 233, 526, -119, + -755, -755, 670, -755, -754, 821, 389, -502, -1 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -270 +#define YYTABLE_NINF -665 static const yytype_int16 yytable[] = { - 6, 117, 672, 158, 237, 157, 848, 427, 666, 267, - 268, 269, 270, 271, 186, 273, 274, 275, 255, 79, - 133, 430, 679, 667, 280, 281, 491, 131, 284, 285, - 195, 196, 340, 118, 195, 196, 719, 119, 195, 196, - 689, 400, 538, 287, 542, 538, 287, 510, 646, 257, - 541, 120, 544, 191, 313, 193, 194, 195, 196, 184, - 198, 185, 288, 942, 914, 390, 207, 647, 317, 318, - 319, 320, 321, 322, 195, 196, 121, 572, 573, 667, - 615, 616, 617, 618, 266, 629, 538, 653, 195, 196, - 272, 258, 347, 1006, 660, 661, 662, 663, 664, 665, - 124, 353, 282, 283, 262, 637, 639, 856, 122, 1007, - 259, 260, 724, 195, 196, 184, 265, 185, 265, 265, - 265, 265, 265, 123, 265, 265, 265, 671, 624, 691, - 10, 241, 11, 265, 265, 401, 538, 265, 265, 406, - 431, 209, 211, 137, 255, 690, 311, 125, 191, 193, - 194, 198, -252, 214, 215, -252, 216, 218, 219, 715, - 208, 223, 446, 897, 220, 227, 1079, 380, 725, 538, - 233, 234, 673, 236, 239, 257, 243, 244, 257, 626, - 859, 126, 228, 915, 393, 207, 191, 257, 191, 913, - 851, 651, 436, 437, 438, 287, 335, 426, 439, 207, - 207, 207, 207, 207, 207, 329, 720, 326, 957, 287, - 127, 197, 287, 356, 861, 169, 490, 258, -269, 134, - 258, 468, 210, 212, 135, 896, 959, 6, 862, 258, - 262, 908, 287, 262, 136, 982, 259, 260, 440, 259, - 260, 138, 262, 229, 287, 960, 169, 139, 259, 260, - 287, 1010, 242, 882, 195, 196, 457, 187, 866, 224, - 458, 230, 868, 1031, 869, 287, 870, 871, 872, 1075, - 902, 225, 982, 226, 287, 231, 265, 232, 276, 235, - 278, 279, 287, 257, 1089, 223, 277, 643, 287, 333, - 645, 546, 1017, 1090, 441, 548, 549, 550, 551, 552, - 459, 1099, 286, 538, 132, 199, 316, 1100, 442, 200, - 323, 475, 716, 443, 476, 207, 195, 196, 435, 181, - 182, 183, 397, 323, 394, 258, 329, 621, 622, 717, - 6, 405, 460, 898, 6, 945, 538, 424, 262, 992, - 993, 994, 425, 330, 259, 260, 178, 179, 180, 201, - 181, 182, 183, 553, 554, 445, 461, 6, 497, 498, - 499, 1064, 721, 554, 500, 1066, 478, 479, 480, 716, - 462, 336, 989, 990, 991, 463, 992, 993, 994, -82, - 464, -82, -82, -82, 621, 622, 855, 481, 261, 337, - 348, 338, 535, 1019, 1000, 535, 343, 349, 655, 339, - 357, 716, 359, 722, 501, 202, 560, 561, 1083, 367, - 368, 6, 424, 1085, 341, 350, 621, 622, 940, 203, - 621, 622, 507, 41, 204, 354, 287, 1093, 539, 205, - 365, 539, 369, 627, 445, 628, 535, 1097, 445, 445, - 445, 445, 445, 195, 196, 667, 883, 360, 559, 361, - 362, 363, 847, 370, 569, 371, 140, 141, 142, 143, - 502, 160, 372, 373, 329, 625, 1, 2, 3, 374, - 954, 538, 539, 398, 503, 640, 641, 642, 375, 504, - 376, 676, 6, 377, 505, 6, 535, 378, 50, 384, - 424, 1055, 507, 379, 686, 999, 685, 381, 382, 507, - 507, 507, 507, 507, 507, 669, 383, 385, 386, 625, - 399, 452, 402, 407, 261, 133, 895, 261, 510, 535, - 408, 409, 131, 410, 447, 470, 261, -268, 469, 471, - 473, 474, 483, 61, 507, 484, 487, 488, 489, 631, - 63, 495, 496, 625, 557, 563, 445, 562, 540, 547, - 564, 571, 554, 397, 648, 539, 1015, 538, 649, 652, - 654, 265, 544, 169, 569, 659, 492, 236, 494, 677, - 681, 849, 674, 850, 1025, 538, 680, 852, 860, 688, - 875, 876, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 718, 312, 195, 196, 853, 314, 854, - 863, 877, 878, 667, 982, 671, 899, 904, 879, 909, - 881, 397, 261, 907, 856, 1062, 538, 635, 635, 635, - 360, 941, 361, 619, 620, 943, 947, 946, 901, 949, - 900, 950, 955, 903, 951, 958, 905, 906, 621, 622, - 50, 961, 669, 535, 962, 963, 342, 964, 507, 965, - 966, 176, 177, 178, 179, 180, 397, 181, 182, 183, - 625, 996, 995, 1081, 538, 507, 998, 938, 7, 8, - 9, 10, 1001, 11, 12, 13, 535, 911, 1003, 1004, - 625, 1012, 1021, 1022, 1016, 61, 1020, 1023, 1024, 1065, - 1030, 631, 63, 1057, 1056, 632, 1067, 387, 388, 1058, - 452, 1059, 987, 988, 989, 990, 991, 911, 992, 993, - 994, 884, 539, 1063, 1068, 1070, 1069, 1071, 1072, 1082, - 1084, 1091, 1086, 1098, 1087, 846, 334, 885, 895, 895, - 895, 895, 1092, 895, 396, 22, 1094, 956, 1014, 1054, - 997, 657, 493, 195, 196, 658, 633, 633, 633, 167, - 168, 345, 27, 880, 678, 644, 845, 948, 452, 169, - 0, 886, 0, 0, 887, 434, 0, 0, 32, 0, - 865, 635, 867, 0, 456, 635, 0, 635, 0, 635, - 635, 635, 0, 0, 1002, 0, 0, 0, 50, 132, - 0, 888, 195, 196, 0, 889, 890, 0, 0, 891, - 472, 892, 0, 0, 0, 893, 0, 0, 0, 0, - 559, 535, 0, 0, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 61, 0, 0, 0, 50, 0, 631, - 63, 0, 0, 636, 0, 0, 972, 539, 971, 0, - 0, 0, 911, 0, 0, 0, 0, 176, 177, 178, - 179, 180, 0, 181, 182, 183, 568, 0, 0, 0, - 895, 163, 164, 165, 166, 167, 168, 0, 0, 0, - 0, 0, 61, 0, 0, 169, 0, 630, 631, 63, - 507, 625, 638, 265, 0, 0, 0, 535, 0, 0, - 633, 0, 0, 0, 633, 0, 633, 0, 633, 633, - 633, 0, 0, 0, 895, 535, 0, 0, 0, 1026, - 1027, 1028, 1029, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 539, 0, 0, 911, 0, 682, 683, - 684, 569, 687, 0, 0, 0, 0, 1052, 0, 0, - 0, 539, 161, 162, 163, 164, 165, 166, 167, 168, - 0, 0, 0, 0, 0, 396, 535, 0, 169, 0, - 0, 0, 0, 0, 0, 0, 568, 0, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 625, 181, - 182, 183, 0, 0, 0, 0, 967, 968, 969, 970, - 0, 973, 539, 0, 0, 911, 0, 0, 0, 911, - 1077, 0, 1078, 0, 535, 0, 0, 0, 0, 0, + 6, 563, 265, 298, 299, 300, 301, 531, 303, 642, + 305, 306, 307, 352, 632, 587, 1006, 210, 172, 684, + 286, 143, 314, 315, 364, 366, 397, 320, 321, 144, + 142, 483, 768, 504, 598, 677, 766, 777, 1037, 1039, + 1041, 487, 208, 355, 209, 183, 539, 356, 288, 601, + 85, 174, 175, 289, 290, 783, 702, 608, 609, 610, + 611, 612, 613, 786, 686, 323, 688, 689, 690, 691, + 692, 841, 228, 171, 703, 681, 561, 562, 323, 235, + 236, 125, 804, 614, 324, 214, 215, 216, 357, 679, + -662, 218, 682, 639, 174, 175, 822, 469, 615, 131, + 604, 805, 406, 126, 716, 717, 828, 759, 760, 761, + 762, 292, 417, 619, 176, 817, 620, 821, -663, 293, + 291, 463, 193, 208, 296, 209, 296, 296, 296, 296, + 615, 296, 177, 296, 296, 296, 230, 231, 870, 479, + 599, -662, 176, 133, -662, 296, 296, 606, 127, 358, + 296, 296, 488, 193, 297, 479, 602, 176, 505, 302, + 237, 304, 509, 359, 323, 128, 286, 782, 360, -663, + 790, 540, -663, 313, 787, 177, 316, 317, 318, 350, + 809, 769, 842, 1019, 378, 1026, 451, 214, 215, 216, + 218, 323, 554, 238, 288, 129, 673, 219, 288, 289, + 290, 220, 811, 289, 290, 130, 464, 873, 288, 228, + 1020, 145, 178, 289, 290, 867, 179, 232, 588, 362, + 228, 228, 362, 362, 379, 1024, 770, -664, 383, 235, + 236, 205, 206, 207, 214, 132, 1030, 530, 193, 420, + 134, 408, 221, 409, 135, 823, 136, 876, 323, 875, + 1009, 479, 603, 233, 386, 6, 146, 292, 202, 203, + 204, 292, 205, 206, 207, 293, 291, 1021, 149, 293, + 291, 292, 1002, 1173, 323, 1073, 147, 323, -664, 293, + 291, -664, 1140, 148, 1141, 631, 1142, 871, 1148, 1143, + 1144, 1145, 176, 1022, 242, 243, 1086, 244, 246, 247, + 174, 175, 251, 222, 174, 175, 255, 1149, 150, 296, + 237, 261, 262, 763, 264, 267, 268, 223, 272, 273, + 1016, 10, 224, 11, 151, 466, 183, 225, 764, 765, + 482, 378, 1029, 288, 152, 1031, 1032, 211, 289, 290, + 677, 200, 201, 202, 203, 204, 233, 205, 206, 207, + -90, 1028, -90, 362, -90, 362, 362, 362, 362, 362, + 252, 323, 429, 176, 430, 245, 431, 176, 413, 362, + 174, 175, 362, 362, 248, 323, 323, 498, 544, 501, + 1199, 177, 1183, 1184, 1185, 177, 229, 6, 508, 1023, + 253, 6, 174, 175, 1226, 1276, 292, 803, 589, 528, + 254, 527, 258, 323, 293, 291, 259, 323, 386, 87, + 590, 323, 323, 591, 256, 260, 592, 88, 392, 553, + 323, 6, 1292, 378, 1074, 1119, 1293, 90, 91, 92, + 1294, 1295, 593, 176, 1208, 693, 694, 534, 241, 1306, + 600, 263, 323, 323, 99, 274, 270, 378, 251, 615, + 788, 177, 390, 308, 104, 176, 310, 323, 700, 701, + 105, 1307, 1308, 379, 595, 108, 872, 694, 234, 240, + 764, 765, 362, 177, 322, 111, 1309, 112, 501, 326, + 1113, 498, 1132, 1116, 354, 466, 1, 2, 3, 498, + 498, 498, 498, 498, 498, 617, 378, 378, 327, 380, + 378, 673, 114, 764, 765, 868, 625, 191, 192, -236, + 230, 231, 545, 677, 6, 387, 546, 424, 193, 425, + 426, 427, 527, 398, 433, 498, 414, -90, 48, -90, + 400, -90, 813, 764, 765, 1013, 678, 379, 418, 438, + 379, 323, 1173, 553, 439, 553, 553, 553, 553, 553, + 440, 441, 642, 442, 771, 772, 699, 547, 773, 774, + 429, 443, 430, 444, 767, 713, 153, 154, 155, 156, + 157, 1047, 445, 184, 446, 447, 595, 617, 1004, 1005, + 1025, 143, 448, 449, 1139, 1043, 1044, 1045, 452, 144, + 142, 232, 453, 454, 684, 455, 456, 174, 175, 498, + 617, 386, 457, 595, 459, 460, 498, 764, 765, 1114, + 473, 479, 503, 486, 501, 798, 506, 511, 548, 510, + 529, 200, 201, 202, 203, 204, 6, 205, 206, 207, + 512, 513, 549, 533, 498, 535, 536, 550, 819, 527, + 537, 617, 838, 57, 555, 1178, 1179, 1180, 1181, 1182, + 143, 1183, 1184, 1185, 580, 378, 581, 582, 144, 142, + 176, 584, 585, 821, 586, 463, 607, 618, -309, 1204, + 1263, 1264, 1265, 622, 673, 628, 319, 629, 177, 630, + 436, 240, 633, 617, 637, 638, 553, 643, 644, 680, + 687, 67, 697, 501, 704, 379, 705, 837, 1072, 795, + 69, 296, 296, 1036, 588, 707, 1173, 706, 713, 708, + 715, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 775, 351, 778, 1206, 779, 353, 781, 780, + 378, 784, 785, 378, 378, 589, 615, -243, 801, 810, + 1211, 1212, 1213, 1257, 802, 806, 1304, 590, 807, 812, + 591, 825, 1310, 592, 501, 826, 840, 497, 827, 143, + 829, 831, 866, 1010, 466, 1008, 228, 144, 142, 593, + 379, 617, 1262, 379, 379, 798, 798, 798, 830, 399, + 832, 869, 694, 174, 175, 798, 230, 231, 568, 1007, + 6, 378, 569, 1011, 1012, 1014, 1018, 1282, 1033, 552, + 819, 1180, 1181, 1182, 1034, 1183, 1184, 1185, 1050, 1259, + 617, 1051, 1052, 1261, 1053, 1054, 1075, 1133, 1266, 1079, + 1085, 1115, 1117, 378, 450, 1121, 1120, 1111, 1055, 57, + 1057, 1123, 1124, 570, 264, 1126, 1125, 1134, 461, 462, + 1130, 824, 1136, 1076, 1077, 1078, 176, 1080, 1081, 1082, + 1083, 1135, 1137, 1138, 1147, 466, 1150, 182, 466, 1151, + 1152, 497, 1284, 379, 177, 1153, 571, 232, 1154, 497, + 497, 497, 497, 497, 497, 1155, 1156, 67, 1188, 217, + 1186, 1189, 1190, 1192, 1193, 795, 69, 1297, 1194, 1038, + 1195, 239, 1201, 1210, 572, 1205, 500, 174, 175, 1216, + 1303, 1209, 1214, 1215, 1217, 497, 1218, 1225, 573, 1250, + 1251, 257, 1267, 574, 1252, 1258, 1253, 1254, 575, 1286, + 1305, 271, 1269, 552, 1260, 552, 552, 552, 552, 552, + 1268, 1270, 1287, 1271, 543, 1072, 1072, 1072, 1072, 1072, + 1272, 1072, 1273, 57, 1283, 1191, 1285, 567, 1288, 1289, + 1003, 309, 1290, 311, 312, 189, 190, 191, 192, 1296, + 176, 1298, 391, 645, 378, 1203, 1131, 699, 193, 1187, + 1249, 404, 815, 1129, 816, 635, 1056, 1088, 177, 497, + 1048, 1122, 378, 0, 596, 0, 497, 467, 0, 0, + 325, 67, 0, 0, 0, 500, 0, 0, 0, 795, + 69, 0, 0, 1040, 678, 361, 363, 365, 367, 368, + 0, 0, 595, 228, 497, 0, 0, 0, 0, 798, + 0, 798, 379, 798, 0, 0, 798, 798, 798, 0, + 174, 175, 1163, 0, 0, 0, 1072, 1072, 1072, 1072, + 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, + 1072, 1072, 1072, 1072, 1072, 0, 0, 0, 0, 0, + 0, 393, 0, 394, 395, 396, 552, 378, 296, 198, + 199, 200, 201, 202, 203, 204, 57, 205, 206, 207, + 0, 407, 712, 0, 0, 412, 0, 1162, 0, 0, + 0, 0, 421, 176, 423, 0, 1072, 0, 0, 0, + 0, 0, 435, 437, 0, 0, 0, 379, 0, 0, + 466, 177, 0, 0, 0, 0, 713, 0, 0, 0, + 384, 0, 0, 0, 67, 466, 466, 466, 0, 0, + 789, 500, 795, 69, 0, 0, 791, 0, 182, 472, + 0, 474, 475, 476, 477, 478, 1072, 1247, 230, 231, + 489, 378, 0, 0, 490, 480, 0, 0, 484, 485, + 53, 0, 54, 55, 56, 0, 0, 0, 0, 1219, + 1220, 1221, 1222, 1223, 1224, 0, 0, 0, 0, 0, + 0, 833, 834, 835, 836, 0, 839, 0, 0, 63, + 213, 379, 502, 0, 466, 491, 0, 0, 466, 0, + 595, 595, 595, 466, 0, 378, 0, 65, 66, 0, + 500, 0, 0, 1278, 1279, 0, 1280, 1281, 0, 0, + 0, 0, 0, 70, 0, 712, 0, 0, 72, 232, + 1166, 1167, 1168, 1169, 1170, 1171, 1172, 560, 0, 0, + 0, 0, 0, 0, 0, 379, 1173, 466, 0, 0, + 1299, 1300, 1301, 1302, 0, 0, 492, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 857, 0, 396, 0, 0, 0, 0, 0, 0, - 1095, 1096, 161, 162, 163, 164, 165, 166, 167, 168, - 539, 0, 911, 0, 0, 0, 413, 911, 169, 0, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 911, 181, 182, 183, 414, 0, 0, 396, 0, - 0, 911, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, - 1050, 0, 0, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, - 933, 934, 935, 936, 0, 939, 511, 512, 513, 10, - 0, 11, 514, 515, 44, 0, 0, 516, 1073, 0, + 493, 0, 466, 0, 0, 494, 0, 0, 0, 0, + 495, 500, 0, 1017, 0, 466, 595, 1157, 1158, 1159, + 1160, 1161, 595, 1164, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 185, 186, 187, 188, 189, 190, + 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 185, 186, 187, 188, 189, 190, 191, + 192, 634, 0, 636, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 0, 1175, 1176, 1177, 412, 1084, 1178, + 1179, 1180, 1181, 1182, 0, 1183, 1184, 1185, 0, 1089, + 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, + 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, + 0, 1112, 0, 0, 0, 0, 0, 0, 1227, 1228, + 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 1245, 0, 0, 7, + 8, 9, 10, 0, 11, 12, 13, 158, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 0, + 205, 206, 207, 516, 0, 470, 0, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 1274, 205, + 206, 207, 517, 15, 52, 0, 0, 159, 0, 160, + 161, 162, 57, 58, 0, 20, 59, 0, 0, 163, + 22, 0, 0, 61, 0, 0, 0, 0, 23, 24, + 164, 0, 0, 0, 0, 0, 165, 166, 0, 0, + 0, 0, 0, 28, 0, 29, 0, 30, 1291, 0, + 0, 0, 31, 0, 167, 168, 34, 0, 0, 35, + 67, 0, 560, 0, 36, 0, 0, 37, 68, 69, + 169, 0, 0, 71, 1128, 170, 646, 647, 648, 10, + 0, 11, 649, 650, 51, 0, 0, 651, 40, 0, + 0, 41, 42, 43, 0, 0, 44, 0, 45, 46, + 0, 0, 0, 47, 0, 0, 0, 0, 185, 186, + 187, 188, 189, 190, 191, 192, 0, 0, 0, 0, + 652, 52, 0, 0, 53, 193, 54, 55, 56, 57, + 371, 0, 653, 59, 0, 0, 60, 654, 0, 1027, + 61, 0, 0, 0, 0, 655, 656, 62, 0, 0, + 0, 1197, 0, 63, 64, 0, 1042, 0, 0, 1046, + 657, 0, 658, 0, 659, 0, 0, 0, 372, 660, + 0, 65, 66, 661, 0, 0, 662, 67, 0, 0, + 0, 663, 0, 0, 664, 68, 69, 70, 0, 0, + 71, 0, 72, 712, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 665, 0, 0, 666, 667, + 0, 0, 0, 668, 0, 669, 0, 0, 0, 0, + 670, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 0, 205, 206, 207, 0, 0, 1200, + 0, 877, 878, 879, 880, 881, 882, 883, 884, 885, + 886, 1248, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 0, 1255, 0, 0, 0, 0, 0, + 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, + 908, 909, 910, 911, 912, 913, 914, 0, 0, 915, + 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, + 926, 927, 928, 929, 0, 930, 0, 931, 932, 933, + 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, + 0, 0, 0, 944, 945, 946, 0, 947, 948, 949, + 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, + 960, 961, 962, 0, 963, 964, 965, 966, 967, 968, + 969, 970, 971, 972, 973, 974, 975, 976, 977, 0, + 0, 0, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 996, 997, 998, 1207, 999, 1000, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 0, 887, 888, 889, + 890, 891, 892, 893, 894, 895, 896, 897, 0, 0, + 0, 0, 0, 0, 0, 898, 899, 900, 901, 902, + 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, + 913, 914, 0, 0, 915, 916, 917, 918, 919, 920, + 921, 922, 923, 924, 925, 926, 927, 928, 929, 0, + 930, 0, 931, 932, 933, 934, 935, 936, 937, 938, + 939, 940, 941, 942, 943, 0, 0, 0, 944, 945, + 946, 0, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 0, 963, + 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 974, 975, 976, 977, 0, 0, 0, 978, 979, 980, + 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 0, 999, + 1000, 646, 647, 648, 10, 0, 11, 649, 650, 51, + 0, 0, 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 0, 181, 182, 183, 0, 0, 0, 391, 517, - 45, 0, 0, 46, 0, 47, 48, 49, 50, 518, - 0, 52, 1088, 0, 53, 519, 0, 0, 54, 0, - 0, 0, 0, 520, 55, 0, 0, 0, 1080, 0, - 56, 57, 58, 0, 0, 0, 0, 0, 521, 0, - 522, 0, 0, 0, 0, 523, 0, 59, 60, 524, - 0, 0, 525, 61, 0, 0, 526, 0, 0, 62, - 63, 64, 0, 0, 65, 0, 66, 511, 512, 513, - 10, 0, 11, 514, 515, 44, 0, 0, 912, 527, - 0, 0, 0, 528, 0, 0, 0, 529, 0, 530, - 0, 953, 0, 531, 0, 0, 0, 161, 162, 163, - 164, 165, 166, 167, 168, 0, 0, 0, 0, 0, - 517, 45, 0, 169, 46, 0, 47, 48, 49, 50, - 518, 0, 52, 0, 0, 53, 519, 0, 0, 54, - 0, 0, 0, 0, 520, 55, 0, 0, 0, 0, - 0, 56, 57, 58, 0, 0, 0, 0, 1005, 521, - 0, 522, 0, 0, 0, 1008, 523, 0, 59, 60, - 524, 0, 0, 525, 61, 0, 0, 526, 0, 0, - 62, 63, 64, 0, 0, 65, 0, 66, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 527, 0, 0, 568, 528, 0, 0, 0, 529, 0, - 530, 0, 0, 0, 531, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, - 0, 0, 0, 1011, 0, 726, 727, 728, 729, 730, - 731, 732, 733, 734, 735, 1053, 736, 737, 738, 739, - 740, 741, 742, 743, 744, 745, 746, 0, 0, 0, - 1060, 0, 0, 747, 748, 749, 750, 751, 752, 753, - 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, - 0, 0, 764, 765, 766, 767, 768, 769, 770, 771, - 772, 773, 774, 775, 776, 777, 0, 778, 0, 779, - 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, - 790, 0, 0, 0, 0, 791, 792, 793, 0, 794, - 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, - 805, 806, 807, 0, 808, 809, 810, 811, 812, 813, - 814, 815, 816, 817, 818, 819, 820, 0, 0, 0, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 841, 1018, 842, 843, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 0, 736, 737, 738, 739, 740, - 741, 742, 743, 744, 745, 746, 0, 0, 0, 0, - 0, 0, 747, 748, 749, 750, 751, 752, 753, 754, - 755, 756, 757, 758, 759, 760, 761, 762, 763, 0, - 0, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 0, 778, 0, 779, 780, - 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, - 0, 0, 0, 0, 791, 792, 793, 0, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 0, 808, 809, 810, 811, 812, 813, 814, - 815, 816, 817, 818, 819, 820, 0, 0, 0, 821, - 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, - 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, - 0, 842, 843, 7, 8, 9, 10, 0, 11, 12, - 13, 144, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 161, 162, 163, 164, 165, 166, 167, - 168, 0, 0, 0, 0, 0, 15, 45, 0, 169, - 145, 0, 146, 147, 148, 50, 51, 0, 52, 0, - 0, 149, 21, 0, 0, 54, 0, 0, 0, 0, - 22, 150, 0, 0, 0, 0, 0, 151, 152, 58, - 0, 0, 0, 0, 0, 26, 0, 27, 0, 0, - 0, 0, 0, 0, 153, 154, 30, 0, 0, 31, - 61, 0, 0, 32, 0, 0, 62, 63, 155, 0, - 0, 65, 0, 156, 511, 512, 513, 10, 0, 11, - 514, 515, 44, 0, 0, 0, 35, 0, 0, 0, - 36, 37, 0, 0, 38, 0, 39, 0, 0, 0, - 40, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 0, 181, 182, 183, 0, 517, 45, 1076, - 0, 46, 0, 47, 48, 49, 50, 518, 0, 52, - 0, 0, 53, 519, 0, 0, 54, 0, 0, 0, - 0, 520, 55, 0, 0, 0, 0, 0, 56, 57, - 58, 0, 0, 0, 0, 0, 521, 0, 522, 0, - 0, 0, 0, 523, 0, 59, 60, 524, 0, 0, - 525, 61, 0, 0, 526, 0, 0, 62, 63, 64, - 0, 0, 65, 0, 66, 7, 8, 9, 10, 0, - 11, 12, 13, 14, 0, 0, 0, 527, 0, 0, - 0, 528, 0, 0, 0, 529, 0, 530, 0, 0, - 0, 531, 976, 977, 978, 979, 980, 981, 0, 0, - 0, 46, 0, 47, 48, 49, 982, 0, 15, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 0, 0, - 0, 453, 454, 20, 21, 0, 0, 0, 56, 192, - 58, 0, 22, 23, 0, 0, 0, 0, 0, 24, - 25, 0, 0, 0, 0, 59, 60, 26, 0, 27, - 0, 0, 0, 0, 0, 0, 28, 29, 30, 64, - 0, 31, 0, 0, 66, 32, 7, 8, 9, 10, - 33, 11, 12, 13, 14, 34, 980, 981, 0, 0, - 455, 0, 0, 0, 0, 0, 982, 134, 35, 0, - 0, 0, 36, 37, 0, 0, 38, 0, 39, 984, - 985, 986, 40, 0, 987, 988, 989, 990, 991, 15, - 992, 993, 994, 16, 0, 17, 18, 19, 0, 0, - 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, - 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, - 24, 25, 0, 0, 0, 0, 0, 0, 26, 0, - 27, 0, 0, 0, 0, 0, 0, 28, 29, 30, - 0, 0, 31, 0, 0, 0, 32, 7, 8, 9, - 10, 33, 11, 12, 13, 14, 34, 0, 0, 0, - 0, 0, 0, 0, 987, 988, 989, 990, 991, 35, - 992, 993, 994, 36, 37, 0, 0, 38, 0, 39, - 0, 310, 0, 40, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 0, 0, 0, 652, 52, 0, 0, 53, + 193, 54, 55, 56, 57, 371, 0, 653, 59, 0, + 0, 60, 654, 0, 0, 61, 0, 0, 0, 0, + 655, 656, 62, 0, 0, 0, 0, 0, 63, 64, + 0, 0, 0, 0, 0, 657, 0, 658, 0, 659, + 0, 0, 0, 372, 660, 0, 65, 66, 661, 0, + 0, 662, 67, 0, 0, 0, 663, 0, 0, 664, + 68, 69, 70, 0, 0, 71, 0, 72, 7, 8, + 9, 10, 0, 11, 12, 13, 14, 0, 0, 0, + 665, 0, 0, 666, 667, 0, 0, 0, 668, 0, + 669, 0, 0, 0, 0, 670, 0, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 0, 205, + 206, 207, 15, 0, 1277, 0, 16, 0, 17, 18, + 19, 0, 0, 0, 20, 0, 564, 565, 21, 22, + 53, 0, 54, 55, 56, 0, 0, 23, 24, 25, + 0, 0, 212, 0, 0, 26, 27, 0, 0, 0, + 0, 0, 28, 0, 29, 0, 30, 0, 0, 63, + 213, 31, 0, 32, 33, 34, 0, 0, 35, 0, + 0, 0, 0, 36, 518, 519, 37, 65, 66, 38, + 7, 8, 9, 10, 39, 11, 12, 13, 14, 566, + 0, 0, 0, 70, 0, 0, 0, 40, 72, 0, + 41, 42, 43, 0, 0, 44, 0, 45, 46, 0, + 0, 0, 47, 0, 0, 53, 0, 54, 55, 56, + 0, 136, 0, 0, 15, 0, 0, 60, 16, 0, + 17, 18, 19, 0, 0, 0, 20, 0, 62, 0, + 21, 22, 0, 0, 63, 64, 0, 0, 0, 23, + 24, 25, 0, 0, 0, 0, 0, 26, 27, 0, + 0, 0, 65, 66, 28, 0, 29, 0, 30, 0, + 0, 0, 0, 31, 0, 32, 33, 34, 70, 0, + 35, 71, 0, 72, 0, 36, 0, 0, 37, 0, + 0, 38, 7, 8, 9, 10, 39, 11, 12, 13, + 14, 0, 0, 53, 0, 54, 55, 56, 0, 40, + 0, 0, 41, 42, 43, 0, 0, 44, 0, 45, + 46, 349, 0, 0, 47, 0, 0, 0, 0, 0, + 0, 0, 63, 213, 0, 0, 15, 0, 0, 0, + 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, + 65, 66, 21, 22, 0, 0, 174, 175, 0, 0, + 0, 23, 24, 25, 0, 0, 70, 0, 0, 26, + 27, 72, 0, 0, 0, 0, 28, 0, 29, 0, + 30, 0, 0, 0, 0, 31, 0, 32, 33, 34, + 0, 0, 35, 0, 146, 0, 0, 36, 0, 0, + 37, 0, 57, 38, 7, 8, 9, 10, 39, 11, + 12, 13, 14, 709, 0, 0, 0, 0, 0, 176, + 0, 40, 0, 0, 41, 42, 43, 0, 0, 44, + 0, 45, 46, 0, 0, 0, 47, 177, 792, 793, + 794, 0, 0, 0, 0, 0, 0, 0, 15, 0, + 67, 0, 16, 0, 17, 18, 19, 0, 795, 69, + 20, 0, 796, 0, 21, 22, 53, 0, 54, 55, + 56, 0, 0, 23, 24, 25, 0, 0, 0, 0, + 0, 26, 27, 0, 0, 0, 0, 0, 28, 0, + 29, 0, 30, 0, 0, 63, 213, 31, 0, 32, + 33, 34, 0, 0, 35, 0, 0, 0, 0, 36, + 0, 0, 37, 65, 66, 38, 7, 8, 9, 10, + 39, 11, 12, 13, 14, 0, 0, 0, 0, 70, + 0, 0, 0, 40, 72, 0, 41, 42, 43, 0, + 0, 44, 0, 45, 46, 1110, 0, 0, 47, 0, + 0, 53, 0, 54, 55, 56, 0, 147, 0, 0, 15, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, - 0, 0, 0, 0, 22, 23, 0, 0, 0, 0, - 0, 24, 25, 0, 0, 0, 0, 0, 0, 26, - 0, 27, 0, 0, 0, 0, 0, 0, 28, 29, - 30, 0, 0, 31, 0, 0, 0, 32, 7, 8, - 9, 10, 33, 11, 12, 13, 14, 34, 0, 0, - 0, 0, 565, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 36, 37, 0, 0, 38, 0, - 39, 0, 0, 0, 40, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 16, 0, 17, 18, 19, - 0, 0, 0, 0, 0, 0, 20, 21, 0, 0, - 0, 0, 0, 0, 0, 22, 23, 0, 0, 0, - 0, 0, 24, 25, 0, 0, 0, 0, 0, 0, - 26, 0, 27, 0, 0, 0, 0, 0, 0, 28, - 29, 30, 0, 0, 31, 0, 0, 0, 32, 7, - 8, 9, 10, 33, 11, 12, 13, 14, 34, 0, + 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, + 63, 213, 0, 0, 0, 23, 24, 25, 0, 0, + 0, 0, 0, 26, 27, 0, 0, 0, 65, 66, + 28, 0, 29, 0, 30, 0, 0, 0, 0, 31, + 0, 32, 33, 34, 70, 0, 35, 0, 0, 72, + 0, 36, 0, 0, 37, 0, 0, 38, 7, 8, + 9, 10, 39, 11, 12, 13, 14, 1127, 0, 0, + 0, 0, 151, 0, 0, 40, 0, 0, 41, 42, + 43, 0, 0, 44, 0, 45, 46, 0, 0, 0, + 47, 0, 0, 53, 0, 54, 55, 56, 0, 0, + 0, 0, 15, 0, 0, 212, 16, 0, 17, 18, + 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, + 0, 0, 63, 213, 0, 0, 0, 23, 24, 25, + 0, 0, 0, 0, 0, 26, 27, 0, 0, 0, + 65, 66, 28, 0, 29, 0, 30, 0, 0, 0, + 0, 31, 0, 32, 33, 34, 70, 0, 35, 0, + 0, 72, 0, 36, 0, 0, 37, 0, 0, 38, + 7, 8, 9, 10, 39, 11, 12, 13, 14, 0, + 0, 53, 0, 54, 55, 56, 0, 40, 0, 0, + 41, 42, 43, 0, 0, 44, 0, 45, 46, 1246, + 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, + 63, 213, 0, 0, 15, 0, 0, 0, 16, 0, + 17, 18, 19, 0, 0, 0, 20, 0, 65, 66, + 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, + 24, 25, 0, 0, 70, 0, 0, 26, 27, 72, + 0, 0, 0, 0, 28, 0, 29, 0, 30, 0, + 0, 0, 0, 31, 0, 32, 33, 34, 0, 0, + 35, 0, 0, 0, 0, 36, 518, 519, 37, 1171, + 1172, 38, 7, 8, 9, 10, 39, 11, 12, 13, + 1173, 0, 0, 0, 0, 0, 0, 0, 0, 40, + 0, 0, 41, 42, 43, 0, 0, 44, 0, 45, + 46, 0, 0, 0, 47, 0, 0, 53, 0, 54, + 55, 56, 520, 521, 0, 0, 1058, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 1059, 0, + 62, 0, 0, 1060, 0, 0, 63, 64, 0, 0, + 0, 23, 24, 0, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 65, 66, 0, 0, 29, 0, + 30, 0, 0, 0, 0, 1061, 0, 0, 522, 1062, + 70, 0, 1063, 71, 0, 72, 0, 36, 0, 0, + 0, 0, 0, 1178, 1179, 1180, 1181, 1182, 0, 1183, + 1184, 1185, 0, 0, 0, 0, 0, 0, 86, 87, + 0, 1064, 0, 0, 1065, 1066, 1067, 88, 0, 1068, + 0, 1069, 46, 0, 0, 89, 1070, 90, 91, 92, + 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, + 0, 96, 97, 98, 99, 100, 0, 0, 0, 0, + 0, 101, 102, 103, 104, 0, 0, 0, 0, 0, + 105, 106, 0, 0, 107, 108, 0, 0, 0, 109, + 0, 0, 0, 0, 110, 111, 0, 112, 718, 0, + 0, 0, 0, 275, 276, 113, 0, 719, 720, 721, + 722, 723, 724, 725, 726, 0, 0, 0, 0, 0, + 0, 0, 114, 0, 727, 0, 728, 729, 730, 731, + 732, 733, 734, 735, 736, 737, 738, 739, 0, 0, + 0, 277, 0, 0, 53, 0, 54, 55, 56, 57, + 278, 0, 0, 279, 740, 0, 60, 0, 0, 0, + 61, 0, 0, 0, 0, 0, 0, 62, 0, 0, + 0, 0, 0, 63, 64, 0, 0, 0, 0, 741, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 65, 66, 0, 0, 0, 0, 67, 0, 275, + 276, 0, 0, 0, 0, 281, 69, 70, 0, 0, + 71, 0, 72, 0, 0, 0, 0, 742, 0, 0, + 743, 0, 744, 745, 746, 747, 748, 749, 750, 751, + 752, 753, 754, 283, 755, 756, 0, 277, 0, 757, + 53, 0, 54, 55, 56, 57, 278, 0, 0, 279, + 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 0, 0, 63, + 64, 401, 402, 1169, 1170, 1171, 1172, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 1173, 65, 66, 0, + 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, + 0, 281, 69, 70, 0, 0, 71, 0, 72, 277, + 0, 0, 53, 282, 54, 55, 56, 57, 403, 0, + 0, 279, 0, 0, 60, 0, 0, 0, 61, 283, + 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 63, 64, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 65, + 66, 0, 0, 0, 0, 67, 0, 0, 0, 0, + 0, 0, 0, 281, 69, 70, 0, 0, 71, 0, + 72, 185, 186, 187, 188, 189, 190, 191, 192, 1178, + 1179, 1180, 1181, 1182, 0, 1183, 1184, 1185, 193, 0, + 0, 283, 185, 186, 187, 188, 189, 190, 191, 192, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 185, 186, + 187, 188, 189, 190, 191, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 185, 186, 187, 188, + 189, 190, 191, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 185, 186, 187, 188, 189, 190, + 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 0, 205, 206, 207, + 458, 0, 0, 0, 0, 0, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 0, 205, 206, + 207, 471, 0, 0, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 0, 205, 206, 207, 583, + 0, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 0, 205, 206, 207, 685, 0, 0, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 0, 205, 206, 207, 1196, 468, 0, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 0, + 205, 206, 207, 185, 186, 187, 188, 189, 190, 191, + 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 185, 186, 187, 188, 189, 190, 191, 192, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 185, 186, 187, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 185, 186, + 187, 188, 189, 190, 191, 192, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 843, 844, 845, 846, + 847, 848, 849, 850, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 851, 1165, 1166, 1167, 1168, 1169, 1170, + 1171, 1172, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1173, 0, 0, 714, 0, 0, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 0, 205, + 206, 207, 1035, 0, 0, 0, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 0, 205, 206, + 207, 0, 1198, 0, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 0, 205, 206, 207, 0, + 0, 0, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 0, 205, 206, 207, 0, 0, 0, + 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, + 862, 0, 863, 864, 865, 0, 1275, 0, 1174, 1175, + 1176, 1177, 0, 0, 1178, 1179, 1180, 1181, 1182, 0, + 1183, 1184, 1185, 1165, 1166, 1167, 1168, 1169, 1170, 1171, + 1172, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1173, 186, 187, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 187, 188, 189, 190, 191, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 187, 188, + 189, 190, 191, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1167, + 1168, 1169, 1170, 1171, 1172, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1173, 0, 187, 188, 189, 190, + 191, 192, 0, 0, 0, 0, 0, 1174, 1175, 1176, + 1177, 193, 0, 1178, 1179, 1180, 1181, 1182, 0, 1183, + 1184, 1185, 0, 0, 0, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 0, 205, 206, 207, 51, + 0, 0, 369, 0, 370, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 0, 205, 206, 207, 0, + 0, 0, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 0, 205, 206, 207, 0, 52, 0, 0, 53, + 0, 54, 55, 56, 57, 371, 0, 0, 59, 0, + 0, 60, 1175, 1176, 1177, 61, 0, 1178, 1179, 1180, + 1181, 1182, 62, 1183, 1184, 1185, 0, 0, 63, 64, + 0, 197, 198, 199, 200, 201, 202, 203, 204, 0, + 205, 206, 207, 372, 0, 0, 65, 66, 0, 0, + 0, 0, 67, 187, 188, 189, 190, 191, 192, 0, + 68, 69, 70, 0, 0, 71, 0, 72, 193, 1167, + 1168, 1169, 1170, 1171, 1172, 0, 0, 0, 0, 0, + 373, 0, 0, 0, 1173, 374, 1167, 1168, 1169, 1170, + 1171, 1172, 0, 0, 0, 1167, 1168, 1169, 1170, 1171, + 1172, 1173, 0, 0, 0, 0, 0, 0, 0, 0, + 1173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 35, 0, 0, 0, 36, 37, 0, 0, 38, - 0, 39, 0, 937, 0, 40, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 16, 0, 17, 18, - 19, 0, 0, 0, 0, 0, 0, 20, 21, 0, - 0, 0, 0, 0, 0, 0, 22, 23, 0, 0, - 0, 0, 0, 24, 25, 0, 0, 0, 0, 0, - 0, 26, 0, 27, 0, 0, 0, 0, 0, 0, - 28, 29, 30, 0, 0, 31, 0, 0, 0, 32, - 7, 8, 9, 10, 33, 11, 12, 13, 14, 34, - 0, 0, 0, 0, 952, 0, 0, 0, 0, 0, - 0, 0, 35, 0, 0, 0, 36, 37, 0, 0, - 38, 0, 39, 0, 0, 0, 40, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 20, 21, - 0, 0, 0, 0, 0, 0, 0, 22, 23, 0, - 0, 0, 0, 0, 24, 25, 0, 0, 0, 0, - 0, 0, 26, 0, 27, 0, 0, 0, 0, 0, - 0, 28, 29, 30, 0, 0, 31, 0, 0, 0, - 32, 7, 8, 9, 10, 33, 11, 12, 13, 14, - 34, 0, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 0, 0, 0, 36, 37, 0, - 0, 38, 0, 39, 0, 1051, 0, 40, 0, 0, - 0, 0, 0, 0, 15, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 0, 81, 0, 0, 0, 20, - 21, 0, 0, 82, 0, 0, 0, 0, 22, 23, - 0, 0, 84, 85, 86, 24, 25, 0, 0, 0, - 0, 0, 213, 26, 0, 27, 0, 0, 0, 93, - 0, 0, 28, 29, 30, 0, 0, 31, 98, 0, - 0, 32, 0, 99, 0, 0, 33, 0, 0, 0, - 0, 34, 0, 0, 0, 0, 104, 0, 105, 0, - 0, 0, -2, 0, 35, 0, 0, 0, 36, 37, - 574, 0, 38, 0, 39, 0, 0, 0, 40, 575, - 576, 577, 578, 579, 580, 581, 582, 0, 0, 0, - 0, 0, 0, 0, 0, 583, 0, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 595, 0, - 80, 81, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 0, 596, 0, 83, 0, 84, 85, - 86, 87, 0, 0, 88, 0, 0, 0, 89, 0, - 0, 0, 90, 91, 92, 93, 94, 0, 0, 597, - 0, 95, 96, 97, 98, 0, 0, 0, 0, 99, - 100, 0, 0, 101, 0, 245, 246, 102, 0, 0, - 0, 103, 104, 0, 105, 0, 0, 0, 0, 0, - 0, 0, 106, 598, 0, 0, 599, 0, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 0, - 611, 612, 247, 0, 613, 46, 0, 47, 48, 49, - 50, 248, 0, 249, 0, 0, 53, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 56, 57, 58, 245, 246, 0, 0, 0, - 0, 0, 0, 250, 0, 0, 0, 0, 0, 59, - 60, 0, 0, 0, 0, 61, 0, 0, 0, 0, - 0, 251, 63, 64, 0, 0, 65, 0, 66, 0, - 0, 0, 247, 252, 0, 46, 0, 47, 48, 49, - 50, 248, 0, 249, 0, 0, 53, 0, 0, 253, - 54, 0, 0, 0, 0, 0, 55, 245, 246, 0, - 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, - 0, 0, 0, 250, 0, 0, 0, 0, 0, 59, - 60, 0, 0, 0, 0, 61, 0, 0, 0, 0, - 0, 251, 63, 64, 247, 0, 65, 46, 66, 47, - 48, 49, 50, 344, 0, 249, 0, 0, 53, 0, - 0, 0, 54, 0, 0, 0, 0, 0, 55, 253, - 0, 0, 0, 0, 56, 57, 58, 161, 162, 163, - 164, 165, 166, 167, 168, 250, 0, 0, 0, 0, - 0, 59, 60, 169, 0, 0, 0, 61, 0, 0, - 0, 0, 0, 251, 63, 64, 0, 0, 65, 0, - 66, 161, 162, 163, 164, 165, 166, 167, 168, 0, - 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, - 0, 253, 161, 162, 163, 164, 165, 166, 167, 168, - 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 169, 161, 162, 163, - 164, 165, 166, 167, 168, 0, 0, 0, 0, 0, - 0, 0, 0, 169, 0, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, - 392, 161, 162, 163, 164, 165, 166, 167, 168, 0, - 0, 0, 0, 0, 0, 0, 0, 169, 0, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 0, 181, 182, 183, 545, 0, 0, 0, 389, 0, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 0, 181, 182, 183, 570, 0, 0, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 0, - 181, 182, 183, 1009, 0, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 0, 181, 182, 183, - 161, 162, 163, 164, 165, 166, 167, 168, 0, 0, - 0, 0, 0, 0, 0, 864, 169, 0, 0, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 0, 181, 182, 183, 692, 693, 694, 695, 696, 697, - 698, 699, 0, 0, 0, 0, 0, 0, 0, 0, - 700, 974, 975, 976, 977, 978, 979, 980, 981, 0, - 0, 0, 0, 0, 0, 0, 0, 982, 974, 975, - 976, 977, 978, 979, 980, 981, 0, 0, 0, 0, - 0, 0, 0, 0, 982, 162, 163, 164, 165, 166, - 167, 168, 0, 0, 0, 0, 0, 0, 0, 0, - 169, 0, 0, 0, 0, 0, 0, 0, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 0, - 181, 182, 183, 975, 976, 977, 978, 979, 980, 981, - 0, 0, 0, 0, 0, 0, 0, 0, 982, 0, - 0, 0, 701, 702, 703, 704, 705, 706, 707, 708, - 709, 710, 711, 0, 712, 713, 714, 1074, 0, 983, - 984, 985, 986, 0, 0, 987, 988, 989, 990, 991, - 0, 992, 993, 994, 0, 0, 983, 984, 985, 986, - 0, 0, 987, 988, 989, 990, 991, 0, 992, 993, - 994, 0, 0, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 0, 181, 182, 183, 163, 164, 165, - 166, 167, 168, 0, 0, 0, 0, 0, 0, 0, - 0, 169, 0, 0, 46, 0, 47, 48, 49, 0, - 0, 984, 985, 986, 0, 0, 987, 988, 989, 990, - 991, 0, 992, 993, 994, 163, 164, 165, 166, 167, - 168, 56, 192, 58, 0, 0, 0, 0, 0, 169, - 163, 164, 165, 166, 167, 168, 0, 0, 59, 60, - 0, 0, 0, 0, 169, 976, 977, 978, 979, 980, - 981, 0, 64, 0, 0, 0, 0, 66, 0, 982, - 976, 977, 978, 979, 980, 981, 0, 0, 0, 0, - 0, 0, 0, 0, 982, 0, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 0, 181, 182, 183, 976, 977, - 978, 979, 980, 981, 0, 0, 0, 0, 0, 0, - 0, 0, 982, 0, 0, 0, 0, 0, 0, 0, - 165, 166, 167, 168, 173, 174, 175, 176, 177, 178, - 179, 180, 169, 181, 182, 183, 0, 0, 0, 0, - 174, 175, 176, 177, 178, 179, 180, 0, 181, 182, - 183, 0, 0, 985, 986, 0, 0, 987, 988, 989, - 990, 991, 0, 992, 993, 994, 0, 0, 0, 986, - 0, 0, 987, 988, 989, 990, 991, 0, 992, 993, - 994, 978, 979, 980, 981, 0, 0, 0, 0, 0, - 0, 0, 0, 982, 0, 0, 0, 46, 0, 47, - 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 987, 988, 989, 990, 991, 0, 992, 993, 994, 351, - 352, 0, 0, 0, 56, 192, 58, 0, 174, 175, - 176, 177, 178, 179, 180, 0, 181, 182, 183, 415, - 416, 59, 60, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 247, 0, 0, 46, - 66, 47, 48, 49, 50, 0, 0, 249, 0, 0, - 53, 0, 0, 0, 54, 0, 0, 0, 0, 46, - 55, 47, 48, 49, 417, 418, 56, 57, 58, 0, - 53, 987, 988, 989, 990, 991, 0, 992, 993, 994, - 55, 415, 416, 59, 60, 0, 56, 57, 58, 61, - 0, 0, 0, 0, 0, 251, 63, 64, 0, 0, - 65, 0, 66, 59, 60, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 419, 0, 64, 0, 0, - 65, 46, 66, 47, 48, 49, 0, 0, 0, 0, - 0, 44, 53, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 56, 57, - 58, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 0, 47, 48, 49, 0, 59, 60, 45, 0, 0, - 46, 0, 47, 48, 49, 50, 51, 0, 52, 64, - 0, 53, 65, 0, 66, 54, 56, 192, 58, 0, - 0, 55, 0, 44, 0, 0, 0, 56, 57, 58, - 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 60, 0, 64, 0, 0, - 61, 46, 66, 47, 48, 49, 62, 63, 64, 45, - 0, 65, 46, 66, 47, 48, 49, 50, 355, 0, - 52, 0, 315, 53, 327, 138, 0, 54, 56, 192, - 58, 0, 0, 55, 0, 44, 0, 0, 0, 56, - 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 59, 60, 0, 64, - 0, 0, 61, 46, 66, 47, 48, 49, 62, 63, - 64, 45, 0, 65, 46, 66, 47, 48, 49, 50, - 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, - 56, 192, 58, 0, 0, 55, 0, 44, 0, 0, - 0, 56, 57, 58, 0, 0, 0, 59, 60, 0, - 0, 0, 0, 0, 0, 0, 675, 128, 59, 60, - 0, 64, 0, 0, 61, 0, 66, 0, 0, 0, - 62, 63, 64, 45, 0, 65, 46, 66, 47, 48, - 49, 50, 0, 0, 52, 0, 0, 53, 0, 0, - 0, 54, 0, 0, 0, 0, 46, 55, 47, 48, - 49, 50, 0, 56, 57, 58, 0, 53, 0, 0, - 0, 54, 0, 0, 0, 0, 0, 55, 0, 0, - 59, 60, 0, 56, 57, 58, 61, 0, 0, 0, - 0, 0, 62, 63, 64, 0, 0, 65, 0, 66, - 59, 60, 80, 81, 0, 0, 61, 0, 0, 0, - 0, 82, 129, 63, 64, 0, 0, 65, 83, 66, - 84, 85, 86, 87, 0, 0, 88, 0, 0, 0, - 89, 0, 0, 0, 90, 91, 92, 93, 94, 0, - 0, 0, 0, 95, 96, 97, 98, 0, 0, 0, - 0, 99, 100, 0, 0, 101, 0, 0, 0, 102, - 0, 0, 0, 103, 104, 0, 105, 80, 81, 0, - 0, 0, 0, 0, 106, 0, 82, 0, 0, 0, - 0, 0, 0, 83, 0, 84, 85, 86, 87, 0, - 0, 88, 0, 411, 0, 89, 0, 0, 0, 90, - 91, 92, 93, 94, 0, 0, 0, 0, 95, 96, - 97, 98, 0, 0, 0, 0, 99, 100, 0, 0, - 101, 0, 0, 0, 102, 0, 0, 0, 103, 104, - 0, 105, 80, 81, 0, 0, 0, 0, 0, 106, - 0, 82, 0, 0, 0, 0, 0, 0, 83, 0, - 84, 85, 86, 87, 0, 0, 88, 0, 477, 0, - 89, 0, 0, 0, 90, 91, 92, 93, 94, 0, - 0, 0, 0, 95, 96, 97, 98, 0, 0, 0, - 0, 99, 100, 0, 0, 101, 0, 0, 0, 102, - 0, 0, 0, 103, 104, 0, 105, 80, 81, 0, - 0, 0, 0, 0, 106, 0, 82, 0, 0, 0, - 0, 0, 0, 83, 0, 84, 85, 86, 87, 0, - 0, 88, 0, 485, 0, 89, 0, 0, 0, 90, - 91, 92, 93, 94, 0, 0, 0, 0, 95, 96, - 97, 98, 0, 0, 0, 0, 99, 100, 0, 0, - 101, 0, 0, 0, 102, 0, 0, 0, 103, 104, - 0, 105, 80, 81, 0, 0, 0, 0, 0, 106, - 0, 82, 0, 0, 0, 0, 0, 0, 83, 0, - 84, 85, 86, 87, 0, 0, 88, 0, 555, 0, - 89, 0, 0, 0, 90, 91, 92, 93, 94, 0, - 0, 0, 0, 95, 96, 97, 98, 0, 0, 0, - 0, 99, 100, 0, 0, 101, 0, 0, 0, 102, - 0, 0, 0, 103, 104, 0, 105, 80, 81, 0, - 0, 0, 0, 0, 106, 0, 82, 0, 0, 0, - 0, 0, 0, 83, 0, 84, 85, 86, 87, 0, - 0, 88, 0, 650, 0, 89, 0, 0, 0, 90, - 91, 92, 93, 94, 0, 0, 0, 0, 95, 96, - 97, 98, 0, 0, 0, 0, 99, 100, 0, 0, - 101, 0, 0, 0, 102, 0, 0, 0, 103, 104, - 0, 105, 80, 81, 0, 0, 0, 0, 0, 106, - 0, 82, 0, 0, 0, 0, 0, 0, 83, 0, - 84, 85, 86, 87, 0, 0, 88, 0, 873, 0, - 89, 0, 0, 0, 90, 91, 92, 93, 94, 0, - 0, 0, 0, 95, 96, 97, 98, 0, 0, 0, - 0, 99, 100, 0, 46, 101, 47, 48, 49, 102, - 81, 0, 0, 103, 104, 188, 105, 0, 82, 0, - 0, 0, 0, 0, 106, 189, 0, 84, 85, 86, - 0, 56, 190, 58, 0, 0, 0, 213, 0, 0, - 0, 0, 0, 874, 93, 0, 0, 0, 59, 60, - 0, 0, 0, 98, 0, 0, 0, 0, 99, 80, - 81, 0, 64, 0, 0, 0, 0, 66, 82, 0, - 0, 104, 0, 105, 0, 83, 0, 84, 85, 86, - 87, 0, 0, 88, 0, 0, 0, 89, -129, 0, - 127, 90, 91, 92, 93, 94, 0, 0, 0, 0, - 95, 96, 97, 98, 0, 0, 0, 0, 99, 100, - 0, 46, 101, 47, 48, 49, 102, 81, 0, 0, - 103, 104, 188, 105, 0, 82, 0, 0, 0, 0, - 0, 0, 189, 0, 84, 85, 86, 0, 56, 190, - 58, 0, 0, 0, 213, 81, 0, 0, 0, 0, - 0, 93, 222, 82, 0, 59, 60, 0, 0, 0, - 98, 0, 84, 85, 86, 99, 0, 81, 0, 64, - 0, 0, 213, 0, 66, 82, 0, 0, 104, 93, - 105, 0, 0, 0, 84, 85, 86, 0, 98, 0, - 0, 0, 0, 99, 213, 0, 0, 101, 0, 0, - 0, 93, 0, 0, 0, 0, 104, 0, 105, 0, - 98, 0, 0, 0, 0, 99, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, - 105 + 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, 0, 0, 0, 0, 198, + 199, 200, 201, 202, 203, 204, 0, 205, 206, 207, + 0, 0, 0, 1176, 1177, 415, 416, 1178, 1179, 1180, + 1181, 1182, 0, 1183, 1184, 1185, 0, 0, 0, 0, + 0, 1177, 0, 0, 1178, 1179, 1180, 1181, 1182, 0, + 1183, 1184, 1185, 1178, 1179, 1180, 1181, 1182, 0, 1183, + 1184, 1185, 0, 277, 0, 0, 53, 0, 54, 55, + 56, 57, 0, 0, 0, 279, 0, 0, 60, 0, + 0, 0, 61, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 63, 64, 0, 51, 0, + 0, 369, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 66, 0, 0, 0, 0, 67, + 0, 0, 0, 0, 0, 0, 0, 281, 69, 70, + 0, 0, 71, 0, 72, 52, 0, 0, 53, 0, + 54, 55, 56, 57, 371, 0, 0, 59, 0, 0, + 60, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 62, 0, 0, 0, 0, 0, 63, 64, 0, + 51, 0, 0, 605, 0, 0, 87, 0, 0, 0, + 0, 0, 372, 0, 88, 65, 66, 0, 0, 0, + 0, 67, 0, 0, 90, 91, 92, 0, 0, 68, + 69, 70, 0, 0, 71, 241, 72, 52, 0, 0, + 53, 99, 54, 55, 56, 57, 371, 0, 0, 59, + 0, 104, 60, 0, 0, 0, 61, 105, 0, 0, + 0, 107, 108, 62, 0, 0, 0, 51, 0, 63, + 64, 0, 111, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 372, 0, 0, 65, 66, 51, + 0, 0, 0, 67, 0, 0, 0, 0, 0, 114, + 0, 68, 69, 70, 52, 0, 71, 53, 72, 54, + 55, 56, 57, 371, 0, 0, 59, 0, 0, 60, + 0, 0, 0, 61, 0, 0, 52, 0, 0, 53, + 62, 54, 55, 56, 57, 58, 63, 64, 59, 0, + 0, 60, 0, 0, 0, 61, 0, 0, 0, 0, + 0, 372, 62, 0, 65, 66, 51, 0, 63, 64, + 67, 0, 0, 0, 0, 0, 0, 0, 68, 69, + 70, 0, 0, 71, 0, 72, 65, 66, 0, 0, + 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, + 68, 69, 70, 52, 0, 71, 53, 72, 54, 55, + 56, 57, 419, 0, 0, 59, 0, 0, 60, 0, + 0, 51, 61, 0, 0, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 63, 64, 0, 0, 0, + 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 66, 0, 0, 0, 52, 67, + 0, 53, 0, 54, 55, 56, 57, 68, 69, 70, + 59, 0, 71, 60, 72, 0, 0, 61, 0, 0, + 138, 0, 0, 53, 62, 54, 55, 56, 57, 776, + 63, 64, 139, 0, 0, 60, 0, 0, 137, 61, + 0, 0, 0, 0, 0, 481, 62, 0, 65, 66, + 0, 0, 63, 64, 67, 0, 0, 0, 0, 0, + 51, 0, 68, 69, 70, 0, 0, 71, 0, 72, + 65, 66, 0, 0, 0, 138, 67, 0, 53, 0, + 54, 55, 56, 57, 140, 69, 70, 139, 0, 71, + 60, 72, 0, 0, 61, 0, 0, 52, 0, 0, + 53, 62, 54, 55, 56, 57, 0, 63, 64, 59, + 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 62, 0, 65, 66, 0, 0, 63, + 64, 67, 0, 0, 0, 0, 0, 0, 0, 140, + 69, 70, 0, 0, 71, 0, 72, 65, 66, 0, + 86, 87, 0, 67, 0, 0, 0, 0, 0, 88, + 0, 68, 69, 70, 0, 0, 71, 89, 72, 90, + 91, 92, 93, 0, 0, 0, 94, 0, 0, 0, + 95, 0, 0, 96, 97, 98, 99, 100, 0, 0, + 0, 0, 0, 101, 102, 103, 104, 0, 0, 0, + 0, 0, 105, 106, 86, 87, 107, 108, 0, 0, + 0, 109, 0, 88, 0, 0, 110, 111, 0, 112, + 0, 89, 0, 90, 91, 92, 93, 113, 0, 0, + 94, 0, 0, 0, 95, 0, 0, 96, 97, 98, + 99, 100, 0, 0, 114, 0, 514, 101, 102, 103, + 104, 0, 0, 0, 0, 0, 105, 106, 86, 87, + 107, 108, 0, 0, 0, 109, 0, 88, 0, 0, + 110, 111, 0, 112, 0, 89, 0, 90, 91, 92, + 93, 113, 0, 0, 94, 0, 0, 0, 95, 0, + 0, 96, 97, 98, 99, 100, 0, 0, 114, 0, + 621, 101, 102, 103, 104, 0, 0, 0, 0, 0, + 105, 106, 86, 87, 107, 108, 0, 0, 0, 109, + 0, 88, 0, 0, 110, 111, 0, 112, 0, 89, + 0, 90, 91, 92, 93, 113, 0, 0, 94, 0, + 0, 0, 95, 0, 0, 96, 97, 98, 99, 100, + 0, 0, 114, 0, 626, 101, 102, 103, 104, 0, + 0, 0, 0, 0, 105, 106, 86, 87, 107, 108, + 0, 0, 0, 109, 0, 88, 0, 0, 110, 111, + 0, 112, 0, 89, 0, 90, 91, 92, 93, 113, + 0, 0, 94, 0, 0, 0, 95, 0, 0, 96, + 97, 98, 99, 100, 0, 0, 114, 0, 695, 101, + 102, 103, 104, 0, 0, 0, 0, 0, 105, 106, + 86, 87, 107, 108, 0, 0, 0, 109, 0, 88, + 0, 0, 110, 111, 0, 112, 0, 89, 0, 90, + 91, 92, 93, 113, 0, 0, 94, 0, 0, 0, + 95, 0, 0, 96, 97, 98, 99, 100, 0, 0, + 114, 0, 808, 101, 102, 103, 104, 0, 0, 0, + 0, 0, 105, 106, 86, 87, 107, 108, 0, 0, + 0, 109, 0, 88, 0, 0, 110, 111, 0, 112, + 0, 89, 0, 90, 91, 92, 93, 113, 0, 0, + 94, 0, 0, 0, 95, 0, 0, 96, 97, 98, + 99, 100, 0, 0, 114, 0, 1049, 101, 102, 103, + 104, 0, 0, 0, 0, 0, 105, 106, 86, 87, + 107, 108, 0, 0, 0, 109, 0, 88, 0, 0, + 110, 111, 0, 112, 0, 89, 0, 90, 91, 92, + 93, 113, 0, 0, 94, 0, 0, 0, 95, 0, + 0, 96, 97, 98, 99, 100, 0, 0, 114, 0, + 1146, 101, 102, 103, 104, 0, 0, 0, 0, 0, + 105, 106, 87, 0, 107, 108, 0, 0, 0, 109, + 88, 0, 0, 0, 110, 111, 87, 112, 0, 0, + 90, 91, 92, 0, 88, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 90, 91, 92, 99, 250, 0, + 0, 0, 114, 0, 0, 241, 87, 104, 0, 0, + 0, 99, 0, 105, 88, 0, 0, 0, 108, 0, + 0, 104, 0, 0, 90, 91, 92, 105, 111, 0, + 112, 0, 108, 0, 0, 241, 0, 0, 0, 0, + 0, 99, 111, 0, 112, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 114, 0, 105, 0, -140, + 0, 0, 108, 0, 0, 0, 0, 0, 0, 114, + 0, 0, 111, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 114 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-656))) + (!!((Yystate) == (-755))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 1, 136, 510, 39, 101, 39, 565, 345, 122, 119, - 120, 121, 122, 123, 51, 125, 126, 127, 110, 0, - 26, 12, 523, 137, 134, 135, 413, 26, 138, 139, - 10, 11, 228, 136, 10, 11, 544, 136, 10, 11, - 14, 330, 429, 119, 432, 432, 119, 428, 119, 110, - 431, 136, 433, 57, 186, 59, 60, 10, 11, 6, - 64, 8, 138, 718, 122, 138, 67, 138, 200, 201, - 202, 203, 204, 205, 10, 11, 136, 458, 459, 137, - 461, 462, 463, 464, 118, 473, 473, 493, 10, 11, - 124, 110, 239, 86, 500, 501, 502, 503, 504, 505, - 127, 248, 136, 137, 110, 479, 480, 4, 136, 102, - 110, 110, 554, 10, 11, 6, 117, 8, 119, 120, - 121, 122, 123, 136, 125, 126, 127, 508, 466, 535, - 6, 84, 8, 134, 135, 331, 523, 138, 139, 335, - 131, 121, 118, 127, 236, 119, 182, 136, 152, 153, - 154, 155, 118, 81, 82, 121, 84, 85, 86, 540, - 118, 89, 358, 671, 121, 93, 138, 277, 556, 556, - 98, 99, 510, 101, 102, 236, 104, 105, 239, 468, - 622, 136, 118, 691, 316, 186, 190, 248, 192, 690, - 571, 138, 10, 11, 12, 119, 118, 344, 16, 200, - 201, 202, 203, 204, 205, 209, 544, 208, 863, 119, - 136, 62, 119, 250, 138, 31, 412, 236, 118, 136, - 239, 121, 73, 74, 136, 667, 119, 228, 138, 248, - 236, 138, 119, 239, 136, 31, 236, 236, 56, 239, - 239, 136, 248, 94, 119, 138, 31, 136, 248, 248, - 119, 138, 103, 659, 10, 11, 12, 136, 632, 136, - 16, 121, 636, 138, 638, 119, 640, 641, 642, 138, - 676, 136, 31, 136, 119, 121, 277, 121, 129, 136, - 131, 132, 119, 344, 138, 213, 136, 483, 119, 217, - 486, 435, 947, 138, 112, 439, 440, 441, 442, 443, - 56, 138, 138, 690, 26, 12, 131, 138, 126, 16, - 137, 119, 121, 131, 122, 316, 10, 11, 355, 135, - 136, 137, 323, 137, 138, 344, 330, 136, 137, 138, - 331, 332, 88, 671, 335, 723, 723, 343, 344, 135, - 136, 137, 343, 121, 344, 344, 131, 132, 133, 56, - 135, 136, 137, 136, 137, 356, 112, 358, 10, 11, - 12, 1016, 136, 137, 16, 1020, 89, 90, 91, 121, - 126, 222, 131, 132, 133, 131, 135, 136, 137, 118, - 136, 120, 121, 122, 136, 137, 138, 110, 110, 10, - 241, 10, 429, 952, 902, 432, 127, 136, 495, 10, - 251, 121, 253, 547, 56, 112, 118, 119, 1063, 260, - 261, 412, 418, 1068, 118, 136, 136, 137, 138, 126, - 136, 137, 423, 2, 131, 136, 119, 1082, 429, 136, - 120, 432, 138, 469, 435, 471, 473, 1092, 439, 440, - 441, 442, 443, 10, 11, 137, 138, 118, 449, 120, - 121, 122, 562, 138, 455, 138, 35, 36, 37, 38, - 112, 40, 138, 138, 468, 466, 115, 116, 117, 138, - 858, 858, 473, 324, 126, 89, 90, 91, 138, 131, - 128, 518, 483, 138, 136, 486, 523, 138, 55, 128, - 496, 999, 493, 138, 530, 901, 530, 138, 138, 500, - 501, 502, 503, 504, 505, 506, 138, 138, 138, 510, - 139, 362, 121, 118, 236, 521, 666, 239, 899, 556, - 119, 119, 521, 119, 136, 138, 248, 118, 136, 136, - 136, 141, 118, 100, 535, 119, 10, 10, 10, 106, - 107, 128, 119, 544, 139, 120, 547, 136, 131, 131, - 120, 131, 137, 554, 119, 556, 944, 944, 119, 122, - 122, 562, 943, 31, 565, 131, 417, 495, 419, 127, - 127, 139, 136, 119, 962, 962, 136, 10, 119, 138, - 10, 120, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 138, 183, 10, 11, 138, 187, 141, - 138, 10, 10, 137, 31, 996, 119, 136, 652, 56, - 654, 622, 344, 138, 4, 1013, 1013, 478, 479, 480, - 118, 136, 120, 121, 122, 119, 138, 141, 675, 139, - 674, 138, 141, 677, 139, 138, 680, 681, 136, 137, - 55, 138, 653, 690, 136, 136, 235, 127, 659, 136, - 127, 129, 130, 131, 132, 133, 667, 135, 136, 137, - 671, 119, 141, 1061, 1061, 676, 138, 713, 3, 4, - 5, 6, 128, 8, 9, 10, 723, 688, 138, 128, - 691, 136, 120, 10, 138, 100, 138, 120, 120, 139, - 138, 106, 107, 138, 136, 110, 119, 286, 287, 136, - 561, 136, 129, 130, 131, 132, 133, 718, 135, 136, - 137, 46, 723, 138, 138, 128, 138, 138, 128, 138, - 10, 138, 136, 120, 136, 561, 221, 62, 888, 889, - 890, 891, 138, 893, 323, 70, 138, 860, 943, 996, - 899, 495, 418, 10, 11, 496, 478, 479, 480, 21, - 22, 239, 87, 653, 521, 484, 560, 821, 619, 31, - -1, 96, -1, -1, 99, 354, -1, -1, 103, -1, - 631, 632, 633, -1, 363, 636, -1, 638, -1, 640, - 641, 642, -1, -1, 904, -1, -1, -1, 55, 521, - -1, 126, 10, 11, -1, 130, 131, -1, -1, 134, - 389, 136, -1, -1, -1, 140, -1, -1, -1, -1, - 821, 858, -1, -1, 974, 975, 976, 977, 978, 979, - 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, - 990, 991, 992, 100, -1, -1, -1, 55, -1, 106, - 107, -1, -1, 110, -1, -1, 892, 858, 892, -1, - -1, -1, 863, -1, -1, -1, -1, 129, 130, 131, - 132, 133, -1, 135, 136, 137, 455, -1, -1, -1, - 1030, 17, 18, 19, 20, 21, 22, -1, -1, -1, - -1, -1, 100, -1, -1, 31, -1, 476, 106, 107, - 901, 902, 110, 904, -1, -1, -1, 944, -1, -1, - 632, -1, -1, -1, 636, -1, 638, -1, 640, 641, - 642, -1, -1, -1, 1074, 962, -1, -1, -1, 963, - 964, 965, 966, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 944, -1, -1, 947, -1, 527, 528, - 529, 952, 531, -1, -1, -1, -1, 993, -1, -1, - -1, 962, 15, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, 554, 1013, -1, 31, -1, - -1, -1, -1, -1, -1, -1, 565, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 999, 135, - 136, 137, -1, -1, -1, -1, 888, 889, 890, 891, - -1, 893, 1013, -1, -1, 1016, -1, -1, -1, 1020, - 1056, -1, 1058, -1, 1061, -1, -1, -1, -1, -1, + 1, 429, 107, 127, 128, 129, 130, 404, 132, 532, + 134, 135, 136, 210, 516, 464, 709, 58, 45, 542, + 118, 28, 146, 147, 221, 222, 256, 151, 152, 28, + 28, 372, 578, 387, 479, 537, 577, 588, 792, 793, + 794, 14, 6, 12, 8, 46, 12, 16, 118, 482, + 0, 10, 11, 118, 118, 601, 124, 490, 491, 492, + 493, 494, 495, 604, 544, 125, 546, 547, 548, 549, + 550, 14, 73, 45, 142, 540, 61, 62, 125, 10, + 11, 142, 125, 128, 144, 64, 65, 66, 57, 538, + 73, 70, 541, 526, 10, 11, 642, 144, 143, 133, + 486, 144, 268, 142, 569, 570, 657, 572, 573, 574, + 575, 118, 278, 125, 73, 128, 128, 640, 73, 118, + 118, 57, 32, 6, 125, 8, 127, 128, 129, 130, + 143, 132, 91, 134, 135, 136, 10, 11, 684, 143, + 144, 124, 73, 133, 127, 146, 147, 488, 142, 118, + 151, 152, 125, 32, 126, 143, 144, 73, 388, 131, + 91, 133, 392, 132, 125, 142, 264, 600, 137, 124, + 615, 137, 127, 145, 607, 91, 148, 149, 150, 206, + 144, 578, 125, 144, 225, 144, 310, 166, 167, 168, + 169, 125, 422, 124, 264, 142, 537, 12, 268, 264, + 264, 16, 635, 268, 268, 142, 142, 687, 278, 210, + 144, 133, 128, 278, 278, 680, 132, 91, 32, 220, + 221, 222, 223, 224, 225, 776, 580, 73, 229, 10, + 11, 141, 142, 143, 213, 142, 782, 403, 32, 280, + 142, 126, 57, 128, 142, 642, 142, 696, 125, 694, + 715, 143, 144, 127, 233, 256, 142, 264, 137, 138, + 139, 268, 141, 142, 143, 264, 264, 144, 133, 268, + 268, 278, 700, 32, 125, 821, 142, 125, 124, 278, + 278, 127, 1036, 142, 1038, 515, 1040, 684, 125, 1043, + 1044, 1045, 73, 144, 87, 88, 144, 90, 91, 92, + 10, 11, 95, 118, 10, 11, 99, 144, 142, 310, + 91, 104, 105, 127, 107, 108, 109, 132, 111, 112, + 765, 6, 137, 8, 142, 326, 327, 142, 142, 143, + 371, 372, 781, 403, 142, 784, 785, 142, 403, 403, + 842, 135, 136, 137, 138, 139, 127, 141, 142, 143, + 124, 779, 126, 354, 128, 356, 357, 358, 359, 360, + 142, 125, 124, 73, 126, 6, 128, 73, 142, 370, + 10, 11, 373, 374, 127, 125, 125, 378, 419, 380, + 144, 91, 141, 142, 143, 91, 124, 388, 389, 775, + 142, 392, 10, 11, 144, 144, 403, 627, 73, 400, + 142, 400, 127, 125, 403, 403, 127, 125, 387, 50, + 85, 125, 125, 88, 124, 127, 91, 58, 124, 420, + 125, 422, 144, 464, 821, 874, 144, 68, 69, 70, + 144, 144, 107, 73, 1127, 142, 143, 409, 79, 144, + 481, 142, 125, 125, 85, 143, 86, 488, 241, 143, + 144, 91, 245, 142, 95, 73, 142, 125, 124, 125, + 101, 144, 144, 464, 465, 106, 142, 143, 79, 80, + 142, 143, 473, 91, 144, 116, 144, 118, 479, 146, + 866, 482, 1023, 869, 137, 486, 121, 122, 123, 490, + 491, 492, 493, 494, 495, 496, 537, 538, 125, 143, + 541, 842, 143, 142, 143, 144, 507, 21, 22, 143, + 10, 11, 12, 1015, 515, 127, 16, 124, 32, 126, + 127, 128, 521, 124, 126, 526, 142, 124, 2, 126, + 133, 128, 637, 142, 143, 144, 537, 538, 142, 144, + 541, 125, 32, 544, 144, 546, 547, 548, 549, 550, + 144, 144, 1075, 144, 581, 582, 557, 57, 585, 586, + 124, 144, 126, 134, 128, 566, 40, 41, 42, 43, + 44, 801, 144, 47, 134, 144, 577, 578, 702, 703, + 777, 588, 144, 144, 1033, 92, 93, 94, 134, 588, + 588, 91, 144, 144, 1117, 144, 134, 10, 11, 600, + 601, 580, 144, 604, 144, 144, 607, 142, 143, 144, + 137, 143, 145, 144, 615, 622, 73, 125, 118, 124, + 142, 135, 136, 137, 138, 139, 627, 141, 142, 143, + 125, 125, 132, 126, 635, 146, 125, 137, 639, 638, + 142, 642, 669, 56, 142, 135, 136, 137, 138, 139, + 657, 141, 142, 143, 127, 696, 142, 142, 657, 657, + 73, 144, 142, 1186, 142, 57, 137, 146, 124, 1118, + 1211, 1212, 1213, 127, 1015, 10, 150, 10, 91, 10, + 291, 292, 126, 684, 134, 125, 687, 126, 146, 137, + 137, 104, 145, 694, 126, 696, 126, 669, 817, 112, + 113, 702, 703, 116, 32, 126, 32, 145, 709, 126, + 137, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 144, 207, 142, 1121, 124, 211, 142, 146, + 781, 142, 142, 784, 785, 73, 143, 143, 124, 128, + 1136, 1137, 1138, 1202, 125, 125, 1297, 85, 125, 128, + 88, 142, 1303, 91, 765, 133, 144, 378, 133, 776, + 133, 133, 144, 10, 775, 125, 777, 776, 776, 107, + 781, 782, 1210, 784, 785, 792, 793, 794, 142, 263, + 142, 144, 143, 10, 11, 802, 10, 11, 12, 145, + 801, 842, 16, 144, 146, 4, 125, 1256, 142, 420, + 811, 137, 138, 139, 146, 141, 142, 143, 10, 1205, + 821, 126, 10, 1209, 10, 126, 125, 1024, 1214, 142, + 144, 142, 125, 874, 308, 144, 146, 864, 810, 56, + 812, 145, 145, 57, 637, 145, 144, 144, 322, 323, + 146, 644, 144, 825, 826, 827, 73, 829, 830, 831, + 832, 145, 144, 144, 144, 866, 144, 46, 869, 142, + 133, 482, 1258, 874, 91, 133, 90, 91, 133, 490, + 491, 492, 493, 494, 495, 142, 133, 104, 144, 68, + 125, 134, 134, 134, 144, 112, 113, 1283, 134, 116, + 144, 80, 142, 124, 118, 144, 380, 10, 11, 10, + 1296, 144, 144, 126, 126, 526, 126, 144, 132, 142, + 142, 100, 125, 137, 144, 144, 142, 142, 142, 10, + 126, 110, 134, 544, 145, 546, 547, 548, 549, 550, + 144, 134, 142, 134, 418, 1064, 1065, 1066, 1067, 1068, + 144, 1070, 134, 56, 144, 1079, 145, 431, 142, 142, + 701, 140, 142, 142, 143, 19, 20, 21, 22, 144, + 73, 144, 249, 536, 1015, 1117, 1018, 978, 32, 1075, + 1186, 268, 637, 1015, 638, 521, 811, 842, 91, 600, + 802, 978, 1033, -1, 468, -1, 607, 327, -1, -1, + 179, 104, -1, -1, -1, 479, -1, -1, -1, 112, + 113, -1, -1, 116, 1015, 220, 221, 222, 223, 224, + -1, -1, 1023, 1024, 635, -1, -1, -1, -1, 1036, + -1, 1038, 1033, 1040, -1, -1, 1043, 1044, 1045, -1, + 10, 11, 1069, -1, -1, -1, 1165, 1166, 1167, 1168, + 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, -1, -1, -1, -1, -1, + -1, 250, -1, 252, 253, 254, 687, 1118, 1079, 133, + 134, 135, 136, 137, 138, 139, 56, 141, 142, 143, + -1, 270, 566, -1, -1, 274, -1, 1069, -1, -1, + -1, -1, 281, 73, 283, -1, 1225, -1, -1, -1, + -1, -1, 291, 292, -1, -1, -1, 1118, -1, -1, + 1121, 91, -1, -1, -1, -1, 1127, -1, -1, -1, + 11, -1, -1, -1, 104, 1136, 1137, 1138, -1, -1, + 614, 615, 112, 113, -1, -1, 620, -1, 327, 354, + -1, 356, 357, 358, 359, 360, 1275, 1184, 10, 11, + 12, 1202, -1, -1, 16, 370, -1, -1, 373, 374, + 51, -1, 53, 54, 55, -1, -1, -1, -1, 1151, + 1152, 1153, 1154, 1155, 1156, -1, -1, -1, -1, -1, + -1, 665, 666, 667, 668, -1, 670, -1, -1, 80, + 81, 1202, 381, -1, 1205, 57, -1, -1, 1209, -1, + 1211, 1212, 1213, 1214, -1, 1256, -1, 98, 99, -1, + 694, -1, -1, 1250, 1251, -1, 1253, 1254, -1, -1, + -1, -1, -1, 114, -1, 709, -1, -1, 119, 91, + 16, 17, 18, 19, 20, 21, 22, 426, -1, -1, + -1, -1, -1, -1, -1, 1256, 32, 1258, -1, -1, + 1287, 1288, 1289, 1290, -1, -1, 118, -1, 473, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 620, -1, 622, -1, -1, -1, -1, -1, -1, - 1086, 1087, 15, 16, 17, 18, 19, 20, 21, 22, - 1061, -1, 1063, -1, -1, -1, 119, 1068, 31, -1, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 1082, 135, 136, 137, 138, -1, -1, 667, -1, - -1, 1092, 974, 975, 976, 977, 978, 979, 980, 981, - 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, -1, -1, 692, 693, 694, 695, 696, 697, 698, - 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, - 709, 710, 711, 712, -1, 714, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, -1, 14, 1030, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, 137, -1, -1, -1, 141, 46, - 47, -1, -1, 50, -1, 52, 53, 54, 55, 56, - -1, 58, 1074, -1, 61, 62, -1, -1, 65, -1, - -1, -1, -1, 70, 71, -1, -1, -1, 1059, -1, - 77, 78, 79, -1, -1, -1, -1, -1, 85, -1, - 87, -1, -1, -1, -1, 92, -1, 94, 95, 96, - -1, -1, 99, 100, -1, -1, 103, -1, -1, 106, - 107, 108, -1, -1, 111, -1, 113, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, -1, 14, 126, - -1, -1, -1, 130, -1, -1, -1, 134, -1, 136, - -1, 850, -1, 140, -1, -1, -1, 15, 16, 17, - 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, - 46, 47, -1, 31, 50, -1, 52, 53, 54, 55, - 56, -1, 58, -1, -1, 61, 62, -1, -1, 65, - -1, -1, -1, -1, 70, 71, -1, -1, -1, -1, - -1, 77, 78, 79, -1, -1, -1, -1, 907, 85, - -1, 87, -1, -1, -1, 914, 92, -1, 94, 95, - 96, -1, -1, 99, 100, -1, -1, 103, -1, -1, - 106, 107, 108, -1, -1, 111, -1, 113, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, 952, 130, -1, -1, -1, 134, -1, - 136, -1, -1, -1, 140, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, 135, 136, 137, - -1, -1, -1, 141, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 994, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, - 1009, -1, -1, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, 65, -1, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, -1, -1, -1, -1, 83, 84, 85, -1, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, -1, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, -1, -1, -1, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, - -1, -1, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, -1, 65, -1, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - -1, -1, -1, -1, 83, 84, 85, -1, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, -1, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, -1, -1, -1, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - -1, 140, 141, 3, 4, 5, 6, -1, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, + 132, -1, 1283, -1, -1, 137, -1, -1, -1, -1, + 142, 765, -1, 767, -1, 1296, 1297, 1064, 1065, 1066, + 1067, 1068, 1303, 1070, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 15, 16, 17, 18, 19, 20, + 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, 15, 16, 17, 18, 19, 20, 21, + 22, 520, -1, 522, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, 130, 131, 132, 536, 832, 135, + 136, 137, 138, 139, -1, 141, 142, 143, -1, 843, + 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + -1, 865, -1, -1, -1, -1, -1, -1, 1165, 1166, + 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, + 1177, 1178, 1179, 1180, 1181, 1182, 1183, -1, -1, 3, + 4, 5, 6, -1, 8, 9, 10, 11, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, -1, + 141, 142, 143, 125, -1, 146, -1, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 1225, 141, + 142, 143, 144, 47, 48, -1, -1, 51, -1, 53, + 54, 55, 56, 57, -1, 59, 60, -1, -1, 63, + 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, + 74, -1, -1, -1, -1, -1, 80, 81, -1, -1, + -1, -1, -1, 87, -1, 89, -1, 91, 1275, -1, + -1, -1, 96, -1, 98, 99, 100, -1, -1, 103, + 104, -1, 701, -1, 108, -1, -1, 111, 112, 113, + 114, -1, -1, 117, 1008, 119, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, -1, 14, 132, -1, + -1, 135, 136, 137, -1, -1, 140, -1, 142, 143, + -1, -1, -1, 147, -1, -1, -1, -1, 15, 16, + 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, + 47, 48, -1, -1, 51, 32, 53, 54, 55, 56, + 57, -1, 59, 60, -1, -1, 63, 64, -1, 778, + 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, + -1, 1085, -1, 80, 81, -1, 795, -1, -1, 798, + 87, -1, 89, -1, 91, -1, -1, -1, 95, 96, + -1, 98, 99, 100, -1, -1, 103, 104, -1, -1, + -1, 108, -1, -1, 111, 112, 113, 114, -1, -1, + 117, -1, 119, 1127, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 132, -1, -1, 135, 136, + -1, -1, -1, 140, -1, 142, -1, -1, -1, -1, + 147, -1, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, -1, 146, + -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 1185, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, -1, 1198, -1, -1, -1, -1, -1, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, -1, -1, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, -1, 67, -1, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + -1, -1, -1, 85, 86, 87, -1, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, -1, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, -1, + -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, -1, -1, + -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, -1, -1, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, -1, + 67, -1, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, -1, -1, -1, 85, 86, + 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, -1, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, -1, 146, + 147, 3, 4, 5, 6, -1, 8, 9, 10, 11, + -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, 16, 17, 18, 19, 20, 21, - 22, -1, -1, -1, -1, -1, 46, 47, -1, 31, - 50, -1, 52, 53, 54, 55, 56, -1, 58, -1, - -1, 61, 62, -1, -1, 65, -1, -1, -1, -1, - 70, 71, -1, -1, -1, -1, -1, 77, 78, 79, - -1, -1, -1, -1, -1, 85, -1, 87, -1, -1, - -1, -1, -1, -1, 94, 95, 96, -1, -1, 99, - 100, -1, -1, 103, -1, -1, 106, 107, 108, -1, - -1, 111, -1, 113, 3, 4, 5, 6, -1, 8, - 9, 10, 11, -1, -1, -1, 126, -1, -1, -1, - 130, 131, -1, -1, 134, -1, 136, -1, -1, -1, - 140, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, 135, 136, 137, -1, 46, 47, 141, - -1, 50, -1, 52, 53, 54, 55, 56, -1, 58, - -1, -1, 61, 62, -1, -1, 65, -1, -1, -1, - -1, 70, 71, -1, -1, -1, -1, -1, 77, 78, - 79, -1, -1, -1, -1, -1, 85, -1, 87, -1, - -1, -1, -1, 92, -1, 94, 95, 96, -1, -1, - 99, 100, -1, -1, 103, -1, -1, 106, 107, 108, - -1, -1, 111, -1, 113, 3, 4, 5, 6, -1, - 8, 9, 10, 11, -1, -1, -1, 126, -1, -1, - -1, 130, -1, -1, -1, 134, -1, 136, -1, -1, - -1, 140, 17, 18, 19, 20, 21, 22, -1, -1, - -1, 50, -1, 52, 53, 54, 31, -1, 46, -1, - -1, -1, 50, -1, 52, 53, 54, -1, -1, -1, - -1, 59, 60, 61, 62, -1, -1, -1, 77, 78, - 79, -1, 70, 71, -1, -1, -1, -1, -1, 77, - 78, -1, -1, -1, -1, 94, 95, 85, -1, 87, - -1, -1, -1, -1, -1, -1, 94, 95, 96, 108, - -1, 99, -1, -1, 113, 103, 3, 4, 5, 6, - 108, 8, 9, 10, 11, 113, 21, 22, -1, -1, - 118, -1, -1, -1, -1, -1, 31, 136, 126, -1, - -1, -1, 130, 131, -1, -1, 134, -1, 136, 124, - 125, 126, 140, -1, 129, 130, 131, 132, 133, 46, - 135, 136, 137, 50, -1, 52, 53, 54, -1, -1, - -1, -1, -1, -1, 61, 62, -1, -1, -1, -1, - -1, -1, -1, 70, 71, -1, -1, -1, -1, -1, - 77, 78, -1, -1, -1, -1, -1, -1, 85, -1, - 87, -1, -1, -1, -1, -1, -1, 94, 95, 96, - -1, -1, 99, -1, -1, -1, 103, 3, 4, 5, - 6, 108, 8, 9, 10, 11, 113, -1, -1, -1, - -1, -1, -1, -1, 129, 130, 131, 132, 133, 126, - 135, 136, 137, 130, 131, -1, -1, 134, -1, 136, - -1, 138, -1, 140, -1, -1, -1, -1, -1, -1, - 46, -1, -1, -1, 50, -1, 52, 53, 54, -1, - -1, -1, -1, -1, -1, 61, 62, -1, -1, -1, - -1, -1, -1, -1, 70, 71, -1, -1, -1, -1, - -1, 77, 78, -1, -1, -1, -1, -1, -1, 85, - -1, 87, -1, -1, -1, -1, -1, -1, 94, 95, - 96, -1, -1, 99, -1, -1, -1, 103, 3, 4, - 5, 6, 108, 8, 9, 10, 11, 113, -1, -1, - -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, -1, 130, 131, -1, -1, 134, -1, - 136, -1, -1, -1, 140, -1, -1, -1, -1, -1, - -1, 46, -1, -1, -1, 50, -1, 52, 53, 54, - -1, -1, -1, -1, -1, -1, 61, 62, -1, -1, - -1, -1, -1, -1, -1, 70, 71, -1, -1, -1, - -1, -1, 77, 78, -1, -1, -1, -1, -1, -1, - 85, -1, 87, -1, -1, -1, -1, -1, -1, 94, - 95, 96, -1, -1, 99, -1, -1, -1, 103, 3, - 4, 5, 6, 108, 8, 9, 10, 11, 113, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 126, -1, -1, -1, 130, 131, -1, -1, 134, - -1, 136, -1, 138, -1, 140, -1, -1, -1, -1, - -1, -1, 46, -1, -1, -1, 50, -1, 52, 53, - 54, -1, -1, -1, -1, -1, -1, 61, 62, -1, - -1, -1, -1, -1, -1, -1, 70, 71, -1, -1, - -1, -1, -1, 77, 78, -1, -1, -1, -1, -1, - -1, 85, -1, 87, -1, -1, -1, -1, -1, -1, - 94, 95, 96, -1, -1, 99, -1, -1, -1, 103, - 3, 4, 5, 6, 108, 8, 9, 10, 11, 113, - -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, - -1, -1, 126, -1, -1, -1, 130, 131, -1, -1, - 134, -1, 136, -1, -1, -1, 140, -1, -1, -1, - -1, -1, -1, 46, -1, -1, -1, 50, -1, 52, - 53, 54, -1, -1, -1, -1, -1, -1, 61, 62, - -1, -1, -1, -1, -1, -1, -1, 70, 71, -1, - -1, -1, -1, -1, 77, 78, -1, -1, -1, -1, - -1, -1, 85, -1, 87, -1, -1, -1, -1, -1, - -1, 94, 95, 96, -1, -1, 99, -1, -1, -1, - 103, 3, 4, 5, 6, 108, 8, 9, 10, 11, - 113, -1, 6, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 126, -1, -1, -1, 130, 131, -1, - -1, 134, -1, 136, -1, 138, -1, 140, -1, -1, - -1, -1, -1, -1, 46, -1, -1, -1, 50, -1, - 52, 53, 54, -1, -1, 49, -1, -1, -1, 61, - 62, -1, -1, 57, -1, -1, -1, -1, 70, 71, - -1, -1, 66, 67, 68, 77, 78, -1, -1, -1, - -1, -1, 76, 85, -1, 87, -1, -1, -1, 83, - -1, -1, 94, 95, 96, -1, -1, 99, 92, -1, - -1, 103, -1, 97, -1, -1, 108, -1, -1, -1, - -1, 113, -1, -1, -1, -1, 110, -1, 112, -1, - -1, -1, 0, -1, 126, -1, -1, -1, 130, 131, - 6, -1, 134, -1, 136, -1, -1, -1, 140, 15, - 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, - -1, -1, -1, -1, -1, 31, -1, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, -1, - 48, 49, -1, -1, -1, -1, -1, -1, -1, 57, - -1, -1, -1, -1, 60, -1, 64, -1, 66, 67, - 68, 69, -1, -1, 72, -1, -1, -1, 76, -1, - -1, -1, 80, 81, 82, 83, 84, -1, -1, 85, - -1, 89, 90, 91, 92, -1, -1, -1, -1, 97, - 98, -1, -1, 101, -1, 10, 11, 105, -1, -1, - -1, 109, 110, -1, 112, -1, -1, -1, -1, -1, - -1, -1, 120, 119, -1, -1, 122, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, -1, - 136, 137, 47, -1, 140, 50, -1, 52, 53, 54, - 55, 56, -1, 58, -1, -1, 61, -1, -1, -1, - 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, - -1, -1, 77, 78, 79, 10, 11, -1, -1, -1, - -1, -1, -1, 88, -1, -1, -1, -1, -1, 94, - 95, -1, -1, -1, -1, 100, -1, -1, -1, -1, - -1, 106, 107, 108, -1, -1, 111, -1, 113, -1, - -1, -1, 47, 118, -1, 50, -1, 52, 53, 54, - 55, 56, -1, 58, -1, -1, 61, -1, -1, 134, - 65, -1, -1, -1, -1, -1, 71, 10, 11, -1, - -1, -1, 77, 78, 79, -1, -1, -1, -1, -1, - -1, -1, -1, 88, -1, -1, -1, -1, -1, 94, - 95, -1, -1, -1, -1, 100, -1, -1, -1, -1, - -1, 106, 107, 108, 47, -1, 111, 50, 113, 52, - 53, 54, 55, 56, -1, 58, -1, -1, 61, -1, - -1, -1, 65, -1, -1, -1, -1, -1, 71, 134, - -1, -1, -1, -1, 77, 78, 79, 15, 16, 17, - 18, 19, 20, 21, 22, 88, -1, -1, -1, -1, - -1, 94, 95, 31, -1, -1, -1, 100, -1, -1, - -1, -1, -1, 106, 107, 108, -1, -1, 111, -1, - 113, 15, 16, 17, 18, 19, 20, 21, 22, -1, - -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, - -1, 134, 15, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, - 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, - -1, -1, -1, -1, -1, -1, 31, 15, 16, 17, + 22, -1, -1, -1, -1, 47, 48, -1, -1, 51, + 32, 53, 54, 55, 56, 57, -1, 59, 60, -1, + -1, 63, 64, -1, -1, 67, -1, -1, -1, -1, + 72, 73, 74, -1, -1, -1, -1, -1, 80, 81, + -1, -1, -1, -1, -1, 87, -1, 89, -1, 91, + -1, -1, -1, 95, 96, -1, 98, 99, 100, -1, + -1, 103, 104, -1, -1, -1, 108, -1, -1, 111, + 112, 113, 114, -1, -1, 117, -1, 119, 3, 4, + 5, 6, -1, 8, 9, 10, 11, -1, -1, -1, + 132, -1, -1, 135, 136, -1, -1, -1, 140, -1, + 142, -1, -1, -1, -1, 147, -1, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, -1, 141, + 142, 143, 47, -1, 146, -1, 51, -1, 53, 54, + 55, -1, -1, -1, 59, -1, 61, 62, 63, 64, + 51, -1, 53, 54, 55, -1, -1, 72, 73, 74, + -1, -1, 63, -1, -1, 80, 81, -1, -1, -1, + -1, -1, 87, -1, 89, -1, 91, -1, -1, 80, + 81, 96, -1, 98, 99, 100, -1, -1, 103, -1, + -1, -1, -1, 108, 10, 11, 111, 98, 99, 114, + 3, 4, 5, 6, 119, 8, 9, 10, 11, 124, + -1, -1, -1, 114, -1, -1, -1, 132, 119, -1, + 135, 136, 137, -1, -1, 140, -1, 142, 143, -1, + -1, -1, 147, -1, -1, 51, -1, 53, 54, 55, + -1, 142, -1, -1, 47, -1, -1, 63, 51, -1, + 53, 54, 55, -1, -1, -1, 59, -1, 74, -1, + 63, 64, -1, -1, 80, 81, -1, -1, -1, 72, + 73, 74, -1, -1, -1, -1, -1, 80, 81, -1, + -1, -1, 98, 99, 87, -1, 89, -1, 91, -1, + -1, -1, -1, 96, -1, 98, 99, 100, 114, -1, + 103, 117, -1, 119, -1, 108, -1, -1, 111, -1, + -1, 114, 3, 4, 5, 6, 119, 8, 9, 10, + 11, -1, -1, 51, -1, 53, 54, 55, -1, 132, + -1, -1, 135, 136, 137, -1, -1, 140, -1, 142, + 143, 144, -1, -1, 147, -1, -1, -1, -1, -1, + -1, -1, 80, 81, -1, -1, 47, -1, -1, -1, + 51, -1, 53, 54, 55, -1, -1, -1, 59, -1, + 98, 99, 63, 64, -1, -1, 10, 11, -1, -1, + -1, 72, 73, 74, -1, -1, 114, -1, -1, 80, + 81, 119, -1, -1, -1, -1, 87, -1, 89, -1, + 91, -1, -1, -1, -1, 96, -1, 98, 99, 100, + -1, -1, 103, -1, 142, -1, -1, 108, -1, -1, + 111, -1, 56, 114, 3, 4, 5, 6, 119, 8, + 9, 10, 11, 124, -1, -1, -1, -1, -1, 73, + -1, 132, -1, -1, 135, 136, 137, -1, -1, 140, + -1, 142, 143, -1, -1, -1, 147, 91, 92, 93, + 94, -1, -1, -1, -1, -1, -1, -1, 47, -1, + 104, -1, 51, -1, 53, 54, 55, -1, 112, 113, + 59, -1, 116, -1, 63, 64, 51, -1, 53, 54, + 55, -1, -1, 72, 73, 74, -1, -1, -1, -1, + -1, 80, 81, -1, -1, -1, -1, -1, 87, -1, + 89, -1, 91, -1, -1, 80, 81, 96, -1, 98, + 99, 100, -1, -1, 103, -1, -1, -1, -1, 108, + -1, -1, 111, 98, 99, 114, 3, 4, 5, 6, + 119, 8, 9, 10, 11, -1, -1, -1, -1, 114, + -1, -1, -1, 132, 119, -1, 135, 136, 137, -1, + -1, 140, -1, 142, 143, 144, -1, -1, 147, -1, + -1, 51, -1, 53, 54, 55, -1, 142, -1, -1, + 47, -1, -1, -1, 51, -1, 53, 54, 55, -1, + -1, -1, 59, -1, -1, -1, 63, 64, -1, -1, + 80, 81, -1, -1, -1, 72, 73, 74, -1, -1, + -1, -1, -1, 80, 81, -1, -1, -1, 98, 99, + 87, -1, 89, -1, 91, -1, -1, -1, -1, 96, + -1, 98, 99, 100, 114, -1, 103, -1, -1, 119, + -1, 108, -1, -1, 111, -1, -1, 114, 3, 4, + 5, 6, 119, 8, 9, 10, 11, 124, -1, -1, + -1, -1, 142, -1, -1, 132, -1, -1, 135, 136, + 137, -1, -1, 140, -1, 142, 143, -1, -1, -1, + 147, -1, -1, 51, -1, 53, 54, 55, -1, -1, + -1, -1, 47, -1, -1, 63, 51, -1, 53, 54, + 55, -1, -1, -1, 59, -1, -1, -1, 63, 64, + -1, -1, 80, 81, -1, -1, -1, 72, 73, 74, + -1, -1, -1, -1, -1, 80, 81, -1, -1, -1, + 98, 99, 87, -1, 89, -1, 91, -1, -1, -1, + -1, 96, -1, 98, 99, 100, 114, -1, 103, -1, + -1, 119, -1, 108, -1, -1, 111, -1, -1, 114, + 3, 4, 5, 6, 119, 8, 9, 10, 11, -1, + -1, 51, -1, 53, 54, 55, -1, 132, -1, -1, + 135, 136, 137, -1, -1, 140, -1, 142, 143, 144, + -1, -1, 147, -1, -1, -1, -1, -1, -1, -1, + 80, 81, -1, -1, 47, -1, -1, -1, 51, -1, + 53, 54, 55, -1, -1, -1, 59, -1, 98, 99, + 63, 64, -1, -1, -1, -1, -1, -1, -1, 72, + 73, 74, -1, -1, 114, -1, -1, 80, 81, 119, + -1, -1, -1, -1, 87, -1, 89, -1, 91, -1, + -1, -1, -1, 96, -1, 98, 99, 100, -1, -1, + 103, -1, -1, -1, -1, 108, 10, 11, 111, 21, + 22, 114, 3, 4, 5, 6, 119, 8, 9, 10, + 32, -1, -1, -1, -1, -1, -1, -1, -1, 132, + -1, -1, 135, 136, 137, -1, -1, 140, -1, 142, + 143, -1, -1, -1, 147, -1, -1, 51, -1, 53, + 54, 55, 56, 57, -1, -1, 47, -1, -1, 63, + -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, + 74, -1, -1, 64, -1, -1, 80, 81, -1, -1, + -1, 72, 73, -1, -1, -1, -1, -1, -1, 0, + -1, -1, -1, -1, 98, 99, -1, -1, 89, -1, + 91, -1, -1, -1, -1, 96, -1, -1, 112, 100, + 114, -1, 103, 117, -1, 119, -1, 108, -1, -1, + -1, -1, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, -1, -1, -1, -1, -1, 49, 50, + -1, 132, -1, -1, 135, 136, 137, 58, -1, 140, + -1, 142, 143, -1, -1, 66, 147, 68, 69, 70, + 71, -1, -1, -1, 75, -1, -1, -1, 79, -1, + -1, 82, 83, 84, 85, 86, -1, -1, -1, -1, + -1, 92, 93, 94, 95, -1, -1, -1, -1, -1, + 101, 102, -1, -1, 105, 106, -1, -1, -1, 110, + -1, -1, -1, -1, 115, 116, -1, 118, 6, -1, + -1, -1, -1, 10, 11, 126, -1, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, - -1, -1, -1, 31, -1, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, 135, 136, 137, - 138, 15, 16, 17, 18, 19, 20, 21, 22, -1, - -1, -1, -1, -1, -1, -1, -1, 31, -1, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, 135, 136, 137, 138, -1, -1, -1, 121, -1, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, 137, 120, -1, -1, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, 136, 137, 121, -1, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, 135, 136, 137, + -1, -1, 143, -1, 32, -1, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, + -1, 48, -1, -1, 51, -1, 53, 54, 55, 56, + 57, -1, -1, 60, 62, -1, 63, -1, -1, -1, + 67, -1, -1, -1, -1, -1, -1, 74, -1, -1, + -1, -1, -1, 80, 81, -1, -1, -1, -1, 87, + -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, + -1, 98, 99, -1, -1, -1, -1, 104, -1, 10, + 11, -1, -1, -1, -1, 112, 113, 114, -1, -1, + 117, -1, 119, -1, -1, -1, -1, 125, -1, -1, + 128, -1, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 140, 142, 143, -1, 48, -1, 147, + 51, -1, 53, 54, 55, 56, 57, -1, -1, 60, + -1, -1, 63, -1, -1, -1, 67, -1, -1, -1, + -1, -1, -1, 74, -1, -1, -1, -1, -1, 80, + 81, 10, 11, 19, 20, 21, 22, -1, -1, 90, + -1, -1, -1, -1, -1, -1, 32, 98, 99, -1, + -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, + -1, 112, 113, 114, -1, -1, 117, -1, 119, 48, + -1, -1, 51, 124, 53, 54, 55, 56, 57, -1, + -1, 60, -1, -1, 63, -1, -1, -1, 67, 140, + -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, + -1, 80, 81, -1, -1, -1, -1, -1, -1, -1, + -1, 90, -1, -1, -1, -1, -1, -1, -1, 98, + 99, -1, -1, -1, -1, 104, -1, -1, -1, -1, + -1, -1, -1, 112, 113, 114, -1, -1, 117, -1, + 119, 15, 16, 17, 18, 19, 20, 21, 22, 135, + 136, 137, 138, 139, -1, 141, 142, 143, 32, -1, + -1, 140, 15, 16, 17, 18, 19, 20, 21, 22, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, - -1, -1, -1, -1, -1, 119, 31, -1, -1, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, 135, 136, 137, 15, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, - 31, 15, 16, 17, 18, 19, 20, 21, 22, -1, - -1, -1, -1, -1, -1, -1, -1, 31, 15, 16, + -1, -1, -1, -1, -1, -1, -1, 32, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, - -1, -1, -1, -1, 31, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, - 31, -1, -1, -1, -1, -1, -1, -1, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, 136, 137, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, - -1, -1, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, 137, 121, -1, 123, - 124, 125, 126, -1, -1, 129, 130, 131, 132, 133, - -1, 135, 136, 137, -1, -1, 123, 124, 125, 126, - -1, -1, 129, 130, 131, 132, 133, -1, 135, 136, - 137, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, 137, 17, 18, 19, - 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, - -1, 31, -1, -1, 50, -1, 52, 53, 54, -1, - -1, 124, 125, 126, -1, -1, 129, 130, 131, 132, - 133, -1, 135, 136, 137, 17, 18, 19, 20, 21, - 22, 77, 78, 79, -1, -1, -1, -1, -1, 31, - 17, 18, 19, 20, 21, 22, -1, -1, 94, 95, - -1, -1, -1, -1, 31, 17, 18, 19, 20, 21, - 22, -1, 108, -1, -1, -1, -1, 113, -1, 31, - 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, - -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, - 136, -1, -1, -1, -1, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, 135, 136, 137, 17, 18, + -1, -1, -1, -1, -1, 32, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, - -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, - 19, 20, 21, 22, 126, 127, 128, 129, 130, 131, - 132, 133, 31, 135, 136, 137, -1, -1, -1, -1, - 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, - 137, -1, -1, 125, 126, -1, -1, 129, 130, 131, - 132, 133, -1, 135, 136, 137, -1, -1, -1, 126, - -1, -1, 129, 130, 131, 132, 133, -1, 135, 136, - 137, 19, 20, 21, 22, -1, -1, -1, -1, -1, - -1, -1, -1, 31, -1, -1, -1, 50, -1, 52, - 53, 54, -1, -1, -1, -1, -1, -1, -1, -1, - 129, 130, 131, 132, 133, -1, 135, 136, 137, 10, - 11, -1, -1, -1, 77, 78, 79, -1, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, 137, 10, - 11, 94, 95, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 108, 47, -1, -1, 50, - 113, 52, 53, 54, 55, -1, -1, 58, -1, -1, - 61, -1, -1, -1, 65, -1, -1, -1, -1, 50, - 71, 52, 53, 54, 55, 56, 77, 78, 79, -1, - 61, 129, 130, 131, 132, 133, -1, 135, 136, 137, - 71, 10, 11, 94, 95, -1, 77, 78, 79, 100, - -1, -1, -1, -1, -1, 106, 107, 108, -1, -1, - 111, -1, 113, 94, 95, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 106, -1, 108, -1, -1, - 111, 50, 113, 52, 53, 54, -1, -1, -1, -1, - -1, 11, 61, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 71, -1, -1, -1, -1, -1, 77, 78, - 79, -1, -1, -1, -1, -1, -1, -1, -1, 50, - -1, 52, 53, 54, -1, 94, 95, 47, -1, -1, - 50, -1, 52, 53, 54, 55, 56, -1, 58, 108, - -1, 61, 111, -1, 113, 65, 77, 78, 79, -1, - -1, 71, -1, 11, -1, -1, -1, 77, 78, 79, - -1, -1, -1, 94, 95, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 94, 95, -1, 108, -1, -1, - 100, 50, 113, 52, 53, 54, 106, 107, 108, 47, - -1, 111, 50, 113, 52, 53, 54, 55, 56, -1, - 58, -1, 71, 61, 11, 136, -1, 65, 77, 78, - 79, -1, -1, 71, -1, 11, -1, -1, -1, 77, - 78, 79, -1, -1, -1, 94, 95, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 94, 95, -1, 108, - -1, -1, 100, 50, 113, 52, 53, 54, 106, 107, - 108, 47, -1, 111, 50, 113, 52, 53, 54, 55, - -1, -1, 58, -1, -1, 61, -1, -1, -1, 65, - 77, 78, 79, -1, -1, 71, -1, 11, -1, -1, - -1, 77, 78, 79, -1, -1, -1, 94, 95, -1, - -1, -1, -1, -1, -1, -1, 92, 11, 94, 95, - -1, 108, -1, -1, 100, -1, 113, -1, -1, -1, - 106, 107, 108, 47, -1, 111, 50, 113, 52, 53, - 54, 55, -1, -1, 58, -1, -1, 61, -1, -1, - -1, 65, -1, -1, -1, -1, 50, 71, 52, 53, - 54, 55, -1, 77, 78, 79, -1, 61, -1, -1, - -1, 65, -1, -1, -1, -1, -1, 71, -1, -1, - 94, 95, -1, 77, 78, 79, 100, -1, -1, -1, - -1, -1, 106, 107, 108, -1, -1, 111, -1, 113, - 94, 95, 48, 49, -1, -1, 100, -1, -1, -1, - -1, 57, 106, 107, 108, -1, -1, 111, 64, 113, - 66, 67, 68, 69, -1, -1, 72, -1, -1, -1, - 76, -1, -1, -1, 80, 81, 82, 83, 84, -1, - -1, -1, -1, 89, 90, 91, 92, -1, -1, -1, - -1, 97, 98, -1, -1, 101, -1, -1, -1, 105, - -1, -1, -1, 109, 110, -1, 112, 48, 49, -1, - -1, -1, -1, -1, 120, -1, 57, -1, -1, -1, - -1, -1, -1, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 139, -1, 76, -1, -1, -1, 80, - 81, 82, 83, 84, -1, -1, -1, -1, 89, 90, - 91, 92, -1, -1, -1, -1, 97, 98, -1, -1, - 101, -1, -1, -1, 105, -1, -1, -1, 109, 110, - -1, 112, 48, 49, -1, -1, -1, -1, -1, 120, - -1, 57, -1, -1, -1, -1, -1, -1, 64, -1, - 66, 67, 68, 69, -1, -1, 72, -1, 139, -1, - 76, -1, -1, -1, 80, 81, 82, 83, 84, -1, - -1, -1, -1, 89, 90, 91, 92, -1, -1, -1, - -1, 97, 98, -1, -1, 101, -1, -1, -1, 105, - -1, -1, -1, 109, 110, -1, 112, 48, 49, -1, - -1, -1, -1, -1, 120, -1, 57, -1, -1, -1, - -1, -1, -1, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 139, -1, 76, -1, -1, -1, 80, - 81, 82, 83, 84, -1, -1, -1, -1, 89, 90, - 91, 92, -1, -1, -1, -1, 97, 98, -1, -1, - 101, -1, -1, -1, 105, -1, -1, -1, 109, 110, - -1, 112, 48, 49, -1, -1, -1, -1, -1, 120, - -1, 57, -1, -1, -1, -1, -1, -1, 64, -1, - 66, 67, 68, 69, -1, -1, 72, -1, 139, -1, - 76, -1, -1, -1, 80, 81, 82, 83, 84, -1, - -1, -1, -1, 89, 90, 91, 92, -1, -1, -1, - -1, 97, 98, -1, -1, 101, -1, -1, -1, 105, - -1, -1, -1, 109, 110, -1, 112, 48, 49, -1, - -1, -1, -1, -1, 120, -1, 57, -1, -1, -1, - -1, -1, -1, 64, -1, 66, 67, 68, 69, -1, - -1, 72, -1, 139, -1, 76, -1, -1, -1, 80, - 81, 82, 83, 84, -1, -1, -1, -1, 89, 90, - 91, 92, -1, -1, -1, -1, 97, 98, -1, -1, - 101, -1, -1, -1, 105, -1, -1, -1, 109, 110, - -1, 112, 48, 49, -1, -1, -1, -1, -1, 120, - -1, 57, -1, -1, -1, -1, -1, -1, 64, -1, - 66, 67, 68, 69, -1, -1, 72, -1, 139, -1, - 76, -1, -1, -1, 80, 81, 82, 83, 84, -1, - -1, -1, -1, 89, 90, 91, 92, -1, -1, -1, - -1, 97, 98, -1, 50, 101, 52, 53, 54, 105, - 49, -1, -1, 109, 110, 61, 112, -1, 57, -1, - -1, -1, -1, -1, 120, 71, -1, 66, 67, 68, - -1, 77, 78, 79, -1, -1, -1, 76, -1, -1, - -1, -1, -1, 139, 83, -1, -1, -1, 94, 95, - -1, -1, -1, 92, -1, -1, -1, -1, 97, 48, - 49, -1, 108, -1, -1, -1, -1, 113, 57, -1, - -1, 110, -1, 112, -1, 64, -1, 66, 67, 68, - 69, -1, -1, 72, -1, -1, -1, 76, 127, -1, - 136, 80, 81, 82, 83, 84, -1, -1, -1, -1, - 89, 90, 91, 92, -1, -1, -1, -1, 97, 98, - -1, 50, 101, 52, 53, 54, 105, 49, -1, -1, - 109, 110, 61, 112, -1, 57, -1, -1, -1, -1, - -1, -1, 71, -1, 66, 67, 68, -1, 77, 78, - 79, -1, -1, -1, 76, 49, -1, -1, -1, -1, - -1, 83, 84, 57, -1, 94, 95, -1, -1, -1, - 92, -1, 66, 67, 68, 97, -1, 49, -1, 108, - -1, -1, 76, -1, 113, 57, -1, -1, 110, 83, - 112, -1, -1, -1, 66, 67, 68, -1, 92, -1, - -1, -1, -1, 97, 76, -1, -1, 101, -1, -1, - -1, 83, -1, -1, -1, -1, 110, -1, 112, -1, - 92, -1, -1, -1, -1, 97, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, - 112 + -1, -1, -1, 32, 15, 16, 17, 18, 19, 20, + 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, -1, -1, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, -1, 141, 142, 143, + 144, -1, -1, -1, -1, -1, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, -1, 141, 142, + 143, 144, -1, -1, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, -1, 141, 142, 143, 144, + -1, -1, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, -1, 141, 142, 143, 144, -1, -1, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, -1, 141, 142, 143, 144, 127, -1, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, -1, + 141, 142, 143, 15, 16, 17, 18, 19, 20, 21, + 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, 15, 16, 17, 18, 19, 20, 21, 22, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, + 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, 15, 16, + 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 32, 15, 16, 17, 18, + 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 32, 15, 16, 17, 18, 19, 20, + 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 32, -1, -1, 126, -1, -1, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, -1, 141, + 142, 143, 125, -1, -1, -1, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, -1, 141, 142, + 143, -1, 127, -1, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + -1, -1, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, -1, 141, 142, 143, -1, -1, -1, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 127, -1, 129, 130, + 131, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, 15, 16, 17, 18, 19, 20, 21, + 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, 16, 17, 18, 19, 20, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, + -1, -1, 17, 18, 19, 20, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 32, 17, 18, + 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, + 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 32, -1, 17, 18, 19, 20, + 21, 22, -1, -1, -1, -1, -1, 129, 130, 131, + 132, 32, -1, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, -1, -1, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, -1, 141, 142, 143, 11, + -1, -1, 14, -1, 16, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, -1, 141, 142, 143, -1, + -1, -1, 131, 132, 133, 134, 135, 136, 137, 138, + 139, -1, 141, 142, 143, -1, 48, -1, -1, 51, + -1, 53, 54, 55, 56, 57, -1, -1, 60, -1, + -1, 63, 130, 131, 132, 67, -1, 135, 136, 137, + 138, 139, 74, 141, 142, 143, -1, -1, 80, 81, + -1, 132, 133, 134, 135, 136, 137, 138, 139, -1, + 141, 142, 143, 95, -1, -1, 98, 99, -1, -1, + -1, -1, 104, 17, 18, 19, 20, 21, 22, -1, + 112, 113, 114, -1, -1, 117, -1, 119, 32, 17, + 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, + 132, -1, -1, -1, 32, 137, 17, 18, 19, 20, + 21, 22, -1, -1, -1, 17, 18, 19, 20, 21, + 22, 32, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, + 134, 135, 136, 137, 138, 139, -1, 141, 142, 143, + -1, -1, -1, 131, 132, 10, 11, 135, 136, 137, + 138, 139, -1, 141, 142, 143, -1, -1, -1, -1, + -1, 132, -1, -1, 135, 136, 137, 138, 139, -1, + 141, 142, 143, 135, 136, 137, 138, 139, -1, 141, + 142, 143, -1, 48, -1, -1, 51, -1, 53, 54, + 55, 56, -1, -1, -1, 60, -1, -1, 63, -1, + -1, -1, 67, -1, -1, -1, -1, -1, -1, 74, + -1, -1, -1, -1, -1, 80, 81, -1, 11, -1, + -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 98, 99, -1, -1, -1, -1, 104, + -1, -1, -1, -1, -1, -1, -1, 112, 113, 114, + -1, -1, 117, -1, 119, 48, -1, -1, 51, -1, + 53, 54, 55, 56, 57, -1, -1, 60, -1, -1, + 63, -1, -1, -1, 67, -1, -1, -1, -1, -1, + -1, 74, -1, -1, -1, -1, -1, 80, 81, -1, + 11, -1, -1, 14, -1, -1, 50, -1, -1, -1, + -1, -1, 95, -1, 58, 98, 99, -1, -1, -1, + -1, 104, -1, -1, 68, 69, 70, -1, -1, 112, + 113, 114, -1, -1, 117, 79, 119, 48, -1, -1, + 51, 85, 53, 54, 55, 56, 57, -1, -1, 60, + -1, 95, 63, -1, -1, -1, 67, 101, -1, -1, + -1, 105, 106, 74, -1, -1, -1, 11, -1, 80, + 81, -1, 116, -1, 118, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 95, -1, -1, 98, 99, 11, + -1, -1, -1, 104, -1, -1, -1, -1, -1, 143, + -1, 112, 113, 114, 48, -1, 117, 51, 119, 53, + 54, 55, 56, 57, -1, -1, 60, -1, -1, 63, + -1, -1, -1, 67, -1, -1, 48, -1, -1, 51, + 74, 53, 54, 55, 56, 57, 80, 81, 60, -1, + -1, 63, -1, -1, -1, 67, -1, -1, -1, -1, + -1, 95, 74, -1, 98, 99, 11, -1, 80, 81, + 104, -1, -1, -1, -1, -1, -1, -1, 112, 113, + 114, -1, -1, 117, -1, 119, 98, 99, -1, -1, + -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, + 112, 113, 114, 48, -1, 117, 51, 119, 53, 54, + 55, 56, 57, -1, -1, 60, -1, -1, 63, -1, + -1, 11, 67, -1, -1, -1, -1, -1, -1, 74, + -1, -1, -1, -1, -1, 80, 81, -1, -1, -1, + -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 98, 99, -1, -1, -1, 48, 104, + -1, 51, -1, 53, 54, 55, 56, 112, 113, 114, + 60, -1, 117, 63, 119, -1, -1, 67, -1, -1, + 48, -1, -1, 51, 74, 53, 54, 55, 56, 57, + 80, 81, 60, -1, -1, 63, -1, -1, 11, 67, + -1, -1, -1, -1, -1, 95, 74, -1, 98, 99, + -1, -1, 80, 81, 104, -1, -1, -1, -1, -1, + 11, -1, 112, 113, 114, -1, -1, 117, -1, 119, + 98, 99, -1, -1, -1, 48, 104, -1, 51, -1, + 53, 54, 55, 56, 112, 113, 114, 60, -1, 117, + 63, 119, -1, -1, 67, -1, -1, 48, -1, -1, + 51, 74, 53, 54, 55, 56, -1, 80, 81, 60, + -1, -1, 63, -1, -1, -1, 67, -1, -1, -1, + -1, -1, -1, 74, -1, 98, 99, -1, -1, 80, + 81, 104, -1, -1, -1, -1, -1, -1, -1, 112, + 113, 114, -1, -1, 117, -1, 119, 98, 99, -1, + 49, 50, -1, 104, -1, -1, -1, -1, -1, 58, + -1, 112, 113, 114, -1, -1, 117, 66, 119, 68, + 69, 70, 71, -1, -1, -1, 75, -1, -1, -1, + 79, -1, -1, 82, 83, 84, 85, 86, -1, -1, + -1, -1, -1, 92, 93, 94, 95, -1, -1, -1, + -1, -1, 101, 102, 49, 50, 105, 106, -1, -1, + -1, 110, -1, 58, -1, -1, 115, 116, -1, 118, + -1, 66, -1, 68, 69, 70, 71, 126, -1, -1, + 75, -1, -1, -1, 79, -1, -1, 82, 83, 84, + 85, 86, -1, -1, 143, -1, 145, 92, 93, 94, + 95, -1, -1, -1, -1, -1, 101, 102, 49, 50, + 105, 106, -1, -1, -1, 110, -1, 58, -1, -1, + 115, 116, -1, 118, -1, 66, -1, 68, 69, 70, + 71, 126, -1, -1, 75, -1, -1, -1, 79, -1, + -1, 82, 83, 84, 85, 86, -1, -1, 143, -1, + 145, 92, 93, 94, 95, -1, -1, -1, -1, -1, + 101, 102, 49, 50, 105, 106, -1, -1, -1, 110, + -1, 58, -1, -1, 115, 116, -1, 118, -1, 66, + -1, 68, 69, 70, 71, 126, -1, -1, 75, -1, + -1, -1, 79, -1, -1, 82, 83, 84, 85, 86, + -1, -1, 143, -1, 145, 92, 93, 94, 95, -1, + -1, -1, -1, -1, 101, 102, 49, 50, 105, 106, + -1, -1, -1, 110, -1, 58, -1, -1, 115, 116, + -1, 118, -1, 66, -1, 68, 69, 70, 71, 126, + -1, -1, 75, -1, -1, -1, 79, -1, -1, 82, + 83, 84, 85, 86, -1, -1, 143, -1, 145, 92, + 93, 94, 95, -1, -1, -1, -1, -1, 101, 102, + 49, 50, 105, 106, -1, -1, -1, 110, -1, 58, + -1, -1, 115, 116, -1, 118, -1, 66, -1, 68, + 69, 70, 71, 126, -1, -1, 75, -1, -1, -1, + 79, -1, -1, 82, 83, 84, 85, 86, -1, -1, + 143, -1, 145, 92, 93, 94, 95, -1, -1, -1, + -1, -1, 101, 102, 49, 50, 105, 106, -1, -1, + -1, 110, -1, 58, -1, -1, 115, 116, -1, 118, + -1, 66, -1, 68, 69, 70, 71, 126, -1, -1, + 75, -1, -1, -1, 79, -1, -1, 82, 83, 84, + 85, 86, -1, -1, 143, -1, 145, 92, 93, 94, + 95, -1, -1, -1, -1, -1, 101, 102, 49, 50, + 105, 106, -1, -1, -1, 110, -1, 58, -1, -1, + 115, 116, -1, 118, -1, 66, -1, 68, 69, 70, + 71, 126, -1, -1, 75, -1, -1, -1, 79, -1, + -1, 82, 83, 84, 85, 86, -1, -1, 143, -1, + 145, 92, 93, 94, 95, -1, -1, -1, -1, -1, + 101, 102, 50, -1, 105, 106, -1, -1, -1, 110, + 58, -1, -1, -1, 115, 116, 50, 118, -1, -1, + 68, 69, 70, -1, 58, -1, -1, -1, -1, -1, + -1, 79, -1, -1, 68, 69, 70, 85, 86, -1, + -1, -1, 143, -1, -1, 79, 50, 95, -1, -1, + -1, 85, -1, 101, 58, -1, -1, -1, 106, -1, + -1, 95, -1, -1, 68, 69, 70, 101, 116, -1, + 118, -1, 106, -1, -1, 79, -1, -1, -1, -1, + -1, 85, 116, -1, 118, -1, -1, -1, -1, -1, + -1, 95, -1, -1, -1, 143, -1, 101, -1, 133, + -1, -1, 106, -1, -1, -1, -1, -1, -1, 143, + -1, -1, 116, -1, 118, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 143 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_uint16 yystos[] = { - 0, 115, 116, 117, 143, 144, 236, 3, 4, 5, - 6, 8, 9, 10, 11, 46, 50, 52, 53, 54, - 61, 62, 70, 71, 77, 78, 85, 87, 94, 95, - 96, 99, 103, 108, 113, 126, 130, 131, 134, 136, - 140, 229, 230, 235, 11, 47, 50, 52, 53, 54, - 55, 56, 58, 61, 65, 71, 77, 78, 79, 94, - 95, 100, 106, 107, 108, 111, 113, 194, 198, 199, - 201, 206, 207, 211, 212, 217, 218, 219, 220, 0, - 48, 49, 57, 64, 66, 67, 68, 69, 72, 76, - 80, 81, 82, 83, 84, 89, 90, 91, 92, 97, - 98, 101, 105, 109, 110, 112, 120, 147, 149, 150, - 152, 153, 154, 175, 213, 216, 236, 136, 136, 136, - 136, 136, 136, 136, 127, 136, 136, 136, 11, 106, - 196, 211, 212, 217, 136, 136, 136, 127, 136, 136, - 229, 229, 229, 229, 11, 50, 52, 53, 54, 61, - 71, 77, 78, 94, 95, 108, 113, 198, 227, 229, - 229, 15, 16, 17, 18, 19, 20, 21, 22, 31, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 135, 136, 137, 6, 8, 194, 136, 61, 71, - 78, 218, 78, 218, 218, 10, 11, 234, 218, 12, - 16, 56, 112, 126, 131, 136, 193, 236, 118, 121, - 234, 118, 234, 76, 152, 152, 152, 6, 152, 152, - 121, 151, 84, 152, 136, 136, 136, 152, 118, 234, - 121, 121, 121, 152, 152, 136, 152, 153, 176, 152, - 159, 84, 234, 152, 152, 10, 11, 47, 56, 58, - 88, 106, 118, 134, 164, 195, 197, 199, 201, 206, - 211, 212, 217, 226, 227, 236, 198, 226, 226, 226, - 226, 226, 198, 226, 226, 226, 234, 136, 234, 234, - 226, 226, 198, 198, 226, 226, 138, 119, 138, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 138, 227, 229, 193, 229, 71, 131, 193, 193, 193, - 193, 193, 193, 137, 209, 210, 236, 11, 208, 218, - 121, 200, 202, 152, 149, 118, 234, 10, 10, 10, - 144, 118, 229, 127, 56, 164, 195, 197, 234, 136, - 136, 10, 11, 197, 136, 56, 194, 234, 148, 234, - 118, 120, 121, 122, 187, 120, 155, 234, 234, 138, - 138, 138, 138, 138, 138, 138, 128, 138, 138, 138, - 226, 138, 138, 138, 128, 138, 138, 229, 229, 121, - 138, 141, 138, 193, 138, 225, 229, 236, 234, 139, - 208, 144, 121, 203, 204, 236, 144, 118, 119, 119, - 119, 139, 214, 119, 138, 10, 11, 55, 56, 106, - 177, 178, 179, 180, 217, 236, 197, 187, 160, 165, - 12, 131, 166, 156, 229, 194, 10, 11, 12, 16, - 56, 112, 126, 131, 191, 236, 144, 136, 221, 222, - 145, 146, 234, 59, 60, 118, 229, 12, 16, 56, - 88, 112, 126, 131, 136, 157, 181, 234, 121, 136, - 138, 136, 229, 136, 141, 119, 122, 139, 89, 90, - 91, 110, 205, 118, 119, 139, 215, 10, 10, 10, - 144, 235, 234, 180, 234, 128, 119, 10, 11, 12, - 16, 56, 112, 126, 131, 136, 192, 236, 161, 162, - 181, 3, 4, 5, 9, 10, 14, 46, 56, 62, - 70, 85, 87, 92, 96, 99, 103, 126, 130, 134, - 136, 140, 183, 184, 190, 194, 231, 232, 235, 236, - 131, 181, 183, 158, 181, 138, 191, 131, 191, 191, - 191, 191, 191, 136, 137, 139, 167, 139, 223, 236, - 118, 119, 136, 120, 120, 118, 188, 189, 229, 236, - 120, 131, 181, 181, 6, 15, 16, 17, 18, 19, - 20, 21, 22, 31, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 60, 85, 119, 122, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 136, 137, 140, 173, 181, 181, 181, 181, 121, - 122, 136, 137, 186, 187, 236, 208, 227, 227, 183, - 229, 106, 110, 212, 233, 234, 110, 233, 110, 233, - 89, 90, 91, 144, 205, 144, 119, 138, 119, 119, - 139, 138, 122, 192, 122, 153, 174, 175, 179, 131, - 192, 192, 192, 192, 192, 192, 122, 137, 185, 236, - 163, 181, 186, 187, 136, 92, 194, 127, 196, 190, - 136, 127, 229, 229, 229, 198, 227, 229, 138, 14, - 119, 192, 15, 16, 17, 18, 19, 20, 21, 22, - 31, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 135, 136, 137, 181, 121, 138, 138, 186, - 187, 136, 191, 170, 225, 183, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 31, 32, 33, + 0, 121, 122, 123, 149, 150, 256, 3, 4, 5, + 6, 8, 9, 10, 11, 47, 51, 53, 54, 55, + 59, 63, 64, 72, 73, 74, 80, 81, 87, 89, + 91, 96, 98, 99, 100, 103, 108, 111, 114, 119, + 132, 135, 136, 137, 140, 142, 143, 147, 246, 247, + 255, 11, 48, 51, 53, 54, 55, 56, 57, 60, + 63, 67, 74, 80, 81, 98, 99, 104, 112, 113, + 114, 117, 119, 210, 214, 215, 217, 223, 224, 228, + 229, 234, 235, 236, 237, 0, 49, 50, 58, 66, + 68, 69, 70, 71, 75, 79, 82, 83, 84, 85, + 86, 92, 93, 94, 95, 101, 102, 105, 106, 110, + 115, 116, 118, 126, 143, 153, 155, 156, 158, 161, + 162, 184, 230, 233, 256, 142, 142, 142, 142, 142, + 142, 133, 142, 133, 142, 142, 142, 11, 48, 60, + 112, 212, 228, 229, 234, 133, 142, 142, 142, 133, + 142, 142, 142, 246, 246, 246, 246, 246, 11, 51, + 53, 54, 55, 63, 74, 80, 81, 98, 99, 114, + 119, 214, 244, 246, 10, 11, 73, 91, 128, 132, + 250, 251, 253, 256, 246, 15, 16, 17, 18, 19, + 20, 21, 22, 32, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 141, 142, 143, 6, 8, + 210, 142, 63, 81, 235, 235, 235, 253, 235, 12, + 16, 57, 118, 132, 137, 142, 208, 209, 256, 124, + 10, 11, 91, 127, 254, 10, 11, 91, 124, 253, + 254, 79, 158, 158, 158, 6, 158, 158, 127, 157, + 86, 158, 142, 142, 142, 158, 124, 253, 127, 127, + 127, 158, 158, 142, 158, 161, 185, 158, 158, 167, + 86, 253, 158, 158, 143, 10, 11, 48, 57, 60, + 90, 112, 124, 140, 172, 175, 211, 213, 215, 217, + 223, 228, 229, 234, 243, 244, 256, 214, 243, 243, + 243, 243, 214, 243, 214, 243, 243, 243, 142, 253, + 142, 253, 253, 214, 243, 243, 214, 214, 214, 246, + 243, 243, 144, 125, 144, 253, 146, 125, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 144, + 244, 246, 209, 246, 137, 12, 16, 57, 118, 132, + 137, 208, 256, 208, 209, 208, 209, 208, 208, 14, + 16, 57, 95, 132, 137, 194, 195, 204, 210, 256, + 143, 226, 227, 256, 11, 225, 235, 127, 216, 218, + 158, 155, 124, 253, 253, 253, 253, 150, 124, 246, + 133, 10, 11, 57, 175, 211, 213, 253, 126, 128, + 159, 160, 253, 142, 142, 10, 11, 213, 142, 57, + 210, 253, 154, 253, 124, 126, 127, 128, 200, 124, + 126, 128, 201, 126, 163, 253, 254, 253, 144, 144, + 144, 144, 144, 144, 134, 144, 134, 144, 144, 144, + 246, 243, 134, 144, 144, 144, 134, 144, 144, 144, + 144, 246, 246, 57, 142, 181, 256, 250, 127, 144, + 146, 144, 208, 137, 208, 208, 208, 208, 208, 143, + 208, 95, 210, 204, 208, 208, 144, 14, 125, 12, + 16, 57, 118, 132, 137, 142, 207, 254, 256, 242, + 246, 256, 253, 145, 225, 150, 73, 219, 256, 150, + 124, 125, 125, 125, 145, 231, 125, 144, 10, 11, + 56, 57, 112, 186, 187, 188, 189, 234, 256, 142, + 213, 201, 168, 126, 214, 146, 125, 142, 173, 12, + 137, 174, 164, 246, 210, 12, 16, 57, 118, 132, + 137, 206, 254, 256, 150, 142, 238, 239, 151, 152, + 253, 61, 62, 238, 61, 62, 124, 246, 12, 16, + 57, 90, 118, 132, 137, 142, 165, 190, 192, 254, + 127, 142, 142, 144, 144, 142, 142, 194, 32, 73, + 85, 88, 91, 107, 193, 256, 246, 208, 242, 144, + 210, 207, 144, 144, 181, 14, 204, 137, 207, 207, + 207, 207, 207, 207, 128, 143, 199, 256, 146, 125, + 128, 145, 127, 220, 221, 256, 145, 232, 10, 10, + 10, 150, 255, 126, 253, 189, 253, 134, 125, 207, + 169, 170, 192, 126, 146, 159, 3, 4, 5, 9, + 10, 14, 47, 59, 64, 72, 73, 87, 89, 91, + 96, 100, 103, 108, 111, 132, 135, 136, 140, 142, + 147, 196, 197, 204, 205, 248, 249, 255, 256, 194, + 137, 190, 194, 166, 192, 144, 206, 137, 206, 206, + 206, 206, 206, 142, 143, 145, 176, 145, 240, 256, + 124, 125, 124, 142, 126, 126, 145, 126, 126, 124, + 202, 203, 246, 256, 126, 137, 190, 190, 6, 15, + 16, 17, 18, 19, 20, 21, 22, 32, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 62, 87, 125, 128, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 142, 143, 147, 182, 190, + 190, 190, 190, 127, 142, 143, 193, 128, 199, 201, + 225, 244, 244, 244, 244, 144, 57, 212, 142, 124, + 146, 142, 207, 199, 142, 142, 193, 207, 144, 246, + 242, 246, 92, 93, 94, 112, 116, 222, 229, 252, + 253, 124, 125, 150, 125, 144, 125, 125, 145, 144, + 128, 207, 128, 161, 183, 184, 188, 128, 198, 256, + 171, 192, 199, 201, 158, 142, 133, 133, 212, 133, + 142, 133, 142, 246, 246, 246, 246, 214, 244, 246, + 144, 14, 125, 15, 16, 17, 18, 19, 20, 21, + 22, 32, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 141, 142, 143, 144, 190, 144, 144, + 199, 201, 142, 206, 179, 242, 194, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 65, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 83, 84, 85, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 140, 141, 224, 221, 146, 226, 188, 139, - 119, 181, 10, 138, 141, 138, 4, 229, 182, 225, - 119, 138, 138, 138, 119, 234, 233, 234, 233, 233, - 233, 233, 233, 139, 139, 10, 120, 10, 10, 198, - 185, 198, 192, 138, 46, 62, 96, 99, 126, 130, - 131, 134, 136, 140, 228, 230, 225, 186, 187, 119, - 198, 194, 192, 198, 136, 198, 198, 138, 138, 56, - 172, 236, 14, 190, 122, 186, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 138, 227, 229, - 138, 136, 172, 119, 171, 183, 141, 138, 223, 139, - 138, 139, 118, 229, 183, 141, 157, 172, 138, 119, - 138, 138, 136, 136, 127, 136, 127, 228, 228, 228, - 228, 198, 227, 228, 15, 16, 17, 18, 19, 20, - 21, 22, 31, 123, 124, 125, 126, 129, 130, 131, - 132, 133, 135, 136, 137, 141, 119, 162, 138, 192, - 186, 128, 226, 138, 128, 229, 86, 102, 229, 121, - 138, 141, 136, 168, 158, 183, 138, 172, 139, 188, - 138, 120, 10, 120, 120, 183, 198, 198, 198, 198, - 138, 138, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 138, 227, 229, 163, 186, 136, 138, 136, 136, - 229, 169, 183, 138, 172, 139, 172, 119, 138, 138, - 128, 138, 128, 228, 121, 138, 141, 227, 227, 138, - 234, 183, 138, 172, 10, 172, 136, 136, 228, 138, - 138, 138, 138, 172, 138, 227, 227, 172, 120, 138, - 138 + 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 85, 86, 87, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, + 147, 241, 238, 152, 243, 243, 202, 145, 125, 190, + 10, 144, 146, 144, 4, 191, 242, 246, 125, 144, + 144, 144, 144, 181, 212, 209, 144, 253, 238, 194, + 199, 194, 194, 142, 146, 125, 116, 252, 116, 252, + 116, 252, 253, 92, 93, 94, 253, 150, 222, 145, + 10, 126, 10, 10, 126, 214, 198, 214, 47, 59, + 64, 96, 100, 103, 132, 135, 136, 137, 140, 142, + 147, 245, 247, 199, 201, 125, 214, 214, 214, 142, + 214, 214, 214, 214, 246, 144, 144, 14, 205, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 144, 244, 246, 181, 144, 142, 181, 125, 180, 194, + 146, 144, 240, 145, 145, 144, 145, 124, 246, 196, + 146, 165, 193, 209, 144, 145, 144, 144, 144, 194, + 252, 252, 252, 252, 252, 252, 145, 144, 125, 144, + 144, 142, 133, 133, 133, 142, 133, 245, 245, 245, + 245, 245, 214, 244, 245, 15, 16, 17, 18, 19, + 20, 21, 22, 32, 129, 130, 131, 132, 135, 136, + 137, 138, 139, 141, 142, 143, 125, 170, 144, 134, + 134, 243, 134, 144, 134, 144, 144, 246, 127, 144, + 146, 142, 177, 166, 194, 144, 181, 145, 202, 144, + 124, 181, 181, 181, 144, 126, 10, 126, 126, 214, + 214, 214, 214, 214, 214, 144, 144, 245, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 245, 245, 144, 244, 246, 171, + 142, 142, 144, 142, 142, 246, 178, 194, 144, 181, + 145, 181, 238, 193, 193, 193, 181, 125, 144, 134, + 134, 134, 144, 134, 245, 127, 144, 146, 244, 244, + 244, 244, 194, 144, 181, 145, 10, 142, 142, 142, + 142, 245, 144, 144, 144, 144, 144, 181, 144, 244, + 244, 244, 244, 181, 193, 126, 144, 144, 144, 144, + 193 }; #define yyerrok (yyerrstatus = 0) @@ -3662,7 +3923,7 @@ yyreduce: { case 3: /* Line 1792 of yacc.c */ -#line 408 "dtool/src/cppparser/cppBison.yxx" +#line 423 "dtool/src/cppparser/cppBison.yxx" { current_expr = (yyvsp[(2) - (2)].u.expr); } @@ -3670,7 +3931,7 @@ yyreduce: case 4: /* Line 1792 of yacc.c */ -#line 412 "dtool/src/cppparser/cppBison.yxx" +#line 427 "dtool/src/cppparser/cppBison.yxx" { current_type = (yyvsp[(2) - (2)].u.type); } @@ -3678,7 +3939,7 @@ yyreduce: case 10: /* Line 1792 of yacc.c */ -#line 430 "dtool/src/cppparser/cppBison.yxx" +#line 445 "dtool/src/cppparser/cppBison.yxx" { delete (yyvsp[(3) - (4)].u.expr); } @@ -3686,24 +3947,32 @@ yyreduce: case 11: /* Line 1792 of yacc.c */ -#line 442 "dtool/src/cppparser/cppBison.yxx" +#line 449 "dtool/src/cppparser/cppBison.yxx" + { + delete (yyvsp[(3) - (4)].u.expr); +} + break; + + case 12: +/* Line 1792 of yacc.c */ +#line 461 "dtool/src/cppparser/cppBison.yxx" { push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) | ((yyvsp[(1) - (2)].u.integer) & CPPInstance::SC_c_binding)); } break; - case 12: + case 13: /* Line 1792 of yacc.c */ -#line 447 "dtool/src/cppparser/cppBison.yxx" +#line 466 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } break; - case 20: + case 21: /* Line 1792 of yacc.c */ -#line 461 "dtool/src/cppparser/cppBison.yxx" +#line 480 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); @@ -3718,9 +3987,9 @@ yyreduce: } break; - case 21: + case 22: /* Line 1792 of yacc.c */ -#line 474 "dtool/src/cppparser/cppBison.yxx" +#line 493 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 1) { yyerror("Unmatched __end_publish", (yylsp[(1) - (1)])); @@ -3731,17 +4000,17 @@ yyreduce: } break; - case 22: + case 23: /* Line 1792 of yacc.c */ -#line 483 "dtool/src/cppparser/cppBison.yxx" +#line 502 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_published); } break; - case 23: + case 24: /* Line 1792 of yacc.c */ -#line 487 "dtool/src/cppparser/cppBison.yxx" +#line 506 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); @@ -3751,25 +4020,25 @@ yyreduce: } break; - case 24: + case 25: /* Line 1792 of yacc.c */ -#line 495 "dtool/src/cppparser/cppBison.yxx" +#line 514 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_protected); } break; - case 25: + case 26: /* Line 1792 of yacc.c */ -#line 499 "dtool/src/cppparser/cppBison.yxx" +#line 518 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_private); } break; - case 26: + case 27: /* Line 1792 of yacc.c */ -#line 503 "dtool/src/cppparser/cppBison.yxx" +#line 522 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[(5) - (7)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); @@ -3782,9 +4051,9 @@ yyreduce: } break; - case 27: + case 28: /* Line 1792 of yacc.c */ -#line 514 "dtool/src/cppparser/cppBison.yxx" +#line 533 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { @@ -3807,9 +4076,9 @@ yyreduce: } break; - case 28: + case 29: /* Line 1792 of yacc.c */ -#line 535 "dtool/src/cppparser/cppBison.yxx" +#line 554 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *hasser = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { @@ -3833,9 +4102,9 @@ yyreduce: } break; - case 29: + case 30: /* Line 1792 of yacc.c */ -#line 557 "dtool/src/cppparser/cppBison.yxx" +#line 576 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *hasser = (yyvsp[(5) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { @@ -3870,9 +4139,9 @@ yyreduce: } break; - case 30: + case 31: /* Line 1792 of yacc.c */ -#line 590 "dtool/src/cppparser/cppBison.yxx" +#line 609 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *length_getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { @@ -3896,38 +4165,38 @@ yyreduce: } break; - case 31: -/* Line 1792 of yacc.c */ -#line 612 "dtool/src/cppparser/cppBison.yxx" - { - CPPExpression::Result result = (yyvsp[(3) - (6)].u.expr)->evaluate(); - if (result._type == CPPExpression::RT_error) { - yywarning("static_assert requires a constant expression", (yylsp[(3) - (6)])); - } else if (!result.as_boolean()) { - stringstream str; - str << *(yyvsp[(5) - (6)].u.expr); - yywarning("static_assert failed: " + str.str(), (yylsp[(3) - (6)])); - } -} - break; - case 32: /* Line 1792 of yacc.c */ -#line 623 "dtool/src/cppparser/cppBison.yxx" +#line 631 "dtool/src/cppparser/cppBison.yxx" { - // This alternative version of static_assert was introduced in C++17. - CPPExpression::Result result = (yyvsp[(3) - (4)].u.expr)->evaluate(); + CPPExpression::Result result = (yyvsp[(3) - (7)].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { - yywarning("static_assert requires a constant expression", (yylsp[(3) - (4)])); + yywarning("static_assert requires a constant expression", (yylsp[(3) - (7)])); } else if (!result.as_boolean()) { - yywarning("static_assert failed", (yylsp[(3) - (4)])); + stringstream str; + str << *(yyvsp[(5) - (7)].u.expr); + yywarning("static_assert failed: " + str.str(), (yylsp[(3) - (7)])); } } break; case 33: /* Line 1792 of yacc.c */ -#line 636 "dtool/src/cppparser/cppBison.yxx" +#line 642 "dtool/src/cppparser/cppBison.yxx" + { + // This alternative version of static_assert was introduced in C++17. + CPPExpression::Result result = (yyvsp[(3) - (5)].u.expr)->evaluate(); + if (result._type == CPPExpression::RT_error) { + yywarning("static_assert requires a constant expression", (yylsp[(3) - (5)])); + } else if (!result.as_boolean()) { + yywarning("static_assert failed", (yylsp[(3) - (5)])); + } +} + break; + + case 34: +/* Line 1792 of yacc.c */ +#line 655 "dtool/src/cppparser/cppBison.yxx" { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); @@ -3935,34 +4204,34 @@ yyreduce: } break; - case 34: + case 35: /* Line 1792 of yacc.c */ -#line 642 "dtool/src/cppparser/cppBison.yxx" +#line 661 "dtool/src/cppparser/cppBison.yxx" { delete current_scope; pop_scope(); } break; - case 35: + case 36: /* Line 1792 of yacc.c */ -#line 651 "dtool/src/cppparser/cppBison.yxx" +#line 670 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = 0; } break; - case 36: + case 37: /* Line 1792 of yacc.c */ -#line 655 "dtool/src/cppparser/cppBison.yxx" +#line 674 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_extern; } break; - case 37: + case 38: /* Line 1792 of yacc.c */ -#line 659 "dtool/src/cppparser/cppBison.yxx" +#line 678 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(3) - (3)].u.integer) | (int)CPPInstance::SC_extern; if ((yyvsp[(2) - (3)].str) == "C") { @@ -3975,97 +4244,114 @@ yyreduce: } break; - case 38: + case 39: /* Line 1792 of yacc.c */ -#line 670 "dtool/src/cppparser/cppBison.yxx" +#line 689 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_static; } break; - case 39: + case 40: /* Line 1792 of yacc.c */ -#line 674 "dtool/src/cppparser/cppBison.yxx" +#line 693 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_inline; } break; - case 40: + case 41: /* Line 1792 of yacc.c */ -#line 678 "dtool/src/cppparser/cppBison.yxx" +#line 697 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_virtual; } break; - case 41: + case 42: /* Line 1792 of yacc.c */ -#line 682 "dtool/src/cppparser/cppBison.yxx" +#line 701 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_explicit; } break; - case 42: + case 43: /* Line 1792 of yacc.c */ -#line 686 "dtool/src/cppparser/cppBison.yxx" +#line 705 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_register; } break; - case 43: + case 44: /* Line 1792 of yacc.c */ -#line 690 "dtool/src/cppparser/cppBison.yxx" +#line 709 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_volatile; } break; - case 44: + case 45: /* Line 1792 of yacc.c */ -#line 694 "dtool/src/cppparser/cppBison.yxx" +#line 713 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_mutable; } break; - case 45: + case 46: /* Line 1792 of yacc.c */ -#line 698 "dtool/src/cppparser/cppBison.yxx" +#line 717 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_constexpr; } break; - case 46: + case 47: /* Line 1792 of yacc.c */ -#line 702 "dtool/src/cppparser/cppBison.yxx" +#line 721 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_blocking; } break; - case 47: + case 48: /* Line 1792 of yacc.c */ -#line 706 "dtool/src/cppparser/cppBison.yxx" +#line 725 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_extension; } break; - case 48: + case 49: /* Line 1792 of yacc.c */ -#line 713 "dtool/src/cppparser/cppBison.yxx" +#line 729 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_thread_local; +} + break; + + case 50: +/* Line 1792 of yacc.c */ +#line 733 "dtool/src/cppparser/cppBison.yxx" + { + // Ignore attribute specifiers for now. + (yyval.u.integer) = (yyvsp[(6) - (6)].u.integer); +} + break; + + case 55: +/* Line 1792 of yacc.c */ +#line 751 "dtool/src/cppparser/cppBison.yxx" { /* multiple_var_declaration adds itself to the scope. */ } break; - case 49: + case 56: /* Line 1792 of yacc.c */ -#line 717 "dtool/src/cppparser/cppBison.yxx" +#line 755 "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 @@ -4076,9 +4362,9 @@ yyreduce: } break; - case 50: + case 57: /* Line 1792 of yacc.c */ -#line 726 "dtool/src/cppparser/cppBison.yxx" +#line 764 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[(2) - (3)].u.instance) != (CPPInstance *)NULL) { (yyvsp[(2) - (3)].u.instance)->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); @@ -4088,105 +4374,21 @@ yyreduce: } break; - case 51: -/* Line 1792 of yacc.c */ -#line 737 "dtool/src/cppparser/cppBison.yxx" - { - // We don't need to push/pop type, because we can't nest - // multiple_var_declarations. - if ((yyvsp[(2) - (2)].u.decl)->as_type_declaration()) { - current_type = (yyvsp[(2) - (2)].u.decl)->as_type_declaration()->_type; - } else { - current_type = (yyvsp[(2) - (2)].u.decl)->as_type(); - } - push_storage_class((yyvsp[(1) - (2)].u.integer)); -} - break; - - case 52: -/* Line 1792 of yacc.c */ -#line 748 "dtool/src/cppparser/cppBison.yxx" - { - pop_storage_class(); -} - break; - - case 53: -/* Line 1792 of yacc.c */ -#line 752 "dtool/src/cppparser/cppBison.yxx" - { - // We don't need to push/pop type, because we can't nest - // multiple_var_declarations. - if ((yyvsp[(3) - (3)].u.decl)->as_type_declaration()) { - current_type = (yyvsp[(3) - (3)].u.decl)->as_type_declaration()->_type; - } else { - current_type = (yyvsp[(3) - (3)].u.decl)->as_type(); - } - push_storage_class((yyvsp[(1) - (3)].u.integer)); -} - break; - - case 54: -/* Line 1792 of yacc.c */ -#line 763 "dtool/src/cppparser/cppBison.yxx" - { - pop_storage_class(); -} - break; - - case 55: -/* Line 1792 of yacc.c */ -#line 774 "dtool/src/cppparser/cppBison.yxx" - { - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (2)].u.inst_ident), - current_storage_class, - (yylsp[(1) - (2)]).file); - inst->set_initializer((yyvsp[(2) - (2)].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (2)])); -} - break; - - case 56: -/* Line 1792 of yacc.c */ -#line 782 "dtool/src/cppparser/cppBison.yxx" - { - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (4)].u.inst_ident), - current_storage_class, - (yylsp[(1) - (4)]).file); - inst->set_initializer((yyvsp[(2) - (4)].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (4)])); -} - break; - - case 57: -/* Line 1792 of yacc.c */ -#line 793 "dtool/src/cppparser/cppBison.yxx" - { - (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (2)].u.inst_ident), - current_storage_class, - (yylsp[(1) - (2)]).file); - inst->set_initializer((yyvsp[(2) - (2)].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (2)])); -} - break; - case 58: /* Line 1792 of yacc.c */ -#line 802 "dtool/src/cppparser/cppBison.yxx" +#line 772 "dtool/src/cppparser/cppBison.yxx" { - (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (4)].u.inst_ident), - current_storage_class, - (yylsp[(1) - (4)]).file); - inst->set_initializer((yyvsp[(2) - (4)].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (4)])); + if ((yyvsp[(2) - (3)].u.instance) != (CPPInstance *)NULL) { + (yyvsp[(2) - (3)].u.instance)->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); + current_scope->add_declaration((yyvsp[(2) - (3)].u.instance), global_scope, current_lexer, (yylsp[(2) - (3)])); + (yyvsp[(2) - (3)].u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); + } } break; case 59: /* Line 1792 of yacc.c */ -#line 815 "dtool/src/cppparser/cppBison.yxx" +#line 783 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. @@ -4201,7 +4403,7 @@ yyreduce: case 60: /* Line 1792 of yacc.c */ -#line 826 "dtool/src/cppparser/cppBison.yxx" +#line 794 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } @@ -4209,7 +4411,7 @@ yyreduce: case 61: /* Line 1792 of yacc.c */ -#line 830 "dtool/src/cppparser/cppBison.yxx" +#line 798 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. @@ -4224,7 +4426,7 @@ yyreduce: case 62: /* Line 1792 of yacc.c */ -#line 841 "dtool/src/cppparser/cppBison.yxx" +#line 809 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } @@ -4232,7 +4434,103 @@ yyreduce: case 63: /* Line 1792 of yacc.c */ -#line 845 "dtool/src/cppparser/cppBison.yxx" +#line 820 "dtool/src/cppparser/cppBison.yxx" + { + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (2)].u.inst_ident), + current_storage_class, + (yylsp[(1) - (2)]).file); + inst->set_initializer((yyvsp[(2) - (2)].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (2)])); +} + break; + + case 64: +/* Line 1792 of yacc.c */ +#line 828 "dtool/src/cppparser/cppBison.yxx" + { + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (4)].u.inst_ident), + current_storage_class, + (yylsp[(1) - (4)]).file); + inst->set_initializer((yyvsp[(2) - (4)].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (4)])); +} + break; + + case 65: +/* Line 1792 of yacc.c */ +#line 839 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (2)].u.inst_ident), + current_storage_class, + (yylsp[(1) - (2)]).file); + inst->set_initializer((yyvsp[(2) - (2)].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (2)])); +} + break; + + case 66: +/* Line 1792 of yacc.c */ +#line 848 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (4)].u.inst_ident), + current_storage_class, + (yylsp[(1) - (4)]).file); + inst->set_initializer((yyvsp[(2) - (4)].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (4)])); +} + break; + + case 67: +/* Line 1792 of yacc.c */ +#line 861 "dtool/src/cppparser/cppBison.yxx" + { + // We don't need to push/pop type, because we can't nest + // multiple_var_declarations. + if ((yyvsp[(2) - (2)].u.decl)->as_type_declaration()) { + current_type = (yyvsp[(2) - (2)].u.decl)->as_type_declaration()->_type; + } else { + current_type = (yyvsp[(2) - (2)].u.decl)->as_type(); + } + push_storage_class((yyvsp[(1) - (2)].u.integer)); +} + break; + + case 68: +/* Line 1792 of yacc.c */ +#line 872 "dtool/src/cppparser/cppBison.yxx" + { + pop_storage_class(); +} + break; + + case 69: +/* Line 1792 of yacc.c */ +#line 876 "dtool/src/cppparser/cppBison.yxx" + { + // We don't need to push/pop type, because we can't nest + // multiple_var_declarations. + if ((yyvsp[(3) - (3)].u.decl)->as_type_declaration()) { + current_type = (yyvsp[(3) - (3)].u.decl)->as_type_declaration()->_type; + } else { + current_type = (yyvsp[(3) - (3)].u.decl)->as_type(); + } + push_storage_class((yyvsp[(1) - (3)].u.integer)); +} + break; + + case 70: +/* Line 1792 of yacc.c */ +#line 887 "dtool/src/cppparser/cppBison.yxx" + { + pop_storage_class(); +} + break; + + case 71: +/* Line 1792 of yacc.c */ +#line 891 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[(2) - (3)].u.instance) != (CPPDeclaration *)NULL) { CPPInstance *inst = (yyvsp[(2) - (3)].u.instance)->as_instance(); @@ -4246,9 +4544,9 @@ yyreduce: } break; - case 64: + case 72: /* Line 1792 of yacc.c */ -#line 860 "dtool/src/cppparser/cppBison.yxx" +#line 906 "dtool/src/cppparser/cppBison.yxx" { CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[(1) - (2)].u.inst_ident), current_scope, (yylsp[(1) - (2)]).file); @@ -4256,9 +4554,9 @@ yyreduce: } break; - case 65: + case 73: /* Line 1792 of yacc.c */ -#line 866 "dtool/src/cppparser/cppBison.yxx" +#line 912 "dtool/src/cppparser/cppBison.yxx" { CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[(1) - (4)].u.inst_ident), current_scope, (yylsp[(1) - (4)]).file); @@ -4266,9 +4564,9 @@ yyreduce: } break; - case 66: + case 74: /* Line 1792 of yacc.c */ -#line 875 "dtool/src/cppparser/cppBison.yxx" +#line 921 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); CPPType *target_type = current_type; @@ -4277,9 +4575,9 @@ yyreduce: } break; - case 67: + case 75: /* Line 1792 of yacc.c */ -#line 882 "dtool/src/cppparser/cppBison.yxx" +#line 928 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); CPPType *target_type = current_type; @@ -4288,17 +4586,17 @@ yyreduce: } break; - case 68: + case 76: /* Line 1792 of yacc.c */ -#line 894 "dtool/src/cppparser/cppBison.yxx" +#line 940 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[(1) - (2)].u.identifier)->get_scope(current_scope, global_scope)); } break; - case 69: + case 77: /* Line 1792 of yacc.c */ -#line 898 "dtool/src/cppparser/cppBison.yxx" +#line 944 "dtool/src/cppparser/cppBison.yxx" { CPPType *type; if ((yyvsp[(1) - (6)].u.identifier)->get_simple_name() == current_scope->get_simple_name() || @@ -4320,17 +4618,17 @@ yyreduce: } break; - case 70: + case 78: /* Line 1792 of yacc.c */ -#line 918 "dtool/src/cppparser/cppBison.yxx" +#line 964 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[(1) - (2)].u.identifier)->get_scope(current_scope, global_scope)); } break; - case 71: + case 79: /* Line 1792 of yacc.c */ -#line 922 "dtool/src/cppparser/cppBison.yxx" +#line 968 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type; @@ -4350,17 +4648,17 @@ yyreduce: } break; - case 72: + case 80: /* Line 1792 of yacc.c */ -#line 942 "dtool/src/cppparser/cppBison.yxx" +#line 991 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[(2) - (3)].u.identifier)->get_scope(current_scope, global_scope)); } break; - case 73: + case 81: /* Line 1792 of yacc.c */ -#line 946 "dtool/src/cppparser/cppBison.yxx" +#line 995 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); if ((yyvsp[(2) - (7)].u.identifier)->is_scoped()) { @@ -4381,43 +4679,17 @@ yyreduce: } break; - case 74: + case 82: /* Line 1792 of yacc.c */ -#line 972 "dtool/src/cppparser/cppBison.yxx" +#line 1021 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[(4) - (6)].u.inst_ident)->get_scope(current_scope, global_scope)); } break; - case 75: + case 83: /* Line 1792 of yacc.c */ -#line 976 "dtool/src/cppparser/cppBison.yxx" - { - pop_scope(); - CPPType *type = (yyvsp[(1) - (10)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (10)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (10)])); - } - assert(type != NULL); - - CPPInstanceIdentifier *ii = (yyvsp[(4) - (10)].u.inst_ident); - ii->add_modifier(IIT_pointer); - ii->add_func_modifier((yyvsp[(8) - (10)].u.param_list), (yyvsp[(10) - (10)].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (10)]).file); -} - break; - - case 76: -/* Line 1792 of yacc.c */ -#line 990 "dtool/src/cppparser/cppBison.yxx" - { - push_scope((yyvsp[(5) - (7)].u.inst_ident)->get_scope(current_scope, global_scope)); -} - break; - - case 77: -/* Line 1792 of yacc.c */ -#line 994 "dtool/src/cppparser/cppBison.yxx" +#line 1025 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type = (yyvsp[(1) - (11)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -4426,16 +4698,42 @@ yyreduce: } assert(type != NULL); - CPPInstanceIdentifier *ii = (yyvsp[(5) - (11)].u.inst_ident); - ii->add_scoped_pointer_modifier((yyvsp[(3) - (11)].u.identifier)); - ii->add_func_modifier((yyvsp[(9) - (11)].u.param_list), (yyvsp[(11) - (11)].u.integer)); + CPPInstanceIdentifier *ii = (yyvsp[(4) - (11)].u.inst_ident); + ii->add_modifier(IIT_pointer); + ii->add_func_modifier((yyvsp[(8) - (11)].u.param_list), (yyvsp[(10) - (11)].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (11)]).file); } break; - case 78: + case 84: /* Line 1792 of yacc.c */ -#line 1010 "dtool/src/cppparser/cppBison.yxx" +#line 1039 "dtool/src/cppparser/cppBison.yxx" + { + push_scope((yyvsp[(5) - (7)].u.inst_ident)->get_scope(current_scope, global_scope)); +} + break; + + case 85: +/* Line 1792 of yacc.c */ +#line 1043 "dtool/src/cppparser/cppBison.yxx" + { + pop_scope(); + CPPType *type = (yyvsp[(1) - (12)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (12)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (12)])); + } + assert(type != NULL); + + CPPInstanceIdentifier *ii = (yyvsp[(5) - (12)].u.inst_ident); + ii->add_scoped_pointer_modifier((yyvsp[(3) - (12)].u.identifier)); + ii->add_func_modifier((yyvsp[(9) - (12)].u.param_list), (yyvsp[(11) - (12)].u.integer)); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (12)]).file); +} + break; + + case 86: +/* Line 1792 of yacc.c */ +#line 1059 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[(1) - (4)].u.identifier) != NULL) { push_scope((yyvsp[(1) - (4)].u.identifier)->get_scope(current_scope, global_scope)); @@ -4443,9 +4741,9 @@ yyreduce: } break; - case 79: + case 87: /* Line 1792 of yacc.c */ -#line 1016 "dtool/src/cppparser/cppBison.yxx" +#line 1065 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[(1) - (8)].u.identifier) != NULL) { pop_scope(); @@ -4472,9 +4770,9 @@ yyreduce: } break; - case 80: + case 88: /* Line 1792 of yacc.c */ -#line 1041 "dtool/src/cppparser/cppBison.yxx" +#line 1090 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[(1) - (5)].u.identifier) != NULL) { push_scope((yyvsp[(1) - (5)].u.identifier)->get_scope(current_scope, global_scope)); @@ -4482,9 +4780,9 @@ yyreduce: } break; - case 81: + case 89: /* Line 1792 of yacc.c */ -#line 1047 "dtool/src/cppparser/cppBison.yxx" +#line 1096 "dtool/src/cppparser/cppBison.yxx" { if ((yyvsp[(1) - (9)].u.identifier) != NULL) { pop_scope(); @@ -4502,9 +4800,9 @@ yyreduce: } break; - case 82: + case 90: /* Line 1792 of yacc.c */ -#line 1067 "dtool/src/cppparser/cppBison.yxx" +#line 1116 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *decl = (yyvsp[(1) - (1)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); @@ -4516,377 +4814,402 @@ yyreduce: } break; - case 83: + case 91: /* Line 1792 of yacc.c */ -#line 1080 "dtool/src/cppparser/cppBison.yxx" +#line 1129 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = 0; } break; - case 84: + case 92: /* Line 1792 of yacc.c */ -#line 1084 "dtool/src/cppparser/cppBison.yxx" +#line 1133 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (int)CPPFunctionType::F_const_method; } break; - case 85: + case 93: /* Line 1792 of yacc.c */ -#line 1088 "dtool/src/cppparser/cppBison.yxx" +#line 1137 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.integer) = (int)CPPFunctionType::F_noexcept; } break; - case 86: -/* Line 1792 of yacc.c */ -#line 1092 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.integer) = (yyvsp[(1) - (4)].u.integer); -} - break; - - case 87: -/* Line 1792 of yacc.c */ -#line 1096 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.integer) = (yyvsp[(1) - (5)].u.integer); -} - break; - - case 88: -/* Line 1792 of yacc.c */ -#line 1103 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.str) = "!"; -} - break; - - case 89: -/* Line 1792 of yacc.c */ -#line 1107 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.str) = "~"; -} - break; - - case 90: -/* Line 1792 of yacc.c */ -#line 1111 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.str) = "*"; -} - break; - - case 91: -/* Line 1792 of yacc.c */ -#line 1115 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.str) = "/"; -} - break; - - case 92: -/* Line 1792 of yacc.c */ -#line 1119 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.str) = "%"; -} - break; - - case 93: -/* Line 1792 of yacc.c */ -#line 1123 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.str) = "+"; -} - break; - case 94: /* Line 1792 of yacc.c */ -#line 1127 "dtool/src/cppparser/cppBison.yxx" +#line 1141 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "-"; + (yyval.u.integer) = (int)CPPFunctionType::F_final; } break; case 95: /* Line 1792 of yacc.c */ -#line 1131 "dtool/src/cppparser/cppBison.yxx" +#line 1145 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "|"; + (yyval.u.integer) = (int)CPPFunctionType::F_override; } break; case 96: /* Line 1792 of yacc.c */ -#line 1135 "dtool/src/cppparser/cppBison.yxx" +#line 1149 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&"; + // Used for lambdas, currently ignored. + (yyval.u.integer) = 0; } break; case 97: /* Line 1792 of yacc.c */ -#line 1139 "dtool/src/cppparser/cppBison.yxx" +#line 1154 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "^"; + (yyval.u.integer) = (yyvsp[(1) - (4)].u.integer); } break; case 98: /* Line 1792 of yacc.c */ -#line 1143 "dtool/src/cppparser/cppBison.yxx" +#line 1158 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "||"; + (yyval.u.integer) = (yyvsp[(1) - (5)].u.integer); } break; case 99: /* Line 1792 of yacc.c */ -#line 1147 "dtool/src/cppparser/cppBison.yxx" +#line 1169 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&&"; + (yyval.str) = "!"; } break; case 100: /* Line 1792 of yacc.c */ -#line 1151 "dtool/src/cppparser/cppBison.yxx" +#line 1173 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "=="; + (yyval.str) = "~"; } break; case 101: /* Line 1792 of yacc.c */ -#line 1155 "dtool/src/cppparser/cppBison.yxx" +#line 1177 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "!="; + (yyval.str) = "*"; } break; case 102: /* Line 1792 of yacc.c */ -#line 1159 "dtool/src/cppparser/cppBison.yxx" +#line 1181 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<="; + (yyval.str) = "/"; } break; case 103: /* Line 1792 of yacc.c */ -#line 1163 "dtool/src/cppparser/cppBison.yxx" +#line 1185 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">="; + (yyval.str) = "%"; } break; case 104: /* Line 1792 of yacc.c */ -#line 1167 "dtool/src/cppparser/cppBison.yxx" +#line 1189 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<"; + (yyval.str) = "+"; } break; case 105: /* Line 1792 of yacc.c */ -#line 1171 "dtool/src/cppparser/cppBison.yxx" +#line 1193 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">"; + (yyval.str) = "-"; } break; case 106: /* Line 1792 of yacc.c */ -#line 1175 "dtool/src/cppparser/cppBison.yxx" +#line 1197 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<<"; + (yyval.str) = "|"; } break; case 107: /* Line 1792 of yacc.c */ -#line 1179 "dtool/src/cppparser/cppBison.yxx" +#line 1201 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">>"; + (yyval.str) = "&"; } break; case 108: /* Line 1792 of yacc.c */ -#line 1183 "dtool/src/cppparser/cppBison.yxx" +#line 1205 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "="; + (yyval.str) = "^"; } break; case 109: /* Line 1792 of yacc.c */ -#line 1187 "dtool/src/cppparser/cppBison.yxx" +#line 1209 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ","; + (yyval.str) = "||"; } break; case 110: /* Line 1792 of yacc.c */ -#line 1191 "dtool/src/cppparser/cppBison.yxx" +#line 1213 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "++"; + (yyval.str) = "&&"; } break; case 111: /* Line 1792 of yacc.c */ -#line 1195 "dtool/src/cppparser/cppBison.yxx" +#line 1217 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "--"; + (yyval.str) = "=="; } break; case 112: /* Line 1792 of yacc.c */ -#line 1199 "dtool/src/cppparser/cppBison.yxx" +#line 1221 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "*="; + (yyval.str) = "!="; } break; case 113: /* Line 1792 of yacc.c */ -#line 1203 "dtool/src/cppparser/cppBison.yxx" +#line 1225 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "/="; + (yyval.str) = "<="; } break; case 114: /* Line 1792 of yacc.c */ -#line 1207 "dtool/src/cppparser/cppBison.yxx" +#line 1229 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "%="; + (yyval.str) = ">="; } break; case 115: /* Line 1792 of yacc.c */ -#line 1211 "dtool/src/cppparser/cppBison.yxx" +#line 1233 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "+="; + (yyval.str) = "<"; } break; case 116: /* Line 1792 of yacc.c */ -#line 1215 "dtool/src/cppparser/cppBison.yxx" +#line 1237 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "-="; + (yyval.str) = ">"; } break; case 117: /* Line 1792 of yacc.c */ -#line 1219 "dtool/src/cppparser/cppBison.yxx" +#line 1241 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "|="; + (yyval.str) = "<<"; } break; case 118: /* Line 1792 of yacc.c */ -#line 1223 "dtool/src/cppparser/cppBison.yxx" +#line 1245 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&="; + (yyval.str) = ">>"; } break; case 119: /* Line 1792 of yacc.c */ -#line 1227 "dtool/src/cppparser/cppBison.yxx" +#line 1249 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "^="; + (yyval.str) = "="; } break; case 120: /* Line 1792 of yacc.c */ -#line 1231 "dtool/src/cppparser/cppBison.yxx" +#line 1253 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<<="; + (yyval.str) = ","; } break; case 121: /* Line 1792 of yacc.c */ -#line 1235 "dtool/src/cppparser/cppBison.yxx" +#line 1257 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">>="; + (yyval.str) = "++"; } break; case 122: /* Line 1792 of yacc.c */ -#line 1239 "dtool/src/cppparser/cppBison.yxx" +#line 1261 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "->"; + (yyval.str) = "--"; } break; case 123: /* Line 1792 of yacc.c */ -#line 1243 "dtool/src/cppparser/cppBison.yxx" +#line 1265 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "[]"; + (yyval.str) = "*="; } break; case 124: /* Line 1792 of yacc.c */ -#line 1247 "dtool/src/cppparser/cppBison.yxx" +#line 1269 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "()"; + (yyval.str) = "/="; } break; case 125: /* Line 1792 of yacc.c */ -#line 1251 "dtool/src/cppparser/cppBison.yxx" +#line 1273 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "new"; + (yyval.str) = "%="; } break; case 126: /* Line 1792 of yacc.c */ -#line 1255 "dtool/src/cppparser/cppBison.yxx" +#line 1277 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "delete"; + (yyval.str) = "+="; +} + break; + + case 127: +/* Line 1792 of yacc.c */ +#line 1281 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "-="; +} + break; + + case 128: +/* Line 1792 of yacc.c */ +#line 1285 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "|="; } break; case 129: /* Line 1792 of yacc.c */ -#line 1267 "dtool/src/cppparser/cppBison.yxx" +#line 1289 "dtool/src/cppparser/cppBison.yxx" { - push_scope(new CPPTemplateScope(current_scope)); + (yyval.str) = "&="; } break; case 130: /* Line 1792 of yacc.c */ -#line 1271 "dtool/src/cppparser/cppBison.yxx" +#line 1293 "dtool/src/cppparser/cppBison.yxx" { - pop_scope(); + (yyval.str) = "^="; +} + break; + + case 131: +/* Line 1792 of yacc.c */ +#line 1297 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "<<="; +} + break; + + case 132: +/* Line 1792 of yacc.c */ +#line 1301 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = ">>="; +} + break; + + case 133: +/* Line 1792 of yacc.c */ +#line 1305 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "->"; } break; case 134: /* Line 1792 of yacc.c */ -#line 1284 "dtool/src/cppparser/cppBison.yxx" +#line 1309 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "[]"; +} + break; + + case 135: +/* Line 1792 of yacc.c */ +#line 1313 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "()"; +} + break; + + case 136: +/* Line 1792 of yacc.c */ +#line 1317 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "new"; +} + break; + + case 137: +/* Line 1792 of yacc.c */ +#line 1321 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "delete"; +} + break; + + case 140: +/* Line 1792 of yacc.c */ +#line 1333 "dtool/src/cppparser/cppBison.yxx" + { + push_scope(new CPPTemplateScope(current_scope)); +} + break; + + case 141: +/* Line 1792 of yacc.c */ +#line 1337 "dtool/src/cppparser/cppBison.yxx" + { + pop_scope(); +} + break; + + case 145: +/* Line 1792 of yacc.c */ +#line 1350 "dtool/src/cppparser/cppBison.yxx" { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != NULL); @@ -4894,9 +5217,9 @@ yyreduce: } break; - case 135: + case 146: /* Line 1792 of yacc.c */ -#line 1290 "dtool/src/cppparser/cppBison.yxx" +#line 1356 "dtool/src/cppparser/cppBison.yxx" { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != NULL); @@ -4904,41 +5227,41 @@ yyreduce: } break; - case 136: + case 147: /* Line 1792 of yacc.c */ -#line 1299 "dtool/src/cppparser/cppBison.yxx" +#line 1365 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (2)].u.identifier))); } break; - case 137: + case 148: /* Line 1792 of yacc.c */ -#line 1303 "dtool/src/cppparser/cppBison.yxx" +#line 1369 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type))); } break; - case 138: + case 149: /* Line 1792 of yacc.c */ -#line 1307 "dtool/src/cppparser/cppBison.yxx" +#line 1373 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (2)].u.identifier))); } break; - case 139: + case 150: /* Line 1792 of yacc.c */ -#line 1311 "dtool/src/cppparser/cppBison.yxx" +#line 1377 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type))); } break; - case 140: + case 151: /* Line 1792 of yacc.c */ -#line 1315 "dtool/src/cppparser/cppBison.yxx" +#line 1381 "dtool/src/cppparser/cppBison.yxx" { CPPInstance *inst = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); inst->set_initializer((yyvsp[(3) - (3)].u.expr)); @@ -4946,9 +5269,9 @@ yyreduce: } break; - case 141: + case 152: /* Line 1792 of yacc.c */ -#line 1321 "dtool/src/cppparser/cppBison.yxx" +#line 1387 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); @@ -4957,26 +5280,26 @@ yyreduce: } break; - case 142: + case 153: /* Line 1792 of yacc.c */ -#line 1331 "dtool/src/cppparser/cppBison.yxx" +#line 1397 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } break; - case 143: + case 154: /* Line 1792 of yacc.c */ -#line 1335 "dtool/src/cppparser/cppBison.yxx" +#line 1401 "dtool/src/cppparser/cppBison.yxx" { yywarning("Not a type: " + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } break; - case 144: + case 155: /* Line 1792 of yacc.c */ -#line 1340 "dtool/src/cppparser/cppBison.yxx" +#line 1406 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == NULL) { @@ -4986,17 +5309,17 @@ yyreduce: } break; - case 145: + case 156: /* Line 1792 of yacc.c */ -#line 1352 "dtool/src/cppparser/cppBison.yxx" +#line 1418 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); } break; - case 146: + case 157: /* Line 1792 of yacc.c */ -#line 1356 "dtool/src/cppparser/cppBison.yxx" +#line 1422 "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 @@ -5012,9 +5335,9 @@ yyreduce: } break; - case 147: + case 158: /* Line 1792 of yacc.c */ -#line 1370 "dtool/src/cppparser/cppBison.yxx" +#line 1436 "dtool/src/cppparser/cppBison.yxx" { // A C++11 literal operator. if (!(yyvsp[(2) - (3)].str).empty()) { @@ -5031,98 +5354,89 @@ yyreduce: } break; - case 148: + case 159: /* Line 1792 of yacc.c */ -#line 1385 "dtool/src/cppparser/cppBison.yxx" +#line 1451 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } break; - case 149: + case 160: /* Line 1792 of yacc.c */ -#line 1390 "dtool/src/cppparser/cppBison.yxx" +#line 1456 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } break; - case 150: + case 161: /* Line 1792 of yacc.c */ -#line 1395 "dtool/src/cppparser/cppBison.yxx" +#line 1461 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } break; - case 151: + case 162: /* Line 1792 of yacc.c */ -#line 1400 "dtool/src/cppparser/cppBison.yxx" +#line 1466 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } break; - case 152: + case 163: /* Line 1792 of yacc.c */ -#line 1405 "dtool/src/cppparser/cppBison.yxx" +#line 1471 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } break; - case 153: + case 164: /* Line 1792 of yacc.c */ -#line 1410 "dtool/src/cppparser/cppBison.yxx" +#line 1476 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } break; - case 154: + case 165: /* Line 1792 of yacc.c */ -#line 1415 "dtool/src/cppparser/cppBison.yxx" +#line 1481 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } break; - case 155: + case 166: /* Line 1792 of yacc.c */ -#line 1420 "dtool/src/cppparser/cppBison.yxx" - { - // bitfield definition. We ignore the bitfield for now. - (yyval.u.inst_ident) = (yyvsp[(1) - (3)].u.inst_ident); -} - break; - - case 156: -/* Line 1792 of yacc.c */ -#line 1425 "dtool/src/cppparser/cppBison.yxx" +#line 1486 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } break; - case 157: + case 167: /* Line 1792 of yacc.c */ -#line 1430 "dtool/src/cppparser/cppBison.yxx" +#line 1491 "dtool/src/cppparser/cppBison.yxx" { push_scope((yyvsp[(1) - (2)].u.inst_ident)->get_scope(current_scope, global_scope)); } break; - case 158: + case 168: /* Line 1792 of yacc.c */ -#line 1434 "dtool/src/cppparser/cppBison.yxx" +#line 1495 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); (yyval.u.inst_ident) = (yyvsp[(1) - (6)].u.inst_ident); @@ -5138,174 +5452,316 @@ yyreduce: } break; - case 159: + case 169: /* Line 1792 of yacc.c */ -#line 1452 "dtool/src/cppparser/cppBison.yxx" +#line 1513 "dtool/src/cppparser/cppBison.yxx" + { + // This is handled a bit awkwardly right now. Ideally it'd be wrapped + // up in the instance_identifier rule, but then more needs to happen in + // order to avoid shift/reduce conflicts. + if ((yyvsp[(2) - (2)].u.type) != NULL) { + (yyvsp[(1) - (2)].u.inst_ident)->add_trailing_return_type((yyvsp[(2) - (2)].u.type)); + } + (yyval.u.inst_ident) = (yyvsp[(1) - (2)].u.inst_ident); +} + break; + + case 170: +/* Line 1792 of yacc.c */ +#line 1523 "dtool/src/cppparser/cppBison.yxx" + { + // Bitfield definition. + (yyvsp[(1) - (3)].u.inst_ident)->_bit_width = (yyvsp[(3) - (3)].u.integer); + (yyval.u.inst_ident) = (yyvsp[(1) - (3)].u.inst_ident); +} + break; + + case 171: +/* Line 1792 of yacc.c */ +#line 1533 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = NULL; +} + break; + + case 172: +/* Line 1792 of yacc.c */ +#line 1537 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); +} + break; + + case 173: +/* Line 1792 of yacc.c */ +#line 1541 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(4) - (4)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.type) = (yyvsp[(4) - (4)].u.inst_ident)->unroll_type((yyvsp[(3) - (4)].u.type)); +} + break; + + case 174: +/* Line 1792 of yacc.c */ +#line 1550 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; } break; - case 160: + case 175: /* Line 1792 of yacc.c */ -#line 1456 "dtool/src/cppparser/cppBison.yxx" +#line 1554 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_includes_ellipsis = true; } break; - case 161: + case 176: /* Line 1792 of yacc.c */ -#line 1461 "dtool/src/cppparser/cppBison.yxx" +#line 1559 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[(1) - (1)].u.param_list); } break; - case 162: + case 177: /* Line 1792 of yacc.c */ -#line 1465 "dtool/src/cppparser/cppBison.yxx" +#line 1563 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } break; - case 163: + case 178: /* Line 1792 of yacc.c */ -#line 1470 "dtool/src/cppparser/cppBison.yxx" +#line 1568 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[(1) - (2)].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } break; - case 164: + case 179: /* Line 1792 of yacc.c */ -#line 1478 "dtool/src/cppparser/cppBison.yxx" +#line 1576 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_parameters.push_back((yyvsp[(1) - (1)].u.instance)); } break; - case 165: + case 180: /* Line 1792 of yacc.c */ -#line 1483 "dtool/src/cppparser/cppBison.yxx" +#line 1581 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); (yyval.u.param_list)->_parameters.push_back((yyvsp[(3) - (3)].u.instance)); } break; - case 166: + case 181: /* Line 1792 of yacc.c */ -#line 1491 "dtool/src/cppparser/cppBison.yxx" +#line 1589 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = new CPPParameterList; } break; - case 167: + case 182: /* Line 1792 of yacc.c */ -#line 1495 "dtool/src/cppparser/cppBison.yxx" +#line 1593 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; } break; - case 168: + case 183: /* Line 1792 of yacc.c */ -#line 1502 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 169: -/* Line 1792 of yacc.c */ -#line 1506 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); -} - break; - - case 170: -/* Line 1792 of yacc.c */ -#line 1513 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 171: -/* Line 1792 of yacc.c */ -#line 1517 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 172: -/* Line 1792 of yacc.c */ -#line 1521 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 173: -/* Line 1792 of yacc.c */ -#line 1525 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); -} - break; - - case 174: -/* Line 1792 of yacc.c */ -#line 1529 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); -} - break; - - case 175: -/* Line 1792 of yacc.c */ -#line 1533 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); -} - break; - - case 176: -/* Line 1792 of yacc.c */ -#line 1537 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 180: -/* Line 1792 of yacc.c */ -#line 1550 "dtool/src/cppparser/cppBison.yxx" +#line 1598 "dtool/src/cppparser/cppBison.yxx" { + (yyval.u.param_list) = (yyvsp[(1) - (1)].u.param_list); } break; case 184: /* Line 1792 of yacc.c */ -#line 1559 "dtool/src/cppparser/cppBison.yxx" +#line 1602 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} + break; + + case 185: +/* Line 1792 of yacc.c */ +#line 1607 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.param_list) = (yyvsp[(1) - (2)].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} + break; + + case 186: +/* Line 1792 of yacc.c */ +#line 1615 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[(1) - (1)].u.instance)); +} + break; + + case 187: +/* Line 1792 of yacc.c */ +#line 1620 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[(3) - (3)].u.instance)); +} + break; + + case 188: +/* Line 1792 of yacc.c */ +#line 1628 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 189: +/* Line 1792 of yacc.c */ +#line 1632 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); +} + break; + + case 190: +/* Line 1792 of yacc.c */ +#line 1639 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 191: +/* Line 1792 of yacc.c */ +#line 1643 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); +} + break; + + case 192: +/* Line 1792 of yacc.c */ +#line 1650 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 193: +/* Line 1792 of yacc.c */ +#line 1654 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 194: +/* Line 1792 of yacc.c */ +#line 1658 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 195: +/* Line 1792 of yacc.c */ +#line 1662 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); +} + break; + + case 196: +/* Line 1792 of yacc.c */ +#line 1666 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} + break; + + case 197: +/* Line 1792 of yacc.c */ +#line 1673 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 198: +/* Line 1792 of yacc.c */ +#line 1677 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 199: +/* Line 1792 of yacc.c */ +#line 1681 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); +} + break; + + case 200: +/* Line 1792 of yacc.c */ +#line 1685 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); +} + break; + + case 201: +/* Line 1792 of yacc.c */ +#line 1689 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} + break; + + case 202: +/* Line 1792 of yacc.c */ +#line 1693 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 206: +/* Line 1792 of yacc.c */ +#line 1706 "dtool/src/cppparser/cppBison.yxx" + { +} + break; + + case 210: +/* Line 1792 of yacc.c */ +#line 1715 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); (yyval.u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); } break; - case 185: + case 211: /* Line 1792 of yacc.c */ -#line 1564 "dtool/src/cppparser/cppBison.yxx" +#line 1720 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); @@ -5313,9 +5769,9 @@ yyreduce: } break; - case 186: + case 212: /* Line 1792 of yacc.c */ -#line 1570 "dtool/src/cppparser/cppBison.yxx" +#line 1726 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[(4) - (5)].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[(3) - (5)].u.type), (yyvsp[(4) - (5)].u.inst_ident), 0, (yylsp[(3) - (5)]).file); @@ -5323,17 +5779,25 @@ yyreduce: } break; - case 187: + case 213: /* Line 1792 of yacc.c */ -#line 1576 "dtool/src/cppparser/cppBison.yxx" +#line 1732 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.instance) = (yyvsp[(2) - (2)].u.instance); } break; - case 188: + case 214: /* Line 1792 of yacc.c */ -#line 1580 "dtool/src/cppparser/cppBison.yxx" +#line 1743 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.instance) = (yyvsp[(1) - (1)].u.instance); +} + break; + + case 215: +/* Line 1792 of yacc.c */ +#line 1747 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_parameter)); @@ -5342,183 +5806,167 @@ yyreduce: } break; - case 189: + case 216: /* Line 1792 of yacc.c */ -#line 1590 "dtool/src/cppparser/cppBison.yxx" +#line 1757 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } break; - case 190: + case 217: /* Line 1792 of yacc.c */ -#line 1594 "dtool/src/cppparser/cppBison.yxx" +#line 1761 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); } break; - case 191: + case 218: /* Line 1792 of yacc.c */ -#line 1598 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); -} - break; - - case 192: -/* Line 1792 of yacc.c */ -#line 1602 "dtool/src/cppparser/cppBison.yxx" +#line 1765 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } break; - case 193: + case 219: /* Line 1792 of yacc.c */ -#line 1607 "dtool/src/cppparser/cppBison.yxx" +#line 1770 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } break; - case 194: + case 220: /* Line 1792 of yacc.c */ -#line 1612 "dtool/src/cppparser/cppBison.yxx" +#line 1775 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } break; - case 195: + case 221: /* Line 1792 of yacc.c */ -#line 1617 "dtool/src/cppparser/cppBison.yxx" +#line 1780 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } break; - case 196: + case 222: /* Line 1792 of yacc.c */ -#line 1622 "dtool/src/cppparser/cppBison.yxx" +#line 1785 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } break; - case 197: + case 223: /* Line 1792 of yacc.c */ -#line 1627 "dtool/src/cppparser/cppBison.yxx" +#line 1790 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } break; - case 198: + case 224: /* Line 1792 of yacc.c */ -#line 1632 "dtool/src/cppparser/cppBison.yxx" +#line 1795 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } break; - case 199: + case 225: /* Line 1792 of yacc.c */ -#line 1640 "dtool/src/cppparser/cppBison.yxx" +#line 1803 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } break; - case 200: + case 226: /* Line 1792 of yacc.c */ -#line 1644 "dtool/src/cppparser/cppBison.yxx" +#line 1807 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); } break; - case 201: + case 227: /* Line 1792 of yacc.c */ -#line 1648 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); -} - break; - - case 202: -/* Line 1792 of yacc.c */ -#line 1652 "dtool/src/cppparser/cppBison.yxx" +#line 1811 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } break; - case 203: + case 228: /* Line 1792 of yacc.c */ -#line 1657 "dtool/src/cppparser/cppBison.yxx" +#line 1816 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } break; - case 204: + case 229: /* Line 1792 of yacc.c */ -#line 1662 "dtool/src/cppparser/cppBison.yxx" +#line 1821 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } break; - case 205: + case 230: /* Line 1792 of yacc.c */ -#line 1667 "dtool/src/cppparser/cppBison.yxx" +#line 1826 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } break; - case 206: + case 231: /* Line 1792 of yacc.c */ -#line 1672 "dtool/src/cppparser/cppBison.yxx" +#line 1831 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } break; - case 207: + case 232: /* Line 1792 of yacc.c */ -#line 1677 "dtool/src/cppparser/cppBison.yxx" +#line 1836 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } break; - case 208: + case 233: /* Line 1792 of yacc.c */ -#line 1682 "dtool/src/cppparser/cppBison.yxx" +#line 1841 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } break; - case 209: + case 234: /* Line 1792 of yacc.c */ -#line 1687 "dtool/src/cppparser/cppBison.yxx" +#line 1846 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (7)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); @@ -5526,107 +5974,211 @@ yyreduce: } break; - case 210: + case 235: /* Line 1792 of yacc.c */ -#line 1693 "dtool/src/cppparser/cppBison.yxx" +#line 1852 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } break; - case 211: + case 236: /* Line 1792 of yacc.c */ -#line 1701 "dtool/src/cppparser/cppBison.yxx" +#line 1860 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } break; - case 212: + case 237: /* Line 1792 of yacc.c */ -#line 1705 "dtool/src/cppparser/cppBison.yxx" +#line 1864 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } break; - case 213: + case 238: /* Line 1792 of yacc.c */ -#line 1710 "dtool/src/cppparser/cppBison.yxx" +#line 1869 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } break; - case 214: + case 239: /* Line 1792 of yacc.c */ -#line 1715 "dtool/src/cppparser/cppBison.yxx" +#line 1874 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } break; - case 215: + case 240: /* Line 1792 of yacc.c */ -#line 1720 "dtool/src/cppparser/cppBison.yxx" +#line 1879 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } break; - case 216: + case 241: /* Line 1792 of yacc.c */ -#line 1725 "dtool/src/cppparser/cppBison.yxx" +#line 1884 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } break; - case 217: + case 242: /* Line 1792 of yacc.c */ -#line 1730 "dtool/src/cppparser/cppBison.yxx" +#line 1889 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } break; - case 218: + case 243: /* Line 1792 of yacc.c */ -#line 1735 "dtool/src/cppparser/cppBison.yxx" +#line 1894 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } break; - case 219: + case 244: /* Line 1792 of yacc.c */ -#line 1740 "dtool/src/cppparser/cppBison.yxx" +#line 1902 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[(2) - (7)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); - (yyval.u.inst_ident)->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } break; - case 220: + case 245: /* Line 1792 of yacc.c */ -#line 1749 "dtool/src/cppparser/cppBison.yxx" +#line 1906 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); +} + break; + + case 246: +/* Line 1792 of yacc.c */ +#line 1911 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); +} + break; + + case 247: +/* Line 1792 of yacc.c */ +#line 1916 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); +} + break; + + case 248: +/* Line 1792 of yacc.c */ +#line 1921 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); +} + break; + + case 249: +/* Line 1792 of yacc.c */ +#line 1926 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); +} + break; + + case 250: +/* Line 1792 of yacc.c */ +#line 1931 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); +} + break; + + case 251: +/* Line 1792 of yacc.c */ +#line 1936 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); +} + break; + + case 252: +/* Line 1792 of yacc.c */ +#line 1941 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(2) - (5)].u.param_list), (yyvsp[(4) - (5)].u.integer), (yyvsp[(5) - (5)].u.type)); +} + break; + + case 253: +/* Line 1792 of yacc.c */ +#line 1947 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(3) - (9)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); +} + break; + + case 254: +/* Line 1792 of yacc.c */ +#line 1954 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(3) - (9)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); +} + break; + + case 255: +/* Line 1792 of yacc.c */ +#line 1961 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(3) - (9)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); +} + break; + + case 256: +/* Line 1792 of yacc.c */ +#line 1971 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } break; - case 221: + case 257: /* Line 1792 of yacc.c */ -#line 1753 "dtool/src/cppparser/cppBison.yxx" +#line 1975 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == NULL) { @@ -5636,41 +6188,41 @@ yyreduce: } break; - case 222: + case 258: /* Line 1792 of yacc.c */ -#line 1761 "dtool/src/cppparser/cppBison.yxx" +#line 1983 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); } break; - case 223: + case 259: /* Line 1792 of yacc.c */ -#line 1765 "dtool/src/cppparser/cppBison.yxx" +#line 1987 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); } break; - case 224: + case 260: /* Line 1792 of yacc.c */ -#line 1769 "dtool/src/cppparser/cppBison.yxx" +#line 1991 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); } break; - case 225: + case 261: /* Line 1792 of yacc.c */ -#line 1773 "dtool/src/cppparser/cppBison.yxx" +#line 1995 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.enum_type)); } break; - case 226: + case 262: /* Line 1792 of yacc.c */ -#line 1777 "dtool/src/cppparser/cppBison.yxx" +#line 1999 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -5688,9 +6240,9 @@ yyreduce: } break; - case 227: + case 263: /* Line 1792 of yacc.c */ -#line 1793 "dtool/src/cppparser/cppBison.yxx" +#line 2015 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -5708,9 +6260,9 @@ yyreduce: } break; - case 228: + case 264: /* Line 1792 of yacc.c */ -#line 1809 "dtool/src/cppparser/cppBison.yxx" +#line 2031 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[(3) - (4)].u.expr)->determine_type(); if ((yyval.u.type) == (CPPType *)NULL) { @@ -5721,25 +6273,25 @@ yyreduce: } break; - case 229: + case 265: /* Line 1792 of yacc.c */ -#line 1818 "dtool/src/cppparser/cppBison.yxx" +#line 2040 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = new CPPSimpleType(CPPSimpleType::T_auto); + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } break; - case 230: + case 266: /* Line 1792 of yacc.c */ -#line 1825 "dtool/src/cppparser/cppBison.yxx" +#line 2047 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } break; - case 231: + case 267: /* Line 1792 of yacc.c */ -#line 1829 "dtool/src/cppparser/cppBison.yxx" +#line 2051 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.decl) == NULL) { @@ -5749,41 +6301,41 @@ yyreduce: } break; - case 232: + case 268: /* Line 1792 of yacc.c */ -#line 1837 "dtool/src/cppparser/cppBison.yxx" +#line 2059 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); } break; - case 233: + case 269: /* Line 1792 of yacc.c */ -#line 1841 "dtool/src/cppparser/cppBison.yxx" +#line 2063 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); } break; - case 234: + case 270: /* Line 1792 of yacc.c */ -#line 1845 "dtool/src/cppparser/cppBison.yxx" +#line 2067 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[(1) - (1)].u.struct_type))); } break; - case 235: + case 271: /* Line 1792 of yacc.c */ -#line 1849 "dtool/src/cppparser/cppBison.yxx" +#line 2071 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[(1) - (1)].u.enum_type))); } break; - case 236: + case 272: /* Line 1792 of yacc.c */ -#line 1853 "dtool/src/cppparser/cppBison.yxx" +#line 2075 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -5801,9 +6353,9 @@ yyreduce: } break; - case 237: + case 273: /* Line 1792 of yacc.c */ -#line 1869 "dtool/src/cppparser/cppBison.yxx" +#line 2091 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -5821,9 +6373,9 @@ yyreduce: } break; - case 238: + case 274: /* Line 1792 of yacc.c */ -#line 1885 "dtool/src/cppparser/cppBison.yxx" +#line 2107 "dtool/src/cppparser/cppBison.yxx" { yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[(2) - (2)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (2)])); @@ -5843,9 +6395,9 @@ yyreduce: } break; - case 239: + case 275: /* Line 1792 of yacc.c */ -#line 1903 "dtool/src/cppparser/cppBison.yxx" +#line 2125 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[(3) - (4)].u.expr)->determine_type(); if ((yyval.u.decl) == (CPPType *)NULL) { @@ -5856,25 +6408,25 @@ yyreduce: } break; - case 240: + case 276: /* Line 1792 of yacc.c */ -#line 1912 "dtool/src/cppparser/cppBison.yxx" +#line 2134 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.decl) = new CPPSimpleType(CPPSimpleType::T_auto); + (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } break; - case 241: + case 277: /* Line 1792 of yacc.c */ -#line 1919 "dtool/src/cppparser/cppBison.yxx" +#line 2141 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } break; - case 242: + case 278: /* Line 1792 of yacc.c */ -#line 1923 "dtool/src/cppparser/cppBison.yxx" +#line 2145 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == NULL) { @@ -5884,17 +6436,17 @@ yyreduce: } break; - case 243: + case 279: /* Line 1792 of yacc.c */ -#line 1931 "dtool/src/cppparser/cppBison.yxx" +#line 2153 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); } break; - case 244: + case 280: /* Line 1792 of yacc.c */ -#line 1935 "dtool/src/cppparser/cppBison.yxx" +#line 2157 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -5912,9 +6464,9 @@ yyreduce: } break; - case 245: + case 281: /* Line 1792 of yacc.c */ -#line 1951 "dtool/src/cppparser/cppBison.yxx" +#line 2173 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -5932,17 +6484,38 @@ yyreduce: } break; - case 246: + case 282: /* Line 1792 of yacc.c */ -#line 1970 "dtool/src/cppparser/cppBison.yxx" +#line 2189 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = (yyvsp[(3) - (4)].u.expr)->determine_type(); + if ((yyval.u.type) == (CPPType *)NULL) { + stringstream str; + str << *(yyvsp[(3) - (4)].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); + } +} + break; + + case 283: +/* Line 1792 of yacc.c */ +#line 2198 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); +} + break; + + case 284: +/* Line 1792 of yacc.c */ +#line 2205 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = (yyvsp[(1) - (1)].u.decl); } break; - case 247: + case 285: /* Line 1792 of yacc.c */ -#line 1974 "dtool/src/cppparser/cppBison.yxx" +#line 2209 "dtool/src/cppparser/cppBison.yxx" { yyerror(string("unknown type '") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name() + "'", (yylsp[(1) - (1)])); @@ -5950,30 +6523,26 @@ yyreduce: } break; - case 248: + case 286: /* Line 1792 of yacc.c */ -#line 1982 "dtool/src/cppparser/cppBison.yxx" +#line 2217 "dtool/src/cppparser/cppBison.yxx" { - CPPInstance *inst = new CPPInstance((yyvsp[(1) - (2)].u.type), (yyvsp[(2) - (2)].u.inst_ident), 0, (yylsp[(1) - (2)]).file); - (yyval.u.type) = inst->_type; - delete inst; + (yyval.u.type) = (yyvsp[(2) - (2)].u.inst_ident)->unroll_type((yyvsp[(1) - (2)].u.type)); } break; - case 249: + case 287: /* Line 1792 of yacc.c */ -#line 1988 "dtool/src/cppparser/cppBison.yxx" +#line 2221 "dtool/src/cppparser/cppBison.yxx" { (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); - CPPInstance *inst = new CPPInstance((yyvsp[(2) - (3)].u.type), (yyvsp[(3) - (3)].u.inst_ident), 0, (yylsp[(1) - (3)]).file); - (yyval.u.type) = inst->_type; - delete inst; + (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); } break; - case 250: + case 288: /* Line 1792 of yacc.c */ -#line 1998 "dtool/src/cppparser/cppBison.yxx" +#line 2229 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = ((yyvsp[(1) - (2)].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -5989,9 +6558,9 @@ yyreduce: } break; - case 251: + case 289: /* Line 1792 of yacc.c */ -#line 2012 "dtool/src/cppparser/cppBison.yxx" +#line 2243 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; @@ -6000,9 +6569,9 @@ yyreduce: } break; - case 252: + case 290: /* Line 1792 of yacc.c */ -#line 2022 "dtool/src/cppparser/cppBison.yxx" +#line 2253 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = ((yyvsp[(1) - (2)].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -6024,9 +6593,9 @@ yyreduce: } break; - case 253: + case 291: /* Line 1792 of yacc.c */ -#line 2042 "dtool/src/cppparser/cppBison.yxx" +#line 2273 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; @@ -6035,138 +6604,154 @@ yyreduce: } break; - case 258: + case 293: /* Line 1792 of yacc.c */ -#line 2062 "dtool/src/cppparser/cppBison.yxx" +#line 2284 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->_final = true; +} + break; + + case 298: +/* Line 1792 of yacc.c */ +#line 2301 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(1) - (1)].u.type), V_unknown, false); +} + break; + + case 299: +/* Line 1792 of yacc.c */ +#line 2305 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_public, false); } break; - case 259: + case 300: /* Line 1792 of yacc.c */ -#line 2066 "dtool/src/cppparser/cppBison.yxx" +#line 2309 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_protected, false); } break; - case 260: + case 301: /* Line 1792 of yacc.c */ -#line 2070 "dtool/src/cppparser/cppBison.yxx" +#line 2313 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_private, false); } break; - case 261: + case 302: /* Line 1792 of yacc.c */ -#line 2074 "dtool/src/cppparser/cppBison.yxx" +#line 2317 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_public, true); } break; - case 262: + case 303: /* Line 1792 of yacc.c */ -#line 2078 "dtool/src/cppparser/cppBison.yxx" +#line 2321 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_protected, true); } break; - case 263: + case 304: /* Line 1792 of yacc.c */ -#line 2082 "dtool/src/cppparser/cppBison.yxx" +#line 2325 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_private, true); } break; - case 264: + case 305: /* Line 1792 of yacc.c */ -#line 2086 "dtool/src/cppparser/cppBison.yxx" +#line 2329 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_public, true); } break; - case 265: + case 306: /* Line 1792 of yacc.c */ -#line 2090 "dtool/src/cppparser/cppBison.yxx" +#line 2333 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_protected, true); } break; - case 266: + case 307: /* Line 1792 of yacc.c */ -#line 2094 "dtool/src/cppparser/cppBison.yxx" +#line 2337 "dtool/src/cppparser/cppBison.yxx" { current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_private, true); } break; - case 267: + case 308: /* Line 1792 of yacc.c */ -#line 2101 "dtool/src/cppparser/cppBison.yxx" +#line 2344 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.enum_type) = current_enum; current_enum = NULL; } break; - case 268: + case 309: /* Line 1792 of yacc.c */ -#line 2109 "dtool/src/cppparser/cppBison.yxx" +#line 2352 "dtool/src/cppparser/cppBison.yxx" { current_enum = new CPPEnumType((yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type), current_scope, (yylsp[(1) - (4)]).file); } break; - case 269: + case 310: /* Line 1792 of yacc.c */ -#line 2113 "dtool/src/cppparser/cppBison.yxx" +#line 2356 "dtool/src/cppparser/cppBison.yxx" { current_enum = new CPPEnumType((yyvsp[(2) - (2)].u.identifier), current_scope, (yylsp[(1) - (2)]).file); } break; - case 270: + case 311: /* Line 1792 of yacc.c */ -#line 2117 "dtool/src/cppparser/cppBison.yxx" +#line 2360 "dtool/src/cppparser/cppBison.yxx" { current_enum = new CPPEnumType(NULL, (yyvsp[(3) - (3)].u.type), current_scope, (yylsp[(1) - (3)]).file); } break; - case 271: + case 312: /* Line 1792 of yacc.c */ -#line 2121 "dtool/src/cppparser/cppBison.yxx" +#line 2364 "dtool/src/cppparser/cppBison.yxx" { current_enum = new CPPEnumType(NULL, current_scope, (yylsp[(1) - (1)]).file); } break; - case 272: + case 313: /* Line 1792 of yacc.c */ -#line 2128 "dtool/src/cppparser/cppBison.yxx" +#line 2371 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } break; - case 273: + case 314: /* Line 1792 of yacc.c */ -#line 2132 "dtool/src/cppparser/cppBison.yxx" +#line 2375 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); } break; - case 275: + case 316: /* Line 1792 of yacc.c */ -#line 2140 "dtool/src/cppparser/cppBison.yxx" +#line 2383 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != NULL); CPPInstance *inst = current_enum->add_element((yyvsp[(2) - (3)].u.identifier)->get_simple_name()); @@ -6174,9 +6759,9 @@ yyreduce: } break; - case 276: + case 317: /* Line 1792 of yacc.c */ -#line 2146 "dtool/src/cppparser/cppBison.yxx" +#line 2389 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != NULL); CPPInstance *inst = current_enum->add_element((yyvsp[(2) - (5)].u.identifier)->get_simple_name(), (yyvsp[(4) - (5)].u.expr)); @@ -6184,9 +6769,9 @@ yyreduce: } break; - case 278: + case 319: /* Line 1792 of yacc.c */ -#line 2155 "dtool/src/cppparser/cppBison.yxx" +#line 2398 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != NULL); CPPInstance *inst = current_enum->add_element((yyvsp[(2) - (2)].u.identifier)->get_simple_name()); @@ -6194,9 +6779,9 @@ yyreduce: } break; - case 279: + case 320: /* Line 1792 of yacc.c */ -#line 2161 "dtool/src/cppparser/cppBison.yxx" +#line 2404 "dtool/src/cppparser/cppBison.yxx" { assert(current_enum != NULL); CPPInstance *inst = current_enum->add_element((yyvsp[(2) - (4)].u.identifier)->get_simple_name(), (yyvsp[(4) - (4)].u.expr)); @@ -6204,41 +6789,41 @@ yyreduce: } break; - case 280: + case 321: /* Line 1792 of yacc.c */ -#line 2170 "dtool/src/cppparser/cppBison.yxx" +#line 2413 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_enum; } break; - case 281: + case 322: /* Line 1792 of yacc.c */ -#line 2177 "dtool/src/cppparser/cppBison.yxx" +#line 2420 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_class; } break; - case 282: + case 323: /* Line 1792 of yacc.c */ -#line 2181 "dtool/src/cppparser/cppBison.yxx" +#line 2424 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_struct; } break; - case 283: + case 324: /* Line 1792 of yacc.c */ -#line 2185 "dtool/src/cppparser/cppBison.yxx" +#line 2428 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.extension_enum) = CPPExtensionType::T_union; } break; - case 284: + case 325: /* Line 1792 of yacc.c */ -#line 2192 "dtool/src/cppparser/cppBison.yxx" +#line 2435 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[(2) - (3)].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { @@ -6258,17 +6843,17 @@ yyreduce: } break; - case 285: + case 326: /* Line 1792 of yacc.c */ -#line 2210 "dtool/src/cppparser/cppBison.yxx" +#line 2453 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } break; - case 286: + case 327: /* Line 1792 of yacc.c */ -#line 2214 "dtool/src/cppparser/cppBison.yxx" +#line 2457 "dtool/src/cppparser/cppBison.yxx" { CPPScope *scope = (yyvsp[(3) - (4)].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { @@ -6289,139 +6874,141 @@ yyreduce: } break; - case 287: + case 328: /* Line 1792 of yacc.c */ -#line 2233 "dtool/src/cppparser/cppBison.yxx" +#line 2476 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); } break; - case 290: + case 331: /* Line 1792 of yacc.c */ -#line 2242 "dtool/src/cppparser/cppBison.yxx" +#line 2485 "dtool/src/cppparser/cppBison.yxx" { - CPPUsing *using_decl = new CPPUsing((yyvsp[(2) - (2)].u.identifier), false, (yylsp[(1) - (2)]).file); - current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (2)])); - current_scope->add_using(using_decl, global_scope, current_lexer); -} - break; - - case 291: -/* Line 1792 of yacc.c */ -#line 2248 "dtool/src/cppparser/cppBison.yxx" - { - CPPUsing *using_decl = new CPPUsing((yyvsp[(3) - (3)].u.identifier), true, (yylsp[(1) - (3)]).file); + CPPUsing *using_decl = new CPPUsing((yyvsp[(2) - (3)].u.identifier), false, (yylsp[(1) - (3)]).file); current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (3)])); current_scope->add_using(using_decl, global_scope, current_lexer); } break; - case 295: + case 332: /* Line 1792 of yacc.c */ -#line 2263 "dtool/src/cppparser/cppBison.yxx" +#line 2491 "dtool/src/cppparser/cppBison.yxx" + { + // This is really just an alternative way to declare a typedef. + CPPTypedefType *typedef_type = new CPPTypedefType((yyvsp[(4) - (5)].u.type), (yyvsp[(2) - (5)].u.identifier), current_scope); + typedef_type->_using = true; + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (5)])); +} + break; + + case 333: +/* Line 1792 of yacc.c */ +#line 2498 "dtool/src/cppparser/cppBison.yxx" + { + CPPUsing *using_decl = new CPPUsing((yyvsp[(3) - (4)].u.identifier), true, (yylsp[(1) - (4)]).file); + current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (4)])); + current_scope->add_using(using_decl, global_scope, current_lexer); +} + break; + + case 337: +/* Line 1792 of yacc.c */ +#line 2513 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); } break; - case 296: + case 338: /* Line 1792 of yacc.c */ -#line 2267 "dtool/src/cppparser/cppBison.yxx" +#line 2517 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); } break; - case 297: + case 339: /* Line 1792 of yacc.c */ -#line 2271 "dtool/src/cppparser/cppBison.yxx" +#line 2521 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); } break; - case 298: + case 340: /* Line 1792 of yacc.c */ -#line 2275 "dtool/src/cppparser/cppBison.yxx" +#line 2525 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); } break; - case 299: + case 341: /* Line 1792 of yacc.c */ -#line 2279 "dtool/src/cppparser/cppBison.yxx" +#line 2529 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); } break; - case 300: + case 342: /* Line 1792 of yacc.c */ -#line 2283 "dtool/src/cppparser/cppBison.yxx" +#line 2533 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } break; - case 301: + case 343: /* Line 1792 of yacc.c */ -#line 2288 "dtool/src/cppparser/cppBison.yxx" +#line 2538 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } break; - case 302: + case 344: /* Line 1792 of yacc.c */ -#line 2293 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, - CPPSimpleType::F_longlong); -} - break; - - case 303: -/* Line 1792 of yacc.c */ -#line 2298 "dtool/src/cppparser/cppBison.yxx" +#line 2543 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } break; - case 304: + case 345: /* Line 1792 of yacc.c */ -#line 2303 "dtool/src/cppparser/cppBison.yxx" +#line 2548 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } break; - case 305: + case 346: /* Line 1792 of yacc.c */ -#line 2308 "dtool/src/cppparser/cppBison.yxx" +#line 2553 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); } break; - case 306: + case 347: /* Line 1792 of yacc.c */ -#line 2312 "dtool/src/cppparser/cppBison.yxx" +#line 2557 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_short; } break; - case 307: + case 348: /* Line 1792 of yacc.c */ -#line 2317 "dtool/src/cppparser/cppBison.yxx" +#line 2562 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); if ((yyval.u.simple_type)->_flags & CPPSimpleType::F_long) { @@ -6432,453 +7019,475 @@ yyreduce: } break; - case 308: + case 349: /* Line 1792 of yacc.c */ -#line 2326 "dtool/src/cppparser/cppBison.yxx" +#line 2571 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; } break; - case 309: + case 350: /* Line 1792 of yacc.c */ -#line 2331 "dtool/src/cppparser/cppBison.yxx" +#line 2576 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; } break; - case 310: + case 351: /* Line 1792 of yacc.c */ -#line 2339 "dtool/src/cppparser/cppBison.yxx" +#line 2584 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); } break; - case 311: + case 352: /* Line 1792 of yacc.c */ -#line 2343 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float, - CPPSimpleType::F_long); -} - break; - - case 312: -/* Line 1792 of yacc.c */ -#line 2348 "dtool/src/cppparser/cppBison.yxx" +#line 2588 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); } break; - case 313: + case 353: /* Line 1792 of yacc.c */ -#line 2352 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float, - CPPSimpleType::F_longlong); -} - break; - - case 314: -/* Line 1792 of yacc.c */ -#line 2357 "dtool/src/cppparser/cppBison.yxx" +#line 2592 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } break; - case 315: + case 354: /* Line 1792 of yacc.c */ -#line 2365 "dtool/src/cppparser/cppBison.yxx" +#line 2600 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); } break; - case 316: + case 355: /* Line 1792 of yacc.c */ -#line 2374 "dtool/src/cppparser/cppBison.yxx" +#line 2609 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = false; } break; - case 317: + case 356: /* Line 1792 of yacc.c */ -#line 2378 "dtool/src/cppparser/cppBison.yxx" +#line 2613 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = true; } break; - case 414: + case 459: /* Line 1792 of yacc.c */ -#line 2418 "dtool/src/cppparser/cppBison.yxx" +#line 2654 "dtool/src/cppparser/cppBison.yxx" { } break; - case 438: + case 483: /* Line 1792 of yacc.c */ -#line 2427 "dtool/src/cppparser/cppBison.yxx" +#line 2663 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (CPPExpression *)NULL; } break; - case 439: + case 484: /* Line 1792 of yacc.c */ -#line 2431 "dtool/src/cppparser/cppBison.yxx" +#line 2667 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } break; - case 440: + case 485: /* Line 1792 of yacc.c */ -#line 2438 "dtool/src/cppparser/cppBison.yxx" +#line 2674 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (CPPExpression *)NULL; } break; - case 441: + case 486: /* Line 1792 of yacc.c */ -#line 2442 "dtool/src/cppparser/cppBison.yxx" +#line 2678 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } break; - case 442: + case 487: /* Line 1792 of yacc.c */ -#line 2449 "dtool/src/cppparser/cppBison.yxx" +#line 2685 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } break; - case 443: + case 488: /* Line 1792 of yacc.c */ -#line 2453 "dtool/src/cppparser/cppBison.yxx" +#line 2689 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(',', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 444: + case 489: /* Line 1792 of yacc.c */ -#line 2460 "dtool/src/cppparser/cppBison.yxx" +#line 2696 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } break; - case 445: + case 490: /* Line 1792 of yacc.c */ -#line 2464 "dtool/src/cppparser/cppBison.yxx" +#line 2700 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); } break; - case 446: + case 491: /* Line 1792 of yacc.c */ -#line 2468 "dtool/src/cppparser/cppBison.yxx" +#line 2704 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); } break; - case 447: + case 492: /* Line 1792 of yacc.c */ -#line 2472 "dtool/src/cppparser/cppBison.yxx" +#line 2708 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); } break; - case 448: + case 493: /* Line 1792 of yacc.c */ -#line 2476 "dtool/src/cppparser/cppBison.yxx" +#line 2712 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); +} + break; + + case 494: +/* Line 1792 of yacc.c */ +#line 2716 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); +} + break; + + case 495: +/* Line 1792 of yacc.c */ +#line 2720 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); } break; - case 449: + case 496: /* Line 1792 of yacc.c */ -#line 2480 "dtool/src/cppparser/cppBison.yxx" +#line 2724 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); } break; - case 450: + case 497: /* Line 1792 of yacc.c */ -#line 2484 "dtool/src/cppparser/cppBison.yxx" +#line 2728 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); } break; - case 451: + case 498: /* Line 1792 of yacc.c */ -#line 2488 "dtool/src/cppparser/cppBison.yxx" +#line 2732 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); } break; - case 452: + case 499: /* Line 1792 of yacc.c */ -#line 2492 "dtool/src/cppparser/cppBison.yxx" +#line 2736 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); } break; - case 453: + case 500: /* Line 1792 of yacc.c */ -#line 2496 "dtool/src/cppparser/cppBison.yxx" +#line 2740 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 501: +/* Line 1792 of yacc.c */ +#line 2744 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].u.expr)); } break; - case 454: + case 502: /* Line 1792 of yacc.c */ -#line 2500 "dtool/src/cppparser/cppBison.yxx" +#line 2748 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); } break; - case 455: + case 503: /* Line 1792 of yacc.c */ -#line 2504 "dtool/src/cppparser/cppBison.yxx" +#line 2752 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 456: + case 504: /* Line 1792 of yacc.c */ -#line 2508 "dtool/src/cppparser/cppBison.yxx" +#line 2756 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 457: + case 505: /* Line 1792 of yacc.c */ -#line 2512 "dtool/src/cppparser/cppBison.yxx" +#line 2760 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 458: + case 506: /* Line 1792 of yacc.c */ -#line 2516 "dtool/src/cppparser/cppBison.yxx" +#line 2764 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 459: + case 507: /* Line 1792 of yacc.c */ -#line 2520 "dtool/src/cppparser/cppBison.yxx" +#line 2768 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 460: + case 508: /* Line 1792 of yacc.c */ -#line 2524 "dtool/src/cppparser/cppBison.yxx" +#line 2772 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 461: + case 509: /* Line 1792 of yacc.c */ -#line 2528 "dtool/src/cppparser/cppBison.yxx" +#line 2776 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 462: + case 510: /* Line 1792 of yacc.c */ -#line 2532 "dtool/src/cppparser/cppBison.yxx" +#line 2780 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 463: + case 511: /* Line 1792 of yacc.c */ -#line 2536 "dtool/src/cppparser/cppBison.yxx" +#line 2784 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 464: + case 512: /* Line 1792 of yacc.c */ -#line 2540 "dtool/src/cppparser/cppBison.yxx" +#line 2788 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 465: + case 513: /* Line 1792 of yacc.c */ -#line 2544 "dtool/src/cppparser/cppBison.yxx" +#line 2792 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 466: + case 514: /* Line 1792 of yacc.c */ -#line 2548 "dtool/src/cppparser/cppBison.yxx" +#line 2796 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 467: + case 515: /* Line 1792 of yacc.c */ -#line 2552 "dtool/src/cppparser/cppBison.yxx" +#line 2800 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 468: + case 516: /* Line 1792 of yacc.c */ -#line 2556 "dtool/src/cppparser/cppBison.yxx" +#line 2804 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 469: + case 517: /* Line 1792 of yacc.c */ -#line 2560 "dtool/src/cppparser/cppBison.yxx" +#line 2808 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 470: + case 518: /* Line 1792 of yacc.c */ -#line 2564 "dtool/src/cppparser/cppBison.yxx" +#line 2812 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 471: + case 519: /* Line 1792 of yacc.c */ -#line 2568 "dtool/src/cppparser/cppBison.yxx" +#line 2816 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); } break; - case 472: + case 520: /* Line 1792 of yacc.c */ -#line 2572 "dtool/src/cppparser/cppBison.yxx" +#line 2820 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } break; - case 473: + case 521: /* Line 1792 of yacc.c */ -#line 2576 "dtool/src/cppparser/cppBison.yxx" +#line 2824 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } break; - case 474: + case 522: /* Line 1792 of yacc.c */ -#line 2580 "dtool/src/cppparser/cppBison.yxx" +#line 2828 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); } break; - case 475: + case 523: /* Line 1792 of yacc.c */ -#line 2584 "dtool/src/cppparser/cppBison.yxx" +#line 2832 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 476: + case 524: /* Line 1792 of yacc.c */ -#line 2588 "dtool/src/cppparser/cppBison.yxx" +#line 2836 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; - case 477: + case 525: /* Line 1792 of yacc.c */ -#line 2592 "dtool/src/cppparser/cppBison.yxx" +#line 2840 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); } break; - case 478: + case 526: /* Line 1792 of yacc.c */ -#line 2600 "dtool/src/cppparser/cppBison.yxx" +#line 2848 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } break; - case 479: + case 527: /* Line 1792 of yacc.c */ -#line 2604 "dtool/src/cppparser/cppBison.yxx" +#line 2852 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); } break; - case 480: + case 528: /* Line 1792 of yacc.c */ -#line 2608 "dtool/src/cppparser/cppBison.yxx" +#line 2856 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); } break; - case 481: + case 529: /* Line 1792 of yacc.c */ -#line 2612 "dtool/src/cppparser/cppBison.yxx" +#line 2860 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); } break; - case 482: + case 530: /* Line 1792 of yacc.c */ -#line 2616 "dtool/src/cppparser/cppBison.yxx" +#line 2864 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); +} + break; + + case 531: +/* Line 1792 of yacc.c */ +#line 2868 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); +} + break; + + case 532: +/* Line 1792 of yacc.c */ +#line 2872 "dtool/src/cppparser/cppBison.yxx" { // A constructor call. CPPType *type = (yyvsp[(1) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -6890,9 +7499,9 @@ yyreduce: } break; - case 483: + case 533: /* Line 1792 of yacc.c */ -#line 2626 "dtool/src/cppparser/cppBison.yxx" +#line 2882 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int)); @@ -6900,9 +7509,9 @@ yyreduce: } break; - case 484: + case 534: /* Line 1792 of yacc.c */ -#line 2632 "dtool/src/cppparser/cppBison.yxx" +#line 2888 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char)); @@ -6910,9 +7519,9 @@ yyreduce: } break; - case 485: + case 535: /* Line 1792 of yacc.c */ -#line 2638 "dtool/src/cppparser/cppBison.yxx" +#line 2894 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_wchar_t)); @@ -6920,9 +7529,9 @@ yyreduce: } break; - case 486: + case 536: /* Line 1792 of yacc.c */ -#line 2644 "dtool/src/cppparser/cppBison.yxx" +#line 2900 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char16_t)); @@ -6930,9 +7539,9 @@ yyreduce: } break; - case 487: + case 537: /* Line 1792 of yacc.c */ -#line 2650 "dtool/src/cppparser/cppBison.yxx" +#line 2906 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char32_t)); @@ -6940,9 +7549,9 @@ yyreduce: } break; - case 488: + case 538: /* Line 1792 of yacc.c */ -#line 2656 "dtool/src/cppparser/cppBison.yxx" +#line 2912 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_bool)); @@ -6950,9 +7559,9 @@ yyreduce: } break; - case 489: + case 539: /* Line 1792 of yacc.c */ -#line 2662 "dtool/src/cppparser/cppBison.yxx" +#line 2918 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, @@ -6961,9 +7570,9 @@ yyreduce: } break; - case 490: + case 540: /* Line 1792 of yacc.c */ -#line 2669 "dtool/src/cppparser/cppBison.yxx" +#line 2925 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, @@ -6972,9 +7581,9 @@ yyreduce: } break; - case 491: + case 541: /* Line 1792 of yacc.c */ -#line 2676 "dtool/src/cppparser/cppBison.yxx" +#line 2932 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, @@ -6983,9 +7592,9 @@ yyreduce: } break; - case 492: + case 542: /* Line 1792 of yacc.c */ -#line 2683 "dtool/src/cppparser/cppBison.yxx" +#line 2939 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, @@ -6994,9 +7603,9 @@ yyreduce: } break; - case 493: + case 543: /* Line 1792 of yacc.c */ -#line 2690 "dtool/src/cppparser/cppBison.yxx" +#line 2946 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_float)); @@ -7004,9 +7613,9 @@ yyreduce: } break; - case 494: + case 544: /* Line 1792 of yacc.c */ -#line 2696 "dtool/src/cppparser/cppBison.yxx" +#line 2952 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_double)); @@ -7014,721 +7623,869 @@ yyreduce: } break; - case 495: -/* Line 1792 of yacc.c */ -#line 2702 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); -} - break; - - case 496: -/* Line 1792 of yacc.c */ -#line 2706 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); -} - break; - - case 497: -/* Line 1792 of yacc.c */ -#line 2710 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); -} - break; - - case 498: -/* Line 1792 of yacc.c */ -#line 2714 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); -} - break; - - case 499: -/* Line 1792 of yacc.c */ -#line 2718 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 500: -/* Line 1792 of yacc.c */ -#line 2722 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 501: -/* Line 1792 of yacc.c */ -#line 2726 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 502: -/* Line 1792 of yacc.c */ -#line 2730 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 503: -/* Line 1792 of yacc.c */ -#line 2734 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 504: -/* Line 1792 of yacc.c */ -#line 2738 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 505: -/* Line 1792 of yacc.c */ -#line 2742 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 506: -/* Line 1792 of yacc.c */ -#line 2746 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 507: -/* Line 1792 of yacc.c */ -#line 2750 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 508: -/* Line 1792 of yacc.c */ -#line 2754 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 509: -/* Line 1792 of yacc.c */ -#line 2758 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 510: -/* Line 1792 of yacc.c */ -#line 2762 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 511: -/* Line 1792 of yacc.c */ -#line 2766 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 512: -/* Line 1792 of yacc.c */ -#line 2770 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 513: -/* Line 1792 of yacc.c */ -#line 2774 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 514: -/* Line 1792 of yacc.c */ -#line 2778 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 515: -/* Line 1792 of yacc.c */ -#line 2782 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 516: -/* Line 1792 of yacc.c */ -#line 2786 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 517: -/* Line 1792 of yacc.c */ -#line 2790 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 518: -/* Line 1792 of yacc.c */ -#line 2794 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 519: -/* Line 1792 of yacc.c */ -#line 2798 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 520: -/* Line 1792 of yacc.c */ -#line 2802 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 521: -/* Line 1792 of yacc.c */ -#line 2806 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 522: -/* Line 1792 of yacc.c */ -#line 2810 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); -} - break; - - case 523: -/* Line 1792 of yacc.c */ -#line 2814 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); -} - break; - - case 524: -/* Line 1792 of yacc.c */ -#line 2818 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); -} - break; - - case 525: -/* Line 1792 of yacc.c */ -#line 2822 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); -} - break; - - case 526: -/* Line 1792 of yacc.c */ -#line 2826 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 527: -/* Line 1792 of yacc.c */ -#line 2830 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 528: -/* Line 1792 of yacc.c */ -#line 2834 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); -} - break; - - case 529: -/* Line 1792 of yacc.c */ -#line 2841 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); -} - break; - - case 530: -/* Line 1792 of yacc.c */ -#line 2845 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(true); -} - break; - - case 531: -/* Line 1792 of yacc.c */ -#line 2849 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(false); -} - break; - - case 532: -/* Line 1792 of yacc.c */ -#line 2853 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); -} - break; - - case 533: -/* Line 1792 of yacc.c */ -#line 2857 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); -} - break; - - case 534: -/* Line 1792 of yacc.c */ -#line 2861 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} - break; - - case 535: -/* Line 1792 of yacc.c */ -#line 2865 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} - break; - - case 536: -/* Line 1792 of yacc.c */ -#line 2869 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); -} - break; - - case 537: -/* Line 1792 of yacc.c */ -#line 2873 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); -} - break; - - case 538: -/* Line 1792 of yacc.c */ -#line 2887 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} - break; - - case 539: -/* Line 1792 of yacc.c */ -#line 2891 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); -} - break; - - case 540: -/* Line 1792 of yacc.c */ -#line 2895 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr))); -} - break; - - case 541: -/* Line 1792 of yacc.c */ -#line 2899 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr))); -} - break; - - case 542: -/* Line 1792 of yacc.c */ -#line 2903 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); -} - break; - - case 543: -/* Line 1792 of yacc.c */ -#line 2907 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); -} - break; - - case 544: -/* Line 1792 of yacc.c */ -#line 2911 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); -} - break; - case 545: /* Line 1792 of yacc.c */ -#line 2915 "dtool/src/cppparser/cppBison.yxx" +#line 2958 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); } break; case 546: /* Line 1792 of yacc.c */ -#line 2919 "dtool/src/cppparser/cppBison.yxx" +#line 2962 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); } break; case 547: /* Line 1792 of yacc.c */ -#line 2923 "dtool/src/cppparser/cppBison.yxx" +#line 2966 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); } break; case 548: /* Line 1792 of yacc.c */ -#line 2927 "dtool/src/cppparser/cppBison.yxx" +#line 2970 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); } break; case 549: /* Line 1792 of yacc.c */ -#line 2931 "dtool/src/cppparser/cppBison.yxx" +#line 2974 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", (yylsp[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.type), std_type_info)); } break; case 550: /* Line 1792 of yacc.c */ -#line 2935 "dtool/src/cppparser/cppBison.yxx" +#line 2985 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", (yylsp[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.expr), std_type_info)); } break; case 551: /* Line 1792 of yacc.c */ -#line 2939 "dtool/src/cppparser/cppBison.yxx" +#line 2996 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); } break; case 552: /* Line 1792 of yacc.c */ -#line 2943 "dtool/src/cppparser/cppBison.yxx" +#line 3000 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); } break; case 553: /* Line 1792 of yacc.c */ -#line 2947 "dtool/src/cppparser/cppBison.yxx" +#line 3004 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); } break; case 554: /* Line 1792 of yacc.c */ -#line 2951 "dtool/src/cppparser/cppBison.yxx" +#line 3008 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); } break; case 555: /* Line 1792 of yacc.c */ -#line 2955 "dtool/src/cppparser/cppBison.yxx" +#line 3012 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].u.expr)); } break; case 556: /* Line 1792 of yacc.c */ -#line 2959 "dtool/src/cppparser/cppBison.yxx" +#line 3016 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); } break; case 557: /* Line 1792 of yacc.c */ -#line 2963 "dtool/src/cppparser/cppBison.yxx" +#line 3020 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 558: /* Line 1792 of yacc.c */ -#line 2967 "dtool/src/cppparser/cppBison.yxx" +#line 3024 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 559: /* Line 1792 of yacc.c */ -#line 2971 "dtool/src/cppparser/cppBison.yxx" +#line 3028 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 560: /* Line 1792 of yacc.c */ -#line 2975 "dtool/src/cppparser/cppBison.yxx" +#line 3032 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 561: /* Line 1792 of yacc.c */ -#line 2979 "dtool/src/cppparser/cppBison.yxx" +#line 3036 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 562: /* Line 1792 of yacc.c */ -#line 2983 "dtool/src/cppparser/cppBison.yxx" +#line 3040 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 563: /* Line 1792 of yacc.c */ -#line 2987 "dtool/src/cppparser/cppBison.yxx" +#line 3044 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 564: /* Line 1792 of yacc.c */ -#line 2991 "dtool/src/cppparser/cppBison.yxx" +#line 3048 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 565: /* Line 1792 of yacc.c */ -#line 2995 "dtool/src/cppparser/cppBison.yxx" +#line 3052 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 566: /* Line 1792 of yacc.c */ -#line 2999 "dtool/src/cppparser/cppBison.yxx" +#line 3056 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 567: /* Line 1792 of yacc.c */ -#line 3003 "dtool/src/cppparser/cppBison.yxx" +#line 3060 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 568: /* Line 1792 of yacc.c */ -#line 3007 "dtool/src/cppparser/cppBison.yxx" +#line 3064 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 569: /* Line 1792 of yacc.c */ -#line 3011 "dtool/src/cppparser/cppBison.yxx" +#line 3068 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 570: /* Line 1792 of yacc.c */ -#line 3015 "dtool/src/cppparser/cppBison.yxx" +#line 3072 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 571: /* Line 1792 of yacc.c */ -#line 3019 "dtool/src/cppparser/cppBison.yxx" +#line 3076 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 572: /* Line 1792 of yacc.c */ -#line 3023 "dtool/src/cppparser/cppBison.yxx" +#line 3080 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 573: /* Line 1792 of yacc.c */ -#line 3027 "dtool/src/cppparser/cppBison.yxx" +#line 3084 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 574: /* Line 1792 of yacc.c */ -#line 3031 "dtool/src/cppparser/cppBison.yxx" +#line 3088 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 575: /* Line 1792 of yacc.c */ -#line 3038 "dtool/src/cppparser/cppBison.yxx" +#line 3092 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); } break; case 576: /* Line 1792 of yacc.c */ -#line 3042 "dtool/src/cppparser/cppBison.yxx" +#line 3096 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(true); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } break; case 577: /* Line 1792 of yacc.c */ -#line 3046 "dtool/src/cppparser/cppBison.yxx" +#line 3100 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(false); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } break; case 578: /* Line 1792 of yacc.c */ -#line 3050 "dtool/src/cppparser/cppBison.yxx" +#line 3104 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); } break; case 579: /* Line 1792 of yacc.c */ -#line 3054 "dtool/src/cppparser/cppBison.yxx" +#line 3108 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 580: /* Line 1792 of yacc.c */ -#line 3058 "dtool/src/cppparser/cppBison.yxx" +#line 3112 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } break; case 581: /* Line 1792 of yacc.c */ -#line 3062 "dtool/src/cppparser/cppBison.yxx" +#line 3116 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); } break; case 582: /* Line 1792 of yacc.c */ -#line 3066 "dtool/src/cppparser/cppBison.yxx" +#line 3123 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); } break; case 583: /* Line 1792 of yacc.c */ -#line 3070 "dtool/src/cppparser/cppBison.yxx" +#line 3127 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); + (yyval.u.expr) = new CPPExpression(true); } break; case 584: /* Line 1792 of yacc.c */ -#line 3077 "dtool/src/cppparser/cppBison.yxx" +#line 3131 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(false); +} + break; + + case 585: +/* Line 1792 of yacc.c */ +#line 3135 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); +} + break; + + case 586: +/* Line 1792 of yacc.c */ +#line 3139 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); +} + break; + + case 587: +/* Line 1792 of yacc.c */ +#line 3143 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 588: +/* Line 1792 of yacc.c */ +#line 3147 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 589: +/* Line 1792 of yacc.c */ +#line 3151 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); +} + break; + + case 590: +/* Line 1792 of yacc.c */ +#line 3155 "dtool/src/cppparser/cppBison.yxx" + { + // A variable named "final". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[(1) - (1)])); + (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); +} + break; + + case 591: +/* Line 1792 of yacc.c */ +#line 3161 "dtool/src/cppparser/cppBison.yxx" + { + // A variable named "override". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[(1) - (1)])); + (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); +} + break; + + case 592: +/* Line 1792 of yacc.c */ +#line 3167 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); +} + break; + + case 593: +/* Line 1792 of yacc.c */ +#line 3171 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = NULL; +} + break; + + case 594: +/* Line 1792 of yacc.c */ +#line 3175 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = NULL; +} + break; + + case 595: +/* Line 1792 of yacc.c */ +#line 3189 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 596: +/* Line 1792 of yacc.c */ +#line 3193 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); +} + break; + + case 597: +/* Line 1792 of yacc.c */ +#line 3197 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); +} + break; + + case 598: +/* Line 1792 of yacc.c */ +#line 3201 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); +} + break; + + case 599: +/* Line 1792 of yacc.c */ +#line 3205 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); +} + break; + + case 600: +/* Line 1792 of yacc.c */ +#line 3209 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); +} + break; + + case 601: +/* Line 1792 of yacc.c */ +#line 3213 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); +} + break; + + case 602: +/* Line 1792 of yacc.c */ +#line 3217 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); +} + break; + + case 603: +/* Line 1792 of yacc.c */ +#line 3221 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); +} + break; + + case 604: +/* Line 1792 of yacc.c */ +#line 3225 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); +} + break; + + case 605: +/* Line 1792 of yacc.c */ +#line 3229 "dtool/src/cppparser/cppBison.yxx" + { + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", (yylsp[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.type), std_type_info)); +} + break; + + case 606: +/* Line 1792 of yacc.c */ +#line 3240 "dtool/src/cppparser/cppBison.yxx" + { + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", (yylsp[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.expr), std_type_info)); +} + break; + + case 607: +/* Line 1792 of yacc.c */ +#line 3251 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 608: +/* Line 1792 of yacc.c */ +#line 3255 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 609: +/* Line 1792 of yacc.c */ +#line 3259 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 610: +/* Line 1792 of yacc.c */ +#line 3263 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 611: +/* Line 1792 of yacc.c */ +#line 3267 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 612: +/* Line 1792 of yacc.c */ +#line 3271 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 613: +/* Line 1792 of yacc.c */ +#line 3275 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 614: +/* Line 1792 of yacc.c */ +#line 3279 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 615: +/* Line 1792 of yacc.c */ +#line 3283 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 616: +/* Line 1792 of yacc.c */ +#line 3287 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 617: +/* Line 1792 of yacc.c */ +#line 3291 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 618: +/* Line 1792 of yacc.c */ +#line 3295 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 619: +/* Line 1792 of yacc.c */ +#line 3299 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 620: +/* Line 1792 of yacc.c */ +#line 3303 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 621: +/* Line 1792 of yacc.c */ +#line 3307 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 622: +/* Line 1792 of yacc.c */ +#line 3311 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 623: +/* Line 1792 of yacc.c */ +#line 3315 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 624: +/* Line 1792 of yacc.c */ +#line 3319 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 625: +/* Line 1792 of yacc.c */ +#line 3323 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 626: +/* Line 1792 of yacc.c */ +#line 3327 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 627: +/* Line 1792 of yacc.c */ +#line 3331 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 628: +/* Line 1792 of yacc.c */ +#line 3335 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 629: +/* Line 1792 of yacc.c */ +#line 3339 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 630: +/* Line 1792 of yacc.c */ +#line 3343 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); +} + break; + + case 631: +/* Line 1792 of yacc.c */ +#line 3347 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); +} + break; + + case 632: +/* Line 1792 of yacc.c */ +#line 3351 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); +} + break; + + case 633: +/* Line 1792 of yacc.c */ +#line 3355 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); +} + break; + + case 634: +/* Line 1792 of yacc.c */ +#line 3359 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 635: +/* Line 1792 of yacc.c */ +#line 3363 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 636: +/* Line 1792 of yacc.c */ +#line 3367 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); +} + break; + + case 637: +/* Line 1792 of yacc.c */ +#line 3374 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); +} + break; + + case 638: +/* Line 1792 of yacc.c */ +#line 3378 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(true); +} + break; + + case 639: +/* Line 1792 of yacc.c */ +#line 3382 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(false); +} + break; + + case 640: +/* Line 1792 of yacc.c */ +#line 3386 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); +} + break; + + case 641: +/* Line 1792 of yacc.c */ +#line 3390 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); +} + break; + + case 642: +/* Line 1792 of yacc.c */ +#line 3394 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 643: +/* Line 1792 of yacc.c */ +#line 3398 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 644: +/* Line 1792 of yacc.c */ +#line 3402 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); +} + break; + + case 645: +/* Line 1792 of yacc.c */ +#line 3406 "dtool/src/cppparser/cppBison.yxx" + { + // A variable named "final". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[(1) - (1)])); + (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); +} + break; + + case 646: +/* Line 1792 of yacc.c */ +#line 3412 "dtool/src/cppparser/cppBison.yxx" + { + // A variable named "override". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[(1) - (1)])); + (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); +} + break; + + case 647: +/* Line 1792 of yacc.c */ +#line 3418 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); +} + break; + + case 655: +/* Line 1792 of yacc.c */ +#line 3439 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, true); if (type == NULL) { @@ -7738,9 +8495,9 @@ yyreduce: } break; - case 585: + case 656: /* Line 1792 of yacc.c */ -#line 3085 "dtool/src/cppparser/cppBison.yxx" +#line 3447 "dtool/src/cppparser/cppBison.yxx" { CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, true, current_lexer); if (type == NULL) { @@ -7750,49 +8507,89 @@ yyreduce: } break; - case 586: + case 657: /* Line 1792 of yacc.c */ -#line 3093 "dtool/src/cppparser/cppBison.yxx" +#line 3455 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); } break; - case 587: + case 658: /* Line 1792 of yacc.c */ -#line 3119 "dtool/src/cppparser/cppBison.yxx" +#line 3483 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); } break; - case 588: + case 659: /* Line 1792 of yacc.c */ -#line 3123 "dtool/src/cppparser/cppBison.yxx" +#line 3487 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); } break; - case 589: + case 660: /* Line 1792 of yacc.c */ -#line 3130 "dtool/src/cppparser/cppBison.yxx" +#line 3491 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[(1) - (1)])); +} + break; + + case 661: +/* Line 1792 of yacc.c */ +#line 3495 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[(1) - (1)])); +} + break; + + case 662: +/* Line 1792 of yacc.c */ +#line 3506 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 663: +/* Line 1792 of yacc.c */ +#line 3510 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 664: +/* Line 1792 of yacc.c */ +#line 3514 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[(1) - (1)])); +} + break; + + case 665: +/* Line 1792 of yacc.c */ +#line 3522 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].str)); } break; - case 590: + case 666: /* Line 1792 of yacc.c */ -#line 3134 "dtool/src/cppparser/cppBison.yxx" +#line 3526 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } break; - case 591: + case 667: /* Line 1792 of yacc.c */ -#line 3138 "dtool/src/cppparser/cppBison.yxx" +#line 3530 "dtool/src/cppparser/cppBison.yxx" { // The right string takes on the literal type of the left. (yyval.u.expr) = (yyvsp[(1) - (2)].u.expr); @@ -7800,9 +8597,9 @@ yyreduce: } break; - case 592: + case 668: /* Line 1792 of yacc.c */ -#line 3144 "dtool/src/cppparser/cppBison.yxx" +#line 3536 "dtool/src/cppparser/cppBison.yxx" { // We have to check that the two literal types match up. (yyval.u.expr) = (yyvsp[(1) - (2)].u.expr); @@ -7815,7 +8612,7 @@ yyreduce: /* Line 1792 of yacc.c */ -#line 7819 "built/tmp/cppBison.yxx.c" +#line 8616 "built/tmp/cppBison.yxx.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/dtool/src/cppparser/cppBison.h.prebuilt b/dtool/src/cppparser/cppBison.h.prebuilt index efb95b06a1..c7784f5edf 100644 --- a/dtool/src/cppparser/cppBison.h.prebuilt +++ b/dtool/src/cppparser/cppBison.h.prebuilt @@ -72,95 +72,101 @@ extern int cppyydebug; UNARY_NOT = 281, UNARY_NEGATE = 282, UNARY_MINUS = 283, - UNARY_STAR = 284, - UNARY_REF = 285, - POINTSAT = 286, - SCOPE = 287, - PLUSPLUS = 288, - MINUSMINUS = 289, - TIMESEQUAL = 290, - DIVIDEEQUAL = 291, - MODEQUAL = 292, - PLUSEQUAL = 293, - MINUSEQUAL = 294, - OREQUAL = 295, - ANDEQUAL = 296, - XOREQUAL = 297, - LSHIFTEQUAL = 298, - RSHIFTEQUAL = 299, - KW_ALIGNAS = 300, - KW_ALIGNOF = 301, - KW_AUTO = 302, - KW_BEGIN_PUBLISH = 303, - KW_BLOCKING = 304, - KW_BOOL = 305, - KW_CATCH = 306, - KW_CHAR = 307, - KW_CHAR16_T = 308, - KW_CHAR32_T = 309, - KW_CLASS = 310, - KW_CONST = 311, - KW_CONSTEXPR = 312, - KW_DECLTYPE = 313, - KW_DEFAULT = 314, - KW_DELETE = 315, - KW_DOUBLE = 316, - KW_DYNAMIC_CAST = 317, - KW_ELSE = 318, - KW_END_PUBLISH = 319, - KW_ENUM = 320, - KW_EXTENSION = 321, - KW_EXTERN = 322, - KW_EXPLICIT = 323, - KW_PUBLISHED = 324, - KW_FALSE = 325, - KW_FLOAT = 326, - KW_FRIEND = 327, - KW_FOR = 328, - KW_GOTO = 329, - KW_IF = 330, - KW_INLINE = 331, - KW_INT = 332, - KW_LONG = 333, - KW_LONGLONG = 334, - KW_MAKE_PROPERTY = 335, - KW_MAKE_PROPERTY2 = 336, - KW_MAKE_SEQ = 337, - KW_MUTABLE = 338, - KW_NAMESPACE = 339, - KW_NEW = 340, - KW_NOEXCEPT = 341, - KW_NULLPTR = 342, - KW_OPERATOR = 343, - KW_PRIVATE = 344, - KW_PROTECTED = 345, - KW_PUBLIC = 346, - KW_REGISTER = 347, - KW_RETURN = 348, - KW_SHORT = 349, - KW_SIGNED = 350, - KW_SIZEOF = 351, - KW_STATIC = 352, - KW_STATIC_ASSERT = 353, - KW_STATIC_CAST = 354, - KW_STRUCT = 355, - KW_TEMPLATE = 356, - KW_THROW = 357, - KW_TRUE = 358, - KW_TRY = 359, - KW_TYPEDEF = 360, - KW_TYPENAME = 361, - KW_UNION = 362, - KW_UNSIGNED = 363, - KW_USING = 364, - KW_VIRTUAL = 365, - KW_VOID = 366, - KW_VOLATILE = 367, - KW_WCHAR_T = 368, - KW_WHILE = 369, - START_CPP = 370, - START_CONST_EXPR = 371, - START_TYPE = 372 + UNARY_PLUS = 284, + UNARY_STAR = 285, + UNARY_REF = 286, + POINTSAT = 287, + SCOPE = 288, + PLUSPLUS = 289, + MINUSMINUS = 290, + TIMESEQUAL = 291, + DIVIDEEQUAL = 292, + MODEQUAL = 293, + PLUSEQUAL = 294, + MINUSEQUAL = 295, + OREQUAL = 296, + ANDEQUAL = 297, + XOREQUAL = 298, + LSHIFTEQUAL = 299, + RSHIFTEQUAL = 300, + KW_ALIGNAS = 301, + KW_ALIGNOF = 302, + KW_AUTO = 303, + KW_BEGIN_PUBLISH = 304, + KW_BLOCKING = 305, + KW_BOOL = 306, + KW_CATCH = 307, + KW_CHAR = 308, + KW_CHAR16_T = 309, + KW_CHAR32_T = 310, + KW_CLASS = 311, + KW_CONST = 312, + KW_CONSTEXPR = 313, + KW_CONST_CAST = 314, + KW_DECLTYPE = 315, + KW_DEFAULT = 316, + KW_DELETE = 317, + KW_DOUBLE = 318, + KW_DYNAMIC_CAST = 319, + KW_ELSE = 320, + KW_END_PUBLISH = 321, + KW_ENUM = 322, + KW_EXTENSION = 323, + KW_EXTERN = 324, + KW_EXPLICIT = 325, + KW_PUBLISHED = 326, + KW_FALSE = 327, + KW_FINAL = 328, + KW_FLOAT = 329, + KW_FRIEND = 330, + KW_FOR = 331, + KW_GOTO = 332, + KW_IF = 333, + KW_INLINE = 334, + KW_INT = 335, + KW_LONG = 336, + KW_MAKE_PROPERTY = 337, + KW_MAKE_PROPERTY2 = 338, + KW_MAKE_SEQ = 339, + KW_MUTABLE = 340, + KW_NAMESPACE = 341, + KW_NEW = 342, + KW_NOEXCEPT = 343, + KW_NULLPTR = 344, + KW_OPERATOR = 345, + KW_OVERRIDE = 346, + KW_PRIVATE = 347, + KW_PROTECTED = 348, + KW_PUBLIC = 349, + KW_REGISTER = 350, + KW_REINTERPRET_CAST = 351, + KW_RETURN = 352, + KW_SHORT = 353, + KW_SIGNED = 354, + KW_SIZEOF = 355, + KW_STATIC = 356, + KW_STATIC_ASSERT = 357, + KW_STATIC_CAST = 358, + KW_STRUCT = 359, + KW_TEMPLATE = 360, + KW_THREAD_LOCAL = 361, + KW_THROW = 362, + KW_TRUE = 363, + KW_TRY = 364, + KW_TYPEDEF = 365, + KW_TYPEID = 366, + KW_TYPENAME = 367, + KW_UNION = 368, + KW_UNSIGNED = 369, + KW_USING = 370, + KW_VIRTUAL = 371, + KW_VOID = 372, + KW_VOLATILE = 373, + KW_WCHAR_T = 374, + KW_WHILE = 375, + START_CPP = 376, + START_CONST_EXPR = 377, + START_TYPE = 378 }; #endif /* Tokens. */ @@ -190,95 +196,101 @@ extern int cppyydebug; #define UNARY_NOT 281 #define UNARY_NEGATE 282 #define UNARY_MINUS 283 -#define UNARY_STAR 284 -#define UNARY_REF 285 -#define POINTSAT 286 -#define SCOPE 287 -#define PLUSPLUS 288 -#define MINUSMINUS 289 -#define TIMESEQUAL 290 -#define DIVIDEEQUAL 291 -#define MODEQUAL 292 -#define PLUSEQUAL 293 -#define MINUSEQUAL 294 -#define OREQUAL 295 -#define ANDEQUAL 296 -#define XOREQUAL 297 -#define LSHIFTEQUAL 298 -#define RSHIFTEQUAL 299 -#define KW_ALIGNAS 300 -#define KW_ALIGNOF 301 -#define KW_AUTO 302 -#define KW_BEGIN_PUBLISH 303 -#define KW_BLOCKING 304 -#define KW_BOOL 305 -#define KW_CATCH 306 -#define KW_CHAR 307 -#define KW_CHAR16_T 308 -#define KW_CHAR32_T 309 -#define KW_CLASS 310 -#define KW_CONST 311 -#define KW_CONSTEXPR 312 -#define KW_DECLTYPE 313 -#define KW_DEFAULT 314 -#define KW_DELETE 315 -#define KW_DOUBLE 316 -#define KW_DYNAMIC_CAST 317 -#define KW_ELSE 318 -#define KW_END_PUBLISH 319 -#define KW_ENUM 320 -#define KW_EXTENSION 321 -#define KW_EXTERN 322 -#define KW_EXPLICIT 323 -#define KW_PUBLISHED 324 -#define KW_FALSE 325 -#define KW_FLOAT 326 -#define KW_FRIEND 327 -#define KW_FOR 328 -#define KW_GOTO 329 -#define KW_IF 330 -#define KW_INLINE 331 -#define KW_INT 332 -#define KW_LONG 333 -#define KW_LONGLONG 334 -#define KW_MAKE_PROPERTY 335 -#define KW_MAKE_PROPERTY2 336 -#define KW_MAKE_SEQ 337 -#define KW_MUTABLE 338 -#define KW_NAMESPACE 339 -#define KW_NEW 340 -#define KW_NOEXCEPT 341 -#define KW_NULLPTR 342 -#define KW_OPERATOR 343 -#define KW_PRIVATE 344 -#define KW_PROTECTED 345 -#define KW_PUBLIC 346 -#define KW_REGISTER 347 -#define KW_RETURN 348 -#define KW_SHORT 349 -#define KW_SIGNED 350 -#define KW_SIZEOF 351 -#define KW_STATIC 352 -#define KW_STATIC_ASSERT 353 -#define KW_STATIC_CAST 354 -#define KW_STRUCT 355 -#define KW_TEMPLATE 356 -#define KW_THROW 357 -#define KW_TRUE 358 -#define KW_TRY 359 -#define KW_TYPEDEF 360 -#define KW_TYPENAME 361 -#define KW_UNION 362 -#define KW_UNSIGNED 363 -#define KW_USING 364 -#define KW_VIRTUAL 365 -#define KW_VOID 366 -#define KW_VOLATILE 367 -#define KW_WCHAR_T 368 -#define KW_WHILE 369 -#define START_CPP 370 -#define START_CONST_EXPR 371 -#define START_TYPE 372 +#define UNARY_PLUS 284 +#define UNARY_STAR 285 +#define UNARY_REF 286 +#define POINTSAT 287 +#define SCOPE 288 +#define PLUSPLUS 289 +#define MINUSMINUS 290 +#define TIMESEQUAL 291 +#define DIVIDEEQUAL 292 +#define MODEQUAL 293 +#define PLUSEQUAL 294 +#define MINUSEQUAL 295 +#define OREQUAL 296 +#define ANDEQUAL 297 +#define XOREQUAL 298 +#define LSHIFTEQUAL 299 +#define RSHIFTEQUAL 300 +#define KW_ALIGNAS 301 +#define KW_ALIGNOF 302 +#define KW_AUTO 303 +#define KW_BEGIN_PUBLISH 304 +#define KW_BLOCKING 305 +#define KW_BOOL 306 +#define KW_CATCH 307 +#define KW_CHAR 308 +#define KW_CHAR16_T 309 +#define KW_CHAR32_T 310 +#define KW_CLASS 311 +#define KW_CONST 312 +#define KW_CONSTEXPR 313 +#define KW_CONST_CAST 314 +#define KW_DECLTYPE 315 +#define KW_DEFAULT 316 +#define KW_DELETE 317 +#define KW_DOUBLE 318 +#define KW_DYNAMIC_CAST 319 +#define KW_ELSE 320 +#define KW_END_PUBLISH 321 +#define KW_ENUM 322 +#define KW_EXTENSION 323 +#define KW_EXTERN 324 +#define KW_EXPLICIT 325 +#define KW_PUBLISHED 326 +#define KW_FALSE 327 +#define KW_FINAL 328 +#define KW_FLOAT 329 +#define KW_FRIEND 330 +#define KW_FOR 331 +#define KW_GOTO 332 +#define KW_IF 333 +#define KW_INLINE 334 +#define KW_INT 335 +#define KW_LONG 336 +#define KW_MAKE_PROPERTY 337 +#define KW_MAKE_PROPERTY2 338 +#define KW_MAKE_SEQ 339 +#define KW_MUTABLE 340 +#define KW_NAMESPACE 341 +#define KW_NEW 342 +#define KW_NOEXCEPT 343 +#define KW_NULLPTR 344 +#define KW_OPERATOR 345 +#define KW_OVERRIDE 346 +#define KW_PRIVATE 347 +#define KW_PROTECTED 348 +#define KW_PUBLIC 349 +#define KW_REGISTER 350 +#define KW_REINTERPRET_CAST 351 +#define KW_RETURN 352 +#define KW_SHORT 353 +#define KW_SIGNED 354 +#define KW_SIZEOF 355 +#define KW_STATIC 356 +#define KW_STATIC_ASSERT 357 +#define KW_STATIC_CAST 358 +#define KW_STRUCT 359 +#define KW_TEMPLATE 360 +#define KW_THREAD_LOCAL 361 +#define KW_THROW 362 +#define KW_TRUE 363 +#define KW_TRY 364 +#define KW_TYPEDEF 365 +#define KW_TYPEID 366 +#define KW_TYPENAME 367 +#define KW_UNION 368 +#define KW_UNSIGNED 369 +#define KW_USING 370 +#define KW_VIRTUAL 371 +#define KW_VOID 372 +#define KW_VOLATILE 373 +#define KW_WCHAR_T 374 +#define KW_WHILE 375 +#define START_CPP 376 +#define START_CONST_EXPR 377 +#define START_TYPE 378 diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index d66913450b..09991d8086 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -229,6 +229,7 @@ pop_struct() { %token UNARY_NOT %token UNARY_NEGATE %token UNARY_MINUS +%token UNARY_PLUS %token UNARY_STAR %token UNARY_REF %token POINTSAT @@ -259,6 +260,7 @@ pop_struct() { %token KW_CLASS %token KW_CONST %token KW_CONSTEXPR +%token KW_CONST_CAST %token KW_DECLTYPE %token KW_DEFAULT %token KW_DELETE @@ -272,6 +274,7 @@ pop_struct() { %token KW_EXPLICIT %token KW_PUBLISHED %token KW_FALSE +%token KW_FINAL %token KW_FLOAT %token KW_FRIEND %token KW_FOR @@ -280,7 +283,6 @@ pop_struct() { %token KW_INLINE %token KW_INT %token KW_LONG -%token KW_LONGLONG %token KW_MAKE_PROPERTY %token KW_MAKE_PROPERTY2 %token KW_MAKE_SEQ @@ -290,10 +292,12 @@ pop_struct() { %token KW_NOEXCEPT %token KW_NULLPTR %token KW_OPERATOR +%token KW_OVERRIDE %token KW_PRIVATE %token KW_PROTECTED %token KW_PUBLIC %token KW_REGISTER +%token KW_REINTERPRET_CAST %token KW_RETURN %token KW_SHORT %token KW_SIGNED @@ -303,10 +307,12 @@ pop_struct() { %token KW_STATIC_CAST %token KW_STRUCT %token KW_TEMPLATE +%token KW_THREAD_LOCAL %token KW_THROW %token KW_TRUE %token KW_TRY %token KW_TYPEDEF +%token KW_TYPEID %token KW_TYPENAME %token KW_UNION %token KW_UNSIGNED @@ -325,20 +331,27 @@ pop_struct() { %token START_TYPE %type storage_class +%type constructor_prototype %type function_prototype %type function_post %type function_operator %type template_formal_parameter %type template_formal_parameter_type %type instance_identifier +%type instance_identifier_and_maybe_trailing_return_type +%type function_parameter_list +%type function_parameters %type formal_parameter_list %type formal_parameters %type template_parameter_maybe_initialize %type maybe_initialize +%type maybe_initialize_or_constructor_body %type maybe_initialize_or_function_body +%type function_parameter %type formal_parameter %type not_paren_formal_parameter_identifier %type formal_parameter_identifier +%type not_paren_empty_instance_identifier %type empty_instance_identifier %type type %type type_decl @@ -356,8 +369,10 @@ pop_struct() { %type simple_void_type %type class_derivation_name %type enum_element_type +%type maybe_trailing_return_type /*%type typedefname*/ %type name +%type name_no_final %type string_literal /* We need to treat KW_OPERATOR as a scopable keyword. */ @@ -429,6 +444,10 @@ constructor_init: name '(' optional_const_expr_comma ')' { delete $3; +} + | name '{' optional_const_expr_comma '}' +{ + delete $3; } ; @@ -499,7 +518,7 @@ declaration: { current_scope->set_current_vis(V_private); } - | KW_MAKE_PROPERTY '(' IDENTIFIER ',' IDENTIFIER ')' ';' + | KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ')' ';' { CPPDeclaration *getter = $5->find_symbol(current_scope, global_scope, current_lexer); @@ -510,7 +529,7 @@ declaration: CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), NULL, current_scope, @1.file); current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } - | KW_MAKE_PROPERTY '(' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' + | KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *getter = $5->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { @@ -531,7 +550,7 @@ declaration: current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } - | KW_MAKE_PROPERTY2 '(' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' + | KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { @@ -553,7 +572,7 @@ declaration: current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } - | KW_MAKE_PROPERTY2 '(' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' + | KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { @@ -586,7 +605,7 @@ declaration: current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } - | KW_MAKE_SEQ '(' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' + | KW_MAKE_SEQ '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *length_getter = $5->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { @@ -608,7 +627,7 @@ declaration: current_scope->add_declaration(make_seq, global_scope, current_lexer, @1); } } - | KW_STATIC_ASSERT '(' const_expr ',' string_literal ')' + | KW_STATIC_ASSERT '(' const_expr ',' string_literal ')' ';' { CPPExpression::Result result = $3->evaluate(); if (result._type == CPPExpression::RT_error) { @@ -619,7 +638,7 @@ declaration: yywarning("static_assert failed: " + str.str(), @3); } } - | KW_STATIC_ASSERT '(' const_expr ')' + | KW_STATIC_ASSERT '(' const_expr ')' ';' { // This alternative version of static_assert was introduced in C++17. CPPExpression::Result result = $3->evaluate(); @@ -706,6 +725,25 @@ storage_class: { $$ = $2 | (int)CPPInstance::SC_extension; } + | KW_THREAD_LOCAL storage_class +{ + $$ = $2 | (int)CPPInstance::SC_thread_local; +} + | '[' '[' attribute_specifiers ']' ']' storage_class +{ + // Ignore attribute specifiers for now. + $$ = $6; +} + ; + +attribute_specifiers: + attribute_specifier + | attribute_specifier ',' attribute_specifiers + ; + +attribute_specifier: + name + | name '(' formal_parameter_list ')' ; type_like_declaration: @@ -721,6 +759,14 @@ type_like_declaration: // parsing. current_scope->add_declaration($2, global_scope, current_lexer, @2); +} + | storage_class constructor_prototype maybe_initialize_or_constructor_body +{ + if ($2 != (CPPInstance *)NULL) { + $2->_storage_class |= (current_storage_class | $1); + current_scope->add_declaration($2, global_scope, current_lexer, @2); + $2->set_initializer($3); + } } | storage_class function_prototype maybe_initialize_or_function_body { @@ -770,7 +816,7 @@ multiple_var_declaration: ; multiple_instance_identifiers: - instance_identifier maybe_initialize_or_function_body + instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body { CPPInstance *inst = new CPPInstance(current_type, $1, current_storage_class, @@ -778,7 +824,7 @@ multiple_instance_identifiers: inst->set_initializer($2); current_scope->add_declaration(inst, global_scope, current_lexer, @1); } - | instance_identifier maybe_initialize ',' multiple_instance_identifiers + | instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' multiple_instance_identifiers { CPPInstance *inst = new CPPInstance(current_type, $1, current_storage_class, @@ -789,7 +835,7 @@ multiple_instance_identifiers: ; multiple_const_instance_identifiers: - instance_identifier maybe_initialize_or_function_body + instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body { $1->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance(current_type, $1, @@ -798,7 +844,7 @@ multiple_const_instance_identifiers: inst->set_initializer($2); current_scope->add_declaration(inst, global_scope, current_lexer, @1); } - | instance_identifier maybe_initialize ',' multiple_const_instance_identifiers + | instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' multiple_const_instance_identifiers { $1->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance(current_type, $1, @@ -856,13 +902,13 @@ typedef_declaration: ; typedef_instance_identifiers: - instance_identifier maybe_initialize_or_function_body + instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body { 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); } - | instance_identifier maybe_initialize ',' typedef_instance_identifiers + | instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' typedef_instance_identifiers { CPPType *target_type = current_type; CPPTypedefType *typedef_type = new CPPTypedefType(target_type, $1, current_scope, @1.file); @@ -871,14 +917,14 @@ typedef_instance_identifiers: ; typedef_const_instance_identifiers: - instance_identifier maybe_initialize_or_function_body + instance_identifier_and_maybe_trailing_return_type maybe_initialize_or_function_body { $1->add_modifier(IIT_const); 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); } - | instance_identifier maybe_initialize ',' typedef_const_instance_identifiers + | instance_identifier_and_maybe_trailing_return_type maybe_initialize ',' typedef_const_instance_identifiers { $1->add_modifier(IIT_const); CPPType *target_type = current_type; @@ -887,14 +933,14 @@ typedef_const_instance_identifiers: } ; -function_prototype: +constructor_prototype: /* Functions with implicit return types, and constructors */ IDENTIFIER '(' { push_scope($1->get_scope(current_scope, global_scope)); } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post { CPPType *type; if ($1->get_simple_name() == current_scope->get_simple_name() || @@ -918,7 +964,7 @@ function_prototype: { push_scope($1->get_scope(current_scope, global_scope)); } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post { pop_scope(); CPPType *type; @@ -936,13 +982,16 @@ function_prototype: $$ = new CPPInstance(type, ii, 0, @1.file); } + ; + +function_prototype: /* Destructors */ - | '~' name '(' + '~' name '(' { push_scope($2->get_scope(current_scope, global_scope)); } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post { pop_scope(); if ($2->is_scoped()) { @@ -972,7 +1021,7 @@ function_prototype: { push_scope($4->get_scope(current_scope, global_scope)); } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post maybe_trailing_return_type { pop_scope(); CPPType *type = $1->find_type(current_scope, global_scope, false, current_lexer); @@ -990,7 +1039,7 @@ function_prototype: { push_scope($5->get_scope(current_scope, global_scope)); } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post maybe_trailing_return_type { pop_scope(); CPPType *type = $1->find_type(current_scope, global_scope, false, current_lexer); @@ -1012,7 +1061,7 @@ function_prototype: push_scope($1->get_scope(current_scope, global_scope)); } } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post { if ($1 != NULL) { pop_scope(); @@ -1043,7 +1092,7 @@ function_prototype: push_scope($1->get_scope(current_scope, global_scope)); } } - formal_parameter_list ')' function_post + function_parameter_list ')' function_post { if ($1 != NULL) { pop_scope(); @@ -1087,6 +1136,19 @@ function_post: | function_post KW_NOEXCEPT { $$ = (int)CPPFunctionType::F_noexcept; +} + | function_post KW_FINAL +{ + $$ = (int)CPPFunctionType::F_final; +} + | function_post KW_OVERRIDE +{ + $$ = (int)CPPFunctionType::F_override; +} + | function_post KW_MUTABLE +{ + // Used for lambdas, currently ignored. + $$ = 0; } | function_post KW_THROW '(' ')' { @@ -1096,6 +1158,10 @@ function_post: { $$ = $1; } +/* | function_post '[' '[' attribute_specifiers ']' ']' +{ + $$ = $1; +}*/ ; function_operator: @@ -1348,7 +1414,7 @@ template_formal_parameter_type: instance_identifier: - name + name_no_final { $$ = new CPPInstanceIdentifier($1); } @@ -1415,11 +1481,6 @@ instance_identifier: { $$ = $1; $$->add_array_modifier($3); -} - | instance_identifier ':' INTEGER -{ - // bitfield definition. We ignore the bitfield for now. - $$ = $1; } | '(' instance_identifier ')' { @@ -1447,6 +1508,82 @@ instance_identifier: ; +instance_identifier_and_maybe_trailing_return_type: + instance_identifier maybe_trailing_return_type +{ + // This is handled a bit awkwardly right now. Ideally it'd be wrapped + // up in the instance_identifier rule, but then more needs to happen in + // order to avoid shift/reduce conflicts. + if ($2 != NULL) { + $1->add_trailing_return_type($2); + } + $$ = $1; +} + | instance_identifier ':' INTEGER +{ + // Bitfield definition. + $1->_bit_width = $3; + $$ = $1; +} + ; + + +maybe_trailing_return_type: + empty +{ + $$ = NULL; +} + | POINTSAT predefined_type empty_instance_identifier +{ + $$ = $3->unroll_type($2); +} + | POINTSAT KW_CONST predefined_type empty_instance_identifier +{ + $4->add_modifier(IIT_const); + $$ = $4->unroll_type($3); +} + ; + + +function_parameter_list: + empty +{ + $$ = new CPPParameterList; +} + | ELLIPSIS +{ + $$ = new CPPParameterList; + $$->_includes_ellipsis = true; +} + | function_parameters +{ + $$ = $1; +} + | function_parameters ',' ELLIPSIS +{ + $$ = $1; + $$->_includes_ellipsis = true; +} + | function_parameters ELLIPSIS +{ + $$ = $1; + $$->_includes_ellipsis = true; +} + ; + +function_parameters: + function_parameter +{ + $$ = new CPPParameterList; + $$->_parameters.push_back($1); +} + | function_parameters ',' function_parameter +{ + $$ = $1; + $$->_parameters.push_back($3); +} + ; + formal_parameter_list: empty { @@ -1508,7 +1645,7 @@ maybe_initialize: } ; -maybe_initialize_or_function_body: +maybe_initialize_or_constructor_body: ';' { $$ = (CPPExpression *)NULL; @@ -1520,6 +1657,25 @@ maybe_initialize_or_function_body: | ':' constructor_inits '{' code '}' { $$ = (CPPExpression *)NULL; +} + | '=' KW_DEFAULT ';' +{ + $$ = new CPPExpression(CPPExpression::get_default()); +} + | '=' KW_DELETE ';' +{ + $$ = new CPPExpression(CPPExpression::get_delete()); +} + ; + +maybe_initialize_or_function_body: + ';' +{ + $$ = (CPPExpression *)NULL; +} + | '{' code '}' +{ + $$ = (CPPExpression *)NULL; } | '=' const_expr ';' { @@ -1554,7 +1710,7 @@ structure_init_body: | structure_init_body ',' '{' structure_init '}' ; -formal_parameter: +function_parameter: type formal_parameter_identifier maybe_initialize { $$ = new CPPInstance($1, $2, 0, @2.file); @@ -1572,9 +1728,20 @@ formal_parameter: $$ = new CPPInstance($3, $4, 0, @3.file); $$->set_initializer($5); } - | KW_REGISTER formal_parameter + | KW_REGISTER function_parameter { $$ = $2; +} + ; + +/* A "formal parameter" is like a function parameter, except that it parses + * instance declarations (that look like functions declaration) as well, and + * as such accepts constexpr parameters. + */ +formal_parameter: + function_parameter +{ + $$ = $1; } | formal_const_expr { @@ -1590,11 +1757,7 @@ not_paren_formal_parameter_identifier: { $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } - | IDENTIFIER -{ - $$ = new CPPInstanceIdentifier($1); -} - | TYPENAME_IDENTIFIER + | name_no_final { $$ = new CPPInstanceIdentifier($1); } @@ -1640,11 +1803,7 @@ formal_parameter_identifier: { $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } - | IDENTIFIER -{ - $$ = new CPPInstanceIdentifier($1); -} - | TYPENAME_IDENTIFIER + | name_no_final { $$ = new CPPInstanceIdentifier($1); } @@ -1683,7 +1842,7 @@ formal_parameter_identifier: $$ = $1; $$->add_array_modifier($3); } - | '(' formal_parameter_identifier ')' '(' formal_parameter_list ')' function_post + | '(' formal_parameter_identifier ')' '(' function_parameter_list ')' function_post { $$ = $2; $$->add_modifier(IIT_paren); @@ -1696,6 +1855,48 @@ formal_parameter_identifier: } ; +not_paren_empty_instance_identifier: + empty +{ + $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} + | KW_CONST not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_const); +} + | KW_VOLATILE not_paren_empty_instance_identifier %prec UNARY +{ + $$ = $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 +{ + $$ = $3; + $$->add_scoped_pointer_modifier($1); +} + | not_paren_empty_instance_identifier '[' optional_const_expr ']' +{ + $$ = $1; + $$->add_array_modifier($3); +} + ; + empty_instance_identifier: empty { @@ -1711,36 +1912,57 @@ empty_instance_identifier: $$ = $2; $$->add_modifier(IIT_volatile); } - | '*' empty_instance_identifier %prec UNARY + | '*' not_paren_empty_instance_identifier %prec UNARY { $$ = $2; $$->add_modifier(IIT_pointer); } - | '&' empty_instance_identifier %prec UNARY + | '&' not_paren_empty_instance_identifier %prec UNARY { $$ = $2; $$->add_modifier(IIT_reference); } - | ANDAND empty_instance_identifier %prec UNARY + | ANDAND not_paren_empty_instance_identifier %prec UNARY { $$ = $2; $$->add_modifier(IIT_rvalue_reference); } - | SCOPING '*' empty_instance_identifier %prec UNARY + | SCOPING '*' not_paren_empty_instance_identifier %prec UNARY { $$ = $3; $$->add_scoped_pointer_modifier($1); } - | empty_instance_identifier '[' optional_const_expr ']' + | not_paren_empty_instance_identifier '[' optional_const_expr ']' { $$ = $1; $$->add_array_modifier($3); } - | '(' empty_instance_identifier ')' '(' formal_parameter_list ')' function_post + | '(' function_parameter_list ')' function_post maybe_trailing_return_type { - $$ = $2; + $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); $$->add_modifier(IIT_paren); - $$->add_func_modifier($5, $7); + $$->add_func_modifier($2, $4, $5); +} + | '(' '*' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type +{ + $$ = $3; + $$->add_modifier(IIT_pointer); + $$->add_modifier(IIT_paren); + $$->add_func_modifier($6, $8, $9); +} + | '(' '&' not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type +{ + $$ = $3; + $$->add_modifier(IIT_reference); + $$->add_modifier(IIT_paren); + $$->add_func_modifier($6, $8, $9); +} + | '(' ANDAND not_paren_empty_instance_identifier ')' '(' function_parameter_list ')' function_post maybe_trailing_return_type +{ + $$ = $3; + $$->add_modifier(IIT_rvalue_reference); + $$->add_modifier(IIT_paren); + $$->add_func_modifier($6, $8, $9); } ; @@ -1789,7 +2011,7 @@ type: $$ = et; } } - | enum_keyword name ':' enum_element_type + | enum_keyword name_no_final ':' enum_element_type { CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -1816,7 +2038,7 @@ type: } | KW_AUTO { - $$ = new CPPSimpleType(CPPSimpleType::T_auto); + $$ = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } ; @@ -1865,7 +2087,7 @@ type_decl: $$ = et; } } - | enum_keyword name ':' enum_element_type + | enum_keyword name_no_final ':' enum_element_type { CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -1910,7 +2132,7 @@ type_decl: } | KW_AUTO { - $$ = new CPPSimpleType(CPPSimpleType::T_auto); + $$ = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } ; @@ -1962,6 +2184,19 @@ predefined_type: } $$ = et; } +} + | KW_DECLTYPE '(' const_expr ')' +{ + $$ = $3->determine_type(); + if ($$ == (CPPType *)NULL) { + stringstream str; + str << *$3; + yyerror("could not determine type of " + str.str(), @3); + } +} + | KW_AUTO +{ + $$ = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } ; @@ -1980,16 +2215,12 @@ var_type_decl: full_type: type empty_instance_identifier { - CPPInstance *inst = new CPPInstance($1, $2, 0, @1.file); - $$ = inst->_type; - delete inst; + $$ = $2->unroll_type($1); } | KW_CONST type empty_instance_identifier { $3->add_modifier(IIT_const); - CPPInstance *inst = new CPPInstance($2, $3, 0, @1.file); - $$ = inst->_type; - delete inst; + $$ = $3->unroll_type($2); } ; @@ -2018,7 +2249,7 @@ anonymous_struct: ; named_struct: - struct_keyword name + struct_keyword name_no_final { CPPVisibility starting_vis = ($1 == CPPExtensionType::T_class) ? V_private : V_public; @@ -2038,7 +2269,7 @@ named_struct: push_scope(new_scope); push_struct(st); } - maybe_class_derivation '{' cpp '}' + maybe_final maybe_class_derivation '{' cpp '}' { $$ = current_struct; current_struct->_incomplete = false; @@ -2047,6 +2278,14 @@ named_struct: } ; +maybe_final: + empty + | KW_FINAL +{ + current_struct->_final = true; +} + ; + maybe_class_derivation: empty | class_derivation @@ -2058,7 +2297,11 @@ class_derivation: ; base_specification: - KW_PUBLIC class_derivation_name + class_derivation_name +{ + current_struct->append_derivation($1, V_unknown, false); +} + | KW_PUBLIC class_derivation_name { current_struct->append_derivation($2, V_public, false); } @@ -2105,11 +2348,11 @@ enum: ; enum_decl: - enum_keyword name ':' enum_element_type + enum_keyword name_no_final ':' enum_element_type { current_enum = new CPPEnumType($2, $4, current_scope, @1.file); } - | enum_keyword name + | enum_keyword name_no_final { current_enum = new CPPEnumType($2, current_scope, @1.file); } @@ -2238,13 +2481,20 @@ namespace_declaration: ; using_declaration: - KW_USING name + KW_USING name ';' { CPPUsing *using_decl = new CPPUsing($2, false, @1.file); current_scope->add_declaration(using_decl, global_scope, current_lexer, @1); current_scope->add_using(using_decl, global_scope, current_lexer); } - | KW_USING KW_NAMESPACE name + | KW_USING name '=' full_type ';' +{ + // This is really just an alternative way to declare a typedef. + CPPTypedefType *typedef_type = new CPPTypedefType($4, $2, current_scope); + typedef_type->_using = true; + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, @1); +} + | KW_USING KW_NAMESPACE name ';' { CPPUsing *using_decl = new CPPUsing($3, true, @1.file); current_scope->add_declaration(using_decl, global_scope, current_lexer, @1); @@ -2288,11 +2538,6 @@ simple_int_type: { $$ = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); -} - | KW_LONGLONG -{ - $$ = new CPPSimpleType(CPPSimpleType::T_int, - CPPSimpleType::F_longlong); } | KW_UNSIGNED { @@ -2338,20 +2583,10 @@ simple_float_type: KW_FLOAT { $$ = new CPPSimpleType(CPPSimpleType::T_float); -} - | KW_LONG KW_FLOAT -{ - $$ = new CPPSimpleType(CPPSimpleType::T_float, - CPPSimpleType::F_long); } | KW_DOUBLE { $$ = new CPPSimpleType(CPPSimpleType::T_double); -} - | KW_LONG KW_LONG KW_FLOAT -{ - $$ = new CPPSimpleType(CPPSimpleType::T_float, - CPPSimpleType::F_longlong); } | KW_LONG KW_DOUBLE { @@ -2403,17 +2638,18 @@ element: | TIMESEQUAL | DIVIDEEQUAL | MODEQUAL | PLUSEQUAL | MINUSEQUAL | OREQUAL | ANDEQUAL | XOREQUAL | LSHIFTEQUAL | RSHIFTEQUAL | KW_ALIGNAS | KW_ALIGNOF | KW_AUTO | KW_BOOL | KW_CATCH - | KW_CHAR | KW_CHAR16_T | KW_CHAR32_T - | KW_CLASS | KW_CONST | KW_CONSTEXPR | KW_DECLTYPE | KW_DEFAULT + | KW_CHAR | KW_CHAR16_T | KW_CHAR32_T | KW_CLASS | KW_CONST + | KW_CONSTEXPR | KW_CONST_CAST | KW_DECLTYPE | KW_DEFAULT | KW_DELETE | KW_DOUBLE | KW_DYNAMIC_CAST | KW_ELSE | KW_ENUM - | KW_EXTERN | KW_EXPLICIT | KW_FALSE - | KW_FLOAT | KW_FRIEND | KW_FOR | KW_GOTO | KW_IF | KW_INLINE - | KW_INT | KW_LONG | KW_MUTABLE | KW_NAMESPACE - | KW_NEW | KW_NULLPTR | KW_OPERATOR | KW_PRIVATE | KW_PROTECTED - | KW_PUBLIC | KW_PUBLISHED | KW_REGISTER | KW_RETURN - | KW_SHORT | KW_SIGNED | KW_SIZEOF | KW_STATIC | KW_STATIC_ASSERT - | KW_STATIC_CAST | KW_STRUCT | KW_THROW | KW_TRUE | KW_TRY - | KW_TYPEDEF | KW_TYPENAME | KW_UNION | KW_UNSIGNED | KW_USING + | KW_EXTERN | KW_EXPLICIT | KW_FALSE | KW_FINAL | KW_FLOAT + | KW_FRIEND | KW_FOR | KW_GOTO | KW_IF | KW_INLINE | KW_INT + | KW_LONG | KW_MUTABLE | KW_NAMESPACE | KW_NEW | KW_NULLPTR + | KW_OPERATOR | KW_OVERRIDE | KW_PRIVATE | KW_PROTECTED + | KW_PUBLIC | KW_PUBLISHED | KW_REGISTER | KW_REINTERPRET_CAST + | KW_RETURN | KW_SHORT | KW_SIGNED | KW_SIZEOF | KW_STATIC + | KW_STATIC_ASSERT | KW_STATIC_CAST | KW_STRUCT + | KW_THREAD_LOCAL | KW_THROW | KW_TRUE | KW_TRY | KW_TYPEDEF + | KW_TYPEID | KW_TYPENAME | KW_UNION | KW_UNSIGNED | KW_USING | KW_VIRTUAL | KW_VOID | KW_VOLATILE | KW_WCHAR_T | KW_WHILE { } @@ -2466,11 +2702,19 @@ no_angle_bracket_const_expr: } | KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' { - $$ = new CPPExpression(CPPExpression::typecast_op($3, $6)); + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_static_cast)); } | KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' { - $$ = new CPPExpression(CPPExpression::typecast_op($3, $6)); + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_dynamic_cast)); +} + | KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' +{ + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_const_cast)); +} + | KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' +{ + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_reinterpret_cast)); } | KW_SIZEOF '(' full_type ')' %prec UNARY { @@ -2491,6 +2735,10 @@ no_angle_bracket_const_expr: | '-' no_angle_bracket_const_expr %prec UNARY { $$ = new CPPExpression(UNARY_MINUS, $2); +} + | '+' no_angle_bracket_const_expr %prec UNARY +{ + $$ = new CPPExpression(UNARY_PLUS, $2); } | '*' no_angle_bracket_const_expr %prec UNARY { @@ -2606,11 +2854,19 @@ const_expr: } | KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' { - $$ = new CPPExpression(CPPExpression::typecast_op($3, $6)); + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_static_cast)); } | KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' { - $$ = new CPPExpression(CPPExpression::typecast_op($3, $6)); + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_dynamic_cast)); +} + | KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' +{ + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_const_cast)); +} + | KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' +{ + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_reinterpret_cast)); } | TYPENAME_IDENTIFIER '(' optional_const_expr_comma ')' { @@ -2713,6 +2969,28 @@ const_expr: | KW_NEW predefined_type '(' optional_const_expr_comma ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::new_op($2, $4)); +} + | KW_TYPEID '(' full_type ')' +{ + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", @1); + } + $$ = new CPPExpression(CPPExpression::typeid_op($3, std_type_info)); +} + | KW_TYPEID '(' const_expr ')' +{ + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", @1); + } + $$ = new CPPExpression(CPPExpression::typeid_op($3, std_type_info)); } | '!' const_expr %prec UNARY { @@ -2725,6 +3003,10 @@ const_expr: | '-' const_expr %prec UNARY { $$ = new CPPExpression(UNARY_MINUS, $2); +} + | '+' const_expr %prec UNARY +{ + $$ = new CPPExpression(UNARY_PLUS, $2); } | '*' const_expr %prec UNARY { @@ -2868,10 +3150,30 @@ const_operand: | IDENTIFIER { $$ = new CPPExpression($1, current_scope, global_scope, current_lexer); +} + | KW_FINAL +{ + // A variable named "final". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("final", @1); + $$ = new CPPExpression(ident, current_scope, global_scope, current_lexer); +} + | KW_OVERRIDE +{ + // A variable named "override". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("override", @1); + $$ = new CPPExpression(ident, current_scope, global_scope, current_lexer); } | KW_NULLPTR { $$ = new CPPExpression(CPPExpression::get_nullptr()); +} + | '[' capture_list ']' function_post maybe_trailing_return_type '{' code '}' +{ + $$ = NULL; +} + | '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' +{ + $$ = NULL; } ; @@ -2893,11 +3195,19 @@ formal_const_expr: } | KW_STATIC_CAST '<' full_type '>' '(' const_expr_comma ')' { - $$ = new CPPExpression(CPPExpression::typecast_op($3, $6)); + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_static_cast)); } | KW_DYNAMIC_CAST '<' full_type '>' '(' const_expr_comma ')' { - $$ = new CPPExpression(CPPExpression::typecast_op($3, $6)); + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_dynamic_cast)); +} + | KW_CONST_CAST '<' full_type '>' '(' const_expr_comma ')' +{ + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_const_cast)); +} + | KW_REINTERPRET_CAST '<' full_type '>' '(' const_expr_comma ')' +{ + $$ = new CPPExpression(CPPExpression::typecast_op($3, $6, CPPExpression::T_reinterpret_cast)); } | KW_SIZEOF '(' full_type ')' %prec UNARY { @@ -2914,6 +3224,28 @@ formal_const_expr: | KW_NEW predefined_type '(' optional_const_expr_comma ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::new_op($2, $4)); +} + | KW_TYPEID '(' full_type ')' +{ + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", @1); + } + $$ = new CPPExpression(CPPExpression::typeid_op($3, std_type_info)); +} + | KW_TYPEID '(' const_expr ')' +{ + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", @1); + } + $$ = new CPPExpression(CPPExpression::typeid_op($3, std_type_info)); } | '!' const_expr %prec UNARY { @@ -2926,6 +3258,10 @@ formal_const_expr: | '-' const_expr %prec UNARY { $$ = new CPPExpression(UNARY_MINUS, $2); +} + | '+' const_expr %prec UNARY +{ + $$ = new CPPExpression(UNARY_PLUS, $2); } | '&' const_expr %prec UNARY { @@ -3065,6 +3401,18 @@ formal_const_operand: | IDENTIFIER { $$ = new CPPExpression($1, current_scope, global_scope, current_lexer); +} + | KW_FINAL +{ + // A variable named "final". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("final", @1); + $$ = new CPPExpression(ident, current_scope, global_scope, current_lexer); +} + | KW_OVERRIDE +{ + // A variable named "override". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("override", @1); + $$ = new CPPExpression(ident, current_scope, global_scope, current_lexer); } | KW_NULLPTR { @@ -3072,6 +3420,20 @@ formal_const_operand: } ; +/* The contents of the [] list preceding a lambda expression. */ +capture_list: + empty + | capture + | capture ',' capture_list + ; + +capture: + '&' + | '=' + | '&' name + | name + ; + class_derivation_name: name { @@ -3114,6 +3476,8 @@ typedefname: */ +/* Note that we should also accept "final" and "override" as valid names, + * according to C++11. */ name: IDENTIFIER { @@ -3122,9 +3486,37 @@ name: | TYPENAME_IDENTIFIER { $$ = $1; +} + | KW_FINAL +{ + $$ = new CPPIdentifier("final", @1); +} + | KW_OVERRIDE +{ + $$ = new CPPIdentifier("override", @1); } ; + +/* A variant on name that's used for structs, where we disallow final + * to disambiguate the case of struct A final {}; + */ +name_no_final: + IDENTIFIER +{ + $$ = $1; +} + | TYPENAME_IDENTIFIER +{ + $$ = $1; +} + | KW_OVERRIDE +{ + $$ = new CPPIdentifier("override", @1); +} + ; + + string_literal: SIMPLE_STRING { diff --git a/dtool/src/cppparser/cppEnumType.cxx b/dtool/src/cppparser/cppEnumType.cxx index abb8e595ed..e596cb4359 100644 --- a/dtool/src/cppparser/cppEnumType.cxx +++ b/dtool/src/cppparser/cppEnumType.cxx @@ -58,6 +58,29 @@ CPPEnumType(CPPIdentifier *ident, CPPType *element_type, } } +//////////////////////////////////////////////////////////////////// +// Function: CPPEnumType::get_element_type +// Access: Public +// Description: Returns the integral type used to store enum values. +//////////////////////////////////////////////////////////////////// +CPPType *CPPEnumType:: +get_element_type() { + if (_element_type == NULL) { + // This enum is untyped. Use a suitable default, ie. 'int'. + // In the future, we might want to check whether it fits in an int. + static CPPType *default_element_type = NULL; + if (default_element_type == NULL) { + default_element_type = + CPPType::new_type(new CPPConstType(new CPPSimpleType(CPPSimpleType::T_int, 0))); + } + + return default_element_type; + } else { + // This enum has an explicit type, so use that. + return CPPType::new_type(new CPPConstType(_element_type)); + } +} + //////////////////////////////////////////////////////////////////// // Function: CPPEnumType::add_element // Access: Public @@ -67,22 +90,8 @@ CPPInstance *CPPEnumType:: add_element(const string &name, CPPExpression *value) { CPPIdentifier *ident = new CPPIdentifier(name); ident->_native_scope = _parent_scope; - CPPInstance *inst; - - static CPPType *default_element_type = NULL; - if (_element_type == NULL) { - // This enum is untyped. Use a suitable default, ie. 'int'. - if (default_element_type == NULL) { - default_element_type = - CPPType::new_type(new CPPConstType(new CPPSimpleType(CPPSimpleType::T_int, 0))); - } - - inst = new CPPInstance(default_element_type, ident); - } else { - // This enum has an explicit type, so use that. - inst = new CPPInstance(CPPType::new_type(new CPPConstType(_element_type)), ident); - } + CPPInstance *inst = new CPPInstance(get_element_type(), ident); inst->_storage_class |= CPPInstance::SC_constexpr; _elements.push_back(inst); diff --git a/dtool/src/cppparser/cppEnumType.h b/dtool/src/cppparser/cppEnumType.h index 7b63f475c6..1d592b337b 100644 --- a/dtool/src/cppparser/cppEnumType.h +++ b/dtool/src/cppparser/cppEnumType.h @@ -37,6 +37,8 @@ public: CPPEnumType(CPPIdentifier *ident, CPPType *element_type, CPPScope *current_scope, const CPPFile &file); + CPPType *get_element_type(); + CPPInstance *add_element(const string &name, CPPExpression *value = (CPPExpression *)NULL); diff --git a/dtool/src/cppparser/cppExpression.cxx b/dtool/src/cppparser/cppExpression.cxx index 2c94ed7006..fc33ee03fa 100644 --- a/dtool/src/cppparser/cppExpression.cxx +++ b/dtool/src/cppparser/cppExpression.cxx @@ -356,9 +356,10 @@ CPPExpression(int trinary_operator, CPPExpression *op1, CPPExpression *op2, // operation. //////////////////////////////////////////////////////////////////// CPPExpression CPPExpression:: -typecast_op(CPPType *type, CPPExpression *op1) { +typecast_op(CPPType *type, CPPExpression *op1, Type cast_type) { + assert(cast_type >= T_typecast && cast_type <= T_reinterpret_cast); CPPExpression expr(0); - expr._type = T_typecast; + expr._type = cast_type; expr._u._typecast._to = type; expr._u._typecast._op1 = op1; return expr; @@ -410,6 +411,36 @@ new_op(CPPType *type, CPPExpression *op1) { return expr; } +//////////////////////////////////////////////////////////////////// +// Function: CPPExpression::named typeid_op constructor +// Access: Public, Static +// Description: Creates an expression that represents a use of the +// typeid operator. +//////////////////////////////////////////////////////////////////// +CPPExpression CPPExpression:: +typeid_op(CPPType *type, CPPType *std_type_info) { + CPPExpression expr(0); + expr._type = T_typeid_type; + expr._u._typeid._type = type; + expr._u._typeid._std_type_info = std_type_info; + return expr; +} + +//////////////////////////////////////////////////////////////////// +// Function: CPPExpression::named typeid_op constructor +// Access: Public, Static +// Description: Creates an expression that represents a use of the +// typeid operator. +//////////////////////////////////////////////////////////////////// +CPPExpression CPPExpression:: +typeid_op(CPPExpression *op1, CPPType *std_type_info) { + CPPExpression expr(0); + expr._type = T_typeid_expr; + expr._u._typeid._expr = op1; + expr._u._typeid._std_type_info = std_type_info; + return expr; +} + //////////////////////////////////////////////////////////////////// // Function: CPPExpression::named sizeof_func constructor // Access: Public, Static @@ -591,6 +622,10 @@ evaluate() const { return Result(); case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: assert(_u._typecast._op1 != NULL); r1 = _u._typecast._op1->evaluate(); if (r1._type != RT_error) { @@ -706,6 +741,9 @@ evaluate() const { case UNARY_MINUS: return (r1._type == RT_real) ? Result(-r1.as_real()) : Result(-r1.as_integer()); + case UNARY_PLUS: + return r1; + case UNARY_STAR: case UNARY_REF: return Result(); @@ -835,6 +873,10 @@ evaluate() const { case T_raw_literal: return Result(); + case T_typeid_type: + case T_typeid_expr: + return Result(); + default: cerr << "**invalid operand**\n"; abort(); @@ -940,6 +982,10 @@ determine_type() const { return (CPPType *)NULL; case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: case T_construct: case T_default_construct: return _u._typecast._to; @@ -973,7 +1019,34 @@ determine_type() const { return int_type; case UNARY_MINUS: - return t1; + case UNARY_PLUS: + if (t1 != NULL) { + switch (t1->get_subtype()) { + case CPPDeclaration::ST_array: + // Decay into pointer. + return CPPType::new_type(new CPPPointerType(t1->as_array_type()->_element_type)); + + case CPPDeclaration::ST_enum: + // Convert into integral type. + return t1->as_enum_type()->get_element_type(); + + case CPPDeclaration::ST_simple: + { + CPPSimpleType *simple_type = t1->as_simple_type(); + if ((simple_type->_flags & CPPSimpleType::F_short) != 0 || + simple_type->_type == CPPSimpleType::T_bool || + simple_type->_type == CPPSimpleType::T_wchar_t || + simple_type->_type == CPPSimpleType::T_char16_t) { + // Integer promotion. + return int_type; + } + } + // Fall through. + default: + return t1; + } + } + return NULL; case UNARY_STAR: case '[': // Array element reference @@ -1059,6 +1132,10 @@ determine_type() const { } return NULL; + case T_typeid_type: + case T_typeid_expr: + return _u._typeid._std_type_info; + default: cerr << "**invalid operand**\n"; abort(); @@ -1103,6 +1180,10 @@ is_fully_specified() const { return _u._ident->is_fully_specified(); case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: case T_construct: case T_new: return (_u._typecast._to->is_fully_specified() && @@ -1136,6 +1217,12 @@ is_fully_specified() const { case T_raw_literal: return _u._literal._value->is_fully_specified(); + case T_typeid_type: + return _u._typeid._type->is_fully_specified(); + + case T_typeid_expr: + return _u._typeid._expr->is_fully_specified(); + default: return true; } @@ -1215,6 +1302,10 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, break; case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: case T_construct: case T_new: rep->_u._typecast._op1 = @@ -1254,6 +1345,20 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, any_changed = any_changed || (rep->_u._op._op1 != _u._op._op1); break; + case T_typeid_type: + rep->_u._typeid._type = + _u._typeid._type->substitute_decl(subst, current_scope, global_scope) + ->as_type(); + any_changed = any_changed || (rep->_u._typeid._type != _u._typeid._type); + break; + + case T_typeid_expr: + rep->_u._typeid._expr = + _u._typeid._expr->substitute_decl(subst, current_scope, global_scope) + ->as_expression(); + any_changed = any_changed || (rep->_u._typeid._expr != _u._typeid._expr); + break; + default: break; } @@ -1295,6 +1400,10 @@ is_tbd() const { return true; case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: case T_construct: case T_new: case T_default_construct: @@ -1321,6 +1430,12 @@ is_tbd() const { } return false; + case T_typeid_type: + return _u._typeid._type->is_tbd(); + + case T_typeid_expr: + return _u._typeid._expr->is_tbd(); + default: return false; } @@ -1450,6 +1565,38 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { out << ")"; break; + case T_static_cast: + out << "static_cast<"; + _u._typecast._to->output(out, indent_level, scope, false); + out << ">("; + _u._typecast._op1->output(out, indent_level, scope, false); + out << ")"; + break; + + case T_dynamic_cast: + out << "dynamic_cast<"; + _u._typecast._to->output(out, indent_level, scope, false); + out << ">("; + _u._typecast._op1->output(out, indent_level, scope, false); + out << ")"; + break; + + case T_const_cast: + out << "const_cast<"; + _u._typecast._to->output(out, indent_level, scope, false); + out << ">("; + _u._typecast._op1->output(out, indent_level, scope, false); + out << ")"; + break; + + case T_reinterpret_cast: + out << "reinterpret_cast<"; + _u._typecast._to->output(out, indent_level, scope, false); + out << ">("; + _u._typecast._op1->output(out, indent_level, scope, false); + out << ")"; + break; + case T_construct: _u._typecast._to->output(out, indent_level, scope, false); out << "("; @@ -1507,6 +1654,11 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { _u._op._op1->output(out, indent_level, scope, false); break; + case UNARY_PLUS: + out << '+'; + _u._op._op1->output(out, indent_level, scope, false); + break; + case UNARY_STAR: out << "(* "; _u._op._op1->output(out, indent_level, scope, false); @@ -1599,11 +1751,9 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { break; case '.': - out << "("; _u._op._op1->output(out, indent_level, scope, false); out << "."; _u._op._op2->output(out, indent_level, scope, false); - out << ")"; break; case POINTSAT: @@ -1671,6 +1821,18 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { } break; + case T_typeid_type: + out << "typeid("; + _u._typeid._type->output(out, indent_level, scope, false); + out << ")"; + break; + + case T_typeid_expr: + out << "typeid("; + _u._typeid._expr->output(out, indent_level, scope, false); + out << ")"; + break; + case T_default: out << "default"; break; @@ -1802,6 +1964,10 @@ is_equal(const CPPDeclaration *other) const { return *_u._ident == *ot->_u._ident; case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: case T_construct: case T_new: return _u._typecast._to == ot->_u._typecast._to && @@ -1832,6 +1998,12 @@ is_equal(const CPPDeclaration *other) const { return _str == ot->_str && _u._literal._operator == ot->_u._literal._operator; + case T_typeid_type: + return _u._typeid._type == ot->_u._typeid._type; + + case T_typeid_expr: + return _u._typeid._expr == ot->_u._typeid._expr; + default: cerr << "(** invalid operand type " << (int)_type << " **)"; } @@ -1885,6 +2057,10 @@ is_less(const CPPDeclaration *other) const { return *_u._ident < *ot->_u._ident; case T_typecast: + case T_static_cast: + case T_dynamic_cast: + case T_const_cast: + case T_reinterpret_cast: case T_construct: case T_new: if (_u._typecast._to != ot->_u._typecast._to) { @@ -1925,6 +2101,12 @@ is_less(const CPPDeclaration *other) const { } return _str < ot->_str; + case T_typeid_type: + return _u._typeid._type < ot->_u._typeid._type; + + case T_typeid_expr: + return *_u._typeid._expr < *ot->_u._typeid._expr; + default: cerr << "(** invalid operand type " << (int)_type << " **)"; } diff --git a/dtool/src/cppparser/cppExpression.h b/dtool/src/cppparser/cppExpression.h index aebf5b2566..644f3c5a96 100644 --- a/dtool/src/cppparser/cppExpression.h +++ b/dtool/src/cppparser/cppExpression.h @@ -30,6 +30,43 @@ class CPPFunctionGroup; //////////////////////////////////////////////////////////////////// class CPPExpression : public CPPDeclaration { public: + enum Type { + T_nullptr, + T_boolean, + T_integer, + T_real, + T_string, + T_wstring, + T_u8string, + T_u16string, + T_u32string, + T_variable, + T_function, + T_unknown_ident, + T_typecast, + T_static_cast, + T_dynamic_cast, + T_const_cast, + T_reinterpret_cast, + T_construct, + T_default_construct, + T_new, + T_default_new, + T_sizeof, + T_alignof, + T_unary_operation, + T_binary_operation, + T_trinary_operation, + T_literal, + T_raw_literal, + T_typeid_type, + T_typeid_expr, + + // These are used when parsing =default and =delete methods. + T_default, + T_delete, + }; + CPPExpression(bool value); CPPExpression(unsigned long long value); CPPExpression(int value); @@ -41,9 +78,11 @@ public: CPPExpression(int binary_operator, CPPExpression *op1, CPPExpression *op2); CPPExpression(int trinary_operator, CPPExpression *op1, CPPExpression *op2, CPPExpression *op3); - static CPPExpression typecast_op(CPPType *type, CPPExpression *op1); + static CPPExpression typecast_op(CPPType *type, CPPExpression *op1, Type cast_type = T_typecast); static CPPExpression construct_op(CPPType *type, CPPExpression *op1); static CPPExpression new_op(CPPType *type, CPPExpression *op1 = NULL); + static CPPExpression typeid_op(CPPType *type, CPPType *std_type_info); + static CPPExpression typeid_op(CPPExpression *op1, CPPType *std_type_info); static CPPExpression sizeof_func(CPPType *type); static CPPExpression alignof_func(CPPType *type); @@ -102,38 +141,6 @@ public: virtual CPPExpression *as_expression(); - - enum Type { - T_nullptr, - T_boolean, - T_integer, - T_real, - T_string, - T_wstring, - T_u8string, - T_u16string, - T_u32string, - T_variable, - T_function, - T_unknown_ident, - T_typecast, - T_construct, - T_default_construct, - T_new, - T_default_new, - T_sizeof, - T_alignof, - T_unary_operation, - T_binary_operation, - T_trinary_operation, - T_literal, - T_raw_literal, - - // These are used when parsing =default and =delete methods. - T_default, - T_delete, - }; - Type _type; string _str; union { @@ -143,13 +150,18 @@ public: CPPInstance *_variable; CPPFunctionGroup *_fgroup; CPPIdentifier *_ident; - class { - public: + struct { + union { + CPPType *_type; + CPPExpression *_expr; + }; + CPPType *_std_type_info; + } _typeid; + struct { CPPType *_to; CPPExpression *_op1; } _typecast; - class { - public: + struct { // One of the yytoken values: a character, or something // like EQCOMPARE. int _operator; @@ -157,8 +169,7 @@ public: CPPExpression *_op2; CPPExpression *_op3; } _op; - class { - public: + struct { CPPInstance *_operator; CPPExpression *_value; } _literal; diff --git a/dtool/src/cppparser/cppExtensionType.cxx b/dtool/src/cppparser/cppExtensionType.cxx index 793e75986f..d4b7d171c2 100644 --- a/dtool/src/cppparser/cppExtensionType.cxx +++ b/dtool/src/cppparser/cppExtensionType.cxx @@ -214,10 +214,10 @@ is_equivalent(const CPPType &other) const { // Description: //////////////////////////////////////////////////////////////////// void CPPExtensionType:: -output(ostream &out, int, CPPScope *scope, bool) const { +output(ostream &out, int, CPPScope *scope, bool complete) const { if (_ident != NULL) { // If we have a name, use it. - if (cppparser_output_class_keyword) { + if (complete || cppparser_output_class_keyword) { out << _type << " "; } out << _ident->get_local_name(scope); diff --git a/dtool/src/cppparser/cppFunctionType.cxx b/dtool/src/cppparser/cppFunctionType.cxx index fa8cf3f291..be716f35c9 100644 --- a/dtool/src/cppparser/cppFunctionType.cxx +++ b/dtool/src/cppparser/cppFunctionType.cxx @@ -193,12 +193,44 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete) const { void CPPFunctionType:: output(ostream &out, int indent_level, CPPScope *scope, bool complete, int num_default_parameters) const { - _return_type->output(out, indent_level, scope, complete); - out << "("; - _parameters->output(out, scope, true, num_default_parameters); - out << ")"; - if (_flags & F_const_method) { - out << " const"; + + if (_flags & F_trailing_return_type) { + // It was declared using trailing return type, so let's format it that way. + out << "auto("; + _parameters->output(out, scope, true, num_default_parameters); + out << ")"; + if (_flags & F_const_method) { + out << " const"; + } + if (_flags & F_noexcept) { + out << " noexcept"; + } + if (_flags & F_final) { + out << " final"; + } + if (_flags & F_override) { + out << " override"; + } + out << " -> "; + _return_type->output(out, indent_level, scope, false); + + } else { + _return_type->output(out, indent_level, scope, complete); + out << "("; + _parameters->output(out, scope, true, num_default_parameters); + out << ")"; + if (_flags & F_const_method) { + out << " const"; + } + if (_flags & F_noexcept) { + out << " noexcept"; + } + if (_flags & F_final) { + out << " final"; + } + if (_flags & F_override) { + out << " override"; + } } } @@ -241,6 +273,18 @@ output_instance(ostream &out, int indent_level, CPPScope *scope, // No return type for constructors and destructors. out << prename << name << str; + } else if (_flags & F_trailing_return_type) { + // It was declared using trailing return type, so let's format it that way. + out << "auto "; + + if (prename.empty()) { + out << name; + } else { + out << "(" << prename << name << ")"; + } + + out << str; + } else { if (prename.empty()) { _return_type->output_instance(out, indent_level, scope, complete, @@ -257,6 +301,17 @@ output_instance(ostream &out, int indent_level, CPPScope *scope, if (_flags & F_noexcept) { out << " noexcept"; } + if (_flags & F_final) { + out << " final"; + } + if (_flags & F_override) { + out << " override"; + } + + if (_flags & F_trailing_return_type) { + out << " -> "; + _return_type->output(out, indent_level, scope, false); + } } //////////////////////////////////////////////////////////////////// diff --git a/dtool/src/cppparser/cppFunctionType.h b/dtool/src/cppparser/cppFunctionType.h index 84e65e4444..d80c815b00 100644 --- a/dtool/src/cppparser/cppFunctionType.h +++ b/dtool/src/cppparser/cppFunctionType.h @@ -39,6 +39,9 @@ public: F_noexcept = 0x080, F_copy_constructor = 0x200, F_move_constructor = 0x400, + F_trailing_return_type = 0x800, + F_final = 0x1000, + F_override = 0x2000, }; CPPFunctionType(CPPType *return_type, CPPParameterList *parameters, diff --git a/dtool/src/cppparser/cppInstance.cxx b/dtool/src/cppparser/cppInstance.cxx index e41cbc36b3..7ac4792043 100644 --- a/dtool/src/cppparser/cppInstance.cxx +++ b/dtool/src/cppparser/cppInstance.cxx @@ -39,7 +39,8 @@ CPPInstance(CPPType *type, const string &name, int storage_class) : _type(type), _ident(new CPPIdentifier(name)), _storage_class(storage_class), - _alignment(NULL) + _alignment(NULL), + _bit_width(-1) { _initializer = NULL; } @@ -55,7 +56,8 @@ CPPInstance(CPPType *type, CPPIdentifier *ident, int storage_class) : _type(type), _ident(ident), _storage_class(storage_class), - _alignment(NULL) + _alignment(NULL), + _bit_width(-1) { _initializer = NULL; } @@ -79,6 +81,7 @@ CPPInstance(CPPType *type, CPPInstanceIdentifier *ii, int storage_class, ii->_ident = NULL; _storage_class = storage_class; _initializer = NULL; + _bit_width = ii->_bit_width; CPPParameterList *params = ii->get_initializer(); if (params != (CPPParameterList *)NULL) { @@ -106,7 +109,8 @@ CPPInstance(const CPPInstance ©) : _ident(copy._ident), _initializer(copy._initializer), _storage_class(copy._storage_class), - _alignment(copy._alignment) + _alignment(copy._alignment), + _bit_width(copy._bit_width) { assert(_type != NULL); } @@ -612,6 +616,9 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete, if (_storage_class & SC_constexpr) { out << "constexpr "; } + if (_storage_class & SC_thread_local) { + out << "thread_local "; + } string name; if (_ident != NULL) { @@ -627,6 +634,10 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete, _type->output_instance(out, indent_level, scope, complete, "", name); } + if (_bit_width != -1) { + out << " : " << _bit_width; + } + if (_storage_class & SC_pure_virtual) { out << " = 0"; } diff --git a/dtool/src/cppparser/cppInstance.h b/dtool/src/cppparser/cppInstance.h index 34b95db33b..81578a1e35 100644 --- a/dtool/src/cppparser/cppInstance.h +++ b/dtool/src/cppparser/cppInstance.h @@ -64,6 +64,8 @@ public: // These are for =default and =delete functions. SC_defaulted = 0x4000, SC_deleted = 0x8000, + + SC_thread_local = 0x10000, }; CPPInstance(CPPType *type, const string &name, int storage_class = 0); @@ -119,6 +121,7 @@ public: int _storage_class; CPPExpression *_alignment; + int _bit_width; private: typedef map Instantiations; diff --git a/dtool/src/cppparser/cppInstanceIdentifier.cxx b/dtool/src/cppparser/cppInstanceIdentifier.cxx index ffef7523b9..044dc34d75 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.cxx +++ b/dtool/src/cppparser/cppInstanceIdentifier.cxx @@ -43,10 +43,11 @@ Modifier(CPPInstanceIdentifierType type) : // Description: //////////////////////////////////////////////////////////////////// CPPInstanceIdentifier::Modifier CPPInstanceIdentifier::Modifier:: -func_type(CPPParameterList *params, int flags) { +func_type(CPPParameterList *params, int flags, CPPType *trailing_return_type) { Modifier mod(IIT_func); mod._func_params = params; mod._func_flags = flags; + mod._trailing_return_type = trailing_return_type; return mod; } @@ -93,7 +94,9 @@ initializer_type(CPPParameterList *params) { // Description: //////////////////////////////////////////////////////////////////// CPPInstanceIdentifier:: -CPPInstanceIdentifier(CPPIdentifier *ident) : _ident(ident) { +CPPInstanceIdentifier(CPPIdentifier *ident) : + _ident(ident), + _bit_width(-1) { } //////////////////////////////////////////////////////////////////// @@ -128,7 +131,7 @@ add_modifier(CPPInstanceIdentifierType type) { // Description: //////////////////////////////////////////////////////////////////// void CPPInstanceIdentifier:: -add_func_modifier(CPPParameterList *params, int flags) { +add_func_modifier(CPPParameterList *params, int flags, CPPType *trailing_return_type) { // 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 @@ -146,7 +149,12 @@ add_func_modifier(CPPParameterList *params, int flags) { flags |= CPPFunctionType::F_operator; } - _modifiers.push_back(Modifier::func_type(params, flags)); + if (trailing_return_type != NULL) { + // Remember whether trailing return type notation was used. + flags |= CPPFunctionType::F_trailing_return_type; + } + + _modifiers.push_back(Modifier::func_type(params, flags, trailing_return_type)); } //////////////////////////////////////////////////////////////////// @@ -188,6 +196,25 @@ add_initializer_modifier(CPPParameterList *params) { _modifiers.push_back(Modifier::initializer_type(params)); } +//////////////////////////////////////////////////////////////////// +// Function: CPPInstanceIdentifier::add_trailing_return_type +// Access: Public +// Description: +//////////////////////////////////////////////////////////////////// +void CPPInstanceIdentifier:: +add_trailing_return_type(CPPType *type) { + // This is an awkward hack. Improve in the future. + if (!_modifiers.empty()) { + Modifier &mod = _modifiers.back(); + if (mod._type == IIT_func) { + mod._trailing_return_type = type; + mod._func_flags |= CPPFunctionType::F_trailing_return_type; + return; + } + } + cerr << "trailing return type can only be added to a function\n"; +} + //////////////////////////////////////////////////////////////////// // Function: CPPInstanceIdentifier::get_initializer // Access: Public @@ -237,6 +264,8 @@ get_scope(CPPScope *current_scope, CPPScope *global_scope, CPPType *CPPInstanceIdentifier:: r_unroll_type(CPPType *start_type, CPPInstanceIdentifier::Modifiers::const_iterator mi) { + assert(start_type != NULL); + start_type = CPPType::new_type(start_type); if (mi == _modifiers.end()) { @@ -298,6 +327,14 @@ r_unroll_type(CPPType *start_type, case IIT_func: { CPPType *return_type = r_unroll_type(start_type, mi); + if (mod._trailing_return_type != (CPPType *)NULL) { + CPPSimpleType *simple_type = return_type->as_simple_type(); + if (simple_type != NULL && simple_type->_type == CPPSimpleType::T_auto) { + return_type = mod._trailing_return_type; + } else { + cerr << "function with trailing return type needs auto\n"; + } + } result = new CPPFunctionType(return_type, mod._func_params, mod._func_flags); } diff --git a/dtool/src/cppparser/cppInstanceIdentifier.h b/dtool/src/cppparser/cppInstanceIdentifier.h index afef5b675d..ee44ab8c0a 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.h +++ b/dtool/src/cppparser/cppInstanceIdentifier.h @@ -57,11 +57,14 @@ public: CPPType *unroll_type(CPPType *start_type); void add_modifier(CPPInstanceIdentifierType type); - void add_func_modifier(CPPParameterList *params, int flags); + void add_func_modifier(CPPParameterList *params, int flags, + CPPType *trailing_return_type = NULL); void add_scoped_pointer_modifier(CPPIdentifier *scoping); void add_array_modifier(CPPExpression *expr); void add_initializer_modifier(CPPParameterList *params); + void add_trailing_return_type(CPPType *type); + CPPParameterList *get_initializer() const; CPPScope *get_scope(CPPScope *current_scope, CPPScope *global_scope, @@ -72,7 +75,8 @@ public: class Modifier { public: Modifier(CPPInstanceIdentifierType type); - static Modifier func_type(CPPParameterList *params, int flags); + 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); static Modifier initializer_type(CPPParameterList *params); @@ -82,10 +86,13 @@ public: int _func_flags; CPPIdentifier *_scoping; CPPExpression *_expr; + CPPType *_trailing_return_type; }; typedef vector Modifiers; Modifiers _modifiers; + int _bit_width; + private: CPPType * r_unroll_type(CPPType *start_type, Modifiers::const_iterator mi); diff --git a/dtool/src/cppparser/cppPreprocessor.cxx b/dtool/src/cppparser/cppPreprocessor.cxx index bd18331e23..cef75dbe74 100644 --- a/dtool/src/cppparser/cppPreprocessor.cxx +++ b/dtool/src/cppparser/cppPreprocessor.cxx @@ -1367,6 +1367,50 @@ skip_cpp_comment(int c) { return c; } +//////////////////////////////////////////////////////////////////// +// Function: CPPPreprocessor::skip_digit_separator +// Access: Private +// Description: Skips a C++14 digit separator that has just been +// found through peek(). +//////////////////////////////////////////////////////////////////// +int CPPPreprocessor:: +skip_digit_separator(int c) { + if (c != '\'') { + return c; + } + + get(); + c = peek(); + + if (isdigit(c)) { + return c; + } + + YYLTYPE loc; + loc.file = get_file(); + loc.first_line = get_line_number(); + loc.first_column = get_col_number(); + loc.last_line = loc.first_line; + loc.last_column = loc.first_column; + + if (c != '\'') { + // This assumes that this isn't a character constant directly follows + // a digit sequence, like 123'a' -- I can't think of a situation + // where that's legal anyway, though. + error("digit separator cannot occur at end of digit sequence", loc); + return c; + } + + while (c == '\'') { + get(); + ++loc.last_column; + c = peek(); + } + error("adjacent digit separators", loc); + + return c; +} + //////////////////////////////////////////////////////////////////// // Function: CPPPreprocessor::process_directive // Access: Private @@ -2395,7 +2439,8 @@ extract_manifest_args_inline(const string &name, int num_args, //////////////////////////////////////////////////////////////////// // Function: CPPPreprocessor::get_number // Access: Private -// Description: +// Description: Assuming that we've just read a digit or a period +// indicating the start of a number, read the rest. //////////////////////////////////////////////////////////////////// CPPToken CPPPreprocessor:: get_number(int c) { @@ -2410,16 +2455,16 @@ get_number(int c) { bool leading_zero = (c == '0'); bool decimal_point = (c == '.'); - c = peek(); + c = skip_digit_separator(peek()); - if (leading_zero && c == 'x') { + if (leading_zero && (c == 'x' || c == 'X')) { // Here we have a hex number. num += get(); c = peek(); while (c != EOF && (isdigit(c) || (tolower(c) >= 'a' && tolower(c) <= 'f'))) { num += get(); - c = peek(); + c = skip_digit_separator(peek()); } loc.last_line = get_line_number(); @@ -2429,11 +2474,30 @@ get_number(int c) { result.u.integer = strtol(num.c_str(), (char **)NULL, 16); return get_literal(INTEGER, loc, num, result); + + } else if (leading_zero && (c == 'b' || c == 'B')) { + // A C++14-style binary number. + get(); + c = peek(); + string bin(1, (char)c); + + while (c != EOF && (c == '0' || c == '1')) { + bin += get(); + c = skip_digit_separator(peek()); + } + + loc.last_line = get_line_number(); + loc.last_column = get_col_number(); + + YYSTYPE result; + result.u.integer = strtol(bin.c_str(), (char **)NULL, 2); + + return get_literal(INTEGER, loc, bin, result); } while (c != EOF && isdigit(c)) { num += get(); - c = peek(); + c = skip_digit_separator(peek()); } if (c == '.' && !decimal_point) { @@ -2459,7 +2523,7 @@ get_number(int c) { } while (c != EOF && isdigit(c)) { num += get(); - c = peek(); + c = skip_digit_separator(peek()); } } @@ -2517,6 +2581,7 @@ check_keyword(const string &name) { if (name == "__const") return KW_CONST; if (name == "__const__") return KW_CONST; if (name == "constexpr") return KW_CONSTEXPR; + if (name == "const_cast") return KW_CONST_CAST; if (name == "decltype") return KW_DECLTYPE; if (name == "default") return KW_DEFAULT; if (name == "delete") return KW_DELETE; @@ -2530,6 +2595,7 @@ check_keyword(const string &name) { if (name == "explicit") return KW_EXPLICIT; if (name == "__published") return KW_PUBLISHED; if (name == "false") return KW_FALSE; + if (name == "final") return KW_FINAL; if (name == "float") return KW_FLOAT; if (name == "friend") return KW_FRIEND; if (name == "for") return KW_FOR; @@ -2549,10 +2615,12 @@ check_keyword(const string &name) { if (name == "nullptr") return KW_NULLPTR; if (name == "new") return KW_NEW; if (name == "operator") return KW_OPERATOR; + if (name == "override") return KW_OVERRIDE; if (name == "private") return KW_PRIVATE; if (name == "protected") return KW_PROTECTED; if (name == "public") return KW_PUBLIC; if (name == "register") return KW_REGISTER; + if (name == "reinterpret_cast") return KW_REINTERPRET_CAST; if (name == "return") return KW_RETURN; if (name == "short") return KW_SHORT; if (name == "signed") return KW_SIGNED; @@ -2562,10 +2630,12 @@ check_keyword(const string &name) { if (name == "static_cast") return KW_STATIC_CAST; if (name == "struct") return KW_STRUCT; if (name == "template") return KW_TEMPLATE; + if (name == "thread_local") return KW_THREAD_LOCAL; if (name == "throw") return KW_THROW; if (name == "true") return KW_TRUE; if (name == "try") return KW_TRY; if (name == "typedef") return KW_TYPEDEF; + if (name == "typeid") return KW_TYPEID; if (name == "typename") return KW_TYPENAME; if (name == "union") return KW_UNION; if (name == "unsigned") return KW_UNSIGNED; @@ -2589,10 +2659,6 @@ check_keyword(const string &name) { if (name == "xor") return '^'; if (name == "xor_eq") return XOREQUAL; - if (!cpp_longlong_keyword.empty() && name == cpp_longlong_keyword) { - return KW_LONGLONG; - } - return 0; } diff --git a/dtool/src/cppparser/cppPreprocessor.h b/dtool/src/cppparser/cppPreprocessor.h index bf1170d145..aa7b8ef89c 100644 --- a/dtool/src/cppparser/cppPreprocessor.h +++ b/dtool/src/cppparser/cppPreprocessor.h @@ -126,6 +126,7 @@ private: int skip_comment(int c); int skip_c_comment(int c); int skip_cpp_comment(int c); + int skip_digit_separator(int c); int process_directive(int c); int get_preprocessor_command(int c, string &command); diff --git a/dtool/src/cppparser/cppStructType.cxx b/dtool/src/cppparser/cppStructType.cxx index 9445963f1a..36e20a1f73 100644 --- a/dtool/src/cppparser/cppStructType.cxx +++ b/dtool/src/cppparser/cppStructType.cxx @@ -48,7 +48,8 @@ CPPStructType(CPPStructType::Type type, CPPIdentifier *ident, CPPScope *current_scope, CPPScope *scope, const CPPFile &file) : CPPExtensionType(type, ident, current_scope, file), - _scope(scope) + _scope(scope), + _final(false) { _subst_decl_recursive_protect = false; _incomplete = true; @@ -64,7 +65,8 @@ CPPStructType(const CPPStructType ©) : CPPExtensionType(copy), _scope(copy._scope), _incomplete(copy._incomplete), - _derivation(copy._derivation) + _derivation(copy._derivation), + _final(copy._final) { _subst_decl_recursive_protect = false; } @@ -80,6 +82,7 @@ operator = (const CPPStructType ©) { _scope = copy._scope; _incomplete = copy._incomplete; _derivation = copy._derivation; + _final = copy._final; } //////////////////////////////////////////////////////////////////// @@ -99,6 +102,15 @@ append_derivation(CPPType *base, CPPVisibility vis, bool is_virtual) { def = base->as_typedef_type(); } + if (vis == V_unknown && base->as_extension_type() != NULL) { + // Default visibility. + if (base->as_extension_type()->_type == T_class) { + vis = V_private; + } else { + vis = V_public; + } + } + Base b; b._base = base; b._vis = vis; @@ -794,10 +806,14 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete) const { out << _type; } + if (_final) { + out << " final"; + } + // Show any derivation we may have if (!_derivation.empty()) { Derivation::const_iterator di = _derivation.begin(); - out << ": " << *di; + out << " : " << *di; ++di; while (di != _derivation.end()) { out << ", " << *di; diff --git a/dtool/src/cppparser/cppStructType.h b/dtool/src/cppparser/cppStructType.h index 2d7df19526..c6b0a976ab 100644 --- a/dtool/src/cppparser/cppStructType.h +++ b/dtool/src/cppparser/cppStructType.h @@ -78,6 +78,7 @@ public: CPPScope *_scope; bool _incomplete; + bool _final; class Base { public: diff --git a/dtool/src/cppparser/cppToken.cxx b/dtool/src/cppparser/cppToken.cxx index 5f247fef68..30f0307ebe 100644 --- a/dtool/src/cppparser/cppToken.cxx +++ b/dtool/src/cppparser/cppToken.cxx @@ -200,6 +200,10 @@ output(ostream &out) const { out << "UNARY_MINUS"; break; + case UNARY_PLUS: + out << "UNARY_PLUS"; + break; + case UNARY_NEGATE: out << "UNARY_NEGATE"; break; diff --git a/dtool/src/cppparser/cppTypedefType.cxx b/dtool/src/cppparser/cppTypedefType.cxx index b8eeb4ee8e..9bb0f24e9b 100644 --- a/dtool/src/cppparser/cppTypedefType.cxx +++ b/dtool/src/cppparser/cppTypedefType.cxx @@ -25,7 +25,8 @@ CPPTypedefType:: CPPTypedefType(CPPType *type, const string &name, CPPScope *current_scope) : CPPType(CPPFile()), _type(type), - _ident(new CPPIdentifier(name)) + _ident(new CPPIdentifier(name)), + _using(false) { if (_ident != NULL) { _ident->_native_scope = current_scope; @@ -49,7 +50,8 @@ CPPTypedefType:: CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope) : CPPType(CPPFile()), _type(type), - _ident(ident) + _ident(ident), + _using(false) { if (_ident != NULL) { _ident->_native_scope = current_scope; @@ -68,8 +70,10 @@ CPPTypedefType(CPPType *type, CPPIdentifier *ident, CPPScope *current_scope) : CPPTypedefType:: CPPTypedefType(CPPType *type, CPPInstanceIdentifier *ii, CPPScope *current_scope, const CPPFile &file) : - CPPType(file) + CPPType(file), + _using(false) { + assert(ii != NULL); _type = ii->unroll_type(type); _ident = ii->_ident; ii->_ident = NULL; @@ -363,8 +367,14 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete) const { } if (complete) { - out << "typedef "; - _type->output_instance(out, indent_level, scope, false, "", name); + if (_using) { + // It was declared using the "using" keyword. + out << "using " << name << " = "; + _type->output(out, 0, scope, false); + } else { + out << "typedef "; + _type->output_instance(out, indent_level, scope, false, "", name); + } } else { out << name; } @@ -401,7 +411,7 @@ is_equal(const CPPDeclaration *other) const { const CPPTypedefType *ot = ((CPPDeclaration *)other)->as_typedef_type(); assert(ot != NULL); - return (*_type == *ot->_type) && (*_ident == *ot->_ident); + return (*_type == *ot->_type) && (*_ident == *ot->_ident) && (_using == ot->_using); } //////////////////////////////////////////////////////////////////// diff --git a/dtool/src/cppparser/cppTypedefType.h b/dtool/src/cppparser/cppTypedefType.h index 0fb46b2132..49ef52c250 100644 --- a/dtool/src/cppparser/cppTypedefType.h +++ b/dtool/src/cppparser/cppTypedefType.h @@ -65,6 +65,7 @@ public: CPPType *_type; CPPIdentifier *_ident; + bool _using; protected: virtual bool is_equal(const CPPDeclaration *other) const; diff --git a/dtool/src/dtoolbase/dtoolbase_cc.h b/dtool/src/dtoolbase/dtoolbase_cc.h index 836a51f027..cd5e2c091b 100644 --- a/dtool/src/dtoolbase/dtoolbase_cc.h +++ b/dtool/src/dtoolbase/dtoolbase_cc.h @@ -36,8 +36,8 @@ using namespace std; #define TYPENAME typename #define CONSTEXPR constexpr #define NOEXCEPT noexcept -#define FINAL -#define OVERRIDE +#define FINAL final +#define OVERRIDE override #define MOVE(x) x #define DEFAULT_CTOR = default diff --git a/dtool/src/interrogate/interrogate.cxx b/dtool/src/interrogate/interrogate.cxx index 92b543f3e6..aead6ba481 100644 --- a/dtool/src/interrogate/interrogate.cxx +++ b/dtool/src/interrogate/interrogate.cxx @@ -272,10 +272,6 @@ void show_help() { << " function wrappers already, from some external source. This is most\n" << " useful in conjunction with -true-names.\n\n" - << " -longlong typename\n" - << " Specify the name of the 64-bit integer type for the current compiler.\n" - << " By default, this is \"long long\".\n\n" - << " -promiscuous\n" << " Export *all* public symbols, functions, and classes seen, even those\n" << " not explicitly marked to be published.\n\n" @@ -436,6 +432,7 @@ main(int argc, char **argv) { break; case CO_longlong: + cerr << "Warning: ignoring deprecated -longlong option.\n"; cpp_longlong_keyword = optarg; break; diff --git a/dtool/src/parser-inc/typeinfo b/dtool/src/parser-inc/typeinfo index 9144890d5a..a6cac9fc84 100644 --- a/dtool/src/parser-inc/typeinfo +++ b/dtool/src/parser-inc/typeinfo @@ -1,5 +1,22 @@ #pragma once -class type_info; -class bad_cast; -class bad_typeid; +#include + +namespace std { + class type_info { + public: + type_info(const type_info& rhs) = delete; + virtual ~type_info(); + + type_info &operator = (const type_info &rhs) = delete; + + bool operator ==(const type_info &rhs) const noexcept; + bool operator !=(const type_info &rhs) const noexcept; + bool before(const type_info &rhs) const noexcept; + size_t hash_code() const noexcept; + const char *name() const noexcept; + }; + + class bad_cast; + class bad_typeid; +}