diff options
Diffstat (limited to 'cpp/src/Slice/Grammar.cpp')
-rw-r--r-- | cpp/src/Slice/Grammar.cpp | 2182 |
1 files changed, 1251 insertions, 931 deletions
diff --git a/cpp/src/Slice/Grammar.cpp b/cpp/src/Slice/Grammar.cpp index cf01a1c4b44..842a30745e7 100644 --- a/cpp/src/Slice/Grammar.cpp +++ b/cpp/src/Slice/Grammar.cpp @@ -1,10 +1,9 @@ - -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -46,7 +45,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.4.1" +#define YYBISON_VERSION "2.4.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -89,6 +88,7 @@ // ********************************************************************** #include <Slice/GrammarUtil.h> +#include <IceUtil/InputUtil.h> #include <IceUtil/UUID.h> #include <cstring> @@ -177,18 +177,20 @@ slice_error(const char* s) ICE_FALSE = 283, ICE_TRUE = 284, ICE_IDEMPOTENT = 285, - ICE_SCOPE_DELIMITER = 286, - ICE_IDENTIFIER = 287, - ICE_STRING_LITERAL = 288, - ICE_INTEGER_LITERAL = 289, - ICE_FLOATING_POINT_LITERAL = 290, - ICE_IDENT_OP = 291, - ICE_KEYWORD_OP = 292, - ICE_METADATA_OPEN = 293, - ICE_METADATA_CLOSE = 294, - ICE_GLOBAL_METADATA_OPEN = 295, - ICE_GLOBAL_METADATA_CLOSE = 296, - BAD_CHAR = 297 + ICE_OPTIONAL = 286, + ICE_SCOPE_DELIMITER = 287, + ICE_IDENTIFIER = 288, + ICE_STRING_LITERAL = 289, + ICE_INTEGER_LITERAL = 290, + ICE_FLOATING_POINT_LITERAL = 291, + ICE_IDENT_OP = 292, + ICE_KEYWORD_OP = 293, + ICE_OPTIONAL_OP = 294, + ICE_METADATA_OPEN = 295, + ICE_METADATA_CLOSE = 296, + ICE_GLOBAL_METADATA_OPEN = 297, + ICE_GLOBAL_METADATA_CLOSE = 298, + BAD_CHAR = 299 }; #endif @@ -206,7 +208,7 @@ typedef int YYSTYPE; /* Line 264 of yacc.c */ -#line 210 "Grammar.tab.c" +#line 212 "Grammar.tab.c" #ifdef short # undef short @@ -256,7 +258,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if YYENABLE_NLS +# if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -421,20 +423,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 13 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 797 +#define YYLAST 878 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 52 +#define YYNTOKENS 54 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 67 +#define YYNNTS 70 /* YYNRULES -- Number of rules. */ -#define YYNRULES 182 +#define YYNRULES 196 /* YYNRULES -- Number of states. */ -#define YYNSTATES 266 +#define YYNSTATES 291 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 297 +#define YYMAXUTOK 299 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -446,15 +448,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 47, 51, 2, 48, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 43, - 49, 46, 50, 2, 2, 2, 2, 2, 2, 2, + 2, 48, 53, 2, 50, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, + 51, 49, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 44, 2, 45, 2, 2, 2, 2, + 2, 2, 2, 46, 2, 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -471,7 +473,7 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42 + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 }; #if YYDEBUG @@ -483,103 +485,109 @@ static const yytype_uint16 yyprhs[] = 26, 27, 32, 35, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 63, 70, 73, 76, 79, 80, 88, 91, 92, 97, 101, 104, - 105, 108, 110, 113, 116, 119, 120, 127, 132, 136, - 139, 140, 142, 145, 148, 151, 152, 161, 164, 165, - 168, 169, 174, 178, 181, 182, 184, 188, 191, 193, - 195, 197, 200, 204, 207, 211, 212, 218, 219, 225, - 227, 229, 232, 235, 238, 239, 247, 251, 253, 255, - 258, 259, 264, 268, 271, 272, 274, 278, 280, 282, - 284, 292, 300, 311, 322, 325, 328, 329, 336, 342, - 346, 348, 350, 352, 353, 355, 356, 357, 361, 367, - 372, 379, 383, 389, 392, 393, 395, 398, 402, 404, - 406, 408, 410, 412, 414, 416, 418, 420, 423, 425, - 427, 430, 433, 435, 439, 441, 443, 444, 446, 448, - 450, 452, 454, 456, 463, 469, 471, 473, 475, 477, - 479, 481, 483, 485, 487, 489, 491, 493, 495, 497, - 499, 501, 503, 505, 507, 509, 511, 513, 515, 517, - 519, 521, 523 + 105, 108, 112, 116, 119, 121, 124, 126, 128, 131, + 134, 137, 138, 145, 150, 154, 157, 158, 160, 163, + 166, 169, 170, 179, 182, 183, 186, 187, 192, 196, + 199, 200, 202, 206, 209, 211, 213, 217, 220, 225, + 228, 230, 233, 235, 237, 240, 244, 247, 251, 252, + 258, 259, 265, 267, 269, 272, 275, 278, 279, 287, + 291, 293, 295, 298, 299, 304, 308, 311, 312, 314, + 318, 320, 322, 324, 332, 340, 351, 362, 365, 368, + 369, 376, 382, 386, 388, 390, 392, 393, 395, 396, + 397, 401, 407, 412, 419, 423, 429, 432, 433, 435, + 438, 442, 444, 446, 448, 450, 452, 454, 456, 458, + 460, 463, 465, 467, 470, 473, 475, 479, 481, 483, + 484, 486, 488, 490, 492, 494, 496, 503, 509, 511, + 513, 515, 517, 519, 521, 523, 525, 527, 529, 531, + 533, 535, 537, 539, 541, 543, 545, 547, 549, 551, + 553, 555, 557, 559, 561, 563, 565 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 53, 0, -1, 56, -1, 40, 114, 41, -1, 38, - 114, 39, -1, -1, -1, 54, 57, 56, -1, -1, - 55, 60, 58, 43, 56, -1, -1, 1, 43, 59, - 56, -1, 55, 60, -1, -1, 61, -1, 78, -1, - 79, -1, 92, -1, 93, -1, 64, -1, 65, -1, - 72, -1, 73, -1, 101, -1, 102, -1, 104, -1, - 117, -1, -1, 3, 32, 62, 44, 56, 45, -1, - 6, 32, -1, 6, 118, -1, 115, 63, -1, -1, - 115, 63, 67, 66, 44, 68, 45, -1, 12, 111, - -1, -1, 55, 70, 43, 68, -1, 1, 43, 68, - -1, 55, 70, -1, -1, 112, 32, -1, 84, -1, - 7, 32, -1, 7, 118, -1, 115, 71, -1, -1, - 115, 71, 74, 44, 75, 45, -1, 55, 76, 43, - 75, -1, 1, 43, 75, -1, 55, 76, -1, -1, - 84, -1, 4, 32, -1, 4, 118, -1, 115, 77, - -1, -1, 115, 77, 81, 82, 80, 44, 83, 45, - -1, 12, 111, -1, -1, 13, 95, -1, -1, 55, - 90, 43, 83, -1, 1, 43, 83, -1, 55, 90, - -1, -1, 69, -1, 69, 46, 116, -1, 112, 118, - -1, 112, -1, 112, -1, 15, -1, 85, 36, -1, - 30, 85, 36, -1, 85, 37, -1, 30, 85, 37, - -1, -1, 86, 109, 47, 88, 110, -1, -1, 86, - 1, 47, 89, 110, -1, 84, -1, 87, -1, 5, - 32, -1, 5, 118, -1, 115, 91, -1, -1, 115, - 91, 96, 94, 44, 97, 45, -1, 111, 48, 95, - -1, 111, -1, 24, -1, 12, 95, -1, -1, 55, - 98, 43, 97, -1, 1, 43, 97, -1, 55, 98, - -1, -1, 87, -1, 100, 48, 99, -1, 100, -1, - 111, -1, 118, -1, 115, 8, 49, 55, 112, 50, - 32, -1, 115, 8, 49, 55, 112, 50, 118, -1, - 115, 9, 49, 55, 112, 48, 55, 112, 50, 32, - -1, 115, 9, 49, 55, 112, 48, 55, 112, 50, - 118, -1, 10, 32, -1, 10, 118, -1, -1, 115, - 103, 105, 44, 106, 45, -1, 115, 10, 44, 106, - 45, -1, 107, 48, 106, -1, 107, -1, 32, -1, - 118, -1, -1, 11, -1, -1, -1, 108, 55, 69, - -1, 109, 48, 108, 55, 69, -1, 108, 55, 112, - 118, -1, 109, 48, 108, 55, 112, 118, -1, 108, - 55, 112, -1, 109, 48, 108, 55, 112, -1, 14, - 99, -1, -1, 32, -1, 31, 32, -1, 111, 31, - 32, -1, 16, -1, 17, -1, 18, -1, 19, -1, + 55, 0, -1, 58, -1, 42, 119, 43, -1, 40, + 119, 41, -1, -1, -1, 56, 59, 58, -1, -1, + 57, 62, 60, 45, 58, -1, -1, 1, 45, 61, + 58, -1, 57, 62, -1, -1, 63, -1, 82, -1, + 83, -1, 97, -1, 98, -1, 66, -1, 67, -1, + 76, -1, 77, -1, 106, -1, 107, -1, 109, -1, + 122, -1, -1, 3, 33, 64, 46, 58, 47, -1, + 6, 33, -1, 6, 123, -1, 120, 65, -1, -1, + 120, 65, 69, 68, 46, 70, 47, -1, 12, 116, + -1, -1, 57, 74, 45, 70, -1, 1, 45, 70, + -1, 57, 74, -1, -1, 117, 33, -1, 39, 35, + 48, -1, 39, 116, 48, -1, 39, 48, -1, 31, + -1, 72, 71, -1, 71, -1, 88, -1, 7, 33, + -1, 7, 123, -1, 120, 75, -1, -1, 120, 75, + 78, 46, 79, 47, -1, 57, 80, 45, 79, -1, + 1, 45, 79, -1, 57, 80, -1, -1, 89, -1, + 4, 33, -1, 4, 123, -1, 120, 81, -1, -1, + 120, 81, 85, 86, 84, 46, 87, 47, -1, 12, + 116, -1, -1, 13, 100, -1, -1, 57, 95, 45, + 87, -1, 1, 45, 87, -1, 57, 95, -1, -1, + 73, -1, 73, 49, 121, -1, 117, 123, -1, 117, + -1, 71, -1, 71, 49, 121, -1, 72, 71, -1, + 72, 71, 49, 121, -1, 117, 123, -1, 117, -1, + 72, 117, -1, 117, -1, 15, -1, 90, 37, -1, + 30, 90, 37, -1, 90, 38, -1, 30, 90, 38, + -1, -1, 91, 114, 48, 93, 115, -1, -1, 91, + 1, 48, 94, 115, -1, 88, -1, 92, -1, 5, + 33, -1, 5, 123, -1, 120, 96, -1, -1, 120, + 96, 101, 99, 46, 102, 47, -1, 116, 50, 100, + -1, 116, -1, 24, -1, 12, 100, -1, -1, 57, + 103, 45, 102, -1, 1, 45, 102, -1, 57, 103, + -1, -1, 92, -1, 105, 50, 104, -1, 105, -1, + 116, -1, 123, -1, 120, 8, 51, 57, 117, 52, + 33, -1, 120, 8, 51, 57, 117, 52, 123, -1, + 120, 9, 51, 57, 117, 50, 57, 117, 52, 33, + -1, 120, 9, 51, 57, 117, 50, 57, 117, 52, + 123, -1, 10, 33, -1, 10, 123, -1, -1, 120, + 108, 110, 46, 111, 47, -1, 120, 10, 46, 111, + 47, -1, 112, 50, 111, -1, 112, -1, 33, -1, + 123, -1, -1, 11, -1, -1, -1, 113, 57, 73, + -1, 114, 50, 113, 57, 73, -1, 113, 57, 117, + 123, -1, 114, 50, 113, 57, 117, 123, -1, 113, + 57, 117, -1, 114, 50, 113, 57, 117, -1, 14, + 104, -1, -1, 33, -1, 32, 33, -1, 116, 32, + 33, -1, 16, -1, 17, -1, 18, -1, 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, - 24, 51, -1, 25, -1, 111, -1, 111, 51, -1, - 33, 113, -1, 33, -1, 114, 48, 113, -1, 113, - -1, 26, -1, -1, 34, -1, 35, -1, 111, -1, - 33, -1, 28, -1, 29, -1, 27, 55, 112, 32, - 46, 116, -1, 27, 55, 112, 46, 116, -1, 3, + 24, 53, -1, 25, -1, 116, -1, 116, 53, -1, + 34, 118, -1, 34, -1, 119, 50, 118, -1, 118, + -1, 26, -1, -1, 35, -1, 36, -1, 116, -1, + 34, -1, 28, -1, 29, -1, 27, 57, 117, 33, + 49, 121, -1, 27, 57, 117, 49, 121, -1, 3, -1, 4, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, -1, 11, -1, 12, -1, 13, -1, 14, -1, 15, -1, 16, -1, 17, -1, 18, -1, 19, -1, 20, -1, 21, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, - -1, 29, -1, 30, -1 + -1, 29, -1, 30, -1, 31, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 104, 104, 112, 121, 126, 135, 134, 144, 143, - 154, 153, 158, 163, 170, 174, 178, 182, 186, 190, - 194, 198, 202, 206, 210, 214, 218, 228, 227, 261, - 265, 276, 287, 286, 313, 322, 330, 339, 342, 347, - 354, 367, 373, 377, 388, 399, 398, 434, 443, 446, - 451, 458, 464, 468, 479, 493, 492, 532, 567, 575, - 580, 588, 597, 600, 605, 612, 635, 660, 682, 708, - 709, 718, 742, 766, 790, 820, 819, 842, 841, 864, - 865, 871, 875, 886, 901, 900, 935, 970, 1005, 1015, - 1020, 1028, 1037, 1040, 1045, 1052, 1058, 1065, 1077, 1089, - 1100, 1109, 1124, 1135, 1152, 1156, 1168, 1167, 1191, 1206, - 1212, 1220, 1232, 1240, 1249, 1256, 1267, 1269, 1287, 1305, - 1317, 1329, 1340, 1356, 1361, 1369, 1372, 1378, 1391, 1395, - 1399, 1403, 1407, 1411, 1415, 1419, 1423, 1427, 1431, 1435, - 1454, 1495, 1501, 1509, 1516, 1528, 1535, 1545, 1558, 1571, - 1617, 1628, 1639, 1655, 1664, 1678, 1681, 1684, 1687, 1690, - 1693, 1696, 1699, 1702, 1705, 1708, 1711, 1714, 1717, 1720, - 1723, 1726, 1729, 1732, 1735, 1738, 1741, 1744, 1747, 1750, - 1753, 1756, 1759 + 0, 107, 107, 115, 124, 129, 138, 137, 147, 146, + 157, 156, 161, 166, 173, 177, 181, 185, 189, 193, + 197, 201, 205, 209, 213, 217, 221, 231, 230, 264, + 268, 279, 290, 289, 316, 325, 333, 342, 345, 350, + 357, 370, 390, 460, 468, 481, 489, 504, 510, 514, + 525, 536, 535, 571, 580, 583, 588, 595, 601, 605, + 616, 630, 629, 669, 704, 712, 717, 725, 734, 737, + 742, 749, 771, 798, 820, 846, 855, 866, 875, 884, + 894, 908, 914, 922, 934, 958, 983, 1007, 1038, 1037, + 1060, 1059, 1082, 1083, 1089, 1093, 1104, 1119, 1118, 1153, + 1188, 1223, 1233, 1238, 1246, 1255, 1258, 1263, 1270, 1276, + 1283, 1295, 1307, 1318, 1327, 1342, 1353, 1370, 1374, 1386, + 1385, 1409, 1424, 1430, 1438, 1450, 1458, 1467, 1474, 1485, + 1487, 1503, 1519, 1531, 1543, 1554, 1570, 1575, 1583, 1586, + 1592, 1605, 1609, 1613, 1617, 1621, 1625, 1629, 1633, 1637, + 1641, 1645, 1649, 1668, 1709, 1715, 1723, 1730, 1742, 1749, + 1759, 1772, 1785, 1831, 1842, 1853, 1869, 1878, 1892, 1895, + 1898, 1901, 1904, 1907, 1910, 1913, 1916, 1919, 1922, 1925, + 1928, 1931, 1934, 1937, 1940, 1943, 1946, 1949, 1952, 1955, + 1958, 1961, 1964, 1967, 1970, 1973, 1976 }; #endif @@ -594,26 +602,27 @@ static const char *const yytname[] = "ICE_THROWS", "ICE_VOID", "ICE_BYTE", "ICE_BOOL", "ICE_SHORT", "ICE_INT", "ICE_LONG", "ICE_FLOAT", "ICE_DOUBLE", "ICE_STRING", "ICE_OBJECT", "ICE_LOCAL_OBJECT", "ICE_LOCAL", "ICE_CONST", "ICE_FALSE", "ICE_TRUE", - "ICE_IDEMPOTENT", "ICE_SCOPE_DELIMITER", "ICE_IDENTIFIER", - "ICE_STRING_LITERAL", "ICE_INTEGER_LITERAL", + "ICE_IDEMPOTENT", "ICE_OPTIONAL", "ICE_SCOPE_DELIMITER", + "ICE_IDENTIFIER", "ICE_STRING_LITERAL", "ICE_INTEGER_LITERAL", "ICE_FLOATING_POINT_LITERAL", "ICE_IDENT_OP", "ICE_KEYWORD_OP", - "ICE_METADATA_OPEN", "ICE_METADATA_CLOSE", "ICE_GLOBAL_METADATA_OPEN", - "ICE_GLOBAL_METADATA_CLOSE", "BAD_CHAR", "';'", "'{'", "'}'", "'='", - "')'", "','", "'<'", "'>'", "'*'", "$accept", "start", - "global_meta_data", "meta_data", "definitions", "$@1", "$@2", "$@3", - "definition", "module_def", "@4", "exception_id", "exception_decl", - "exception_def", "@5", "exception_extends", "exception_exports", - "type_id", "exception_export", "struct_id", "struct_decl", "struct_def", - "@6", "struct_exports", "struct_export", "class_id", "class_decl", - "class_def", "@7", "class_extends", "implements", "class_exports", - "data_member", "return_type", "operation_preamble", "operation", "@8", - "@9", "class_export", "interface_id", "interface_decl", "interface_def", - "@10", "interface_list", "interface_extends", "interface_exports", - "interface_export", "exception_list", "exception", "sequence_def", - "dictionary_def", "enum_id", "enum_def", "@11", "enumerator_list", - "enumerator", "out_qualifier", "parameters", "throws", "scoped_name", - "type", "string_literal", "string_list", "local_qualifier", - "const_initializer", "const_def", "keyword", 0 + "ICE_OPTIONAL_OP", "ICE_METADATA_OPEN", "ICE_METADATA_CLOSE", + "ICE_GLOBAL_METADATA_OPEN", "ICE_GLOBAL_METADATA_CLOSE", "BAD_CHAR", + "';'", "'{'", "'}'", "')'", "'='", "','", "'<'", "'>'", "'*'", "$accept", + "start", "global_meta_data", "meta_data", "definitions", "$@1", "$@2", + "$@3", "definition", "module_def", "@4", "exception_id", + "exception_decl", "exception_def", "@5", "exception_extends", + "exception_exports", "type_id", "optional", "optional_type_id", + "exception_export", "struct_id", "struct_decl", "struct_def", "@6", + "struct_exports", "struct_export", "class_id", "class_decl", "class_def", + "@7", "class_extends", "implements", "class_exports", "data_member", + "struct_data_member", "return_type", "operation_preamble", "operation", + "@8", "@9", "class_export", "interface_id", "interface_decl", + "interface_def", "@10", "interface_list", "interface_extends", + "interface_exports", "interface_export", "exception_list", "exception", + "sequence_def", "dictionary_def", "enum_id", "enum_def", "@11", + "enumerator_list", "enumerator", "out_qualifier", "parameters", "throws", + "scoped_name", "type", "string_literal", "string_list", + "local_qualifier", "const_initializer", "const_def", "keyword", 0 }; #endif @@ -626,33 +635,34 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 59, 123, 125, 61, 41, 44, 60, - 62, 42 + 295, 296, 297, 298, 299, 59, 123, 125, 41, 61, + 44, 60, 62, 42 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 52, 53, 54, 55, 55, 57, 56, 58, 56, - 59, 56, 56, 56, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 62, 61, 63, - 63, 64, 66, 65, 67, 67, 68, 68, 68, 68, - 69, 70, 71, 71, 72, 74, 73, 75, 75, 75, - 75, 76, 77, 77, 78, 80, 79, 81, 81, 82, - 82, 83, 83, 83, 83, 84, 84, 84, 84, 85, - 85, 86, 86, 86, 86, 88, 87, 89, 87, 90, - 90, 91, 91, 92, 94, 93, 95, 95, 95, 96, - 96, 97, 97, 97, 97, 98, 99, 99, 100, 100, - 101, 101, 102, 102, 103, 103, 105, 104, 104, 106, - 106, 107, 107, 107, 108, 108, 109, 109, 109, 109, - 109, 109, 109, 110, 110, 111, 111, 111, 112, 112, - 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, - 112, 113, 113, 114, 114, 115, 115, 116, 116, 116, - 116, 116, 116, 117, 117, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118 + 0, 54, 55, 56, 57, 57, 59, 58, 60, 58, + 61, 58, 58, 58, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 64, 63, 65, + 65, 66, 68, 67, 69, 69, 70, 70, 70, 70, + 71, 72, 72, 72, 72, 73, 73, 74, 75, 75, + 76, 78, 77, 79, 79, 79, 79, 80, 81, 81, + 82, 84, 83, 85, 85, 86, 86, 87, 87, 87, + 87, 88, 88, 88, 88, 89, 89, 89, 89, 89, + 89, 90, 90, 90, 91, 91, 91, 91, 93, 92, + 94, 92, 95, 95, 96, 96, 97, 99, 98, 100, + 100, 100, 101, 101, 102, 102, 102, 102, 103, 104, + 104, 105, 105, 106, 106, 107, 107, 108, 108, 110, + 109, 109, 111, 111, 112, 112, 112, 113, 113, 114, + 114, 114, 114, 114, 114, 114, 115, 115, 116, 116, + 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 118, 118, 119, 119, 120, 120, + 121, 121, 121, 121, 121, 121, 122, 122, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -662,21 +672,22 @@ static const yytype_uint8 yyr2[] = 0, 4, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, 2, 2, 2, 0, 7, 2, 0, 4, 3, 2, 0, - 2, 1, 2, 2, 2, 0, 6, 4, 3, 2, - 0, 1, 2, 2, 2, 0, 8, 2, 0, 2, - 0, 4, 3, 2, 0, 1, 3, 2, 1, 1, - 1, 2, 3, 2, 3, 0, 5, 0, 5, 1, - 1, 2, 2, 2, 0, 7, 3, 1, 1, 2, - 0, 4, 3, 2, 0, 1, 3, 1, 1, 1, - 7, 7, 10, 10, 2, 2, 0, 6, 5, 3, - 1, 1, 1, 0, 1, 0, 0, 3, 5, 4, - 6, 3, 5, 2, 0, 1, 2, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 2, 2, 1, 3, 1, 1, 0, 1, 1, 1, - 1, 1, 1, 6, 5, 1, 1, 1, 1, 1, + 2, 3, 3, 2, 1, 2, 1, 1, 2, 2, + 2, 0, 6, 4, 3, 2, 0, 1, 2, 2, + 2, 0, 8, 2, 0, 2, 0, 4, 3, 2, + 0, 1, 3, 2, 1, 1, 3, 2, 4, 2, + 1, 2, 1, 1, 2, 3, 2, 3, 0, 5, + 0, 5, 1, 1, 2, 2, 2, 0, 7, 3, + 1, 1, 2, 0, 4, 3, 2, 0, 1, 3, + 1, 1, 1, 7, 7, 10, 10, 2, 2, 0, + 6, 5, 3, 1, 1, 1, 0, 1, 0, 0, + 3, 5, 4, 6, 3, 5, 2, 0, 1, 2, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 2, 1, 3, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 6, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -684,297 +695,322 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 0, 0, 0, 6, 146, 2, 10, 142, - 144, 0, 0, 1, 0, 0, 145, 5, 12, 14, + 0, 0, 0, 0, 0, 6, 159, 2, 10, 155, + 157, 0, 0, 1, 0, 0, 158, 5, 12, 14, 19, 20, 21, 22, 15, 16, 17, 18, 23, 24, - 25, 0, 26, 0, 141, 4, 0, 3, 7, 27, + 25, 0, 26, 0, 154, 4, 0, 3, 7, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 44, 54, 83, 106, 11, 143, 0, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 138, 0, 125, 139, - 0, 0, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 52, 53, 81, 82, 29, 30, 42, 43, 5, 5, - 104, 113, 105, 0, 32, 0, 0, 60, 0, 84, - 0, 0, 137, 126, 0, 140, 0, 0, 9, 0, - 0, 111, 0, 110, 112, 34, 0, 0, 57, 0, - 55, 88, 89, 87, 0, 113, 0, 127, 0, 151, - 152, 150, 147, 148, 149, 154, 0, 0, 108, 113, - 0, 0, 0, 0, 59, 0, 0, 0, 0, 28, - 153, 0, 5, 109, 0, 0, 0, 0, 65, 49, - 51, 68, 46, 0, 86, 0, 0, 0, 107, 100, - 101, 0, 0, 38, 41, 33, 48, 0, 0, 40, - 67, 0, 0, 0, 0, 70, 0, 0, 0, 95, - 93, 69, 85, 0, 37, 0, 66, 47, 0, 79, - 80, 63, 68, 56, 92, 0, 71, 73, 0, 114, - 5, 0, 0, 0, 36, 62, 0, 72, 74, 77, - 0, 75, 115, 91, 102, 103, 61, 124, 117, 121, - 124, 5, 0, 78, 119, 76, 0, 123, 97, 98, - 99, 118, 122, 0, 120, 96 + 50, 60, 96, 119, 11, 156, 0, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 151, 0, 138, 152, + 0, 0, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 58, 59, 94, 95, 29, 30, 48, 49, 5, + 5, 117, 126, 118, 0, 32, 0, 0, 66, 0, + 97, 0, 0, 150, 139, 0, 153, 0, 0, 9, + 0, 0, 124, 0, 123, 125, 34, 0, 0, 63, + 0, 61, 101, 102, 100, 0, 126, 0, 140, 0, + 164, 165, 163, 160, 161, 162, 167, 0, 0, 121, + 126, 0, 0, 0, 0, 65, 0, 0, 0, 0, + 28, 166, 0, 5, 122, 0, 0, 0, 0, 44, + 0, 75, 0, 55, 57, 80, 52, 0, 99, 0, + 0, 0, 120, 113, 114, 0, 0, 46, 0, 71, + 38, 47, 74, 33, 54, 0, 43, 0, 0, 77, + 0, 0, 40, 79, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 108, 106, 82, 98, 0, 37, 45, + 0, 0, 73, 41, 42, 76, 0, 53, 0, 0, + 92, 93, 69, 74, 62, 105, 0, 81, 84, 86, + 0, 127, 5, 0, 0, 0, 72, 36, 78, 68, + 81, 0, 85, 87, 90, 0, 88, 128, 104, 115, + 116, 67, 137, 130, 134, 137, 5, 0, 91, 132, + 89, 0, 136, 110, 111, 112, 131, 135, 0, 133, + 109 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 4, 5, 6, 7, 14, 41, 33, 18, 19, - 56, 49, 20, 21, 136, 114, 176, 178, 193, 50, - 22, 23, 115, 163, 179, 51, 24, 25, 165, 117, - 140, 203, 180, 207, 208, 209, 250, 247, 221, 52, - 26, 27, 144, 142, 119, 187, 210, 257, 258, 28, - 29, 53, 30, 120, 132, 133, 230, 231, 253, 69, - 181, 10, 11, 31, 155, 32, 134 + 56, 49, 20, 21, 137, 115, 177, 197, 198, 199, + 200, 50, 22, 23, 116, 164, 183, 51, 24, 25, + 166, 118, 141, 216, 201, 184, 221, 222, 223, 275, + 272, 242, 52, 26, 27, 145, 143, 120, 191, 224, + 282, 283, 28, 29, 53, 30, 121, 133, 134, 252, + 253, 278, 69, 210, 10, 11, 31, 156, 32, 135 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -224 +#define YYPACT_NINF -210 static const yytype_int16 yypact[] = { - 435, -12, -11, -11, 70, -224, 63, -224, -224, -11, - -224, -21, -22, -224, 78, 33, -224, 35, 54, -224, - -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, - -224, 128, -224, 78, -224, -224, -11, -224, -224, -224, - 765, 60, 538, 568, 598, 628, 26, 62, 402, -5, - 68, 12, -1, -224, -224, -224, 69, -224, -224, -224, - -224, -224, -224, -224, -224, 66, -224, 82, -224, 43, - 64, 78, -224, -224, -224, -224, -224, -224, -224, -224, - -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, - -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, - -224, -224, -224, -224, -224, -224, -224, -224, 35, 35, - -224, 658, -224, -3, -224, 71, -3, 106, 40, -224, - 85, 359, -224, -224, 98, -224, 94, 93, -224, 765, - 765, -224, 97, 91, -224, 113, 101, 284, 113, 40, - -224, -224, -224, -10, 102, 658, 104, -224, 93, -224, - -224, -224, -224, -224, 113, -224, 103, 99, -224, 658, - 316, 108, 765, 107, -224, 110, 40, 220, 112, -224, - -224, 688, 35, -224, 115, 765, 117, 284, 118, 120, - -224, 718, -224, 252, -224, 122, 357, 123, -224, -224, - -224, 765, 316, 124, -224, -224, -224, 93, 284, -224, - -224, 126, 357, 125, 220, -224, 432, 32, 29, -224, - 130, -224, -224, 121, -224, 316, -224, -224, 252, -224, - -224, 131, 473, -224, -224, 65, -224, -224, 132, -224, - 35, 59, 220, 748, -224, -224, 252, -224, -224, -224, - 765, -224, 166, -224, -224, -224, -224, 164, -224, 718, - 164, 35, 508, -224, -224, -224, 765, -224, 135, 113, - -224, -224, 718, 508, -224, -224 + 503, 35, 18, 18, 86, -210, 33, -210, -210, 18, + -210, 40, 63, -210, 23, 55, -210, 67, 79, -210, + -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + -210, 110, -210, 23, -210, -210, 18, -210, -210, -210, + 845, 80, 610, 641, 672, 703, 75, 77, 469, 7, + 83, 5, 9, -210, -210, -210, 84, -210, -210, -210, + -210, -210, -210, -210, -210, 78, -210, 99, -210, 16, + 29, 23, -210, -210, -210, -210, -210, -210, -210, -210, + -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + -210, -210, -210, -210, -210, -210, -210, -210, -210, 67, + 67, -210, 734, -210, 64, -210, 89, 64, 124, 52, + -210, 92, 424, -210, -210, 106, -210, 91, 66, -210, + 845, 845, -210, 94, 93, -210, 113, 96, 346, 113, + 52, -210, -210, -210, 22, 100, 734, 101, -210, 66, + -210, -210, -210, -210, -210, 113, -210, 98, 102, -210, + 734, 379, 108, 500, 107, -210, 109, 52, 280, 111, + -210, -210, 765, 67, -210, 112, 500, 115, 346, -210, + 8, 116, 845, 114, -210, 796, -210, 313, -210, 121, + 422, 120, -210, -210, -210, 845, 379, -210, 845, 122, + 127, -210, 796, -210, -210, 125, -210, 34, 66, 126, + 136, 346, -210, -210, 131, 422, 130, 280, -210, 209, + 845, 74, 244, -210, 133, -210, -210, 128, -210, -210, + 66, 379, -210, -210, -210, -210, 66, -210, 313, 845, + -210, -210, 137, 543, -210, -210, 85, -210, -210, -210, + 135, -210, 67, 60, 280, 827, -210, -210, -210, -210, + 136, 313, -210, -210, -210, 500, -210, 149, -210, -210, + -210, -210, 167, -210, 796, 167, 67, 579, -210, -210, + -210, 500, -210, 134, 113, -210, -210, 796, 579, -210, + -210 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -224, -224, -224, -17, -13, -224, -224, -224, -224, -224, - -224, -224, -224, -224, -224, -224, -158, -223, -224, -224, - -224, -224, -224, -161, -224, -224, -224, -224, -224, -224, - -224, -138, -160, -26, -224, -18, -224, -224, -224, -224, - -224, -224, -224, -107, -224, -191, -224, -78, -224, -224, - -224, -224, -224, -224, -50, -224, -56, -224, -62, -104, - -30, 27, 186, -224, -142, -224, -40 + -210, -210, -210, -17, -13, -210, -210, -210, -210, -210, + -210, -210, -210, -210, -210, -210, -187, -160, -148, -190, + -210, -210, -210, -210, -210, -143, -210, -210, -210, -210, + -210, -210, -210, -204, -29, -210, -32, -210, -26, -210, + -210, -210, -210, -210, -210, -210, -128, -210, -209, -210, + -98, -210, -210, -210, -210, -210, -210, -73, -210, -76, + -210, -80, -103, -27, 38, 193, -210, -147, -210, -38 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -117 +#define YYTABLE_NINF -130 static const yytype_int16 yytable[] = { - 40, 38, 101, 103, 105, 107, 170, 113, 112, 135, - 70, 118, 138, 224, 143, 194, 196, 248, 35, 37, - 54, 124, 9, 154, 116, -58, 36, 36, 67, 68, - 228, 8, 164, 261, 214, 143, 34, 217, 166, -35, - 229, 243, 219, -90, 154, -115, -115, -115, -115, -115, - -115, -115, -115, -115, -115, 216, -58, 234, 128, 184, - -115, -115, 143, 55, 141, 39, 15, -115, 226, 227, - 13, 67, 68, 2, 124, 108, -116, -116, -13, 1, - 235, -5, -5, -5, -5, -5, -5, -5, -5, 16, - 17, 129, 130, 154, 125, 168, 126, -8, 246, 156, - 157, 237, 238, 71, -5, -5, 241, 242, 146, 173, - 127, 109, -45, 121, 123, 137, 2, 122, 3, 139, - 162, 149, 150, -13, 67, 68, 151, 152, 153, 145, - 147, 190, 42, 43, 44, 45, 46, 47, 48, 159, - 148, 200, 158, 175, 124, 160, 167, 172, 259, 169, - 186, 177, 182, 171, 183, 191, 211, 188, 192, 259, - 162, 213, 195, 198, 197, 204, 202, 215, 212, 218, - 223, 233, 222, 232, 236, 175, 211, 229, 252, 239, - 225, 162, 200, 263, 220, 265, 251, 186, 255, 12, - 0, 0, 0, 245, 0, 0, 0, 0, 175, 0, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 254, - 249, 0, 260, 240, 0, 186, 0, 0, 0, 202, - 0, 185, 264, 260, 0, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 256, -5, -5, -5, -5, -5, + 40, 38, 171, 181, 102, 104, 106, 108, 245, 228, + 113, 136, 165, 70, 139, 182, 144, 117, -64, 114, + 54, 119, 209, -13, 1, 155, -5, -5, -5, -5, + -5, -5, -5, -5, 259, 204, 15, 144, 229, 188, + 67, 68, 220, 205, 257, 268, 155, 34, 125, -5, + -5, -64, 9, -35, 125, -103, 206, 271, 129, 16, + 17, 235, 127, 2, 144, 3, 125, 239, 237, 126, + -13, 220, 167, 169, 55, 273, 142, 207, 128, 229, + 8, 35, 234, 256, 67, 68, 13, 174, 39, 258, + 36, 286, 130, 131, 150, 151, 67, 68, 67, 68, + 152, 153, 154, 157, 158, 155, 37, 2, 266, 147, + 267, 248, 249, 36, 42, 43, 44, 45, 46, 47, + 48, 163, 262, 263, -8, 71, 109, 155, 110, -51, + 122, 123, 124, 155, 194, 138, 185, 140, 146, 148, + 149, 159, 161, 160, 176, 125, 168, 213, 170, 202, + 172, 190, 173, 178, 186, 187, 195, 196, 192, 211, + 251, 163, 203, 225, 232, 208, 217, 226, 227, 212, + 215, 230, 231, 233, 284, 236, 238, 244, 254, 176, + 255, 277, 261, 264, 288, 284, 240, 246, 243, 241, + 290, 276, 225, 247, 163, 280, 12, 0, 0, 0, + 190, 0, 0, 0, 0, 232, 0, 0, 0, 0, + 0, 0, 260, 0, 176, 0, 0, 270, 0, 0, + 0, 215, 0, 0, 218, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 265, 279, 190, 274, 285, + 179, 67, 68, 0, 215, 250, 0, 0, 180, 289, + 285, 0, 0, 0, 287, 251, 0, 0, 0, 281, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, + 0, 189, 0, -128, -128, 0, 0, 0, 0, 0, + 0, 0, -129, 0, -129, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 0, 0, 0, 0, - -5, -5, -5, 201, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, -94, 0, -5, -5, -5, - -5, -5, -5, -5, -5, -5, -5, -5, 0, 0, - 0, 0, -5, -5, -5, 161, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, -64, 0, 0, - -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, - 0, 0, 0, 0, 0, -5, -5, 174, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, -50, - 0, 0, -5, -5, -5, -5, -5, -5, -5, -5, - -5, -5, 0, 0, 0, 0, 0, -5, -5, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 1, -39, -5, -5, -5, -5, -5, -5, -5, -5, - 0, 0, 205, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 0, 0, -5, -5, 206, 67, 68, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, - 0, 0, 0, 0, -13, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 0, 110, -13, 1, 0, -5, -5, - -5, -5, -5, -5, -5, -5, 111, 205, 57, 58, + -5, -5, -5, -5, 214, 0, 0, 0, 0, -5, + 2, 0, 0, 0, 0, 0, 0, -107, -5, -5, + -5, -5, -5, -5, -5, -5, -5, -5, -5, 0, + 0, 0, 0, -5, -5, -5, -5, 162, 0, 0, + 0, 0, -5, 2, 0, 0, 0, 0, 0, 0, + -70, 0, -5, -5, -5, -5, -5, -5, -5, -5, + -5, -5, 0, 0, 0, 0, 0, -5, -5, -5, + 175, 0, 0, 0, 0, -5, 2, 0, 0, 0, + 0, 0, 0, -56, 0, -5, -5, -5, -5, -5, + -5, -5, -5, -5, -5, 0, 0, 0, 0, 0, + -5, -5, -5, 0, 0, 0, 0, 0, -5, 2, + 0, 0, 0, 0, 0, 1, -39, -5, -5, -5, + -5, -5, -5, -5, -5, 0, 0, 218, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 0, - 0, -5, -5, 67, 68, 0, 0, 0, 0, 0, + -5, -5, 219, 179, 67, 68, 0, 0, 0, 0, + 0, 180, 0, 0, 2, 0, 3, 0, 0, 0, + 0, -13, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 0, 111, -13, 1, 0, -5, -5, -5, -5, + -5, -5, -5, -5, 0, 112, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 0, 0, 0, -5, + -5, 179, 67, 68, 0, 0, 0, 0, 0, 180, 0, 0, 0, 2, 0, 3, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 0, 199, 0, 0, 0, -69, - -69, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 67, - 68, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 100, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 102, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 104, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 106, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 131, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 189, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 199, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 0, - 244, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 0, 0, 0, 0, 0, 67, 68 + 96, 97, 98, 99, 100, 0, 212, 0, 0, 0, + -82, -82, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 67, 68, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 0, 101, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 0, 103, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 0, 105, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 0, 107, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 0, 132, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 0, 193, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 0, 212, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 0, + 269, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 0, 0, 0, 0, 0, 0, 67, 68 }; static const yytype_int16 yycheck[] = { - 17, 14, 42, 43, 44, 45, 148, 12, 48, 113, - 40, 12, 116, 204, 118, 175, 177, 240, 39, 41, - 33, 31, 33, 127, 12, 13, 48, 48, 31, 32, - 1, 43, 139, 256, 192, 139, 9, 198, 48, 44, - 11, 232, 202, 44, 148, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 197, 44, 215, 71, 166, - 31, 32, 166, 36, 24, 32, 3, 38, 36, 37, - 0, 31, 32, 38, 31, 49, 47, 48, 0, 1, - 218, 3, 4, 5, 6, 7, 8, 9, 10, 26, - 27, 108, 109, 197, 51, 145, 32, 43, 236, 129, - 130, 36, 37, 43, 26, 27, 47, 48, 121, 159, - 46, 49, 44, 44, 32, 44, 38, 51, 40, 13, - 137, 28, 29, 45, 31, 32, 33, 34, 35, 44, - 32, 171, 4, 5, 6, 7, 8, 9, 10, 48, - 46, 181, 45, 160, 31, 44, 44, 48, 252, 45, - 167, 43, 45, 50, 44, 172, 186, 45, 43, 263, - 177, 191, 45, 43, 46, 43, 183, 43, 45, 43, - 45, 50, 202, 43, 43, 192, 206, 11, 14, 47, - 206, 198, 222, 48, 202, 263, 242, 204, 250, 3, - -1, -1, -1, 233, -1, -1, -1, -1, 215, -1, - -1, 218, -1, -1, -1, -1, -1, -1, -1, 249, - 240, -1, 252, 230, -1, 232, -1, -1, -1, 236, - -1, 1, 262, 263, -1, -1, 256, -1, -1, -1, - -1, -1, -1, -1, 251, 15, 16, 17, 18, 19, + 17, 14, 149, 163, 42, 43, 44, 45, 217, 196, + 48, 114, 140, 40, 117, 163, 119, 12, 13, 12, + 33, 12, 182, 0, 1, 128, 3, 4, 5, 6, + 7, 8, 9, 10, 238, 178, 3, 140, 198, 167, + 32, 33, 190, 35, 231, 254, 149, 9, 32, 26, + 27, 46, 34, 46, 32, 46, 48, 261, 71, 26, + 27, 208, 33, 40, 167, 42, 32, 215, 211, 53, + 47, 219, 50, 146, 36, 265, 24, 180, 49, 239, + 45, 41, 48, 230, 32, 33, 0, 160, 33, 236, + 50, 281, 109, 110, 28, 29, 32, 33, 32, 33, + 34, 35, 36, 130, 131, 208, 43, 40, 48, 122, + 50, 37, 38, 50, 4, 5, 6, 7, 8, 9, + 10, 138, 37, 38, 45, 45, 51, 230, 51, 46, + 46, 53, 33, 236, 172, 46, 163, 13, 46, 33, + 49, 47, 46, 50, 161, 32, 46, 185, 47, 176, + 52, 168, 50, 45, 47, 46, 173, 45, 47, 45, + 11, 178, 47, 190, 202, 49, 45, 47, 195, 33, + 187, 49, 45, 48, 277, 49, 45, 47, 45, 196, + 52, 14, 45, 48, 50, 288, 215, 219, 215, 215, + 288, 267, 219, 220, 211, 275, 3, -1, -1, -1, + 217, -1, -1, -1, -1, 243, -1, -1, -1, -1, + -1, -1, 239, -1, 231, -1, -1, 255, -1, -1, + -1, 238, -1, -1, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 252, 274, 254, 265, 277, + 31, 32, 33, -1, 261, 1, -1, -1, 39, 287, + 288, -1, -1, -1, 281, 11, -1, -1, -1, 276, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + -1, -1, -1, -1, -1, 31, 32, 33, -1, -1, + -1, 1, -1, 39, 40, -1, -1, -1, -1, -1, + -1, -1, 48, -1, 50, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, - 30, 31, 32, 1, -1, -1, -1, -1, 38, -1, - -1, -1, -1, -1, -1, 45, -1, 15, 16, 17, + 30, 31, 32, 33, 1, -1, -1, -1, -1, 39, + 40, -1, -1, -1, -1, -1, -1, 47, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, + -1, -1, -1, 30, 31, 32, 33, 1, -1, -1, + -1, -1, 39, 40, -1, -1, -1, -1, -1, -1, + 47, -1, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, -1, -1, -1, -1, -1, 31, 32, 33, + 1, -1, -1, -1, -1, 39, 40, -1, -1, -1, + -1, -1, -1, 47, -1, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, + 31, 32, 33, -1, -1, -1, -1, -1, 39, 40, + -1, -1, -1, -1, -1, 1, 47, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, - -1, -1, 30, 31, 32, 1, -1, -1, -1, -1, - 38, -1, -1, -1, -1, -1, -1, 45, -1, -1, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - -1, -1, -1, -1, -1, 31, 32, 1, -1, -1, - -1, -1, 38, -1, -1, -1, -1, -1, -1, 45, - -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, -1, -1, -1, -1, -1, 31, 32, -1, - -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, - 1, 45, 3, 4, 5, 6, 7, 8, 9, 10, - -1, -1, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, -1, -1, 26, 27, 30, 31, 32, - -1, -1, -1, -1, -1, -1, -1, 38, -1, 40, - -1, -1, -1, -1, 45, 3, 4, 5, 6, 7, + 26, 27, 30, 31, 32, 33, -1, -1, -1, -1, + -1, 39, -1, -1, 40, -1, 42, -1, -1, -1, + -1, 47, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, -1, 33, 0, 1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, -1, 46, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, -1, -1, 26, + 27, 31, 32, 33, -1, -1, -1, -1, -1, 39, + -1, -1, -1, 40, -1, 42, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, -1, 33, -1, -1, -1, + 37, 38, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, -1, 33, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, -1, 33, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, -1, 32, 0, 1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 44, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, - -1, 26, 27, 31, 32, -1, -1, -1, -1, -1, - -1, -1, -1, 38, -1, 40, 3, 4, 5, 6, + 28, 29, 30, 31, -1, 33, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, -1, 32, -1, -1, -1, 36, - 37, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, - 32, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, -1, -1, -1, -1, -1, 31, 32 + 27, 28, 29, 30, 31, -1, 33, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, -1, 33, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, -1, 33, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, -1, 33, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, + 33, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, -1, -1, -1, -1, -1, -1, 32, 33 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 1, 38, 40, 53, 54, 55, 56, 43, 33, - 113, 114, 114, 0, 57, 3, 26, 27, 60, 61, - 64, 65, 72, 73, 78, 79, 92, 93, 101, 102, - 104, 115, 117, 59, 113, 39, 48, 41, 56, 32, - 55, 58, 4, 5, 6, 7, 8, 9, 10, 63, - 71, 77, 91, 103, 56, 113, 62, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 31, 32, 111, - 112, 43, 3, 4, 5, 6, 7, 8, 9, 10, + 0, 1, 40, 42, 55, 56, 57, 58, 45, 34, + 118, 119, 119, 0, 59, 3, 26, 27, 62, 63, + 66, 67, 76, 77, 82, 83, 97, 98, 106, 107, + 109, 120, 122, 61, 118, 41, 50, 43, 58, 33, + 57, 60, 4, 5, 6, 7, 8, 9, 10, 65, + 75, 81, 96, 108, 58, 118, 64, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 32, 33, 116, + 117, 45, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 32, 118, 32, 118, 32, 118, 32, 118, 49, 49, - 32, 44, 118, 12, 67, 74, 12, 81, 12, 96, - 105, 44, 51, 32, 31, 51, 32, 46, 56, 55, - 55, 32, 106, 107, 118, 111, 66, 44, 111, 13, - 82, 24, 95, 111, 94, 44, 56, 32, 46, 28, - 29, 33, 34, 35, 111, 116, 112, 112, 45, 48, - 44, 1, 55, 75, 95, 80, 48, 44, 106, 45, - 116, 50, 48, 106, 1, 55, 68, 43, 69, 76, - 84, 112, 45, 44, 95, 1, 55, 97, 45, 32, - 118, 55, 43, 70, 84, 45, 75, 46, 43, 32, - 118, 1, 55, 83, 43, 15, 30, 85, 86, 87, - 98, 112, 45, 112, 68, 43, 116, 75, 43, 84, - 87, 90, 112, 45, 97, 85, 36, 37, 1, 11, - 108, 109, 43, 50, 68, 83, 43, 36, 37, 47, - 55, 47, 48, 97, 32, 118, 83, 89, 69, 112, - 88, 108, 14, 110, 118, 110, 55, 99, 100, 111, - 118, 69, 112, 48, 118, 99 + 31, 33, 123, 33, 123, 33, 123, 33, 123, 51, + 51, 33, 46, 123, 12, 69, 78, 12, 85, 12, + 101, 110, 46, 53, 33, 32, 53, 33, 49, 58, + 57, 57, 33, 111, 112, 123, 116, 68, 46, 116, + 13, 86, 24, 100, 116, 99, 46, 58, 33, 49, + 28, 29, 34, 35, 36, 116, 121, 117, 117, 47, + 50, 46, 1, 57, 79, 100, 84, 50, 46, 111, + 47, 121, 52, 50, 111, 1, 57, 70, 45, 31, + 39, 71, 72, 80, 89, 117, 47, 46, 100, 1, + 57, 102, 47, 33, 123, 57, 45, 71, 72, 73, + 74, 88, 117, 47, 79, 35, 48, 116, 49, 71, + 117, 45, 33, 123, 1, 57, 87, 45, 15, 30, + 72, 90, 91, 92, 103, 117, 47, 117, 70, 71, + 49, 45, 123, 48, 48, 121, 49, 79, 45, 72, + 88, 92, 95, 117, 47, 102, 90, 117, 37, 38, + 1, 11, 113, 114, 45, 52, 121, 70, 121, 87, + 117, 45, 37, 38, 48, 57, 48, 50, 102, 33, + 123, 87, 94, 73, 117, 93, 113, 14, 115, 123, + 115, 57, 104, 105, 116, 123, 73, 117, 50, 123, + 104 }; #define yyerrok (yyerrstatus = 0) @@ -989,9 +1025,18 @@ static const yytype_uint8 yystos[] = /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ #define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -1048,7 +1093,7 @@ while (YYID (0)) we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ @@ -1786,16 +1831,16 @@ yyreduce: { case 2: -/* Line 1455 of yacc.c */ -#line 105 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 108 "../Slice/Grammar.y" { ;} break; case 3: -/* Line 1455 of yacc.c */ -#line 113 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 116 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (3)]); ;} @@ -1803,8 +1848,8 @@ yyreduce: case 4: -/* Line 1455 of yacc.c */ -#line 122 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 125 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (3)]); ;} @@ -1812,8 +1857,8 @@ yyreduce: case 5: -/* Line 1455 of yacc.c */ -#line 126 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 129 "../Slice/Grammar.y" { (yyval) = new StringListTok; ;} @@ -1821,8 +1866,8 @@ yyreduce: case 6: -/* Line 1455 of yacc.c */ -#line 135 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 138 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (1)])); if(!metaData->v.empty()) @@ -1834,8 +1879,8 @@ yyreduce: case 8: -/* Line 1455 of yacc.c */ -#line 144 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 147 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (2)])); ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -1848,8 +1893,8 @@ yyreduce: case 10: -/* Line 1455 of yacc.c */ -#line 154 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 157 "../Slice/Grammar.y" { yyerrok; ;} @@ -1857,8 +1902,8 @@ yyreduce: case 12: -/* Line 1455 of yacc.c */ -#line 159 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 162 "../Slice/Grammar.y" { unit->error("`;' missing after definition"); ;} @@ -1866,16 +1911,16 @@ yyreduce: case 13: -/* Line 1455 of yacc.c */ -#line 163 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 166 "../Slice/Grammar.y" { ;} break; case 14: -/* Line 1455 of yacc.c */ -#line 171 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 174 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ModulePtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1883,8 +1928,8 @@ yyreduce: case 15: -/* Line 1455 of yacc.c */ -#line 175 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 178 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ClassDeclPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1892,8 +1937,8 @@ yyreduce: case 16: -/* Line 1455 of yacc.c */ -#line 179 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 182 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ClassDefPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1901,8 +1946,8 @@ yyreduce: case 17: -/* Line 1455 of yacc.c */ -#line 183 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 186 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ClassDeclPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1910,8 +1955,8 @@ yyreduce: case 18: -/* Line 1455 of yacc.c */ -#line 187 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 190 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ClassDefPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1919,8 +1964,8 @@ yyreduce: case 19: -/* Line 1455 of yacc.c */ -#line 191 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 194 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0); ;} @@ -1928,8 +1973,8 @@ yyreduce: case 20: -/* Line 1455 of yacc.c */ -#line 195 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 198 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ExceptionPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1937,8 +1982,8 @@ yyreduce: case 21: -/* Line 1455 of yacc.c */ -#line 199 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 202 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0); ;} @@ -1946,8 +1991,8 @@ yyreduce: case 22: -/* Line 1455 of yacc.c */ -#line 203 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 206 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || StructPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1955,8 +2000,8 @@ yyreduce: case 23: -/* Line 1455 of yacc.c */ -#line 207 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 210 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || SequencePtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1964,8 +2009,8 @@ yyreduce: case 24: -/* Line 1455 of yacc.c */ -#line 211 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 214 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || DictionaryPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1973,8 +2018,8 @@ yyreduce: case 25: -/* Line 1455 of yacc.c */ -#line 215 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 218 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || EnumPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1982,8 +2027,8 @@ yyreduce: case 26: -/* Line 1455 of yacc.c */ -#line 219 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 222 "../Slice/Grammar.y" { assert((yyvsp[(1) - (1)]) == 0 || ConstPtr::dynamicCast((yyvsp[(1) - (1)]))); ;} @@ -1991,8 +2036,8 @@ yyreduce: case 27: -/* Line 1455 of yacc.c */ -#line 228 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 231 "../Slice/Grammar.y" { unit->setSeenDefinition(); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -2013,8 +2058,8 @@ yyreduce: case 28: -/* Line 1455 of yacc.c */ -#line 245 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 248 "../Slice/Grammar.y" { if((yyvsp[(3) - (6)])) { @@ -2030,8 +2075,8 @@ yyreduce: case 29: -/* Line 1455 of yacc.c */ -#line 262 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 265 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} @@ -2039,8 +2084,8 @@ yyreduce: case 30: -/* Line 1455 of yacc.c */ -#line 266 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 269 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); unit->error("keyword `" + ident->v + "' cannot be used as exception name"); @@ -2050,8 +2095,8 @@ yyreduce: case 31: -/* Line 1455 of yacc.c */ -#line 277 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 280 "../Slice/Grammar.y" { unit->error("exceptions cannot be forward declared"); (yyval) = 0; @@ -2060,8 +2105,8 @@ yyreduce: case 32: -/* Line 1455 of yacc.c */ -#line 287 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 290 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (3)])); @@ -2079,8 +2124,8 @@ yyreduce: case 33: -/* Line 1455 of yacc.c */ -#line 301 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 304 "../Slice/Grammar.y" { if((yyvsp[(4) - (7)])) { @@ -2092,8 +2137,8 @@ yyreduce: case 34: -/* Line 1455 of yacc.c */ -#line 314 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 317 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); ContainerPtr cont = unit->currentContainer(); @@ -2105,8 +2150,8 @@ yyreduce: case 35: -/* Line 1455 of yacc.c */ -#line 322 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 325 "../Slice/Grammar.y" { (yyval) = 0; ;} @@ -2114,8 +2159,8 @@ yyreduce: case 36: -/* Line 1455 of yacc.c */ -#line 331 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 334 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)])); ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)])); @@ -2128,16 +2173,16 @@ yyreduce: case 37: -/* Line 1455 of yacc.c */ -#line 340 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 343 "../Slice/Grammar.y" { ;} break; case 38: -/* Line 1455 of yacc.c */ -#line 343 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 346 "../Slice/Grammar.y" { unit->error("`;' missing after definition"); ;} @@ -2145,16 +2190,16 @@ yyreduce: case 39: -/* Line 1455 of yacc.c */ -#line 347 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 350 "../Slice/Grammar.y" { ;} break; case 40: -/* Line 1455 of yacc.c */ -#line 355 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 358 "../Slice/Grammar.y" { TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (2)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -2164,19 +2209,173 @@ yyreduce: ;} break; + case 41: + +/* Line 1464 of yacc.c */ +#line 371 "../Slice/Grammar.y" + { + IntegerTokPtr i = IntegerTokPtr::dynamicCast((yyvsp[(2) - (3)])); + + int tag; + if(i->v < 0 || i->v > Int32Max) + { + unit->error("tag for optional is out of range"); + tag = -1; + } + else + { + tag = static_cast<int>(i->v); + } + + OptionalDefTokPtr m = new OptionalDefTok; + m->v.optional = tag >= 0; + m->v.tag = tag; + (yyval) = m; +;} + break; + case 42: -/* Line 1455 of yacc.c */ -#line 374 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 391 "../Slice/Grammar.y" { - (yyval) = (yyvsp[(2) - (2)]); + StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(2) - (3)])); + + ContainerPtr cont = unit->currentContainer(); + assert(cont); + ContainedList cl = cont->lookupContained(scoped->v); + if(cl.empty()) + { + YYERROR; // Can't continue, jump to next yyerrok + } + cont->checkIntroduced(scoped->v); + + int tag = -1; + EnumeratorPtr enumerator = EnumeratorPtr::dynamicCast(cl.front()); + ConstPtr constant = ConstPtr::dynamicCast(cl.front()); + if(constant) + { + BuiltinPtr b = BuiltinPtr::dynamicCast(constant->type()); + if(b) + { + switch(b->kind()) + { + case Builtin::KindByte: + case Builtin::KindShort: + case Builtin::KindInt: + case Builtin::KindLong: + { + IceUtil::Int64 l = IceUtilInternal::strToInt64(constant->value().c_str(), 0, 0); + if(l < 0 || l > Int32Max) + { + unit->error("tag for optional is out of range"); + } + tag = static_cast<int>(l); + break; + } + default: + break; + } + } + } + else if(enumerator) + { + // + // TODO: When this code is merged with ICE-4619, we need to fix the + // loop below to consider the enumerator's value instead of its ordinal + // position. + // + EnumeratorList el = enumerator->type()->getEnumerators(); + int i = 0; + for(EnumeratorList::iterator p = el.begin(); p != el.end(); ++p, ++i) + { + if(enumerator == *p) + { + break; + } + } + tag = i; + } + + if(tag < 0) + { + unit->error("invalid tag `" + scoped->v + "' for optional"); + } + + OptionalDefTokPtr m = new OptionalDefTok; + m->v.optional = tag >= 0; + m->v.tag = tag; + (yyval) = m; ;} break; case 43: -/* Line 1455 of yacc.c */ -#line 378 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 461 "../Slice/Grammar.y" + { + unit->error("missing tag for optional"); + OptionalDefTokPtr m = new OptionalDefTok; // Dummy + m->v.optional = false; + m->v.tag = -1; + (yyval) = m; +;} + break; + + case 44: + +/* Line 1464 of yacc.c */ +#line 469 "../Slice/Grammar.y" + { + unit->error("missing tag for optional"); + OptionalDefTokPtr m = new OptionalDefTok; // Dummy + m->v.optional = false; + m->v.tag = -1; + (yyval) = m; +;} + break; + + case 45: + +/* Line 1464 of yacc.c */ +#line 482 "../Slice/Grammar.y" + { + OptionalDefTokPtr m = OptionalDefTokPtr::dynamicCast((yyvsp[(1) - (2)])); + TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast((yyvsp[(2) - (2)])); + m->v.type = ts->v.first; + m->v.name = ts->v.second; + (yyval) = m; +;} + break; + + case 46: + +/* Line 1464 of yacc.c */ +#line 490 "../Slice/Grammar.y" + { + TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (1)])); + OptionalDefTokPtr m = new OptionalDefTok; + m->v.type = ts->v.first; + m->v.name = ts->v.second; + m->v.optional = false; + m->v.tag = -1; + (yyval) = m; +;} + break; + + case 48: + +/* Line 1464 of yacc.c */ +#line 511 "../Slice/Grammar.y" + { + (yyval) = (yyvsp[(2) - (2)]); +;} + break; + + case 49: + +/* Line 1464 of yacc.c */ +#line 515 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); unit->error("keyword `" + ident->v + "' cannot be used as struct name"); @@ -2184,20 +2383,20 @@ yyreduce: ;} break; - case 44: + case 50: -/* Line 1455 of yacc.c */ -#line 389 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 526 "../Slice/Grammar.y" { unit->error("structs cannot be forward declared"); (yyval) = 0; // Dummy ;} break; - case 45: + case 51: -/* Line 1455 of yacc.c */ -#line 399 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 536 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -2212,10 +2411,10 @@ yyreduce: ;} break; - case 46: + case 52: -/* Line 1455 of yacc.c */ -#line 412 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 549 "../Slice/Grammar.y" { if((yyvsp[(3) - (6)])) { @@ -2235,10 +2434,10 @@ yyreduce: ;} break; - case 47: + case 53: -/* Line 1455 of yacc.c */ -#line 435 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 572 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)])); ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)])); @@ -2249,44 +2448,44 @@ yyreduce: ;} break; - case 48: + case 54: -/* Line 1455 of yacc.c */ -#line 444 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 581 "../Slice/Grammar.y" { ;} break; - case 49: + case 55: -/* Line 1455 of yacc.c */ -#line 447 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 584 "../Slice/Grammar.y" { unit->error("`;' missing after definition"); ;} break; - case 50: + case 56: -/* Line 1455 of yacc.c */ -#line 451 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 588 "../Slice/Grammar.y" { ;} break; - case 52: + case 58: -/* Line 1455 of yacc.c */ -#line 465 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 602 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; - case 53: + case 59: -/* Line 1455 of yacc.c */ -#line 469 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 606 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); unit->error("keyword `" + ident->v + "' cannot be used as class name"); @@ -2294,10 +2493,10 @@ yyreduce: ;} break; - case 54: + case 60: -/* Line 1455 of yacc.c */ -#line 480 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 617 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -2307,10 +2506,10 @@ yyreduce: ;} break; - case 55: + case 61: -/* Line 1455 of yacc.c */ -#line 493 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 630 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (4)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (4)])); @@ -2335,10 +2534,10 @@ yyreduce: ;} break; - case 56: + case 62: -/* Line 1455 of yacc.c */ -#line 516 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 653 "../Slice/Grammar.y" { if((yyvsp[(5) - (8)])) { @@ -2352,10 +2551,10 @@ yyreduce: ;} break; - case 57: + case 63: -/* Line 1455 of yacc.c */ -#line 533 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 670 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); ContainerPtr cont = unit->currentContainer(); @@ -2391,37 +2590,37 @@ yyreduce: ;} break; - case 58: + case 64: -/* Line 1455 of yacc.c */ -#line 567 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 704 "../Slice/Grammar.y" { (yyval) = 0; ;} break; - case 59: + case 65: -/* Line 1455 of yacc.c */ -#line 576 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 713 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; - case 60: + case 66: -/* Line 1455 of yacc.c */ -#line 580 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 717 "../Slice/Grammar.y" { (yyval) = new ClassListTok; ;} break; - case 61: + case 67: -/* Line 1455 of yacc.c */ -#line 589 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 726 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)])); ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)])); @@ -2432,162 +2631,277 @@ yyreduce: ;} break; - case 62: + case 68: -/* Line 1455 of yacc.c */ -#line 598 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 735 "../Slice/Grammar.y" { ;} break; - case 63: + case 69: -/* Line 1455 of yacc.c */ -#line 601 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 738 "../Slice/Grammar.y" { unit->error("`;' missing after definition"); ;} break; - case 64: + case 70: -/* Line 1455 of yacc.c */ -#line 605 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 742 "../Slice/Grammar.y" { ;} break; - case 65: + case 71: -/* Line 1455 of yacc.c */ -#line 613 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 750 "../Slice/Grammar.y" { - TypePtr type = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (1)]))->v.first; - string name = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (1)]))->v.second; + OptionalDefTokPtr def = OptionalDefTokPtr::dynamicCast((yyvsp[(1) - (1)])); ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); DataMemberPtr dm; if(cl) { - dm = cl->createDataMember(name, type, 0, "", ""); + dm = cl->createDataMember(def->v.name, def->v.type, def->v.optional, def->v.tag, 0, "", ""); } StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); if(st) { - dm = st->createDataMember(name, type, 0, "", ""); + dm = st->createDataMember(def->v.name, def->v.type, def->v.optional, def->v.tag, 0, "", ""); } ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); if(ex) { - dm = ex->createDataMember(name, type, 0, "", ""); + dm = ex->createDataMember(def->v.name, def->v.type, def->v.optional, def->v.tag, 0, "", ""); } - unit->currentContainer()->checkIntroduced(name, dm); + unit->currentContainer()->checkIntroduced(def->v.name, dm); (yyval) = dm; ;} break; - case 66: + case 72: -/* Line 1455 of yacc.c */ -#line 636 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 772 "../Slice/Grammar.y" { - TypePtr type = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (3)]))->v.first; - string name = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (3)]))->v.second; + OptionalDefTokPtr def = OptionalDefTokPtr::dynamicCast((yyvsp[(1) - (3)])); ConstDefTokPtr value = ConstDefTokPtr::dynamicCast((yyvsp[(3) - (3)])); ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); DataMemberPtr dm; if(cl) { - dm = cl->createDataMember(name, type, value->v.value, value->v.valueAsString, value->v.valueAsLiteral); + dm = cl->createDataMember(def->v.name, def->v.type, def->v.optional, def->v.tag, value->v.value, + value->v.valueAsString, value->v.valueAsLiteral); } StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); if(st) { - dm = st->createDataMember(name, type, value->v.value, value->v.valueAsString, value->v.valueAsLiteral); + dm = st->createDataMember(def->v.name, def->v.type, def->v.optional, def->v.tag, value->v.value, + value->v.valueAsString, value->v.valueAsLiteral); } ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); if(ex) { - dm = ex->createDataMember(name, type, value->v.value, value->v.valueAsString, value->v.valueAsLiteral); + dm = ex->createDataMember(def->v.name, def->v.type, def->v.optional, def->v.tag, value->v.value, + value->v.valueAsString, value->v.valueAsLiteral); } - unit->currentContainer()->checkIntroduced(name, dm); + unit->currentContainer()->checkIntroduced(def->v.name, dm); (yyval) = dm; ;} break; - case 67: + case 73: -/* Line 1455 of yacc.c */ -#line 661 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 799 "../Slice/Grammar.y" { TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (2)])); string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v; ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); if(cl) { - (yyval) = cl->createDataMember(name, type, 0, "", ""); // Dummy + (yyval) = cl->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); if(st) { - (yyval) = st->createDataMember(name, type, 0, "", ""); // Dummy + (yyval) = st->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); if(ex) { - (yyval) = ex->createDataMember(name, type, 0, "", ""); // Dummy + (yyval) = ex->createDataMember(name, type, false, 0, 0, "", ""); // Dummy } assert((yyval)); unit->error("keyword `" + name + "' cannot be used as data member name"); ;} break; - case 68: + case 74: -/* Line 1455 of yacc.c */ -#line 683 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 821 "../Slice/Grammar.y" { TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (1)])); ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); if(cl) { - (yyval) = cl->createDataMember(IceUtil::generateUUID(), type, 0, "", ""); // Dummy + (yyval) = cl->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); if(st) { - (yyval) = st->createDataMember(IceUtil::generateUUID(), type, 0, "", ""); // Dummy + (yyval) = st->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer()); if(ex) { - (yyval) = ex->createDataMember(IceUtil::generateUUID(), type, 0, "", ""); // Dummy + (yyval) = ex->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy } assert((yyval)); unit->error("missing data member name"); ;} break; - case 70: + case 75: -/* Line 1455 of yacc.c */ -#line 710 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 847 "../Slice/Grammar.y" { - (yyval) = 0; + TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (1)])); + StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + assert(st); + DataMemberPtr dm = st->createDataMember(ts->v.second, ts->v.first, false, -1, 0, "", ""); + unit->currentContainer()->checkIntroduced(ts->v.second, dm); + (yyval) = dm; ;} break; - case 71: + case 76: + +/* Line 1464 of yacc.c */ +#line 856 "../Slice/Grammar.y" + { + TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (3)])); + ConstDefTokPtr value = ConstDefTokPtr::dynamicCast((yyvsp[(3) - (3)])); + StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + assert(st); + DataMemberPtr dm = st->createDataMember(ts->v.second, ts->v.first, false, -1, value->v.value, + value->v.valueAsString, value->v.valueAsLiteral); + unit->currentContainer()->checkIntroduced(ts->v.second, dm); + (yyval) = dm; +;} + break; + + case 77: + +/* Line 1464 of yacc.c */ +#line 867 "../Slice/Grammar.y" + { + TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast((yyvsp[(2) - (2)])); + StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + assert(st); + (yyval) = st->createDataMember(ts->v.second, ts->v.first, false, 0, 0, "", ""); // Dummy + assert((yyval)); + unit->error("optional data members not supported in struct"); +;} + break; + + case 78: + +/* Line 1464 of yacc.c */ +#line 876 "../Slice/Grammar.y" + { + TypeStringTokPtr ts = TypeStringTokPtr::dynamicCast((yyvsp[(2) - (4)])); + StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + assert(st); + (yyval) = st->createDataMember(ts->v.second, ts->v.first, false, 0, 0, "", ""); // Dummy + assert((yyval)); + unit->error("optional data members not supported in struct"); +;} + break; + + case 79: -/* Line 1455 of yacc.c */ -#line 719 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 885 "../Slice/Grammar.y" { - TypePtr returnType = TypePtr::dynamicCast((yyvsp[(1) - (2)])); + TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (2)])); + string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v; + StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + assert(st); + (yyval) = st->createDataMember(name, type, false, 0, 0, "", ""); // Dummy + assert((yyval)); + unit->error("keyword `" + name + "' cannot be used as data member name"); +;} + break; + + case 80: + +/* Line 1464 of yacc.c */ +#line 895 "../Slice/Grammar.y" + { + TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (1)])); + StructPtr st = StructPtr::dynamicCast(unit->currentContainer()); + assert(st); + (yyval) = st->createDataMember(IceUtil::generateUUID(), type, false, 0, 0, "", ""); // Dummy + assert((yyval)); + unit->error("missing data member name"); +;} + break; + + case 81: + +/* Line 1464 of yacc.c */ +#line 909 "../Slice/Grammar.y" + { + OptionalDefTokPtr m = OptionalDefTokPtr::dynamicCast((yyvsp[(1) - (2)])); + m->v.type = TypePtr::dynamicCast((yyvsp[(2) - (2)])); + (yyval) = m; +;} + break; + + case 82: + +/* Line 1464 of yacc.c */ +#line 915 "../Slice/Grammar.y" + { + OptionalDefTokPtr m = new OptionalDefTok(); + m->v.type = TypePtr::dynamicCast((yyvsp[(1) - (1)])); + m->v.optional = false; + m->v.tag = -1; + (yyval) = m; +;} + break; + + case 83: + +/* Line 1464 of yacc.c */ +#line 923 "../Slice/Grammar.y" + { + OptionalDefTokPtr m = new OptionalDefTok; + m->v.optional = false; + m->v.tag = -1; + (yyval) = m; +;} + break; + + case 84: + +/* Line 1464 of yacc.c */ +#line 935 "../Slice/Grammar.y" + { + OptionalDefTokPtr returnType = OptionalDefTokPtr::dynamicCast((yyvsp[(1) - (2)])); string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v; ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); if(cl) { - OperationPtr op = cl->createOperation(name, returnType); + OperationPtr op = cl->createOperation(name, returnType->v.type, returnType->v.optional, returnType->v.tag); if(op) { cl->checkIntroduced(name, op); @@ -2606,17 +2920,18 @@ yyreduce: ;} break; - case 72: + case 85: -/* Line 1455 of yacc.c */ -#line 743 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 959 "../Slice/Grammar.y" { - TypePtr returnType = TypePtr::dynamicCast((yyvsp[(2) - (3)])); + OptionalDefTokPtr returnType = OptionalDefTokPtr::dynamicCast((yyvsp[(2) - (3)])); string name = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v; ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); if(cl) { - OperationPtr op = cl->createOperation(name, returnType, Operation::Idempotent); + OperationPtr op = cl->createOperation(name, returnType->v.type, returnType->v.optional, returnType->v.tag, + Operation::Idempotent); if(op) { cl->checkIntroduced(name, op); @@ -2635,17 +2950,17 @@ yyreduce: ;} break; - case 73: + case 86: -/* Line 1455 of yacc.c */ -#line 767 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 984 "../Slice/Grammar.y" { - TypePtr returnType = TypePtr::dynamicCast((yyvsp[(1) - (2)])); + OptionalDefTokPtr returnType = OptionalDefTokPtr::dynamicCast((yyvsp[(1) - (2)])); string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v; ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); if(cl) { - OperationPtr op = cl->createOperation(name, returnType); + OperationPtr op = cl->createOperation(name, returnType->v.type, returnType->v.optional, returnType->v.tag); if(op) { unit->pushContainer(op); @@ -2664,17 +2979,18 @@ yyreduce: ;} break; - case 74: + case 87: -/* Line 1455 of yacc.c */ -#line 791 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1008 "../Slice/Grammar.y" { - TypePtr returnType = TypePtr::dynamicCast((yyvsp[(2) - (3)])); + OptionalDefTokPtr returnType = OptionalDefTokPtr::dynamicCast((yyvsp[(2) - (3)])); string name = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v; ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer()); if(cl) { - OperationPtr op = cl->createOperation(name, returnType, Operation::Idempotent); + OperationPtr op = cl->createOperation(name, returnType->v.type, returnType->v.optional, returnType->v.tag, + Operation::Idempotent); if(op) { unit->pushContainer(op); @@ -2693,10 +3009,10 @@ yyreduce: ;} break; - case 75: + case 88: -/* Line 1455 of yacc.c */ -#line 820 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1038 "../Slice/Grammar.y" { if((yyvsp[(1) - (3)])) { @@ -2710,10 +3026,10 @@ yyreduce: ;} break; - case 76: + case 89: -/* Line 1455 of yacc.c */ -#line 832 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1050 "../Slice/Grammar.y" { OperationPtr op = OperationPtr::dynamicCast((yyvsp[(4) - (5)])); ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast((yyvsp[(5) - (5)])); @@ -2725,10 +3041,10 @@ yyreduce: ;} break; - case 77: + case 90: -/* Line 1455 of yacc.c */ -#line 842 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1060 "../Slice/Grammar.y" { if((yyvsp[(1) - (3)])) { @@ -2738,10 +3054,10 @@ yyreduce: ;} break; - case 78: + case 91: -/* Line 1455 of yacc.c */ -#line 850 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1068 "../Slice/Grammar.y" { OperationPtr op = OperationPtr::dynamicCast((yyvsp[(4) - (5)])); ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast((yyvsp[(5) - (5)])); @@ -2753,19 +3069,19 @@ yyreduce: ;} break; - case 81: + case 94: -/* Line 1455 of yacc.c */ -#line 872 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1090 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; - case 82: + case 95: -/* Line 1455 of yacc.c */ -#line 876 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1094 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); unit->error("keyword `" + ident->v + "' cannot be used as interface name"); @@ -2773,10 +3089,10 @@ yyreduce: ;} break; - case 83: + case 96: -/* Line 1455 of yacc.c */ -#line 887 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1105 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -2787,10 +3103,10 @@ yyreduce: ;} break; - case 84: + case 97: -/* Line 1455 of yacc.c */ -#line 901 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1119 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (3)])); @@ -2810,10 +3126,10 @@ yyreduce: ;} break; - case 85: + case 98: -/* Line 1455 of yacc.c */ -#line 919 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1137 "../Slice/Grammar.y" { if((yyvsp[(4) - (7)])) { @@ -2827,10 +3143,10 @@ yyreduce: ;} break; - case 86: + case 99: -/* Line 1455 of yacc.c */ -#line 936 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1154 "../Slice/Grammar.y" { ClassListTokPtr intfs = ClassListTokPtr::dynamicCast((yyvsp[(3) - (3)])); StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (3)])); @@ -2867,10 +3183,10 @@ yyreduce: ;} break; - case 87: + case 100: -/* Line 1455 of yacc.c */ -#line 971 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1189 "../Slice/Grammar.y" { ClassListTokPtr intfs = new ClassListTok; StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); @@ -2907,38 +3223,38 @@ yyreduce: ;} break; - case 88: + case 101: -/* Line 1455 of yacc.c */ -#line 1006 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1224 "../Slice/Grammar.y" { unit->error("illegal inheritance from type Object"); (yyval) = new ClassListTok; // Dummy ;} break; - case 89: + case 102: -/* Line 1455 of yacc.c */ -#line 1016 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1234 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; - case 90: + case 103: -/* Line 1455 of yacc.c */ -#line 1020 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1238 "../Slice/Grammar.y" { (yyval) = new ClassListTok; ;} break; - case 91: + case 104: -/* Line 1455 of yacc.c */ -#line 1029 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1247 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)])); ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)])); @@ -2949,35 +3265,35 @@ yyreduce: ;} break; - case 92: + case 105: -/* Line 1455 of yacc.c */ -#line 1038 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1256 "../Slice/Grammar.y" { ;} break; - case 93: + case 106: -/* Line 1455 of yacc.c */ -#line 1041 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1259 "../Slice/Grammar.y" { unit->error("`;' missing after definition"); ;} break; - case 94: + case 107: -/* Line 1455 of yacc.c */ -#line 1045 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1263 "../Slice/Grammar.y" { ;} break; - case 96: + case 109: -/* Line 1455 of yacc.c */ -#line 1059 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1277 "../Slice/Grammar.y" { ExceptionPtr exception = ExceptionPtr::dynamicCast((yyvsp[(1) - (3)])); ExceptionListTokPtr exceptionList = ExceptionListTokPtr::dynamicCast((yyvsp[(3) - (3)])); @@ -2986,10 +3302,10 @@ yyreduce: ;} break; - case 97: + case 110: -/* Line 1455 of yacc.c */ -#line 1066 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1284 "../Slice/Grammar.y" { ExceptionPtr exception = ExceptionPtr::dynamicCast((yyvsp[(1) - (1)])); ExceptionListTokPtr exceptionList = new ExceptionListTok; @@ -2998,10 +3314,10 @@ yyreduce: ;} break; - case 98: + case 111: -/* Line 1455 of yacc.c */ -#line 1078 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1296 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); ContainerPtr cont = unit->currentContainer(); @@ -3015,10 +3331,10 @@ yyreduce: ;} break; - case 99: + case 112: -/* Line 1455 of yacc.c */ -#line 1090 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1308 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); unit->error("keyword `" + ident->v + "' cannot be used as exception name"); @@ -3026,10 +3342,10 @@ yyreduce: ;} break; - case 100: + case 113: -/* Line 1455 of yacc.c */ -#line 1101 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1319 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (7)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(7) - (7)])); @@ -3040,10 +3356,10 @@ yyreduce: ;} break; - case 101: + case 114: -/* Line 1455 of yacc.c */ -#line 1110 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1328 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (7)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(7) - (7)])); @@ -3055,10 +3371,10 @@ yyreduce: ;} break; - case 102: + case 115: -/* Line 1455 of yacc.c */ -#line 1125 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1343 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (10)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(10) - (10)])); @@ -3071,10 +3387,10 @@ yyreduce: ;} break; - case 103: + case 116: -/* Line 1455 of yacc.c */ -#line 1136 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1354 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (10)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(10) - (10)])); @@ -3088,19 +3404,19 @@ yyreduce: ;} break; - case 104: + case 117: -/* Line 1455 of yacc.c */ -#line 1153 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1371 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; - case 105: + case 118: -/* Line 1455 of yacc.c */ -#line 1157 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1375 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); unit->error("keyword `" + ident->v + "' cannot be used as enumeration name"); @@ -3108,10 +3424,10 @@ yyreduce: ;} break; - case 106: + case 119: -/* Line 1455 of yacc.c */ -#line 1168 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1386 "../Slice/Grammar.y" { BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -3122,10 +3438,10 @@ yyreduce: ;} break; - case 107: + case 120: -/* Line 1455 of yacc.c */ -#line 1177 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1395 "../Slice/Grammar.y" { EnumPtr en = EnumPtr::dynamicCast((yyvsp[(3) - (6)])); if(en) @@ -3141,10 +3457,10 @@ yyreduce: ;} break; - case 108: + case 121: -/* Line 1455 of yacc.c */ -#line 1192 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1410 "../Slice/Grammar.y" { unit->error("missing enumeration name"); BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (5)])); @@ -3156,10 +3472,10 @@ yyreduce: ;} break; - case 109: + case 122: -/* Line 1455 of yacc.c */ -#line 1207 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1425 "../Slice/Grammar.y" { EnumeratorListTokPtr ens = EnumeratorListTokPtr::dynamicCast((yyvsp[(1) - (3)])); ens->v.splice(ens->v.end(), EnumeratorListTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v); @@ -3167,18 +3483,18 @@ yyreduce: ;} break; - case 110: + case 123: -/* Line 1455 of yacc.c */ -#line 1213 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1431 "../Slice/Grammar.y" { ;} break; - case 111: + case 124: -/* Line 1455 of yacc.c */ -#line 1221 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1439 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); EnumeratorListTokPtr ens = new EnumeratorListTok; @@ -3192,10 +3508,10 @@ yyreduce: ;} break; - case 112: + case 125: -/* Line 1455 of yacc.c */ -#line 1233 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1451 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); unit->error("keyword `" + ident->v + "' cannot be used as enumerator"); @@ -3204,20 +3520,20 @@ yyreduce: ;} break; - case 113: + case 126: -/* Line 1455 of yacc.c */ -#line 1240 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1458 "../Slice/Grammar.y" { EnumeratorListTokPtr ens = new EnumeratorListTok; (yyval) = ens; // Dummy ;} break; - case 114: + case 127: -/* Line 1455 of yacc.c */ -#line 1250 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1468 "../Slice/Grammar.y" { BoolTokPtr out = new BoolTok; out->v = true; @@ -3225,10 +3541,10 @@ yyreduce: ;} break; - case 115: + case 128: -/* Line 1455 of yacc.c */ -#line 1256 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1474 "../Slice/Grammar.y" { BoolTokPtr out = new BoolTok; out->v = false; @@ -3236,28 +3552,26 @@ yyreduce: ;} break; - case 116: + case 129: -/* Line 1455 of yacc.c */ -#line 1267 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1485 "../Slice/Grammar.y" { ;} break; - case 117: + case 130: -/* Line 1455 of yacc.c */ -#line 1270 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1488 "../Slice/Grammar.y" { BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)])); - TypeStringTokPtr tsp = TypeStringTokPtr::dynamicCast((yyvsp[(3) - (3)])); - TypePtr type = tsp->v.first; - string ident = tsp->v.second; + OptionalDefTokPtr tsp = OptionalDefTokPtr::dynamicCast((yyvsp[(3) - (3)])); OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); if(op) { - ParamDeclPtr pd = op->createParamDecl(ident, type, isOutParam->v); - unit->currentContainer()->checkIntroduced(ident, pd); + ParamDeclPtr pd = op->createParamDecl(tsp->v.name, tsp->v.type, isOutParam->v, tsp->v.optional, tsp->v.tag); + unit->currentContainer()->checkIntroduced(tsp->v.name, pd); StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(2) - (3)])); if(!metaData->v.empty()) { @@ -3267,20 +3581,18 @@ yyreduce: ;} break; - case 118: + case 131: -/* Line 1455 of yacc.c */ -#line 1288 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1504 "../Slice/Grammar.y" { BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(3) - (5)])); - TypeStringTokPtr tsp = TypeStringTokPtr::dynamicCast((yyvsp[(5) - (5)])); - TypePtr type = tsp->v.first; - string ident = tsp->v.second; + OptionalDefTokPtr tsp = OptionalDefTokPtr::dynamicCast((yyvsp[(5) - (5)])); OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); if(op) { - ParamDeclPtr pd = op->createParamDecl(ident, type, isOutParam->v); - unit->currentContainer()->checkIntroduced(ident, pd); + ParamDeclPtr pd = op->createParamDecl(tsp->v.name, tsp->v.type, isOutParam->v, tsp->v.optional, tsp->v.tag); + unit->currentContainer()->checkIntroduced(tsp->v.name, pd); StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(4) - (5)])); if(!metaData->v.empty()) { @@ -3290,10 +3602,10 @@ yyreduce: ;} break; - case 119: + case 132: -/* Line 1455 of yacc.c */ -#line 1306 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1520 "../Slice/Grammar.y" { BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(1) - (4)])); TypePtr type = TypePtr::dynamicCast((yyvsp[(3) - (4)])); @@ -3301,16 +3613,16 @@ yyreduce: OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); if(op) { - op->createParamDecl(ident->v, type, isOutParam->v); // Dummy + op->createParamDecl(ident->v, type, isOutParam->v, false, 0); // Dummy unit->error("keyword `" + ident->v + "' cannot be used as parameter name"); } ;} break; - case 120: + case 133: -/* Line 1455 of yacc.c */ -#line 1318 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1532 "../Slice/Grammar.y" { BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(3) - (6)])); TypePtr type = TypePtr::dynamicCast((yyvsp[(5) - (6)])); @@ -3318,74 +3630,74 @@ yyreduce: OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); if(op) { - op->createParamDecl(ident->v, type, isOutParam->v); // Dummy + op->createParamDecl(ident->v, type, isOutParam->v, false, 0); // Dummy unit->error("keyword `" + ident->v + "' cannot be used as parameter name"); } ;} break; - case 121: + case 134: -/* Line 1455 of yacc.c */ -#line 1330 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1544 "../Slice/Grammar.y" { BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)])); TypePtr type = TypePtr::dynamicCast((yyvsp[(3) - (3)])); OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); if(op) { - op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v); // Dummy + op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v, false, 0); // Dummy unit->error("missing parameter name"); } ;} break; - case 122: + case 135: -/* Line 1455 of yacc.c */ -#line 1341 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1555 "../Slice/Grammar.y" { BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(3) - (5)])); TypePtr type = TypePtr::dynamicCast((yyvsp[(5) - (5)])); OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer()); if(op) { - op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v); // Dummy + op->createParamDecl(IceUtil::generateUUID(), type, isOutParam->v, false, 0); // Dummy unit->error("missing parameter name"); } ;} break; - case 123: + case 136: -/* Line 1455 of yacc.c */ -#line 1357 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1571 "../Slice/Grammar.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; - case 124: + case 137: -/* Line 1455 of yacc.c */ -#line 1361 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1575 "../Slice/Grammar.y" { (yyval) = new ExceptionListTok; ;} break; - case 125: + case 138: -/* Line 1455 of yacc.c */ -#line 1370 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1584 "../Slice/Grammar.y" { ;} break; - case 126: + case 139: -/* Line 1455 of yacc.c */ -#line 1373 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1587 "../Slice/Grammar.y" { StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); ident->v = "::" + ident->v; @@ -3393,10 +3705,10 @@ yyreduce: ;} break; - case 127: + case 140: -/* Line 1455 of yacc.c */ -#line 1379 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1593 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (3)])); StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(3) - (3)])); @@ -3406,109 +3718,109 @@ yyreduce: ;} break; - case 128: + case 141: -/* Line 1455 of yacc.c */ -#line 1392 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1606 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindByte); ;} break; - case 129: + case 142: -/* Line 1455 of yacc.c */ -#line 1396 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1610 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindBool); ;} break; - case 130: + case 143: -/* Line 1455 of yacc.c */ -#line 1400 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1614 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindShort); ;} break; - case 131: + case 144: -/* Line 1455 of yacc.c */ -#line 1404 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1618 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindInt); ;} break; - case 132: + case 145: -/* Line 1455 of yacc.c */ -#line 1408 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1622 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindLong); ;} break; - case 133: + case 146: -/* Line 1455 of yacc.c */ -#line 1412 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1626 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindFloat); ;} break; - case 134: + case 147: -/* Line 1455 of yacc.c */ -#line 1416 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1630 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindDouble); ;} break; - case 135: + case 148: -/* Line 1455 of yacc.c */ -#line 1420 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1634 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindString); ;} break; - case 136: + case 149: -/* Line 1455 of yacc.c */ -#line 1424 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1638 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindObject); ;} break; - case 137: + case 150: -/* Line 1455 of yacc.c */ -#line 1428 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1642 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindObjectProxy); ;} break; - case 138: + case 151: -/* Line 1455 of yacc.c */ -#line 1432 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1646 "../Slice/Grammar.y" { (yyval) = unit->builtin(Builtin::KindLocalObject); ;} break; - case 139: + case 152: -/* Line 1455 of yacc.c */ -#line 1436 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1650 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); ContainerPtr cont = unit->currentContainer(); @@ -3529,10 +3841,10 @@ yyreduce: ;} break; - case 140: + case 153: -/* Line 1455 of yacc.c */ -#line 1455 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1669 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (2)])); ContainerPtr cont = unit->currentContainer(); @@ -3570,10 +3882,10 @@ yyreduce: ;} break; - case 141: + case 154: -/* Line 1455 of yacc.c */ -#line 1496 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1710 "../Slice/Grammar.y" { StringTokPtr str1 = StringTokPtr::dynamicCast((yyvsp[(1) - (2)])); StringTokPtr str2 = StringTokPtr::dynamicCast((yyvsp[(2) - (2)])); @@ -3581,18 +3893,18 @@ yyreduce: ;} break; - case 142: + case 155: -/* Line 1455 of yacc.c */ -#line 1502 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1716 "../Slice/Grammar.y" { ;} break; - case 143: + case 156: -/* Line 1455 of yacc.c */ -#line 1510 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1724 "../Slice/Grammar.y" { StringTokPtr str = StringTokPtr::dynamicCast((yyvsp[(3) - (3)])); StringListTokPtr stringList = StringListTokPtr::dynamicCast((yyvsp[(1) - (3)])); @@ -3601,10 +3913,10 @@ yyreduce: ;} break; - case 144: + case 157: -/* Line 1455 of yacc.c */ -#line 1517 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1731 "../Slice/Grammar.y" { StringTokPtr str = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); StringListTokPtr stringList = new StringListTok; @@ -3613,10 +3925,10 @@ yyreduce: ;} break; - case 145: + case 158: -/* Line 1455 of yacc.c */ -#line 1529 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1743 "../Slice/Grammar.y" { BoolTokPtr local = new BoolTok; local->v = true; @@ -3624,10 +3936,10 @@ yyreduce: ;} break; - case 146: + case 159: -/* Line 1455 of yacc.c */ -#line 1535 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1749 "../Slice/Grammar.y" { BoolTokPtr local = new BoolTok; local->v = false; @@ -3635,10 +3947,10 @@ yyreduce: ;} break; - case 147: + case 160: -/* Line 1455 of yacc.c */ -#line 1546 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1760 "../Slice/Grammar.y" { BuiltinPtr type = unit->builtin(Builtin::KindLong); IntegerTokPtr intVal = IntegerTokPtr::dynamicCast((yyvsp[(1) - (1)])); @@ -3653,10 +3965,10 @@ yyreduce: ;} break; - case 148: + case 161: -/* Line 1455 of yacc.c */ -#line 1559 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1773 "../Slice/Grammar.y" { BuiltinPtr type = unit->builtin(Builtin::KindDouble); FloatingTokPtr floatVal = FloatingTokPtr::dynamicCast((yyvsp[(1) - (1)])); @@ -3671,10 +3983,10 @@ yyreduce: ;} break; - case 149: + case 162: -/* Line 1455 of yacc.c */ -#line 1572 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1786 "../Slice/Grammar.y" { StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); ConstDefTokPtr def = new ConstDefTok; @@ -3722,10 +4034,10 @@ yyreduce: ;} break; - case 150: + case 163: -/* Line 1455 of yacc.c */ -#line 1618 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1832 "../Slice/Grammar.y" { BuiltinPtr type = unit->builtin(Builtin::KindString); StringTokPtr literal = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); @@ -3738,10 +4050,10 @@ yyreduce: ;} break; - case 151: + case 164: -/* Line 1455 of yacc.c */ -#line 1629 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1843 "../Slice/Grammar.y" { BuiltinPtr type = unit->builtin(Builtin::KindBool); StringTokPtr literal = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); @@ -3754,10 +4066,10 @@ yyreduce: ;} break; - case 152: + case 165: -/* Line 1455 of yacc.c */ -#line 1640 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1854 "../Slice/Grammar.y" { BuiltinPtr type = unit->builtin(Builtin::KindBool); StringTokPtr literal = StringTokPtr::dynamicCast((yyvsp[(1) - (1)])); @@ -3770,10 +4082,10 @@ yyreduce: ;} break; - case 153: + case 166: -/* Line 1455 of yacc.c */ -#line 1656 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1870 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(2) - (6)])); TypePtr const_type = TypePtr::dynamicCast((yyvsp[(3) - (6)])); @@ -3784,10 +4096,10 @@ yyreduce: ;} break; - case 154: + case 167: -/* Line 1455 of yacc.c */ -#line 1665 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1879 "../Slice/Grammar.y" { StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(2) - (5)])); TypePtr const_type = TypePtr::dynamicCast((yyvsp[(3) - (5)])); @@ -3798,234 +4110,242 @@ yyreduce: ;} break; - case 155: + case 168: -/* Line 1455 of yacc.c */ -#line 1679 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1893 "../Slice/Grammar.y" { ;} break; - case 156: + case 169: -/* Line 1455 of yacc.c */ -#line 1682 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1896 "../Slice/Grammar.y" { ;} break; - case 157: + case 170: -/* Line 1455 of yacc.c */ -#line 1685 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1899 "../Slice/Grammar.y" { ;} break; - case 158: + case 171: -/* Line 1455 of yacc.c */ -#line 1688 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1902 "../Slice/Grammar.y" { ;} break; - case 159: + case 172: -/* Line 1455 of yacc.c */ -#line 1691 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1905 "../Slice/Grammar.y" { ;} break; - case 160: + case 173: -/* Line 1455 of yacc.c */ -#line 1694 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1908 "../Slice/Grammar.y" { ;} break; - case 161: + case 174: -/* Line 1455 of yacc.c */ -#line 1697 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1911 "../Slice/Grammar.y" { ;} break; - case 162: + case 175: -/* Line 1455 of yacc.c */ -#line 1700 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1914 "../Slice/Grammar.y" { ;} break; - case 163: + case 176: -/* Line 1455 of yacc.c */ -#line 1703 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1917 "../Slice/Grammar.y" { ;} break; - case 164: + case 177: -/* Line 1455 of yacc.c */ -#line 1706 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1920 "../Slice/Grammar.y" { ;} break; - case 165: + case 178: -/* Line 1455 of yacc.c */ -#line 1709 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1923 "../Slice/Grammar.y" { ;} break; - case 166: + case 179: -/* Line 1455 of yacc.c */ -#line 1712 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1926 "../Slice/Grammar.y" { ;} break; - case 167: + case 180: -/* Line 1455 of yacc.c */ -#line 1715 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1929 "../Slice/Grammar.y" { ;} break; - case 168: + case 181: -/* Line 1455 of yacc.c */ -#line 1718 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1932 "../Slice/Grammar.y" { ;} break; - case 169: + case 182: -/* Line 1455 of yacc.c */ -#line 1721 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1935 "../Slice/Grammar.y" { ;} break; - case 170: + case 183: -/* Line 1455 of yacc.c */ -#line 1724 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1938 "../Slice/Grammar.y" { ;} break; - case 171: + case 184: -/* Line 1455 of yacc.c */ -#line 1727 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1941 "../Slice/Grammar.y" { ;} break; - case 172: + case 185: -/* Line 1455 of yacc.c */ -#line 1730 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1944 "../Slice/Grammar.y" { ;} break; - case 173: + case 186: -/* Line 1455 of yacc.c */ -#line 1733 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1947 "../Slice/Grammar.y" { ;} break; - case 174: + case 187: -/* Line 1455 of yacc.c */ -#line 1736 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1950 "../Slice/Grammar.y" { ;} break; - case 175: + case 188: -/* Line 1455 of yacc.c */ -#line 1739 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1953 "../Slice/Grammar.y" { ;} break; - case 176: + case 189: -/* Line 1455 of yacc.c */ -#line 1742 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1956 "../Slice/Grammar.y" { ;} break; - case 177: + case 190: -/* Line 1455 of yacc.c */ -#line 1745 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1959 "../Slice/Grammar.y" { ;} break; - case 178: + case 191: -/* Line 1455 of yacc.c */ -#line 1748 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1962 "../Slice/Grammar.y" { ;} break; - case 179: + case 192: -/* Line 1455 of yacc.c */ -#line 1751 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1965 "../Slice/Grammar.y" { ;} break; - case 180: + case 193: -/* Line 1455 of yacc.c */ -#line 1754 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1968 "../Slice/Grammar.y" { ;} break; - case 181: + case 194: -/* Line 1455 of yacc.c */ -#line 1757 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1971 "../Slice/Grammar.y" { ;} break; - case 182: + case 195: -/* Line 1455 of yacc.c */ -#line 1760 "../Slice/Grammar.y" +/* Line 1464 of yacc.c */ +#line 1974 "../Slice/Grammar.y" + { +;} + break; + + case 196: + +/* Line 1464 of yacc.c */ +#line 1977 "../Slice/Grammar.y" { ;} break; -/* Line 1455 of yacc.c */ -#line 4029 "Grammar.tab.c" +/* Line 1464 of yacc.c */ +#line 4349 "Grammar.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4236,7 +4556,7 @@ yyreturn: -/* Line 1675 of yacc.c */ -#line 1764 "../Slice/Grammar.y" +/* Line 1684 of yacc.c */ +#line 1981 "../Slice/Grammar.y" |