diff --git a/gcc/c-decl.c b/gcc/c-decl.c index ccaa7d2..e97965a 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -433,7 +433,6 @@ static tree lookup_tag_reverse PROTO((tree)); static tree grokdeclarator PROTO((tree, tree, enum decl_context, int)); static tree grokparms PROTO((tree, int)); -static int field_decl_cmp PROTO((const GENERIC_PTR, const GENERIC_PTR)); static void layout_array_type PROTO((tree)); /* C-specific option variables. */ @@ -5691,6 +5690,21 @@ grokfield (filename, line, declarator, declspecs, width) { tree value; + if (declarator == NULL_TREE && width == NULL_TREE) + { + /* This is an unnamed decl. We only support unnamed + structs/unions, so check for other things and refuse them. */ + tree type = TREE_VALUE (declspecs); + + if (TREE_CODE (type) == TYPE_DECL) + type = TREE_TYPE (type); + if (TREE_CODE (type) != RECORD_TYPE && TREE_CODE (type) != UNION_TYPE) + { + error ("unnamed fields of type other than struct or union are not allowed"); + return NULL_TREE; + } + } + /* The corresponding pop_obstacks is in finish_decl. */ push_obstacks_nochange (); @@ -5703,25 +5717,6 @@ grokfield (filename, line, declarator, declspecs, width) return value; } -/* Function to help qsort sort FIELD_DECLs by name order. */ - -static int -field_decl_cmp (xp, yp) - const GENERIC_PTR xp; - const GENERIC_PTR yp; -{ - tree *x = (tree *)xp, *y = (tree *)yp; - - if (DECL_NAME (*x) == DECL_NAME (*y)) - return 0; - if (DECL_NAME (*x) == NULL) - return -1; - if (DECL_NAME (*y) == NULL) - return 1; - if (DECL_NAME (*x) < DECL_NAME (*y)) - return -1; - return 1; -} /* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T. FIELDLIST is a chain of FIELD_DECL nodes for the fields. @@ -5958,43 +5953,6 @@ finish_struct (t, fieldlist, attributes) TYPE_FIELDS (t) = fieldlist; - /* If there are lots of fields, sort so we can look through them fast. - We arbitrarily consider 16 or more elts to be "a lot". */ - { - int len = 0; - - for (x = fieldlist; x; x = TREE_CHAIN (x)) - { - if (len > 15) - break; - len += 1; - } - if (len > 15) - { - tree *field_array; - char *space; - - len += list_length (x); - /* Use the same allocation policy here that make_node uses, to - ensure that this lives as long as the rest of the struct decl. - All decls in an inline function need to be saved. */ - if (allocation_temporary_p ()) - space = savealloc (sizeof (struct lang_type) + len * sizeof (tree)); - else - space = oballoc (sizeof (struct lang_type) + len * sizeof (tree)); - - TYPE_LANG_SPECIFIC (t) = (struct lang_type *) space; - TYPE_LANG_SPECIFIC (t)->len = len; - - field_array = &TYPE_LANG_SPECIFIC (t)->elts[0]; - len = 0; - for (x = fieldlist; x; x = TREE_CHAIN (x)) - field_array[len++] = x; - - qsort (field_array, len, sizeof (tree), field_decl_cmp); - } - } - for (x = TYPE_MAIN_VARIANT (t); x; x = TYPE_NEXT_VARIANT (x)) { TYPE_FIELDS (x) = TYPE_FIELDS (t); diff --git a/gcc/c-parse.c b/gcc/c-parse.c index 842d252..197c6bf 100644 --- a/gcc/c-parse.c +++ b/gcc/c-parse.c @@ -1,6 +1,6 @@ /* A Bison parser, made from c-parse.y - by GNU Bison version 1.25 + by Bison version A2.6 (Andrew Consortium) */ #define YYBISON 1 /* Identify Bison output. */ @@ -134,7 +134,7 @@ extern void yyprint PROTO ((FILE *, int, YYSTYPE)); -#define YYFINAL 688 +#define YYFINAL 692 #define YYFLAG -32768 #define YYNTBASE 84 @@ -203,21 +203,21 @@ static const short yyprhs[] = { 0, 717, 721, 726, 730, 734, 736, 738, 741, 743, 746, 748, 751, 752, 760, 766, 769, 770, 778, 784, 787, 788, 797, 798, 806, 809, 810, 812, 813, 815, 817, - 820, 821, 825, 828, 832, 834, 838, 840, 842, 845, - 847, 851, 856, 863, 869, 871, 875, 877, 879, 883, - 886, 889, 890, 892, 894, 897, 898, 901, 905, 909, - 912, 916, 921, 925, 928, 932, 935, 937, 939, 942, - 945, 946, 948, 951, 952, 953, 955, 957, 960, 964, - 966, 969, 971, 974, 981, 987, 993, 996, 999, 1004, - 1005, 1010, 1011, 1012, 1016, 1021, 1025, 1027, 1029, 1031, - 1033, 1036, 1037, 1042, 1044, 1048, 1049, 1050, 1058, 1064, - 1067, 1068, 1069, 1070, 1083, 1084, 1091, 1094, 1097, 1100, - 1104, 1111, 1120, 1131, 1144, 1148, 1153, 1155, 1157, 1158, - 1165, 1169, 1175, 1178, 1181, 1182, 1184, 1185, 1187, 1188, - 1190, 1192, 1196, 1201, 1203, 1207, 1208, 1211, 1214, 1215, - 1220, 1223, 1224, 1226, 1228, 1232, 1234, 1238, 1243, 1248, - 1253, 1258, 1263, 1264, 1267, 1269, 1272, 1274, 1278, 1280, - 1284 + 820, 821, 825, 828, 832, 838, 842, 844, 846, 849, + 851, 855, 860, 867, 873, 875, 879, 881, 883, 887, + 890, 893, 894, 896, 898, 901, 902, 905, 909, 913, + 916, 920, 925, 929, 932, 936, 939, 941, 943, 946, + 949, 950, 952, 955, 956, 957, 959, 961, 964, 968, + 970, 973, 975, 978, 985, 991, 997, 1000, 1003, 1008, + 1009, 1014, 1015, 1016, 1020, 1025, 1029, 1031, 1033, 1035, + 1037, 1040, 1041, 1046, 1048, 1052, 1053, 1054, 1062, 1068, + 1071, 1072, 1073, 1074, 1087, 1088, 1095, 1098, 1101, 1104, + 1108, 1115, 1124, 1135, 1148, 1152, 1157, 1159, 1161, 1162, + 1169, 1173, 1179, 1182, 1185, 1186, 1188, 1189, 1191, 1192, + 1194, 1196, 1200, 1205, 1207, 1211, 1212, 1215, 1218, 1219, + 1224, 1227, 1228, 1230, 1232, 1236, 1238, 1242, 1247, 1252, + 1257, 1262, 1267, 1268, 1271, 1273, 1276, 1278, 1282, 1284, + 1288 }; static const short yyrhs[] = { -1, @@ -304,52 +304,52 @@ static const short yyrhs[] = { -1, 184, 178, 78, 142, 0, 171, 97, 0, 0, 81, 0, 0, 81, 0, 180, 0, 180, 181, 0, 0, 180, 181, 77, 0, 180, 77, 0, 131, 122, 182, - 0, 131, 0, 188, 122, 182, 0, 188, 0, 1, - 0, 241, 181, 0, 183, 0, 182, 81, 183, 0, - 206, 207, 165, 142, 0, 206, 207, 165, 38, 107, - 142, 0, 206, 207, 38, 107, 142, 0, 185, 0, - 184, 81, 185, 0, 1, 0, 97, 0, 97, 36, - 107, 0, 131, 187, 0, 188, 187, 0, 0, 190, - 0, 7, 0, 188, 7, 0, 0, 189, 7, 0, - 59, 190, 76, 0, 50, 189, 190, 0, 50, 189, - 0, 190, 59, 229, 0, 190, 60, 99, 83, 0, - 190, 60, 83, 0, 59, 229, 0, 60, 99, 83, - 0, 60, 83, 0, 192, 0, 209, 0, 192, 209, - 0, 192, 194, 0, 0, 191, 0, 1, 77, 0, - 0, 0, 197, 0, 198, 0, 197, 198, 0, 32, - 240, 77, 0, 201, 0, 1, 201, 0, 82, 0, - 200, 78, 0, 200, 195, 196, 121, 193, 78, 0, - 200, 195, 196, 1, 78, 0, 200, 195, 196, 191, - 78, 0, 203, 208, 0, 203, 1, 0, 15, 59, - 99, 76, 0, 0, 18, 205, 208, 17, 0, 0, - 0, 206, 207, 211, 0, 206, 207, 222, 208, 0, - 206, 207, 210, 0, 211, 0, 222, 0, 201, 0, - 219, 0, 99, 77, 0, 0, 202, 16, 212, 208, - 0, 202, 0, 202, 16, 1, 0, 0, 0, 17, - 213, 59, 99, 76, 214, 208, 0, 204, 59, 99, - 76, 77, 0, 204, 1, 0, 0, 0, 0, 19, - 59, 224, 77, 215, 224, 77, 216, 224, 76, 217, - 208, 0, 0, 20, 59, 99, 76, 218, 208, 0, - 23, 77, 0, 24, 77, 0, 25, 77, 0, 25, - 99, 77, 0, 27, 223, 59, 99, 76, 77, 0, - 27, 223, 59, 99, 38, 225, 76, 77, 0, 27, - 223, 59, 99, 38, 225, 38, 225, 76, 77, 0, - 27, 223, 59, 99, 38, 225, 38, 225, 38, 228, - 76, 77, 0, 26, 97, 77, 0, 26, 50, 99, - 77, 0, 77, 0, 220, 0, 0, 19, 59, 113, - 76, 221, 208, 0, 21, 107, 38, 0, 21, 107, - 10, 107, 38, 0, 22, 38, 0, 97, 38, 0, - 0, 7, 0, 0, 99, 0, 0, 226, 0, 227, - 0, 226, 81, 227, 0, 9, 59, 99, 76, 0, - 115, 0, 228, 81, 115, 0, 0, 230, 231, 0, - 233, 76, 0, 0, 234, 77, 232, 231, 0, 1, - 76, 0, 0, 10, 0, 234, 0, 234, 81, 10, - 0, 235, 0, 234, 81, 235, 0, 125, 122, 167, - 142, 0, 125, 122, 168, 142, 0, 125, 122, 187, - 142, 0, 129, 122, 168, 142, 0, 129, 122, 187, - 142, 0, 0, 237, 238, 0, 231, 0, 239, 76, - 0, 3, 0, 239, 81, 3, 0, 97, 0, 240, - 81, 97, 0, 31, 0 + 0, 131, 122, 206, 207, 142, 0, 188, 122, 182, + 0, 188, 0, 1, 0, 241, 181, 0, 183, 0, + 182, 81, 183, 0, 206, 207, 165, 142, 0, 206, + 207, 165, 38, 107, 142, 0, 206, 207, 38, 107, + 142, 0, 185, 0, 184, 81, 185, 0, 1, 0, + 97, 0, 97, 36, 107, 0, 131, 187, 0, 188, + 187, 0, 0, 190, 0, 7, 0, 188, 7, 0, + 0, 189, 7, 0, 59, 190, 76, 0, 50, 189, + 190, 0, 50, 189, 0, 190, 59, 229, 0, 190, + 60, 99, 83, 0, 190, 60, 83, 0, 59, 229, + 0, 60, 99, 83, 0, 60, 83, 0, 192, 0, + 209, 0, 192, 209, 0, 192, 194, 0, 0, 191, + 0, 1, 77, 0, 0, 0, 197, 0, 198, 0, + 197, 198, 0, 32, 240, 77, 0, 201, 0, 1, + 201, 0, 82, 0, 200, 78, 0, 200, 195, 196, + 121, 193, 78, 0, 200, 195, 196, 1, 78, 0, + 200, 195, 196, 191, 78, 0, 203, 208, 0, 203, + 1, 0, 15, 59, 99, 76, 0, 0, 18, 205, + 208, 17, 0, 0, 0, 206, 207, 211, 0, 206, + 207, 222, 208, 0, 206, 207, 210, 0, 211, 0, + 222, 0, 201, 0, 219, 0, 99, 77, 0, 0, + 202, 16, 212, 208, 0, 202, 0, 202, 16, 1, + 0, 0, 0, 17, 213, 59, 99, 76, 214, 208, + 0, 204, 59, 99, 76, 77, 0, 204, 1, 0, + 0, 0, 0, 19, 59, 224, 77, 215, 224, 77, + 216, 224, 76, 217, 208, 0, 0, 20, 59, 99, + 76, 218, 208, 0, 23, 77, 0, 24, 77, 0, + 25, 77, 0, 25, 99, 77, 0, 27, 223, 59, + 99, 76, 77, 0, 27, 223, 59, 99, 38, 225, + 76, 77, 0, 27, 223, 59, 99, 38, 225, 38, + 225, 76, 77, 0, 27, 223, 59, 99, 38, 225, + 38, 225, 38, 228, 76, 77, 0, 26, 97, 77, + 0, 26, 50, 99, 77, 0, 77, 0, 220, 0, + 0, 19, 59, 113, 76, 221, 208, 0, 21, 107, + 38, 0, 21, 107, 10, 107, 38, 0, 22, 38, + 0, 97, 38, 0, 0, 7, 0, 0, 99, 0, + 0, 226, 0, 227, 0, 226, 81, 227, 0, 9, + 59, 99, 76, 0, 115, 0, 228, 81, 115, 0, + 0, 230, 231, 0, 233, 76, 0, 0, 234, 77, + 232, 231, 0, 1, 76, 0, 0, 10, 0, 234, + 0, 234, 81, 10, 0, 235, 0, 234, 81, 235, + 0, 125, 122, 167, 142, 0, 125, 122, 168, 142, + 0, 125, 122, 187, 142, 0, 129, 122, 168, 142, + 0, 129, 122, 187, 142, 0, 0, 237, 238, 0, + 231, 0, 239, 76, 0, 3, 0, 239, 81, 3, + 0, 97, 0, 240, 81, 97, 0, 31, 0 }; #endif @@ -382,26 +382,26 @@ static const short yyrline[] = { 0, 1257, 1259, 1261, 1268, 1270, 1273, 1276, 1280, 1283, 1287, 1290, 1294, 1299, 1301, 1305, 1307, 1309, 1311, 1315, 1317, 1320, 1323, 1326, 1329, 1333, 1335, 1338, 1340, 1344, 1347, - 1352, 1354, 1356, 1370, 1377, 1382, 1388, 1393, 1395, 1400, - 1402, 1406, 1410, 1414, 1424, 1426, 1431, 1436, 1439, 1443, - 1446, 1450, 1453, 1456, 1459, 1463, 1466, 1470, 1474, 1476, - 1478, 1480, 1482, 1484, 1486, 1488, 1498, 1506, 1508, 1510, - 1514, 1516, 1519, 1522, 1533, 1535, 1540, 1542, 1545, 1559, - 1562, 1565, 1567, 1569, 1577, 1585, 1596, 1601, 1604, 1618, - 1627, 1631, 1635, 1639, 1645, 1649, 1654, 1657, 1662, 1665, - 1666, 1683, 1688, 1691, 1703, 1705, 1715, 1725, 1726, 1734, - 1737, 1749, 1753, 1770, 1780, 1789, 1794, 1799, 1804, 1808, - 1812, 1823, 1830, 1837, 1844, 1855, 1861, 1864, 1869, 1892, - 1926, 1957, 1988, 2003, 2014, 2018, 2022, 2025, 2030, 2032, - 2035, 2037, 2041, 2046, 2049, 2055, 2060, 2065, 2067, 2076, - 2077, 2083, 2085, 2095, 2097, 2101, 2104, 2110, 2120, 2129, - 2138, 2148, 2162, 2167, 2172, 2174, 2183, 2186, 2191, 2194, - 2198 + 1352, 1354, 1356, 1370, 1377, 1390, 1396, 1401, 1403, 1408, + 1410, 1414, 1418, 1422, 1432, 1434, 1439, 1444, 1447, 1451, + 1454, 1458, 1461, 1464, 1467, 1471, 1474, 1478, 1482, 1484, + 1486, 1488, 1490, 1492, 1494, 1496, 1506, 1514, 1516, 1518, + 1522, 1524, 1527, 1530, 1541, 1543, 1548, 1550, 1553, 1567, + 1570, 1573, 1575, 1577, 1585, 1593, 1604, 1609, 1612, 1626, + 1635, 1639, 1643, 1647, 1653, 1657, 1662, 1665, 1670, 1673, + 1674, 1691, 1696, 1699, 1711, 1713, 1723, 1733, 1734, 1742, + 1745, 1757, 1761, 1778, 1788, 1797, 1802, 1807, 1812, 1816, + 1820, 1831, 1838, 1845, 1852, 1863, 1869, 1872, 1877, 1900, + 1934, 1965, 1996, 2011, 2022, 2026, 2030, 2033, 2038, 2040, + 2043, 2045, 2049, 2054, 2057, 2063, 2068, 2073, 2075, 2084, + 2085, 2091, 2093, 2103, 2105, 2109, 2112, 2118, 2128, 2137, + 2146, 2156, 2170, 2175, 2180, 2182, 2191, 2194, 2199, 2202, + 2206 }; #endif -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) +#if YYDEBUG != 0 || defined(YYERROR_VERBOSE) static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER", "TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF", @@ -511,7 +511,7 @@ static const short yyr2[] = { 0, 3, 4, 3, 3, 1, 1, 2, 1, 2, 1, 2, 0, 7, 5, 2, 0, 7, 5, 2, 0, 8, 0, 7, 2, 0, 1, 0, 1, 1, 2, - 0, 3, 2, 3, 1, 3, 1, 1, 2, 1, + 0, 3, 2, 3, 5, 3, 1, 1, 2, 1, 3, 4, 6, 5, 1, 3, 1, 1, 3, 2, 2, 0, 1, 1, 2, 0, 2, 3, 3, 2, 3, 4, 3, 2, 3, 2, 1, 1, 2, 2, @@ -567,604 +567,612 @@ static const short yydefact[] = { 3, 0, 174, 176, 86, 0, 163, 381, 282, 282, 378, 379, 0, 396, 0, 0, 29, 310, 104, 118, 118, 135, 0, 0, 164, 218, 0, 264, 270, 323, 266, - 170, 170, 279, 276, 170, 0, 0, 0, 306, 307, - 0, 80, 83, 292, 179, 0, 181, 228, 286, 376, - 119, 170, 170, 170, 286, 170, 170, 0, 385, 387, - 398, 311, 111, 0, 112, 0, 135, 133, 189, 187, - 186, 168, 21, 0, 25, 322, 0, 243, 247, 253, - 170, 399, 0, 0, 0, 322, 0, 0, 115, 323, - 298, 308, 197, 86, 0, 0, 195, 0, 194, 0, - 255, 192, 0, 0, 290, 0, 393, 0, 388, 389, - 390, 290, 391, 392, 380, 0, 0, 162, 134, 137, - 136, 0, 165, 271, 0, 170, 251, 309, 0, 315, - 117, 116, 302, 0, 316, 300, 323, 299, 0, 0, - 0, 0, 204, 61, 0, 191, 81, 180, 226, 286, - 227, 223, 225, 0, 109, 110, 0, 170, 0, 272, - 400, 314, 0, 152, 0, 336, 320, 0, 0, 0, - 0, 0, 0, 0, 0, 365, 357, 0, 0, 113, - 118, 118, 329, 334, 0, 0, 326, 327, 330, 358, - 328, 0, 206, 0, 202, 0, 0, 193, 0, 224, - 188, 274, 170, 0, 0, 322, 367, 0, 0, 363, - 347, 348, 349, 0, 0, 0, 366, 0, 364, 331, - 124, 0, 125, 0, 0, 318, 323, 317, 340, 0, - 126, 0, 0, 200, 0, 196, 205, 273, 0, 0, - 0, 368, 45, 0, 0, 0, 361, 350, 0, 355, - 0, 0, 122, 208, 0, 123, 211, 335, 322, 0, - 0, 207, 0, 0, 203, 319, 0, 321, 359, 341, - 345, 0, 356, 0, 120, 0, 121, 0, 333, 324, - 322, 0, 198, 201, 337, 322, 367, 322, 362, 369, - 0, 209, 212, 325, 339, 0, 322, 360, 0, 346, - 0, 0, 370, 371, 351, 0, 0, 199, 338, 342, - 0, 369, 0, 0, 210, 213, 367, 0, 0, 352, - 372, 0, 373, 0, 0, 343, 374, 0, 353, 322, - 0, 0, 344, 354, 375, 0, 0, 0 + 323, 170, 170, 279, 276, 170, 0, 0, 0, 306, + 307, 0, 80, 83, 292, 179, 0, 181, 228, 286, + 376, 119, 170, 170, 170, 286, 170, 170, 0, 385, + 387, 398, 311, 111, 0, 112, 0, 135, 133, 189, + 187, 186, 168, 21, 0, 25, 322, 170, 0, 243, + 247, 253, 170, 399, 0, 0, 0, 322, 0, 0, + 115, 323, 298, 308, 197, 86, 0, 0, 195, 0, + 194, 0, 255, 192, 0, 0, 290, 0, 393, 0, + 388, 389, 390, 290, 391, 392, 380, 0, 0, 162, + 134, 137, 136, 0, 165, 271, 0, 265, 119, 170, + 251, 309, 0, 315, 117, 116, 302, 0, 316, 300, + 323, 299, 0, 0, 0, 0, 204, 61, 0, 191, + 81, 180, 226, 286, 227, 223, 225, 0, 109, 110, + 0, 170, 0, 272, 400, 314, 0, 152, 0, 336, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 365, + 357, 0, 0, 113, 118, 118, 329, 334, 0, 0, + 326, 327, 330, 358, 328, 0, 206, 0, 202, 0, + 0, 193, 0, 224, 188, 274, 170, 0, 0, 322, + 367, 0, 0, 363, 347, 348, 349, 0, 0, 0, + 366, 0, 364, 331, 124, 0, 125, 0, 0, 318, + 323, 317, 340, 0, 126, 0, 0, 200, 0, 196, + 205, 273, 0, 0, 0, 368, 45, 0, 0, 0, + 361, 350, 0, 355, 0, 0, 122, 208, 0, 123, + 211, 335, 322, 0, 0, 207, 0, 0, 203, 319, + 0, 321, 359, 341, 345, 0, 356, 0, 120, 0, + 121, 0, 333, 324, 322, 0, 198, 201, 337, 322, + 367, 322, 362, 369, 0, 209, 212, 325, 339, 0, + 322, 360, 0, 346, 0, 0, 370, 371, 351, 0, + 0, 199, 338, 342, 0, 369, 0, 0, 210, 213, + 367, 0, 0, 352, 372, 0, 373, 0, 0, 343, + 374, 0, 353, 322, 0, 0, 344, 354, 375, 0, + 0, 0 }; -static const short yydefgoto[] = { 686, +static const short yydefgoto[] = { 690, 1, 2, 3, 17, 18, 19, 222, 373, 228, 376, - 112, 304, 448, 85, 144, 274, 87, 88, 89, 90, - 91, 391, 92, 259, 258, 256, 453, 257, 93, 145, - 94, 209, 210, 211, 368, 435, 436, 20, 107, 530, - 294, 57, 369, 418, 295, 23, 98, 185, 24, 129, - 117, 44, 113, 118, 424, 45, 372, 214, 215, 26, - 194, 195, 196, 422, 472, 450, 451, 452, 492, 646, - 614, 585, 547, 582, 603, 626, 656, 606, 628, 657, - 201, 121, 499, 122, 27, 28, 29, 30, 236, 238, - 243, 137, 496, 330, 132, 133, 233, 377, 378, 241, - 242, 100, 183, 101, 103, 184, 437, 438, 484, 212, - 333, 388, 389, 390, 366, 247, 367, 534, 535, 536, - 556, 577, 308, 578, 441, 537, 538, 609, 555, 647, - 637, 667, 680, 638, 539, 540, 636, 541, 568, 594, - 652, 653, 654, 678, 279, 280, 296, 408, 297, 298, - 299, 204, 205, 300, 301, 433, 95 + 112, 304, 450, 85, 144, 274, 87, 88, 89, 90, + 91, 392, 92, 259, 258, 256, 455, 257, 93, 145, + 94, 209, 210, 211, 368, 437, 438, 20, 220, 534, + 294, 57, 369, 419, 295, 23, 98, 185, 24, 129, + 117, 44, 113, 118, 425, 45, 372, 214, 215, 26, + 194, 195, 196, 423, 474, 452, 453, 454, 496, 650, + 618, 589, 551, 586, 607, 630, 660, 610, 632, 661, + 201, 121, 503, 122, 27, 28, 29, 30, 236, 238, + 243, 137, 500, 330, 132, 133, 233, 377, 378, 241, + 242, 100, 183, 101, 103, 184, 439, 440, 488, 212, + 333, 389, 390, 391, 366, 247, 367, 538, 539, 540, + 560, 581, 308, 582, 443, 541, 542, 613, 559, 651, + 641, 671, 684, 642, 543, 544, 640, 545, 572, 598, + 656, 657, 658, 682, 279, 280, 296, 409, 297, 298, + 299, 204, 205, 300, 301, 435, 95 }; -static const short yypact[] = { 93, - 154, 1950, 1950, 173,-32768,-32768,-32768,-32768, 130, 130, - 130, 143, 166, 215,-32768,-32768,-32768,-32768,-32768, 554, - 87, 336, 318,-32768, 130,-32768, 80, 83, 88,-32768, - 1950,-32768,-32768,-32768, 130, 130, 130, 1812, 1746, 228, --32768,-32768, 554, 111,-32768, 130, 387,-32768, 327,-32768, - 554, 318,-32768, 130,-32768,-32768, 858,-32768,-32768,-32768, --32768, 257,-32768, 265,-32768, 283,-32768,-32768,-32768,-32768, --32768,-32768, 1812, 1812, 290,-32768,-32768,-32768, 1812,-32768, --32768, 567,-32768,-32768, 1812, 136, 235,-32768, 1839, 1866, --32768, 2137, 1030, 326, 1812,-32768, 292, 20,-32768, 296, - 1483, 975, 428, 29,-32768, 327, 554,-32768, 323,-32768, - 1288, 808, 130,-32768,-32768, 327, 114,-32768, 130, 626, - 243, 253, 151, 1234, 858,-32768,-32768,-32768,-32768, 130, --32768, 332, 885,-32768, 334,-32768, 436,-32768,-32768,-32768, --32768,-32768, 328, 340, 347, 342,-32768, 359, 1812, 567, --32768, 567,-32768, 1812, 1812, 407,-32768,-32768, 1812, 1812, - 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, --32768,-32768, 290, 290, 1812, 1812,-32768,-32768,-32768,-32768, - 20, 1301,-32768, 321, 1036,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 92,-32768, 389,-32768, 253,-32768,-32768, - 430, 253, 450,-32768, 963,-32768, 380, 395,-32768, 728, - 49,-32768,-32768, 438, 130, 207, 141,-32768, 327, 327, --32768, 808, 130,-32768, 1354,-32768,-32768, 808, 130,-32768, --32768, 376, 408, 1954, 2122,-32768, 130,-32768,-32768, 455, - 412,-32768, 436,-32768,-32768,-32768, 421, 442, 1635,-32768, - 2137, 447, 448, 2137, 2137, 1812, 492, 1812, 1812, 1605, - 2159, 1783, 463, 1237, 973, 973, 310, 310,-32768,-32768, --32768,-32768,-32768, 458, 235, 452, 48, 374,-32768, 1558, --32768, 461,-32768, 1367,-32768, 1036, 465, 975, 1893, 57, - 469,-32768,-32768,-32768, 1452,-32768, 473, 159,-32768,-32768, - 102,-32768,-32768, 52,-32768,-32768,-32768, 1533,-32768, 243, --32768,-32768, 243,-32768, 495,-32768,-32768, 471,-32768,-32768, --32768,-32768,-32768,-32768, 478,-32768, 486, 1812, 290, 488, - 412,-32768, 533,-32768,-32768,-32768,-32768,-32768, 529, 1812, - 2097, 2149,-32768,-32768, 321,-32768,-32768,-32768,-32768,-32768, - 494,-32768,-32768, 104, 506,-32768,-32768, 348, 269,-32768, --32768, 638,-32768, 584, 347,-32768,-32768,-32768, 512, 192, --32768, 1223, 52,-32768,-32768, 52, 509,-32768,-32768, 509, - 130, 130, 2137,-32768, 130, 514, 290, 746, 533,-32768, - 1043,-32768, 1974,-32768,-32768, 1812,-32768,-32768,-32768, 269, - 130, 149, 203, 130,-32768, 203, 130, 1558,-32768,-32768, --32768,-32768,-32768, 327,-32768, 554,-32768, 785,-32768,-32768, - 2137,-32768,-32768, 1223,-32768,-32768, 294,-32768,-32768,-32768, - 130,-32768, 161, 393, 666, 515, 516, 826,-32768,-32768, --32768,-32768,-32768, 559, 290, 1812,-32768, 564, 2137, 525, - 524,-32768, 1812, 153, 402, 892,-32768, 1420,-32768,-32768, --32768, 487,-32768,-32768,-32768, 171, 179, 50, 785,-32768, --32768, 1043,-32768,-32768, 1812, 91,-32768,-32768, 290,-32768, --32768,-32768,-32768, 528,-32768,-32768,-32768,-32768, 1501, 573, - 1998, 1043,-32768,-32768, 1103,-32768, 1974,-32768, 424,-32768, - 424,-32768,-32768, 531,-32768,-32768, 534, 2047, 1812,-32768, --32768,-32768, 1581, 580, 560,-32768,-32768, 561, 565, 1812, - 590, 557, 558, 1759, 144, 630,-32768, 603, 578,-32768, - 581, 1982,-32768, 641, 906, 56,-32768,-32768,-32768,-32768, --32768, 1692,-32768, 1812, 623, 583, 1163,-32768, 781,-32768, --32768,-32768, 2047, 1812, 605,-32768, 1812, 1812, 2070,-32768, --32768,-32768,-32768, 588, 1812, 599,-32768, 643,-32768,-32768, --32768, 327,-32768, 554, 986,-32768,-32768,-32768,-32768, 1812, --32768, 1163, 2021,-32768, 1163,-32768,-32768,-32768, 606, 1812, - 687,-32768, 422, 628, 634, 1812,-32768,-32768, 636,-32768, - 1812, 223,-32768, 349, 234,-32768, 1001,-32768,-32768, 1581, - 635,-32768, 681, 1163,-32768,-32768, 642,-32768,-32768,-32768, --32768, 2119,-32768, 36,-32768, 808,-32768, 808,-32768,-32768, --32768, 645,-32768,-32768,-32768,-32768, 1812,-32768,-32768, 710, - 646,-32768,-32768,-32768,-32768, 1163,-32768,-32768, 647,-32768, - 667, 43, 650,-32768,-32768, 347, 347,-32768,-32768,-32768, - 1812, 710, 651, 710,-32768,-32768, 1812, 660, 61,-32768, --32768, 661,-32768, 450, 662,-32768, 326, 168,-32768,-32768, - 701, 450,-32768,-32768, 326, 727, 782,-32768 +static const short yypact[] = { 121, + 134, 2009, 2009, 300,-32768,-32768,-32768,-32768, 84, 84, + 84, 81, 92, 95,-32768,-32768,-32768,-32768,-32768, 293, + 102, 2037, 258,-32768, 84,-32768, 78, 80, 88,-32768, + 2009,-32768,-32768,-32768, 84, 84, 84, 1871, 1805, 152, +-32768,-32768, 293, 20,-32768, 84, 321,-32768, 138,-32768, + 293, 258,-32768, 84,-32768,-32768, 1084,-32768,-32768,-32768, +-32768, 132,-32768, 149,-32768, 162,-32768,-32768,-32768,-32768, +-32768,-32768, 1871, 1871, 433,-32768,-32768,-32768, 1871,-32768, +-32768, 1045,-32768,-32768, 1871, 158, 170,-32768, 1898, 1925, +-32768, 2179, 880, 253, 1871,-32768, 212, 223,-32768, 218, + 482, 1134, 197, 226,-32768, 138, 293,-32768, 244,-32768, + 1347, 383, 84,-32768,-32768, 138, 140,-32768, 84, 848, + 390, 407, 210, 1293, 1084,-32768,-32768,-32768,-32768, 84, +-32768, 228, 757,-32768, 238,-32768, 441,-32768,-32768,-32768, +-32768,-32768, 245, 248, 247, 256,-32768, 260, 1871, 1045, +-32768, 1045,-32768, 1871, 1871, 318,-32768,-32768, 1871, 1871, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, +-32768,-32768, 433, 433, 1871, 1871,-32768,-32768,-32768,-32768, + 223, 1360,-32768, 411, 565,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 49,-32768, 312,-32768, 407,-32768,-32768, + 359, 407, 403,-32768, 954,-32768, 335, 364,-32768, 179, + 66,-32768,-32768, 424, 84, 477, 299,-32768, 138, 138, +-32768, 383, 84,-32768, 1413,-32768,-32768, 383, 84,-32768, +-32768,-32768, 370, 332, 2146,-32768, 84,-32768,-32768, 451, + 373,-32768, 441,-32768,-32768,-32768, 414, 428, 1694,-32768, + 2179, 435, 437, 2179, 2179, 1871, 462, 1871, 1871, 1664, + 637, 1842, 1297, 1451, 1126, 1126, 375, 375,-32768,-32768, +-32768,-32768,-32768, 438, 170, 419, 515, 355,-32768, 1116, +-32768, 443,-32768, 1426,-32768, 565, 439, 1134, 1952, 79, + 452,-32768,-32768,-32768, 1592,-32768, 453, 273,-32768,-32768, + 55,-32768,-32768, 71,-32768,-32768,-32768, 1672,-32768, 390, +-32768,-32768, 390,-32768, 494,-32768,-32768, 466,-32768,-32768, +-32768,-32768,-32768,-32768, 473,-32768, 475, 1871, 433, 480, + 373,-32768, 523,-32768,-32768,-32768,-32768,-32768, 524, 1871, + 564, 2060,-32768,-32768, 411,-32768,-32768,-32768,-32768,-32768, + 485,-32768,-32768, 164, 487,-32768,-32768, 251, 398,-32768, +-32768, 649,-32768, 566, 247,-32768,-32768,-32768, 506, 1619, +-32768, 1282, 71,-32768,-32768, 71, 503,-32768,-32768, 503, +-32768, 84, 84, 2179,-32768, 84, 507, 433, 697, 523, +-32768, 1102,-32768, 2195,-32768,-32768, 1871,-32768,-32768,-32768, + 398, 84, 166, 230, 84,-32768, 230, 84, 1116,-32768, +-32768,-32768,-32768,-32768, 138,-32768, 293,-32768, 1194,-32768, +-32768, 2179,-32768,-32768, 1282,-32768,-32768, 426, 426,-32768, +-32768,-32768, 84,-32768, 284, 397, 617, 510, 511, 788, +-32768,-32768,-32768,-32768,-32768, 579, 433, 1871,-32768, 581, + 2179, 571, 577,-32768, 1871, 233, 209, 178,-32768, 1479, +-32768,-32768,-32768, 413,-32768,-32768,-32768, 292, 295, 347, + 1194,-32768,-32768, 1102,-32768,-32768, 1871,-32768, 69, 65, +-32768,-32768, 433,-32768,-32768,-32768,-32768, 574,-32768,-32768, +-32768,-32768, 1560, 628, 2048, 1102,-32768,-32768, 1162,-32768, + 2195,-32768, 418,-32768, 418,-32768,-32768, 585,-32768,-32768, + 591, 2143, 1871,-32768,-32768,-32768, 1640, 632, 614,-32768, +-32768, 615, 616, 1871, 640, 630, 636, 1818, 114, 685, +-32768, 655, 652,-32768, 657, 2041,-32768, 716, 893, 74, +-32768,-32768,-32768,-32768,-32768, 1751,-32768, 1871, 699, 660, + 1222,-32768, 514,-32768,-32768,-32768, 2143, 1871, 680,-32768, + 1871, 1871, 1504,-32768,-32768,-32768,-32768, 664, 1871, 666, +-32768, 689,-32768,-32768,-32768, 138,-32768, 293, 986,-32768, +-32768,-32768,-32768, 1871,-32768, 1222, 2093,-32768, 1222,-32768, +-32768,-32768, 668, 1871, 732,-32768, 831, 673, 677, 1871, +-32768,-32768, 678,-32768, 1871, 327,-32768, 489, 357,-32768, + 706,-32768,-32768, 1640, 681,-32768, 718, 1222,-32768,-32768, + 683,-32768,-32768,-32768,-32768, 2161,-32768, 39,-32768, 383, +-32768, 383,-32768,-32768,-32768, 690,-32768,-32768,-32768,-32768, + 1871,-32768,-32768, 753, 691,-32768,-32768,-32768,-32768, 1222, +-32768,-32768, 696,-32768, 719, 56, 694,-32768,-32768, 247, + 247,-32768,-32768,-32768, 1871, 753, 703, 753,-32768,-32768, + 1871, 705, 119,-32768,-32768, 708,-32768, 403, 709,-32768, + 253, 236,-32768,-32768, 713, 403,-32768,-32768, 253, 782, + 793,-32768 }; static const short yypgoto[] = {-32768, --32768,-32768,-32768, 73,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, -24,-32768, -38, 498, -123, 432,-32768,-32768, - -10,-32768, 116,-32768,-32768,-32768,-32768,-32768, 224,-32768, - -178, -204, 572,-32768,-32768, 357,-32768, 27, -93, 260, - 8, 750,-32768, 390, 13, 1, -72, 616, 19, -151, - -386, -49, -101, -63,-32768,-32768,-32768, -48, 11, 105, --32768, 518,-32768, 384,-32768, -376,-32768, -424,-32768,-32768, +-32768,-32768,-32768, 77,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, -24,-32768, -38, 505, -118, 393,-32768,-32768, + -43,-32768, 432,-32768,-32768,-32768,-32768,-32768, 234,-32768, + -180, -179, 587,-32768,-32768, 362,-32768, -2, -17, 255, + 8, 749,-32768, 400, 15, 12, -70, 635, 23, -141, + -361, -35, -99, -50,-32768,-32768,-32768, -133, 4, 33, +-32768, 528,-32768, 395,-32768, -374,-32768, -428,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -43, -44, -311, -13,-32768,-32768,-32768, -28,-32768,-32768, --32768,-32768,-32768, 485, -23,-32768, 582, 496, 392, 589, - 504, -26, -69, -68, -98, -145, 388,-32768,-32768, -143, --32768,-32768,-32768, 449, -230,-32768, -118,-32768,-32768,-32768, --32768, -100, -334, -454, 401,-32768, 232,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 244,-32768, -542, - 194,-32768, 197,-32768, 575,-32768, -234,-32768,-32768,-32768, - 500, -189,-32768,-32768,-32768,-32768, 6 + -37, -42, -299, -18,-32768,-32768,-32768, -19,-32768,-32768, +-32768,-32768,-32768, 495, -3,-32768, 590, 504, 402, 589, + 501, 53, -61, -68, -87, -149, 401,-32768,-32768, -160, +-32768,-32768,-32768, 450, -264,-32768, -123,-32768,-32768,-32768, +-32768, -85, -315, -441, 404,-32768, 219,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 227,-32768, -555, + 180,-32768, 177,-32768, 567,-32768, -232,-32768,-32768,-32768, + 486, -183,-32768,-32768,-32768,-32768, 6 }; -#define YYLAST 2211 +#define YYLAST 2247 static const short yytable[] = { 86, - 97, 123, 62, 64, 66, 120, 47, 31, 31, 21, - 21, 213, 25, 25, 22, 22, 216, 314, 223, 35, - 36, 37, 52, 319, 290, 220, 248, 466, 131, 104, - 46, 189, 54, 285, 316, 278, 31, 124, 21, 135, - 53, 25, 200, 22, 427, 347, 402, 49, 51, -102, - 141, 275, 365, 46, 197, 146, 579, 99, 306, 119, - 232, 46, 139, 140, 234, 177, 305, 130, 142, 180, - 548, 217, 207, 640, 147, 32, 109, 193, 181, 182, - 662, 277, 59, 60, 178, 59, 60, 110, 111, 198, - 59, 60, -1, 202, 649, 507, 131, 180, 674, 223, - 99, 591, 104, 67, 199, 489, 181, 182, 110, 111, - 213, 641, 240, 46, 580, 546, 119, 46, 663, 188, - 14, 213, 587, 252, 672, 253, 119, 213, 509, 58, - -102, 345, 356, 246, 285, 130, 675, 276, 235, 58, - 58, 58, 423, 282, 501, 425, 59, 60, 272, 273, - 58, 99, 513, -2, 629, 312, 131, 612, 58, 14, - 615, 61, 232, 48, 63, 275, 234, 287, 99, 65, - 99, 310, 288, 465, 315, 313, 644, 363, 14, 395, - 320, 648, 364, 650, 396, 602, 318, 105, 326, 634, - 218, 106, 659, 565, 219, 5, 55, 7, 56, 224, - 225, 38, 198, 9, 10, 11, 202, 457, 458, 41, - 114, 148, 325, 197, 327, 25, 311, 339, 240, 13, - 379, 658, 379, 58, 39, 683, 119, 226, 498, 119, - 119, 106, 14, 149, 58, 361, 14, 478, 336, 362, - 235, 479, 610, 681, 439, 351, 412, 505, 682, 33, - 34, 219, 188, 99, 278, 506, 115, 131, 321, 106, - 323, 110, 111, 193, 251, 116, 471, 502, 415, 254, - 255, 41, 454, 40, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 102, 440, 404, 407, - 25, 481, 59, 60, 486, 52, 41, 114, 14, 625, - 455, 224, 225, 219, 240, 54, 462, 456, 370, 345, - 627, 110, 111, 53, 106, 149, 345, 471, 405, 58, - 358, 359, 55, 14, 56, 379, 371, 400, 182, 41, - 114, 475, 428, 429, 177, 440, 430, 487, 134, 5, - 6, 7, 8, 115, 403, 406, 136, 9, 10, 11, - 41, 398, 116, 459, 460, 461, 14, 463, 464, 168, - 169, 170, 432, 13, 138, 14, 467, 179, 401, 46, - 533, 186, 25, 341, 342, 109, 115, 14, -162, 283, - 284, 203, 477, 476, -162, 116, 104, 108, 417, 131, - -27, -27, -27, -27, 533, 414, 416, 399, -27, -27, - -27, 549, 468, 244, 41, 398, 400, 182, 197, 229, - 46, 237, 50, 109, -27, 245, -162, 249, 25, 504, - 490, 642, -162, 643, 119, -162, 46, 510, 246, -162, - 41, 14, 283, 284, 197, 250, 239, 119, 59, 60, - 131, 198, 202, 383, -82, 110, 111, 289, 198, 346, - 529, 399, -265, -265, 511, 393, 109, 14, 70, 552, - 400, 182, 302, -162, 528, 401, 401, -162, -27, 303, - 480, 303, 46, 309, 529, 171, 172, 42, 173, 174, - 175, 176, 457, 458, 322, 564, 43, 421, 528, 41, - 328, 533, 329, 197, 542, 677, 531, 619, 332, 25, - 566, 532, 223, 685, 588, 58, 449, 163, 164, 165, - 166, 167, 168, 169, 170, 589, 14, 334, 592, 595, - 151, 153, 337, 338, 605, 213, 599, 213, 604, 340, - 374, 178, 52, 343, 344, 198, 405, 665, 666, 421, - 352, 611, 54, 348, 357, 400, 182, 542, 360, 531, - 53, 617, 25, 375, 532, 381, 41, 572, 574, 401, - 607, 491, 624, 382, 387, 385, 392, 143, 497, 68, - 5, 529, 7, 96, 69, 70, 394, 71, 9, 10, - 11, 397, 119, 14, 46, 528, 411, 449, 413, 426, - 508, 431, -301, 485, 13, 72, -31, 15, 592, 73, - 74, 493, 494, 42, 495, 512, 75, 449, 543, 76, - 449, 551, 43, 550, 77, 78, 79, -32, 554, 557, - 80, 81, 668, 558, 553, 82, 221, 560, 592, -19, - -19, -19, -19, 561, 562, 559, 567, -19, -19, -19, - 569, 5, 6, 7, 8, 83, 84, 409, -91, 9, - 10, 11, 109, -19, 570, -162, 575, 571, 584, 583, - 586, -162, 449, 590, 598, 13, 208, 14, -114, -114, - -114, -114, -114, -114, -114, 600, -114, -114, -114, -114, - -114, 616, -114, -114, -114, -114, -114, -114, -114, -114, - -114, -114, -114, -114, -114, -114, -114, 449, -114, -114, - 449, 601, -162, 618, 620, -114, -162, -19, -114, 621, - 632, 622, 623, -114, -114, -114, 633, 635, 651, -114, - -114, 645, 655, 660, -114, 661, 687, 670, 208, 449, - 664, -105, -105, -105, -105, 673, 676, -105, 679, -105, - -105, -105, -114, -114, -114, -114, 434, -114, -322, -322, - -322, -322, -322, -322, -322, -105, -322, -322, -322, -322, - -322, 449, -322, -322, -322, -322, -322, -322, -322, -322, - -322, -322, -322, -322, -322, -322, -322, 684, -322, -322, - 593, 688, 307, 41, 398, -322, 355, 197, -322, 470, - 127, 128, 482, -322, -322, -322, 9, 10, 11, -322, - -322, 581, 125, 286, -322, 353, 469, 473, 208, -105, - 14, -322, -322, -322, -322, 386, 324, 474, 380, -322, - -322, -322, -322, 483, -322, -322, 208, -322, -322, -322, - 500, 331, 384, -322, -322, -322, -322, 442, 488, 43, - -322, 630, -322, -322, -322, -322, -322, -322, -322, -322, - -322, -322, -322, 631, -322, 669, -322, 349, -322, -322, - 671, 410, 126, 127, 128, -322, 0, 0, -322, 9, - 10, 11, 0, -322, -322, -322, 0, 0, 0, -322, - -322, 0, 0, 0, -322, 230, 0, 14, 5, -101, - 7, 96, 0, 0, 41, 398, 9, 10, 11, 0, - 0, 0, -322, -297, -322, -322, 576, -322, -322, -322, - 0, 0, 13, -322, -322, 15, -322, 0, 0, 0, - -322, 14, -322, -322, -322, -322, -322, -322, -322, -322, - -322, -322, -322, 0, -322, 0, -322, 0, -322, -322, - 0, 500, 0, 0, 0, -322, 0, 0, -322, 0, - 43, 0, 0, -322, -322, -322, 0, 0, 0, -322, - -322, 231, -259, 291, -322, 292, 5, 6, 7, 8, - 0, 0, 293, 0, 9, 10, 11, 59, 60, 190, - 191, 192, -322, 0, -322, -322, 608, -322, -332, -332, - 13, 0, 14, -332, -332, 0, -332, 0, 0, 0, + 97, 47, 62, 64, 66, 25, 25, 31, 31, 21, + 21, 120, 35, 36, 37, 123, 22, 22, 49, 51, + 223, 248, 290, 46, 104, 54, 213, 216, 107, 139, + 140, 278, 124, 52, 25, 142, 31, 131, 21, 189, + 316, 147, 314, 285, 53, 22, 46, 347, 319, 305, + 141, 178, 119, 468, 46, 200, 275, 58, 403, 135, + 130, 99, 232, 428, 234, 429, -102, 58, 58, 58, + 552, 365, 207, 217, 583, 306, 644, 193, 58, 32, + 59, 60, 59, 60, 198, 653, 58, 177, 202, 315, + 59, 60, 277, 666, 14, 320, 105, 104, 14, 511, + 106, 223, 513, 326, 99, 131, 46, 67, 424, 119, + 46, 426, 240, 14, 645, 676, 59, 60, 595, 119, + -1, 550, 591, 188, 287, 213, 493, 345, 130, 288, + 363, 667, 584, -2, 146, 364, 213, 276, 235, 38, + 41, 114, 213, 282, 285, -171, -171, -102, 272, 273, + 39, 58, 246, 40, 356, 99, 678, 616, 505, 61, + 619, 63, 58, 569, 232, 131, 234, 14, 312, 65, + 275, 633, 99, 310, 99, 517, 467, 313, 48, 208, + 41, 399, -105, -105, -105, -105, 318, 115, -105, 638, + -105, -105, -105, 648, 679, 14, 116, 198, 652, 41, + 654, 202, 252, 197, 253, 336, -105, 14, 25, 663, + 102, 41, 399, 134, 606, 197, 218, 339, 240, 119, + 219, 662, 119, 119, 459, 460, 14, 504, 441, 321, + 136, 323, 325, 148, 327, 379, 43, 381, 14, 396, + 235, 413, 687, 138, 397, 351, 42, 58, 430, 431, + 149, 278, 432, 41, 399, 43, 188, 99, 400, 14, + -105, 177, 55, 193, 56, 614, 131, 401, 182, 461, + 462, 463, 180, 465, 466, 506, 485, 473, 456, 490, + 14, 181, 182, 25, 110, 111, 226, 179, 110, 111, + 106, 358, 359, 186, 478, 41, 405, 408, 54, 481, + 400, 199, 203, 442, 240, 229, 52, 345, 502, 401, + 182, 685, 457, 149, 345, 237, 686, 53, 464, 370, + 244, 108, 14, 245, -27, -27, -27, -27, 246, 473, + 371, 249, -27, -27, -27, 5, 250, 7, 187, 404, + 407, 381, 42, 9, 10, 11, 514, 109, -27, 361, + -162, 43, 442, 362, 491, -82, -162, 224, 225, 13, + 482, 402, 46, 434, 483, 25, 415, 417, 509, 537, + 289, 510, 219, 109, 311, 106, 33, 34, 556, 110, + 111, 469, 104, 208, 458, 109, -322, -322, -322, -322, + 480, 480, 418, 537, -322, -322, -322, -162, 470, 131, + 41, -162, -27, 629, 46, 110, 111, 219, -267, -267, + -322, 70, 25, 283, 284, 41, 553, 302, 119, 197, + 46, 508, 494, 592, 168, 169, 170, 14, 41, 114, + 346, 479, 119, 631, 58, 59, 60, 106, 198, 202, + 303, 239, 14, 59, 60, 198, 322, 406, 224, 225, + 646, 131, 647, 329, 533, 14, 401, 182, 515, 309, + 402, 402, 406, 477, -101, 110, 111, 46, 532, 283, + 284, 401, 182, 303, 484, 115, 459, 460, 533, 41, + 114, 151, 153, 197, 116, 5, 328, 7, 187, 568, + 537, 332, 532, 9, 10, 11, 25, 681, 546, 340, + 535, 344, 178, 334, 570, 689, 14, 536, 223, 13, + 337, 58, 338, 343, 352, 109, 41, 399, -162, 593, + 197, 197, 596, 599, -162, 348, 115, 357, 360, 374, + 603, 180, 576, 578, 198, 116, 669, 670, 608, 54, + 181, 182, 609, 14, 213, 615, 213, 52, 375, 25, + 382, 546, 383, 535, 388, 621, 402, 386, 53, 611, + 536, 393, 398, 504, 180, -162, 628, 395, 412, -162, + 127, 128, 43, 181, 182, 533, 9, 10, 11, 119, + 251, 46, 414, 427, 433, 254, 255, -301, 489, 532, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 596, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, -31, 208, 497, -114, + -114, -114, -114, -114, -114, -114, 672, -114, -114, -114, + -114, -114, 596, -114, -114, -114, -114, -114, -114, -114, + -114, -114, -114, -114, -114, -114, -114, -114, 498, -114, + -114, 516, 5, 6, 7, 8, -114, 499, 410, -114, + 9, 10, 11, 547, -114, -114, -114, 554, 555, -32, + -114, -114, 558, 561, 562, -114, 13, 564, 14, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 341, + 342, 571, 573, -114, -114, -114, -114, 436, -114, -322, + -322, -322, -322, -322, -322, -322, 565, -322, -322, -322, + -322, -322, 566, -322, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, -322, -322, -322, 574, -322, + -322, 579, 109, 575, 588, -162, -322, 590, 594, -322, + 602, -162, 604, 620, -322, -322, -322, 605, 622, 624, + -322, -322, 625, 637, 627, -322, 636, 230, 639, 384, + 5, 655, 7, 96, 110, 111, 649, 659, 9, 10, + 11, 394, 664, -322, 668, -322, -322, 665, -322, 674, + 677, 691, -162, 680, 13, 683, -162, 15, 208, 688, + -322, -322, 692, 355, 597, -322, -322, 307, -322, 486, + 585, 125, -322, 422, -322, -322, -322, -322, -322, -322, + -322, -322, -322, -322, -322, 353, -322, 471, -322, 475, + -322, -322, 286, 451, 324, 387, 380, -322, 476, 385, + -322, 331, 634, 231, -259, -322, -322, -322, 487, 444, + 635, -322, -322, 492, 675, 673, -322, 411, 221, 349, + 0, -19, -19, -19, -19, 0, 422, 0, 0, -19, + -19, -19, 0, 0, -322, -297, -322, -322, 0, -322, + 0, 0, 0, 0, 109, -19, 0, -162, 0, 495, + 0, 0, 0, -162, 171, 172, 501, 173, 174, 175, + 176, 0, 0, 580, 0, -322, -322, 0, 0, 0, + -322, -322, 0, -322, 0, 451, 623, -322, 512, -322, + -322, -322, -322, -322, -322, -322, -322, -322, -322, -322, + 0, -322, 0, -322, -162, -322, -322, 451, -162, -19, + 451, 0, -322, 171, 172, -322, 173, 174, 175, 176, + -322, -322, -322, 0, 557, 0, -322, -322, 0, 0, + 0, -322, 0, 0, 291, 563, 292, 5, 6, 7, + 8, 0, 0, 293, 0, 9, 10, 11, 0, -322, + 0, -322, -322, 0, -322, 0, 0, 0, 0, 587, + 0, 13, 451, 14, 0, 0, 612, 0, -332, -332, + 0, 0, 0, -332, -332, 0, -332, 0, 0, 0, -332, 0, -332, -332, -332, -332, -332, -332, -332, -332, - -332, -332, -332, 0, -332, 0, -332, 0, -332, -332, - 166, 167, 168, 169, 170, -332, 0, 109, -332, 0, - -162, 0, 0, -332, -332, -332, -162, 0, -382, -332, - -332, 127, 128, 443, -332, 444, 60, 9, 10, 11, - 69, 70, 0, 71, 0, 0, 0, 0, 0, 110, - 111, 0, -332, 0, -332, -332, 0, -332, 0, 0, - 0, 72, 0, 15, 0, 73, 74, -162, 0, 0, - 0, -162, 75, 171, 172, 76, 173, 174, 175, 176, - 77, 78, 79, 0, 0, 0, 80, 81, 0, 0, - 445, 82, 446, 443, 0, 444, 60, 0, 0, 0, - 69, 70, 0, 71, 0, 0, 0, 0, 0, 0, - -190, 83, 84, 0, 447, 0, 0, 0, 0, 0, - 0, 72, 0, 15, 0, 73, 74, 0, 0, 0, - 0, 0, 75, 0, 0, 76, 0, 0, 0, 0, - 77, 78, 79, 0, 0, 0, 80, 81, 0, 0, - 445, 82, 446, 443, 0, 444, 60, 0, 0, 0, - 69, 70, 0, 71, 0, 0, 0, 0, 0, 0, - -256, 83, 84, 0, 447, 0, 0, 0, 0, 0, - 0, 72, 0, 15, 0, 73, 74, 0, 0, 0, - 0, 0, 75, 0, 0, 76, 0, 0, 0, 0, - 77, 78, 79, 0, 0, 0, 80, 81, 0, 0, - 445, 82, 446, 419, 0, 68, 0, 0, 0, 0, - 69, 70, 0, 71, 227, 0, 0, -23, -23, -23, - -23, 83, 84, 0, 447, -23, -23, -23, 0, 0, - 0, 72, 0, 15, 0, 73, 74, 0, 0, 0, - 109, -23, 75, -162, 0, 76, 0, 0, 0, -162, - 77, 78, 79, 0, 0, 0, 80, 81, 0, 0, - 0, 82, 164, 165, 166, 167, 168, 169, 170, 0, - 68, 0, 110, 111, 0, 69, 70, 0, 71, 0, - 0, 83, 84, 68, 420, 0, 0, 0, 69, 70, - -162, 71, 0, 0, -162, -23, 72, 0, 15, 0, - 73, 74, 0, 0, 0, 0, 0, 75, 0, 72, - 76, 15, 0, 73, 74, 77, 78, 79, 0, 0, - 75, 80, 81, 76, 0, 0, 82, 0, 77, 78, - 79, 0, 0, 0, 80, 81, 68, 0, 0, 82, - 0, 69, 70, 0, 71, 0, 83, 84, 0, 68, - 206, 0, 0, 0, 69, 70, 0, 71, 0, 83, - 84, 0, 72, 281, 15, 0, 73, 74, 0, 0, - 0, 0, 0, 75, 0, 72, 76, 15, 0, 73, - 74, 77, 78, 79, 0, 0, 75, 80, 81, 76, - 0, 0, 82, 0, 77, 78, 79, 0, 0, 0, - 80, 81, 68, 0, 0, 82, 0, 69, 70, 0, - 71, 0, 83, 84, 0, 0, 317, 0, 0, 0, - 0, 0, 0, 0, 0, 83, 84, 0, 72, 350, + -332, -332, -332, 0, -332, 0, -332, 451, -332, -332, + 451, 0, 0, 0, 0, -332, 0, 0, -332, -382, + 0, 626, 0, -332, -332, -332, 0, 0, 0, -332, + -332, 0, 0, 0, -332, 143, 0, 68, 5, 451, + 7, 96, 69, 70, 0, 71, 9, 10, 11, 0, + 0, 0, -332, 0, -332, -332, 0, -332, 0, 0, + 0, 0, 13, 72, 0, 15, 0, 73, 74, 0, + 0, 451, 0, 0, 75, 0, 0, 76, 126, 127, + 128, 0, 77, 78, 79, 9, 10, 11, 80, 81, + 0, 0, 445, 82, 446, 60, 0, 0, 0, 69, + 70, 0, 71, 14, 0, 0, 291, 0, 0, 5, + 6, 7, 8, 83, 84, 293, -91, 9, 10, 11, + 72, 0, 15, 0, 73, 74, 59, 60, 190, 191, + 192, 75, 0, 13, 76, 14, 0, 0, 0, 77, + 78, 79, 0, 0, 0, 80, 81, 0, 0, 447, + 82, 448, 445, 0, 446, 60, 0, 0, 0, 69, + 70, 0, 71, 166, 167, 168, 169, 170, 0, -190, + 83, 84, 0, 449, 0, 0, 0, 0, 0, 0, + 72, -382, 15, 0, 73, 74, 0, 0, 472, 127, + 128, 75, 0, 0, 76, 9, 10, 11, 0, 77, + 78, 79, 0, 0, 0, 80, 81, 0, 0, 447, + 82, 448, 445, 0, 446, 60, 0, 0, 0, 69, + 70, 0, 71, 0, 0, 0, 0, 0, 0, -256, + 83, 84, 0, 449, 0, 0, 0, 0, 0, 0, + 72, 0, 15, 0, 73, 74, 0, 0, 0, 0, + 0, 75, 0, 0, 76, 0, 0, 0, 0, 77, + 78, 79, 0, 0, 0, 80, 81, 0, 0, 447, + 82, 448, 420, 0, 68, 0, 0, 0, 0, 69, + 70, 0, 71, 227, 0, 0, -23, -23, -23, -23, + 83, 84, 0, 449, -23, -23, -23, 0, 0, 0, + 72, 0, 15, 0, 73, 74, 0, 0, 0, 109, + -23, 75, -162, 0, 76, 0, 0, 0, -162, 77, + 78, 79, 0, 0, 0, 80, 81, 0, 0, 0, + 82, 163, 164, 165, 166, 167, 168, 169, 170, 68, + 0, 110, 111, 0, 69, 70, 0, 71, 0, 0, + 83, 84, 68, 421, 0, 0, 0, 69, 70, -162, + 71, 0, 0, -162, -23, 72, 0, 15, 0, 73, + 74, 0, 0, 0, 0, 0, 75, 0, 72, 76, + 15, 0, 73, 74, 77, 78, 79, 0, 0, 75, + 80, 81, 76, 0, 0, 82, 0, 77, 78, 79, + 0, 0, 0, 80, 81, 68, 0, 0, 82, 0, + 69, 70, 0, 71, 0, 83, 84, 0, 68, 206, + 0, 0, 0, 69, 70, 0, 71, 0, 83, 84, + 0, 72, 281, 15, 0, 73, 74, 0, 0, 0, + 0, 0, 75, 0, 72, 76, 15, 0, 73, 74, + 77, 78, 79, 0, 0, 75, 80, 81, 76, 0, + 0, 82, 0, 77, 78, 79, 0, 0, 0, 80, + 81, 68, 0, 0, 82, 0, 69, 70, 0, 71, + 0, 83, 84, 0, 0, 317, 164, 165, 166, 167, + 168, 169, 170, 0, 83, 84, 0, 72, 350, 15, + 0, 73, 74, 600, 0, 0, 0, 0, 75, 0, + 0, 76, 0, 0, 0, 0, 77, 78, 79, 0, + 0, 0, 80, 81, 0, 0, 0, 82, 154, 155, + 156, 601, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 0, 83, 84, 0, + 0, 507, 446, 518, 6, 7, 8, 69, 70, 0, + 71, 9, 10, 11, 519, 0, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 13, 72, 14, 15, 0, 73, 74, 0, 5, 6, 7, 8, 75, 0, 0, 76, 9, 10, 11, 0, 77, 78, 79, 0, 0, 0, 80, 81, 0, 0, 0, 82, 13, - 0, 14, 0, 0, 0, 0, 5, 0, 7, 187, - 0, 0, 0, 0, 9, 10, 11, 0, 83, 84, - 0, 0, 503, 444, 514, 6, 7, 8, 69, 70, - 13, 71, 9, 10, 11, 515, 0, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 13, 72, - 14, 15, 180, 73, 74, 0, 5, 6, 7, 8, - 75, 181, 182, 76, 9, 10, 11, 0, 77, 78, - 79, 0, 0, 0, 80, 81, 0, 0, 291, 82, - 13, 5, 6, 7, 8, 0, 0, 293, 0, 9, - 10, 11, 0, 0, 0, 0, 0, 527, 0, 83, - 84, 0, 246, 444, 60, 13, 0, 14, 69, 70, - 0, 71, 0, 0, 0, 515, 0, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 0, 72, - 0, 15, 0, 73, 74, 0, 0, 0, 0, 0, + 0, 14, 5, 55, 7, 56, 0, 0, 0, 0, + 9, 10, 11, 0, 0, 0, 531, 0, 83, 84, + 0, 246, 446, 60, 0, 0, 13, 69, 70, 0, + 71, 0, 0, 0, 519, 0, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 0, 72, 0, + 15, 0, 73, 74, 0, 5, 6, 7, 8, 75, + 0, 0, 76, 9, 10, 11, 0, 77, 78, 79, + 0, 0, 0, 80, 81, 416, 68, 0, 82, 13, + 0, 69, 70, 0, 71, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 531, 0, 83, 84, + 0, 246, 72, 0, 15, 0, 73, 74, 0, 0, + 0, 0, 0, 75, 0, 0, 76, 0, 0, 0, + 0, 77, 78, 79, 0, 0, 0, 80, 81, 0, + 0, 0, 82, 68, 5, 6, 7, 8, 69, 70, + 0, 71, 9, 10, 11, 0, 0, 0, 0, 0, + 0, 0, 83, 84, 0, 335, 0, 0, 13, 72, + 14, 15, 0, 73, 74, 0, 0, 0, 0, 0, 75, 0, 0, 76, 0, 0, 0, 0, 77, 78, - 79, 0, 0, -382, 80, 81, 0, 68, 0, 82, - 0, 0, 69, 70, 0, 71, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 527, 0, 83, - 84, 0, 246, 72, 0, 15, 0, 73, 74, 0, - 0, 0, 0, 0, 75, 0, 0, 76, 0, 0, - 0, 0, 77, 78, 79, 0, 0, 0, 80, 81, - 0, 0, 0, 82, 68, 5, 6, 7, 8, 69, - 70, 0, 71, 9, 10, 11, 0, 0, 0, 0, - 0, 0, 0, 83, 84, 0, 335, 0, 0, 13, - 72, 14, 15, 0, 73, 74, 0, 0, 0, 0, - 0, 75, 0, 0, 76, 0, 0, 0, 0, 77, - 78, 79, 0, 0, 0, 80, 81, 0, 68, 5, - 82, 7, 96, 69, 70, 0, 71, 9, 10, 11, - 0, 68, 0, 0, 0, 0, 69, 70, 0, 71, - 83, 84, 0, 13, 72, 0, 15, 0, 73, 74, - 0, 0, 0, 0, 0, 75, 0, 72, 76, 15, - 0, 73, 74, 77, 78, 79, 0, 0, 75, 80, - 81, 76, 0, 0, 82, 0, 77, 78, 79, 0, - 0, 0, 80, 81, 68, 0, 0, 82, 0, 69, - 70, 0, 71, 0, 83, 84, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 563, 0, 83, 84, 0, - 72, 68, 15, 0, 73, 74, 69, 70, 0, 71, + 79, 0, 0, 0, 80, 81, 0, 68, 5, 82, + 7, 96, 69, 70, 0, 71, 9, 10, 11, 0, + 68, 0, 0, 0, 0, 69, 70, 0, 71, 83, + 84, 0, 13, 72, 0, 15, 0, 73, 74, 0, + 0, 0, 0, 0, 75, 0, 72, 76, 15, 0, + 73, 74, 77, 78, 79, 0, 0, 75, 80, 81, + 76, 0, 0, 82, 0, 77, 78, 79, 0, 0, + 0, 80, 81, 68, 0, 0, 82, 0, 69, 70, + 0, 71, 0, 83, 84, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 567, 0, 83, 84, 0, 72, + 68, 15, 0, 73, 74, 69, 70, 0, 71, 0, + 75, 0, 0, 76, 0, 0, 0, 0, 77, 78, + 79, 0, 0, 0, 80, 81, 72, 68, 15, 82, + 73, 74, 69, 70, 0, 71, 0, 75, 0, 0, + 76, 0, 0, 0, 0, 77, 78, 79, 0, 83, + 84, 80, 81, 72, 354, 15, 150, 73, 74, 69, + 70, 0, 71, 0, 75, 0, 0, 76, 0, 0, + 0, 0, 77, 78, 79, 0, 83, 84, 80, 81, + 72, 0, 15, 152, 73, 74, 0, 0, 0, 0, 0, 75, 0, 0, 76, 0, 0, 0, 0, 77, - 78, 79, 0, 0, 0, 80, 81, 72, 68, 15, - 82, 73, 74, 69, 70, 0, 71, 0, 75, 0, - 0, 76, 0, 0, 0, 0, 77, 78, 79, 0, - 83, 84, 80, 81, 72, 354, 15, 150, 73, 74, - 69, 70, 0, 71, 0, 75, 0, 0, 76, 0, - 0, 0, 0, 77, 78, 79, 0, 83, 84, 80, - 81, 72, 0, 15, 152, 73, 74, 0, 0, 0, - 0, 0, 75, 0, 0, 76, 0, 0, 0, 0, - 77, 78, 79, 0, 83, 84, 80, 81, 0, 0, - 4, 82, -118, 5, 6, 7, 8, 5, 0, 7, - 187, 9, 10, 11, 0, 9, 10, 11, 0, 0, - 0, 83, 84, 0, 0, 0, 12, 13, 0, 14, - 15, 13, 0, 0, 0, 5, 6, 7, 8, 0, - 0, 0, 0, 9, 10, 11, 0, 0, 0, -118, - 0, 0, 0, 0, 0, 0, 0, 544, -118, 13, - 156, 14, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 16, 0, 0, 0, - -267, -267, 154, 155, 156, 0, 157, 158, 159, 160, + 78, 79, 0, 83, 84, 80, 81, 0, 0, 4, + 82, -118, 5, 6, 7, 8, 0, 0, 0, 0, + 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, + 83, 84, 0, 0, 0, 12, 13, 0, 14, 15, + 5, 6, 7, 8, 5, 6, 7, 8, 9, 10, + 11, 0, 9, 10, 11, 0, 0, 548, -118, 0, + 0, 0, 0, 0, 13, 0, 14, -118, 13, 0, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 154, 155, 156, 16, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 0, 0, 0, 0, 0, 154, 155, 156, 573, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 0, 0, 0, 14, 0, 0, 596, - 545, 154, 155, 156, 0, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 0, - 0, 0, 0, 613, 154, 155, 156, 597, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 230, 0, 0, 5, 0, 7, 96, 0, - 0, 0, 0, 9, 10, 11, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 13, - 0, 0, 15, 154, 155, 156, 639, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 154, 155, 156, 0, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 159, + 169, 170, 0, 50, 0, 0, 0, 577, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 154, 155, 156, + 549, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 0, 230, 0, 0, 5, + 0, 7, 96, 0, 0, 0, 0, 9, 10, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 13, 0, 617, 15, 154, 155, 156, + 0, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 154, 155, 156, 643, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 154, 155, 156, 0, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170 + 170, 156, 0, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170 }; static const short yycheck[] = { 38, - 39, 51, 27, 28, 29, 49, 20, 2, 3, 2, - 3, 112, 2, 3, 2, 3, 115, 222, 120, 9, - 10, 11, 22, 228, 203, 119, 145, 414, 57, 43, - 20, 101, 22, 185, 224, 181, 31, 51, 31, 63, - 22, 31, 106, 31, 379, 280, 358, 21, 22, 1, - 75, 175, 1, 43, 7, 82, 1, 39, 10, 49, - 133, 51, 73, 74, 133, 9, 210, 57, 79, 50, - 495, 116, 111, 38, 85, 3, 27, 102, 59, 60, - 38, 180, 3, 4, 95, 3, 4, 59, 60, 103, - 3, 4, 0, 107, 637, 472, 125, 50, 38, 201, - 82, 556, 116, 31, 76, 440, 59, 60, 59, 60, - 211, 76, 137, 103, 59, 492, 106, 107, 76, 101, - 30, 222, 547, 150, 667, 152, 116, 228, 38, 25, - 82, 277, 76, 82, 286, 125, 76, 176, 133, 35, - 36, 37, 373, 182, 456, 376, 3, 4, 173, 174, - 46, 133, 487, 0, 609, 219, 185, 582, 54, 30, - 585, 82, 235, 77, 82, 289, 235, 76, 150, 82, - 152, 216, 81, 408, 223, 220, 631, 76, 30, 76, - 229, 636, 81, 638, 81, 572, 225, 77, 237, 614, - 77, 81, 647, 50, 81, 4, 5, 6, 7, 59, - 60, 59, 216, 12, 13, 14, 220, 59, 60, 3, - 4, 76, 236, 7, 238, 205, 76, 256, 243, 28, - 321, 646, 323, 119, 59, 680, 216, 77, 76, 219, - 220, 81, 30, 81, 130, 77, 30, 77, 249, 81, - 235, 81, 577, 76, 388, 284, 365, 77, 81, 77, - 78, 81, 234, 235, 400, 77, 50, 286, 232, 81, - 234, 59, 60, 288, 149, 59, 418, 457, 77, 154, - 155, 3, 396, 59, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 59, 388, 358, 359, - 280, 435, 3, 4, 438, 295, 3, 4, 30, 77, - 399, 59, 60, 81, 329, 295, 405, 401, 308, 455, - 77, 59, 60, 295, 81, 81, 462, 469, 50, 215, - 294, 295, 5, 30, 7, 426, 308, 59, 60, 3, - 4, 38, 381, 382, 9, 436, 385, 438, 82, 4, - 5, 6, 7, 50, 358, 359, 82, 12, 13, 14, - 3, 4, 59, 402, 403, 404, 30, 406, 407, 50, - 51, 52, 387, 28, 82, 30, 416, 76, 358, 359, - 489, 76, 362, 258, 259, 27, 50, 30, 30, 59, - 60, 59, 431, 427, 36, 59, 400, 1, 370, 418, - 4, 5, 6, 7, 513, 369, 370, 50, 12, 13, - 14, 500, 416, 76, 3, 4, 59, 60, 7, 78, - 400, 78, 77, 27, 28, 76, 30, 76, 408, 458, - 445, 626, 36, 628, 414, 77, 416, 476, 82, 81, - 3, 30, 59, 60, 7, 77, 1, 427, 3, 4, - 469, 455, 456, 328, 38, 59, 60, 59, 462, 76, - 489, 50, 77, 78, 479, 340, 27, 30, 9, 508, - 59, 60, 83, 77, 489, 455, 456, 81, 82, 77, - 78, 77, 462, 36, 513, 54, 55, 50, 57, 58, - 59, 60, 59, 60, 77, 524, 59, 372, 513, 3, - 36, 610, 81, 7, 489, 674, 489, 76, 78, 489, - 525, 489, 604, 682, 553, 401, 391, 45, 46, 47, - 48, 49, 50, 51, 52, 554, 30, 76, 557, 558, - 89, 90, 76, 76, 574, 626, 565, 628, 572, 38, - 36, 542, 532, 76, 83, 549, 50, 656, 657, 424, - 76, 580, 532, 83, 76, 59, 60, 542, 76, 542, - 532, 590, 542, 83, 542, 78, 3, 531, 532, 549, - 574, 446, 601, 78, 32, 78, 38, 1, 453, 3, - 4, 610, 6, 7, 8, 9, 83, 11, 12, 13, - 14, 76, 572, 30, 574, 610, 3, 472, 77, 81, - 475, 78, 78, 78, 28, 29, 38, 31, 637, 33, - 34, 38, 78, 50, 81, 78, 40, 492, 36, 43, - 495, 78, 59, 83, 48, 49, 50, 38, 59, 59, - 54, 55, 661, 59, 509, 59, 1, 38, 667, 4, - 5, 6, 7, 77, 77, 520, 7, 12, 13, 14, - 38, 4, 5, 6, 7, 79, 80, 10, 82, 12, - 13, 14, 27, 28, 77, 30, 16, 77, 36, 544, - 78, 36, 547, 59, 77, 28, 1, 30, 3, 4, - 5, 6, 7, 8, 9, 77, 11, 12, 13, 14, - 15, 76, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 582, 33, 34, - 585, 59, 77, 17, 77, 40, 81, 82, 43, 76, - 76, 596, 77, 48, 49, 50, 36, 76, 9, 54, - 55, 77, 77, 77, 59, 59, 0, 77, 1, 614, - 81, 4, 5, 6, 7, 76, 76, 10, 77, 12, - 13, 14, 77, 78, 79, 80, 1, 82, 3, 4, - 5, 6, 7, 8, 9, 28, 11, 12, 13, 14, - 15, 646, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 77, 33, 34, - 557, 0, 211, 3, 4, 40, 289, 7, 43, 5, - 6, 7, 436, 48, 49, 50, 12, 13, 14, 54, - 55, 542, 53, 188, 59, 288, 417, 424, 1, 82, - 30, 4, 5, 6, 7, 331, 235, 426, 323, 12, - 13, 14, 77, 436, 79, 80, 1, 82, 3, 4, - 50, 243, 329, 8, 9, 28, 11, 389, 438, 59, - 15, 610, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 610, 29, 662, 31, 283, 33, 34, - 664, 362, 5, 6, 7, 40, -1, -1, 43, 12, - 13, 14, -1, 48, 49, 50, -1, -1, -1, 54, - 55, -1, -1, -1, 59, 1, -1, 30, 4, 82, - 6, 7, -1, -1, 3, 4, 12, 13, 14, -1, - -1, -1, 77, 78, 79, 80, 1, 82, 3, 4, - -1, -1, 28, 8, 9, 31, 11, -1, -1, -1, - 15, 30, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, -1, 29, -1, 31, -1, 33, 34, - -1, 50, -1, -1, -1, 40, -1, -1, 43, -1, - 59, -1, -1, 48, 49, 50, -1, -1, -1, 54, - 55, 77, 78, 1, 59, 3, 4, 5, 6, 7, - -1, -1, 10, -1, 12, 13, 14, 3, 4, 5, - 6, 7, 77, -1, 79, 80, 1, 82, 3, 4, - 28, -1, 30, 8, 9, -1, 11, -1, -1, -1, + 39, 20, 27, 28, 29, 2, 3, 2, 3, 2, + 3, 49, 9, 10, 11, 51, 2, 3, 21, 22, + 120, 145, 203, 20, 43, 22, 112, 115, 46, 73, + 74, 181, 51, 22, 31, 79, 31, 57, 31, 101, + 224, 85, 222, 185, 22, 31, 43, 280, 228, 210, + 75, 95, 49, 415, 51, 106, 175, 25, 358, 63, + 57, 39, 133, 379, 133, 381, 1, 35, 36, 37, + 499, 1, 111, 116, 1, 10, 38, 102, 46, 3, + 3, 4, 3, 4, 103, 641, 54, 9, 107, 223, + 3, 4, 180, 38, 30, 229, 77, 116, 30, 474, + 81, 201, 38, 237, 82, 125, 103, 31, 373, 106, + 107, 376, 137, 30, 76, 671, 3, 4, 560, 116, + 0, 496, 551, 101, 76, 211, 442, 277, 125, 81, + 76, 76, 59, 0, 82, 81, 222, 176, 133, 59, + 3, 4, 228, 182, 286, 77, 78, 82, 173, 174, + 59, 119, 82, 59, 76, 133, 38, 586, 458, 82, + 589, 82, 130, 50, 235, 185, 235, 30, 219, 82, + 289, 613, 150, 216, 152, 491, 409, 220, 77, 1, + 3, 4, 4, 5, 6, 7, 225, 50, 10, 618, + 12, 13, 14, 635, 76, 30, 59, 216, 640, 3, + 642, 220, 150, 7, 152, 249, 28, 30, 205, 651, + 59, 3, 4, 82, 576, 7, 77, 256, 243, 216, + 81, 650, 219, 220, 59, 60, 30, 50, 389, 232, + 82, 234, 236, 76, 238, 321, 59, 323, 30, 76, + 235, 365, 684, 82, 81, 284, 50, 215, 382, 383, + 81, 401, 386, 3, 4, 59, 234, 235, 50, 30, + 82, 9, 5, 288, 7, 581, 286, 59, 60, 403, + 404, 405, 50, 407, 408, 459, 437, 419, 397, 440, + 30, 59, 60, 280, 59, 60, 77, 76, 59, 60, + 81, 294, 295, 76, 428, 3, 358, 359, 295, 433, + 50, 76, 59, 389, 329, 78, 295, 457, 76, 59, + 60, 76, 400, 81, 464, 78, 81, 295, 406, 308, + 76, 1, 30, 76, 4, 5, 6, 7, 82, 471, + 308, 76, 12, 13, 14, 4, 77, 6, 7, 358, + 359, 427, 50, 12, 13, 14, 480, 27, 28, 77, + 30, 59, 438, 81, 440, 38, 36, 59, 60, 28, + 77, 358, 359, 388, 81, 362, 369, 370, 77, 493, + 59, 77, 81, 27, 76, 81, 77, 78, 512, 59, + 60, 417, 401, 1, 402, 27, 4, 5, 6, 7, + 428, 429, 370, 517, 12, 13, 14, 77, 417, 419, + 3, 81, 82, 77, 401, 59, 60, 81, 77, 78, + 28, 9, 409, 59, 60, 3, 504, 83, 415, 7, + 417, 460, 447, 557, 50, 51, 52, 30, 3, 4, + 76, 428, 429, 77, 402, 3, 4, 81, 457, 458, + 77, 1, 30, 3, 4, 464, 77, 50, 59, 60, + 630, 471, 632, 81, 493, 30, 59, 60, 483, 36, + 457, 458, 50, 38, 82, 59, 60, 464, 493, 59, + 60, 59, 60, 77, 78, 50, 59, 60, 517, 3, + 4, 89, 90, 7, 59, 4, 36, 6, 7, 528, + 614, 78, 517, 12, 13, 14, 493, 678, 493, 38, + 493, 83, 546, 76, 529, 686, 30, 493, 608, 28, + 76, 479, 76, 76, 76, 27, 3, 4, 30, 558, + 7, 7, 561, 562, 36, 83, 50, 76, 76, 36, + 569, 50, 535, 536, 553, 59, 660, 661, 576, 536, + 59, 60, 578, 30, 630, 584, 632, 536, 83, 546, + 78, 546, 78, 546, 32, 594, 553, 78, 536, 578, + 546, 38, 76, 50, 50, 77, 605, 83, 3, 81, + 6, 7, 59, 59, 60, 614, 12, 13, 14, 576, + 149, 578, 77, 81, 78, 154, 155, 78, 78, 614, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 641, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 38, 1, 38, 3, + 4, 5, 6, 7, 8, 9, 665, 11, 12, 13, + 14, 15, 671, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 78, 33, + 34, 78, 4, 5, 6, 7, 40, 81, 10, 43, + 12, 13, 14, 36, 48, 49, 50, 83, 78, 38, + 54, 55, 59, 59, 59, 59, 28, 38, 30, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 258, + 259, 7, 38, 77, 78, 79, 80, 1, 82, 3, + 4, 5, 6, 7, 8, 9, 77, 11, 12, 13, + 14, 15, 77, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 77, 33, + 34, 16, 27, 77, 36, 30, 40, 78, 59, 43, + 77, 36, 77, 76, 48, 49, 50, 59, 17, 77, + 54, 55, 76, 36, 77, 59, 76, 1, 76, 328, + 4, 9, 6, 7, 59, 60, 77, 77, 12, 13, + 14, 340, 77, 77, 81, 79, 80, 59, 82, 77, + 76, 0, 77, 76, 28, 77, 81, 31, 1, 77, + 3, 4, 0, 289, 561, 8, 9, 211, 11, 438, + 546, 53, 15, 372, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 288, 29, 418, 31, 425, + 33, 34, 188, 392, 235, 331, 323, 40, 427, 329, + 43, 243, 614, 77, 78, 48, 49, 50, 438, 390, + 614, 54, 55, 440, 668, 666, 59, 362, 1, 283, + -1, 4, 5, 6, 7, -1, 425, -1, -1, 12, + 13, 14, -1, -1, 77, 78, 79, 80, -1, 82, + -1, -1, -1, -1, 27, 28, -1, 30, -1, 448, + -1, -1, -1, 36, 54, 55, 455, 57, 58, 59, + 60, -1, -1, 1, -1, 3, 4, -1, -1, -1, + 8, 9, -1, 11, -1, 474, 76, 15, 477, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + -1, 29, -1, 31, 77, 33, 34, 496, 81, 82, + 499, -1, 40, 54, 55, 43, 57, 58, 59, 60, + 48, 49, 50, -1, 513, -1, 54, 55, -1, -1, + -1, 59, -1, -1, 1, 524, 3, 4, 5, 6, + 7, -1, -1, 10, -1, 12, 13, 14, -1, 77, + -1, 79, 80, -1, 82, -1, -1, -1, -1, 548, + -1, 28, 551, 30, -1, -1, 1, -1, 3, 4, + -1, -1, -1, 8, 9, -1, 11, -1, -1, -1, 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, -1, 29, -1, 31, -1, 33, 34, - 48, 49, 50, 51, 52, 40, -1, 27, 43, -1, - 30, -1, -1, 48, 49, 50, 36, -1, 76, 54, - 55, 6, 7, 1, 59, 3, 4, 12, 13, 14, - 8, 9, -1, 11, -1, -1, -1, -1, -1, 59, - 60, -1, 77, -1, 79, 80, -1, 82, -1, -1, - -1, 29, -1, 31, -1, 33, 34, 77, -1, -1, - -1, 81, 40, 54, 55, 43, 57, 58, 59, 60, - 48, 49, 50, -1, -1, -1, 54, 55, -1, -1, - 58, 59, 60, 1, -1, 3, 4, -1, -1, -1, - 8, 9, -1, 11, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, 82, -1, -1, -1, -1, -1, - -1, 29, -1, 31, -1, 33, 34, -1, -1, -1, - -1, -1, 40, -1, -1, 43, -1, -1, -1, -1, - 48, 49, 50, -1, -1, -1, 54, 55, -1, -1, - 58, 59, 60, 1, -1, 3, 4, -1, -1, -1, - 8, 9, -1, 11, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, 82, -1, -1, -1, -1, -1, - -1, 29, -1, 31, -1, 33, 34, -1, -1, -1, - -1, -1, 40, -1, -1, 43, -1, -1, -1, -1, - 48, 49, 50, -1, -1, -1, 54, 55, -1, -1, - 58, 59, 60, 1, -1, 3, -1, -1, -1, -1, - 8, 9, -1, 11, 1, -1, -1, 4, 5, 6, - 7, 79, 80, -1, 82, 12, 13, 14, -1, -1, - -1, 29, -1, 31, -1, 33, 34, -1, -1, -1, - 27, 28, 40, 30, -1, 43, -1, -1, -1, 36, - 48, 49, 50, -1, -1, -1, 54, 55, -1, -1, - -1, 59, 46, 47, 48, 49, 50, 51, 52, -1, - 3, -1, 59, 60, -1, 8, 9, -1, 11, -1, - -1, 79, 80, 3, 82, -1, -1, -1, 8, 9, - 77, 11, -1, -1, 81, 82, 29, -1, 31, -1, - 33, 34, -1, -1, -1, -1, -1, 40, -1, 29, - 43, 31, -1, 33, 34, 48, 49, 50, -1, -1, - 40, 54, 55, 43, -1, -1, 59, -1, 48, 49, - 50, -1, -1, -1, 54, 55, 3, -1, -1, 59, - -1, 8, 9, -1, 11, -1, 79, 80, -1, 3, - 83, -1, -1, -1, 8, 9, -1, 11, -1, 79, - 80, -1, 29, 83, 31, -1, 33, 34, -1, -1, - -1, -1, -1, 40, -1, 29, 43, 31, -1, 33, - 34, 48, 49, 50, -1, -1, 40, 54, 55, 43, - -1, -1, 59, -1, 48, 49, 50, -1, -1, -1, - 54, 55, 3, -1, -1, 59, -1, 8, 9, -1, - 11, -1, 79, 80, -1, -1, 83, -1, -1, -1, - -1, -1, -1, -1, -1, 79, 80, -1, 29, 83, + 25, 26, 27, -1, 29, -1, 31, 586, 33, 34, + 589, -1, -1, -1, -1, 40, -1, -1, 43, 76, + -1, 600, -1, 48, 49, 50, -1, -1, -1, 54, + 55, -1, -1, -1, 59, 1, -1, 3, 4, 618, + 6, 7, 8, 9, -1, 11, 12, 13, 14, -1, + -1, -1, 77, -1, 79, 80, -1, 82, -1, -1, + -1, -1, 28, 29, -1, 31, -1, 33, 34, -1, + -1, 650, -1, -1, 40, -1, -1, 43, 5, 6, + 7, -1, 48, 49, 50, 12, 13, 14, 54, 55, + -1, -1, 1, 59, 3, 4, -1, -1, -1, 8, + 9, -1, 11, 30, -1, -1, 1, -1, -1, 4, + 5, 6, 7, 79, 80, 10, 82, 12, 13, 14, + 29, -1, 31, -1, 33, 34, 3, 4, 5, 6, + 7, 40, -1, 28, 43, 30, -1, -1, -1, 48, + 49, 50, -1, -1, -1, 54, 55, -1, -1, 58, + 59, 60, 1, -1, 3, 4, -1, -1, -1, 8, + 9, -1, 11, 48, 49, 50, 51, 52, -1, 78, + 79, 80, -1, 82, -1, -1, -1, -1, -1, -1, + 29, 76, 31, -1, 33, 34, -1, -1, 5, 6, + 7, 40, -1, -1, 43, 12, 13, 14, -1, 48, + 49, 50, -1, -1, -1, 54, 55, -1, -1, 58, + 59, 60, 1, -1, 3, 4, -1, -1, -1, 8, + 9, -1, 11, -1, -1, -1, -1, -1, -1, 78, + 79, 80, -1, 82, -1, -1, -1, -1, -1, -1, + 29, -1, 31, -1, 33, 34, -1, -1, -1, -1, + -1, 40, -1, -1, 43, -1, -1, -1, -1, 48, + 49, 50, -1, -1, -1, 54, 55, -1, -1, 58, + 59, 60, 1, -1, 3, -1, -1, -1, -1, 8, + 9, -1, 11, 1, -1, -1, 4, 5, 6, 7, + 79, 80, -1, 82, 12, 13, 14, -1, -1, -1, + 29, -1, 31, -1, 33, 34, -1, -1, -1, 27, + 28, 40, 30, -1, 43, -1, -1, -1, 36, 48, + 49, 50, -1, -1, -1, 54, 55, -1, -1, -1, + 59, 45, 46, 47, 48, 49, 50, 51, 52, 3, + -1, 59, 60, -1, 8, 9, -1, 11, -1, -1, + 79, 80, 3, 82, -1, -1, -1, 8, 9, 77, + 11, -1, -1, 81, 82, 29, -1, 31, -1, 33, + 34, -1, -1, -1, -1, -1, 40, -1, 29, 43, + 31, -1, 33, 34, 48, 49, 50, -1, -1, 40, + 54, 55, 43, -1, -1, 59, -1, 48, 49, 50, + -1, -1, -1, 54, 55, 3, -1, -1, 59, -1, + 8, 9, -1, 11, -1, 79, 80, -1, 3, 83, + -1, -1, -1, 8, 9, -1, 11, -1, 79, 80, + -1, 29, 83, 31, -1, 33, 34, -1, -1, -1, + -1, -1, 40, -1, 29, 43, 31, -1, 33, 34, + 48, 49, 50, -1, -1, 40, 54, 55, 43, -1, + -1, 59, -1, 48, 49, 50, -1, -1, -1, 54, + 55, 3, -1, -1, 59, -1, 8, 9, -1, 11, + -1, 79, 80, -1, -1, 83, 46, 47, 48, 49, + 50, 51, 52, -1, 79, 80, -1, 29, 83, 31, + -1, 33, 34, 10, -1, -1, -1, -1, 40, -1, + -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, + -1, -1, 54, 55, -1, -1, -1, 59, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, -1, 79, 80, -1, + -1, 83, 3, 4, 5, 6, 7, 8, 9, -1, + 11, 12, 13, 14, 15, -1, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, 33, 34, -1, 4, 5, 6, 7, 40, -1, -1, 43, 12, 13, 14, -1, 48, 49, 50, -1, -1, -1, 54, 55, -1, -1, -1, 59, 28, - -1, 30, -1, -1, -1, -1, 4, -1, 6, 7, - -1, -1, -1, -1, 12, 13, 14, -1, 79, 80, - -1, -1, 83, 3, 4, 5, 6, 7, 8, 9, - 28, 11, 12, 13, 14, 15, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 50, 33, 34, -1, 4, 5, 6, 7, - 40, 59, 60, 43, 12, 13, 14, -1, 48, 49, - 50, -1, -1, -1, 54, 55, -1, -1, 1, 59, - 28, 4, 5, 6, 7, -1, -1, 10, -1, 12, - 13, 14, -1, -1, -1, -1, -1, 77, -1, 79, - 80, -1, 82, 3, 4, 28, -1, 30, 8, 9, - -1, 11, -1, -1, -1, 15, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, - -1, 31, -1, 33, 34, -1, -1, -1, -1, -1, + -1, 30, 4, 5, 6, 7, -1, -1, -1, -1, + 12, 13, 14, -1, -1, -1, 77, -1, 79, 80, + -1, 82, 3, 4, -1, -1, 28, 8, 9, -1, + 11, -1, -1, -1, 15, -1, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, -1, 29, -1, + 31, -1, 33, 34, -1, 4, 5, 6, 7, 40, + -1, -1, 43, 12, 13, 14, -1, 48, 49, 50, + -1, -1, -1, 54, 55, 77, 3, -1, 59, 28, + -1, 8, 9, -1, 11, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 77, -1, 79, 80, + -1, 82, 29, -1, 31, -1, 33, 34, -1, -1, + -1, -1, -1, 40, -1, -1, 43, -1, -1, -1, + -1, 48, 49, 50, -1, -1, -1, 54, 55, -1, + -1, -1, 59, 3, 4, 5, 6, 7, 8, 9, + -1, 11, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, 79, 80, -1, 82, -1, -1, 28, 29, + 30, 31, -1, 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, -1, -1, -1, 48, 49, - 50, -1, -1, 76, 54, 55, -1, 3, -1, 59, - -1, -1, 8, 9, -1, 11, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 77, -1, 79, - 80, -1, 82, 29, -1, 31, -1, 33, 34, -1, - -1, -1, -1, -1, 40, -1, -1, 43, -1, -1, - -1, -1, 48, 49, 50, -1, -1, -1, 54, 55, - -1, -1, -1, 59, 3, 4, 5, 6, 7, 8, - 9, -1, 11, 12, 13, 14, -1, -1, -1, -1, - -1, -1, -1, 79, 80, -1, 82, -1, -1, 28, - 29, 30, 31, -1, 33, 34, -1, -1, -1, -1, - -1, 40, -1, -1, 43, -1, -1, -1, -1, 48, - 49, 50, -1, -1, -1, 54, 55, -1, 3, 4, - 59, 6, 7, 8, 9, -1, 11, 12, 13, 14, - -1, 3, -1, -1, -1, -1, 8, 9, -1, 11, - 79, 80, -1, 28, 29, -1, 31, -1, 33, 34, - -1, -1, -1, -1, -1, 40, -1, 29, 43, 31, - -1, 33, 34, 48, 49, 50, -1, -1, 40, 54, - 55, 43, -1, -1, 59, -1, 48, 49, 50, -1, - -1, -1, 54, 55, 3, -1, -1, 59, -1, 8, - 9, -1, 11, -1, 79, 80, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 77, -1, 79, 80, -1, - 29, 3, 31, -1, 33, 34, 8, 9, -1, 11, + 50, -1, -1, -1, 54, 55, -1, 3, 4, 59, + 6, 7, 8, 9, -1, 11, 12, 13, 14, -1, + 3, -1, -1, -1, -1, 8, 9, -1, 11, 79, + 80, -1, 28, 29, -1, 31, -1, 33, 34, -1, + -1, -1, -1, -1, 40, -1, 29, 43, 31, -1, + 33, 34, 48, 49, 50, -1, -1, 40, 54, 55, + 43, -1, -1, 59, -1, 48, 49, 50, -1, -1, + -1, 54, 55, 3, -1, -1, 59, -1, 8, 9, + -1, 11, -1, 79, 80, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 77, -1, 79, 80, -1, 29, + 3, 31, -1, 33, 34, 8, 9, -1, 11, -1, + 40, -1, -1, 43, -1, -1, -1, -1, 48, 49, + 50, -1, -1, -1, 54, 55, 29, 3, 31, 59, + 33, 34, 8, 9, -1, 11, -1, 40, -1, -1, + 43, -1, -1, -1, -1, 48, 49, 50, -1, 79, + 80, 54, 55, 29, 3, 31, 59, 33, 34, 8, + 9, -1, 11, -1, 40, -1, -1, 43, -1, -1, + -1, -1, 48, 49, 50, -1, 79, 80, 54, 55, + 29, -1, 31, 59, 33, 34, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, -1, -1, -1, 48, - 49, 50, -1, -1, -1, 54, 55, 29, 3, 31, - 59, 33, 34, 8, 9, -1, 11, -1, 40, -1, - -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, - 79, 80, 54, 55, 29, 3, 31, 59, 33, 34, - 8, 9, -1, 11, -1, 40, -1, -1, 43, -1, - -1, -1, -1, 48, 49, 50, -1, 79, 80, 54, - 55, 29, -1, 31, 59, 33, 34, -1, -1, -1, - -1, -1, 40, -1, -1, 43, -1, -1, -1, -1, - 48, 49, 50, -1, 79, 80, 54, 55, -1, -1, - 1, 59, 3, 4, 5, 6, 7, 4, -1, 6, - 7, 12, 13, 14, -1, 12, 13, 14, -1, -1, - -1, 79, 80, -1, -1, -1, 27, 28, -1, 30, - 31, 28, -1, -1, -1, 4, 5, 6, 7, -1, - -1, -1, -1, 12, 13, 14, -1, -1, -1, 50, - -1, -1, -1, -1, -1, -1, -1, 10, 59, 28, - 37, 30, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 77, -1, -1, -1, - 77, 78, 35, 36, 37, -1, 39, 40, 41, 42, + 49, 50, -1, 79, 80, 54, 55, -1, -1, 1, + 59, 3, 4, 5, 6, 7, -1, -1, -1, -1, + 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, + 79, 80, -1, -1, -1, 27, 28, -1, 30, 31, + 4, 5, 6, 7, 4, 5, 6, 7, 12, 13, + 14, -1, 12, 13, 14, -1, -1, 10, 50, -1, + -1, -1, -1, -1, 28, -1, 30, 59, 28, -1, + 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 35, 36, 37, 77, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - -1, -1, -1, -1, -1, 35, 36, 37, 77, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, -1, -1, -1, 30, -1, -1, 10, - 83, 35, 36, 37, -1, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, - -1, -1, -1, 83, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 1, -1, -1, 4, -1, 6, 7, -1, - -1, -1, -1, 12, 13, 14, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 28, - -1, -1, 31, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 35, 36, 37, -1, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 41, + 51, 52, -1, 77, -1, -1, -1, 77, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 35, 36, 37, + 83, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, -1, 1, -1, -1, 4, + -1, 6, 7, -1, -1, -1, -1, 12, 13, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 30, 28, -1, 83, 31, 35, 36, 37, + -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52 + 52, 37, -1, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/cygnus/progressive-98r1/share/bison.simple" +#line 3 "/usr/local/share/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -1319,16 +1327,16 @@ int yyparse (void); #endif #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ #ifndef __cplusplus /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (to, from, count) - char *to; +__yy_memcpy (from, to, count) char *from; + char *to; int count; { register char *f = from; @@ -1344,7 +1352,7 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, int count) +__yy_memcpy (char *from, char *to, int count) { register char *f = from; register char *t = to; @@ -1357,7 +1365,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/cygnus/progressive-98r1/share/bison.simple" +#line 192 "/usr/local/share/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -1366,20 +1374,14 @@ __yy_memcpy (char *to, char *from, int count) to the proper pointer type. */ #ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG +#else +#define YYPARSE_PARAM #define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ +#endif int -yyparse(YYPARSE_PARAM_ARG) +yyparse(YYPARSE_PARAM) YYPARSE_PARAM_DECL { register int yystate; @@ -1496,12 +1498,12 @@ yyparse(YYPARSE_PARAM_ARG) if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); #ifdef YYLSP_NEEDED yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -2856,13 +2858,21 @@ case 264: break;} case 265: #line 1378 "c-parse.y" -{ if (pedantic) - pedwarn ("ANSI C forbids member declarations with no members"); - shadow_tag(yyvsp[0].ttype); - yyval.ttype = NULL_TREE; ; +{ + /* Support for unnamed structs or unions as members of + structs or unions (which is [a] useful and [b] supports + MS P-SDK). */ + if (pedantic) + pedwarn ("ANSI C doesn't support unnamed structs/unions"); + yyval.ttype = grokfield(yyvsp[-2].filename, yyvsp[-1].lineno, NULL, current_declspecs, NULL_TREE); + current_declspecs = TREE_VALUE (declspec_stack); + prefix_attributes = TREE_PURPOSE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary (yyvsp[-3].itype); + ; break;} case 266: -#line 1383 "c-parse.y" +#line 1391 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); @@ -2870,140 +2880,140 @@ case 266: resume_momentary (yyvsp[-1].itype); ; break;} case 267: -#line 1389 "c-parse.y" +#line 1397 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids member declarations with no members"); shadow_tag(yyvsp[0].ttype); yyval.ttype = NULL_TREE; ; break;} case 268: -#line 1394 "c-parse.y" +#line 1402 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 269: -#line 1396 "c-parse.y" +#line 1404 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; pedantic = yyvsp[-1].itype; ; break;} case 271: -#line 1403 "c-parse.y" +#line 1411 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 272: -#line 1408 "c-parse.y" +#line 1416 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 273: -#line 1412 "c-parse.y" +#line 1420 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 274: -#line 1415 "c-parse.y" +#line 1423 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 276: -#line 1427 "c-parse.y" +#line 1435 "c-parse.y" { if (yyvsp[-2].ttype == error_mark_node) yyval.ttype = yyvsp[-2].ttype; else yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ; break;} case 277: -#line 1432 "c-parse.y" +#line 1440 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} case 278: -#line 1438 "c-parse.y" +#line 1446 "c-parse.y" { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ; break;} case 279: -#line 1440 "c-parse.y" +#line 1448 "c-parse.y" { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 280: -#line 1445 "c-parse.y" +#line 1453 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 281: -#line 1447 "c-parse.y" +#line 1455 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 282: -#line 1452 "c-parse.y" +#line 1460 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 284: -#line 1458 "c-parse.y" +#line 1466 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 285: -#line 1460 "c-parse.y" +#line 1468 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 286: -#line 1465 "c-parse.y" +#line 1473 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 287: -#line 1467 "c-parse.y" +#line 1475 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 288: -#line 1472 "c-parse.y" +#line 1480 "c-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 289: -#line 1475 "c-parse.y" +#line 1483 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 290: -#line 1477 "c-parse.y" +#line 1485 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 291: -#line 1479 "c-parse.y" +#line 1487 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 292: -#line 1481 "c-parse.y" +#line 1489 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 293: -#line 1483 "c-parse.y" +#line 1491 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 294: -#line 1485 "c-parse.y" +#line 1493 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 295: -#line 1487 "c-parse.y" +#line 1495 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} case 296: -#line 1489 "c-parse.y" +#line 1497 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} case 297: -#line 1500 "c-parse.y" +#line 1508 "c-parse.y" { if (pedantic && yyvsp[0].ends_in_label) pedwarn ("ANSI C forbids label at end of compound statement"); ; break;} case 299: -#line 1509 "c-parse.y" +#line 1517 "c-parse.y" { yyval.ends_in_label = yyvsp[0].ends_in_label; ; break;} case 300: -#line 1511 "c-parse.y" +#line 1519 "c-parse.y" { yyval.ends_in_label = 0; ; break;} case 304: -#line 1523 "c-parse.y" +#line 1531 "c-parse.y" { emit_line_note (input_filename, lineno); pushlevel (0); clear_last_expr (); @@ -3012,12 +3022,12 @@ case 304: ; break;} case 306: -#line 1536 "c-parse.y" +#line 1544 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids label declarations"); ; break;} case 309: -#line 1547 "c-parse.y" +#line 1555 "c-parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -3028,19 +3038,19 @@ case 309: ; break;} case 310: -#line 1561 "c-parse.y" +#line 1569 "c-parse.y" {; break;} case 312: -#line 1565 "c-parse.y" +#line 1573 "c-parse.y" { compstmt_count++; ; break;} case 313: -#line 1568 "c-parse.y" +#line 1576 "c-parse.y" { yyval.ttype = convert (void_type_node, integer_zero_node); ; break;} case 314: -#line 1570 "c-parse.y" +#line 1578 "c-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); yyval.ttype = poplevel (1, 1, 0); @@ -3050,7 +3060,7 @@ case 314: pop_momentary (); ; break;} case 315: -#line 1578 "c-parse.y" +#line 1586 "c-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); yyval.ttype = poplevel (kept_level_p (), 0, 0); @@ -3060,7 +3070,7 @@ case 315: pop_momentary (); ; break;} case 316: -#line 1586 "c-parse.y" +#line 1594 "c-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); yyval.ttype = poplevel (kept_level_p (), 0, 0); @@ -3070,7 +3080,7 @@ case 316: pop_momentary (); ; break;} case 319: -#line 1606 "c-parse.y" +#line 1614 "c-parse.y" { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, compstmt_count); @@ -3080,7 +3090,7 @@ case 319: position_after_white_space (); ; break;} case 320: -#line 1620 "c-parse.y" +#line 1628 "c-parse.y" { stmt_count++; compstmt_count++; emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); @@ -3090,43 +3100,43 @@ case 320: position_after_white_space (); ; break;} case 321: -#line 1628 "c-parse.y" +#line 1636 "c-parse.y" { expand_loop_continue_here (); ; break;} case 322: -#line 1632 "c-parse.y" +#line 1640 "c-parse.y" { yyval.filename = input_filename; ; break;} case 323: -#line 1636 "c-parse.y" +#line 1644 "c-parse.y" { yyval.lineno = lineno; ; break;} case 324: -#line 1641 "c-parse.y" +#line 1649 "c-parse.y" { ; break;} case 325: -#line 1646 "c-parse.y" +#line 1654 "c-parse.y" { ; break;} case 326: -#line 1651 "c-parse.y" +#line 1659 "c-parse.y" { yyval.ends_in_label = yyvsp[0].ends_in_label; ; break;} case 327: -#line 1656 "c-parse.y" +#line 1664 "c-parse.y" { yyval.ends_in_label = 0; ; break;} case 328: -#line 1658 "c-parse.y" +#line 1666 "c-parse.y" { yyval.ends_in_label = 1; ; break;} case 329: -#line 1664 "c-parse.y" +#line 1672 "c-parse.y" { stmt_count++; ; break;} case 331: -#line 1667 "c-parse.y" +#line 1675 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); /* It appears that this should not be done--that a non-lvalue array @@ -3145,19 +3155,19 @@ case 331: clear_momentary (); ; break;} case 332: -#line 1684 "c-parse.y" +#line 1692 "c-parse.y" { c_expand_start_else (); yyvsp[-1].itype = stmt_count; position_after_white_space (); ; break;} case 333: -#line 1688 "c-parse.y" +#line 1696 "c-parse.y" { c_expand_end_cond (); if (extra_warnings && stmt_count == yyvsp[-3].itype) warning ("empty body in an else-statement"); ; break;} case 334: -#line 1692 "c-parse.y" +#line 1700 "c-parse.y" { c_expand_end_cond (); /* This warning is here instead of in simple_if, because we do not want a warning if an empty if is followed by an @@ -3168,11 +3178,11 @@ case 334: "empty body in an if-statement"); ; break;} case 335: -#line 1704 "c-parse.y" +#line 1712 "c-parse.y" { c_expand_end_cond (); ; break;} case 336: -#line 1706 "c-parse.y" +#line 1714 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); /* The emit_nop used to come before emit_line_note, @@ -3184,7 +3194,7 @@ case 336: emit_nop (); ; break;} case 337: -#line 1716 "c-parse.y" +#line 1724 "c-parse.y" { /* Don't start the loop till we have succeeded in parsing the end test. This is to make sure that we end every loop we start. */ @@ -3195,11 +3205,11 @@ case 337: position_after_white_space (); ; break;} case 338: -#line 1725 "c-parse.y" +#line 1733 "c-parse.y" { expand_end_loop (); ; break;} case 339: -#line 1728 "c-parse.y" +#line 1736 "c-parse.y" { emit_line_note (input_filename, lineno); expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion (yyvsp[-2].ttype)); @@ -3207,12 +3217,12 @@ case 339: clear_momentary (); ; break;} case 340: -#line 1735 "c-parse.y" +#line 1743 "c-parse.y" { expand_end_loop (); clear_momentary (); ; break;} case 341: -#line 1739 "c-parse.y" +#line 1747 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); /* See comment in `while' alternative, above. */ @@ -3225,12 +3235,12 @@ case 341: ; break;} case 342: -#line 1751 "c-parse.y" +#line 1759 "c-parse.y" { yyvsp[0].lineno = lineno; yyval.filename = input_filename; ; break;} case 343: -#line 1754 "c-parse.y" +#line 1762 "c-parse.y" { /* Start the loop. Doing this after parsing all the expressions ensures we will end the loop. */ @@ -3248,7 +3258,7 @@ case 343: position_after_white_space (); ; break;} case 344: -#line 1770 "c-parse.y" +#line 1778 "c-parse.y" { /* Emit the increment expression, with a line number. */ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno); expand_loop_continue_here (); @@ -3261,7 +3271,7 @@ case 344: expand_end_loop (); ; break;} case 345: -#line 1781 "c-parse.y" +#line 1789 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); c_expand_start_case (yyvsp[-1].ttype); @@ -3271,7 +3281,7 @@ case 345: position_after_white_space (); ; break;} case 346: -#line 1789 "c-parse.y" +#line 1797 "c-parse.y" { expand_end_case (yyvsp[-3].ttype); if (yychar == CONSTANT || yychar == STRING) pop_momentary_nofree (); @@ -3279,33 +3289,33 @@ case 346: pop_momentary (); ; break;} case 347: -#line 1795 "c-parse.y" +#line 1803 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); if ( ! expand_exit_something ()) error ("break statement not within loop or switch"); ; break;} case 348: -#line 1800 "c-parse.y" +#line 1808 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); if (! expand_continue_loop (NULL_PTR)) error ("continue statement not within a loop"); ; break;} case 349: -#line 1805 "c-parse.y" +#line 1813 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); c_expand_return (NULL_TREE); ; break;} case 350: -#line 1809 "c-parse.y" +#line 1817 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); c_expand_return (yyvsp[-1].ttype); ; break;} case 351: -#line 1813 "c-parse.y" +#line 1821 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno); STRIP_NOPS (yyvsp[-2].ttype); @@ -3317,7 +3327,7 @@ case 351: error ("argument of `asm' is not a constant string"); ; break;} case 352: -#line 1824 "c-parse.y" +#line 1832 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno); c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, @@ -3325,7 +3335,7 @@ case 352: input_filename, lineno); ; break;} case 353: -#line 1831 "c-parse.y" +#line 1839 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno); c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, @@ -3333,7 +3343,7 @@ case 353: input_filename, lineno); ; break;} case 354: -#line 1839 "c-parse.y" +#line 1847 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno); c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, @@ -3341,7 +3351,7 @@ case 354: input_filename, lineno); ; break;} case 355: -#line 1845 "c-parse.y" +#line 1853 "c-parse.y" { tree decl; stmt_count++; emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); @@ -3354,7 +3364,7 @@ case 355: ; break;} case 356: -#line 1856 "c-parse.y" +#line 1864 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids `goto *expr;'"); stmt_count++; @@ -3362,7 +3372,7 @@ case 356: expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ; break;} case 359: -#line 1871 "c-parse.y" +#line 1879 "c-parse.y" { /* The value returned by this action is */ /* 1 if everything is OK */ @@ -3385,14 +3395,14 @@ case 359: ; break;} case 360: -#line 1892 "c-parse.y" +#line 1900 "c-parse.y" { if (yyvsp[-1].itype) iterator_for_loop_end (yyvsp[-3].ttype); ; break;} case 361: -#line 1927 "c-parse.y" +#line 1935 "c-parse.y" { register tree value = check_case_value (yyvsp[-1].ttype); register tree label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); @@ -3425,7 +3435,7 @@ case 361: position_after_white_space (); ; break;} case 362: -#line 1958 "c-parse.y" +#line 1966 "c-parse.y" { register tree value1 = check_case_value (yyvsp[-3].ttype); register tree value2 = check_case_value (yyvsp[-1].ttype); register tree label @@ -3458,7 +3468,7 @@ case 362: position_after_white_space (); ; break;} case 363: -#line 1989 "c-parse.y" +#line 1997 "c-parse.y" { tree duplicate; register tree label @@ -3475,7 +3485,7 @@ case 363: position_after_white_space (); ; break;} case 364: -#line 2004 "c-parse.y" +#line 2012 "c-parse.y" { tree label = define_label (input_filename, lineno, yyvsp[-1].ttype); stmt_count++; emit_nop (); @@ -3484,52 +3494,52 @@ case 364: position_after_white_space (); ; break;} case 365: -#line 2016 "c-parse.y" +#line 2024 "c-parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 366: -#line 2019 "c-parse.y" +#line 2027 "c-parse.y" { emit_line_note (input_filename, lineno); ; break;} case 367: -#line 2024 "c-parse.y" +#line 2032 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 369: -#line 2031 "c-parse.y" +#line 2039 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 372: -#line 2038 "c-parse.y" +#line 2046 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 373: -#line 2043 "c-parse.y" +#line 2051 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 374: -#line 2048 "c-parse.y" +#line 2056 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ; break;} case 375: -#line 2050 "c-parse.y" +#line 2058 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ; break;} case 376: -#line 2056 "c-parse.y" +#line 2064 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (0); ; break;} case 377: -#line 2060 "c-parse.y" +#line 2068 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} case 379: -#line 2068 "c-parse.y" +#line 2076 "c-parse.y" { tree parm; if (pedantic) pedwarn ("ANSI C forbids forward parameter declarations"); @@ -3539,19 +3549,19 @@ case 379: clear_parm_order (); ; break;} case 380: -#line 2076 "c-parse.y" +#line 2084 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 381: -#line 2078 "c-parse.y" +#line 2086 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ; break;} case 382: -#line 2084 "c-parse.y" +#line 2092 "c-parse.y" { yyval.ttype = get_parm_info (0); ; break;} case 383: -#line 2086 "c-parse.y" +#line 2094 "c-parse.y" { yyval.ttype = get_parm_info (0); /* Gcc used to allow this as an extension. However, it does not work for all targets, and thus has been disabled. @@ -3563,23 +3573,23 @@ case 383: ; break;} case 384: -#line 2096 "c-parse.y" +#line 2104 "c-parse.y" { yyval.ttype = get_parm_info (1); ; break;} case 385: -#line 2098 "c-parse.y" +#line 2106 "c-parse.y" { yyval.ttype = get_parm_info (0); ; break;} case 386: -#line 2103 "c-parse.y" +#line 2111 "c-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 387: -#line 2105 "c-parse.y" +#line 2113 "c-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 388: -#line 2112 "c-parse.y" +#line 2120 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, @@ -3590,7 +3600,7 @@ case 388: resume_momentary (yyvsp[-2].itype); ; break;} case 389: -#line 2121 "c-parse.y" +#line 2129 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, @@ -3601,7 +3611,7 @@ case 389: resume_momentary (yyvsp[-2].itype); ; break;} case 390: -#line 2130 "c-parse.y" +#line 2138 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, @@ -3612,7 +3622,7 @@ case 390: resume_momentary (yyvsp[-2].itype); ; break;} case 391: -#line 2139 "c-parse.y" +#line 2147 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, @@ -3623,7 +3633,7 @@ case 391: resume_momentary (yyvsp[-2].itype); ; break;} case 392: -#line 2149 "c-parse.y" +#line 2157 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, @@ -3634,19 +3644,19 @@ case 392: resume_momentary (yyvsp[-2].itype); ; break;} case 393: -#line 2163 "c-parse.y" +#line 2171 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (1); ; break;} case 394: -#line 2167 "c-parse.y" +#line 2175 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} case 396: -#line 2175 "c-parse.y" +#line 2183 "c-parse.y" { tree t; for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t)) if (TREE_VALUE (t) == NULL_TREE) @@ -3654,29 +3664,29 @@ case 396: yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ; break;} case 397: -#line 2185 "c-parse.y" +#line 2193 "c-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 398: -#line 2187 "c-parse.y" +#line 2195 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 399: -#line 2193 "c-parse.y" +#line 2201 "c-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 400: -#line 2195 "c-parse.y" +#line 2203 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 401: -#line 2200 "c-parse.y" +#line 2208 "c-parse.y" { yyval.itype = pedantic; pedantic = 0; ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/cygnus/progressive-98r1/share/bison.simple" +#line 487 "/usr/local/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -3872,5 +3882,5 @@ case 401: yystate = yyn; goto yynewstate; } -#line 2204 "c-parse.y" +#line 2212 "c-parse.y" diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 16500c5..50a0f03 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -1561,11 +1561,19 @@ component_decl: prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); resume_momentary ($2); } - | typed_typespecs - { if (pedantic) - pedwarn ("ANSI C forbids member declarations with no members"); - shadow_tag($1); - $$ = NULL_TREE; } + | typed_typespecs setspecs save_filename save_lineno maybe_attribute + { + /* Support for unnamed structs or unions as members of + structs or unions (which is [a] useful and [b] supports + MS P-SDK). */ + if (pedantic) + pedwarn ("ANSI C doesn't support unnamed structs/unions"); + $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE); + current_declspecs = TREE_VALUE (declspec_stack); + prefix_attributes = TREE_PURPOSE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary ($2); + } | nonempty_type_quals setspecs components { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); diff --git a/gcc/c-parse.y b/gcc/c-parse.y index ab0d7d1..a29a690 100644 --- a/gcc/c-parse.y +++ b/gcc/c-parse.y @@ -1374,11 +1374,19 @@ component_decl: prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); resume_momentary ($2); } - | typed_typespecs - { if (pedantic) - pedwarn ("ANSI C forbids member declarations with no members"); - shadow_tag($1); - $$ = NULL_TREE; } + | typed_typespecs setspecs save_filename save_lineno maybe_attribute + { + /* Support for unnamed structs or unions as members of + structs or unions (which is [a] useful and [b] supports + MS P-SDK). */ + if (pedantic) + pedwarn ("ANSI C doesn't support unnamed structs/unions"); + $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE); + current_declspecs = TREE_VALUE (declspec_stack); + prefix_attributes = TREE_PURPOSE (declspec_stack); + declspec_stack = TREE_CHAIN (declspec_stack); + resume_momentary ($2); + } | nonempty_type_quals setspecs components { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 4ccc1a3..c5e2457 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -48,7 +48,7 @@ static int function_types_compatible_p PROTO((tree, tree)); static int type_lists_compatible_p PROTO((tree, tree)); static int self_promoting_type_p PROTO((tree)); static tree decl_constant_value PROTO((tree)); -static tree lookup_field PROTO((tree, tree, tree *)); +static tree lookup_field PROTO((tree, tree)); static tree convert_arguments PROTO((tree, tree, tree, tree)); static tree pointer_int_sum PROTO((enum tree_code, tree, tree)); static tree pointer_diff PROTO((tree, tree)); @@ -1131,17 +1131,20 @@ default_conversion (exp) return exp; } -/* Look up component name in the structure type definition. - - If this component name is found indirectly within an anonymous union, - store in *INDIRECT the component which directly contains - that anonymous union. Otherwise, set *INDIRECT to 0. */ +/* Look up COMPONENT in a structure or union DECL. + + If the component name is not found, returns NULL_TREE. Otherwise, + the return value is a TREE_LIST, with each TREE_VALUE a FIELD_DECL + stepping down the chain to the component, which is in the last + TREE_VALUE of the list. Normally the list is of length one, but if + the component is embedded within (nested) anonymous structures or + unions, the list steps down the chain to the component. */ static tree -lookup_field (type, component, indirect) - tree type, component; - tree *indirect; +lookup_field (decl, component) + tree decl, component; { + tree type = TREE_TYPE (decl); tree field; /* If TYPE_LANG_SPECIFIC is set, then it is a sorted array of pointers @@ -1167,17 +1170,14 @@ lookup_field (type, component, indirect) /* Step through all anon unions in linear fashion. */ while (DECL_NAME (field_array[bot]) == NULL_TREE) { - tree anon = 0, junk; - field = field_array[bot++]; if (TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE || TREE_CODE (TREE_TYPE (field)) == UNION_TYPE) - anon = lookup_field (TREE_TYPE (field), component, &junk); - - if (anon != NULL_TREE) { - *indirect = field; - return anon; + tree anon = lookup_field (field, component); + + if (anon) + return tree_cons (NULL_TREE, field, anon); } } @@ -1200,35 +1200,31 @@ lookup_field (type, component, indirect) if (DECL_NAME (field_array[bot]) == component) field = field_array[bot]; else if (DECL_NAME (field) != component) - field = 0; + return NULL_TREE; } else { for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) { - if (DECL_NAME (field) == NULL_TREE) + if (DECL_NAME (field) == NULL_TREE + && (TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE + || TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)) { - tree junk; - tree anon = 0; - - if (TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE - || TREE_CODE (TREE_TYPE (field)) == UNION_TYPE) - anon = lookup_field (TREE_TYPE (field), component, &junk); + tree anon = lookup_field (field, component); - if (anon != NULL_TREE) - { - *indirect = field; - return anon; - } + if (anon) + return tree_cons (NULL_TREE, field, anon); } if (DECL_NAME (field) == component) break; } + + if (field == NULL_TREE) + return NULL_TREE; } - *indirect = NULL_TREE; - return field; + return tree_cons (NULL_TREE, field, NULL_TREE); } /* Make an expression to refer to the COMPONENT field of @@ -1267,15 +1263,13 @@ build_component_ref (datum, component) if (code == RECORD_TYPE || code == UNION_TYPE) { - tree indirect = 0; - if (TYPE_SIZE (type) == 0) { incomplete_type_error (NULL_TREE, type); return error_mark_node; } - field = lookup_field (type, component, &indirect); + field = lookup_field (datum, component); if (!field) { @@ -1285,29 +1279,27 @@ build_component_ref (datum, component) IDENTIFIER_POINTER (component)); return error_mark_node; } - if (TREE_TYPE (field) == error_mark_node) - return error_mark_node; - /* If FIELD was found buried within an anonymous union, - make one COMPONENT_REF to get that anonymous union, - then fall thru to make a second COMPONENT_REF to get FIELD. */ - if (indirect != 0) + /* Chain the COMPONENT_REFs if necessary down to the FIELD. + This might be better solved in future the way the C++ front + end does it - by giving the anonymous entities each a + separate name and type, and then have build_component_ref + recursively call itself. We can't do that here. */ + for (; field; field = TREE_CHAIN (field)) { - ref = build (COMPONENT_REF, TREE_TYPE (indirect), datum, indirect); - if (TREE_READONLY (datum) || TREE_READONLY (indirect)) + tree subdatum = TREE_VALUE (field); + + if (TREE_TYPE (subdatum) == error_mark_node) + return error_mark_node; + + ref = build (COMPONENT_REF, TREE_TYPE (subdatum), datum, subdatum); + if (TREE_READONLY (datum) || TREE_READONLY (subdatum)) TREE_READONLY (ref) = 1; - if (TREE_THIS_VOLATILE (datum) || TREE_THIS_VOLATILE (indirect)) + if (TREE_THIS_VOLATILE (datum) || TREE_THIS_VOLATILE (subdatum)) TREE_THIS_VOLATILE (ref) = 1; datum = ref; } - ref = build (COMPONENT_REF, TREE_TYPE (field), datum, field); - - if (TREE_READONLY (datum) || TREE_READONLY (field)) - TREE_READONLY (ref) = 1; - if (TREE_THIS_VOLATILE (datum) || TREE_THIS_VOLATILE (field)) - TREE_THIS_VOLATILE (ref) = 1; - return ref; } else if (code != ERROR_MARK)