From: evans1629 Date: Sun, 10 Feb 2002 20:29:52 +0000 (+0000) Subject: Fixed but with parenthesized pointer declarations. X-Git-Tag: splint-3_0_1_6~6 X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/commitdiff_plain/e8b844784e728912783e5a314b8af870a36010f9 Fixed but with parenthesized pointer declarations. --- diff --git a/src/Headers/idDecl.h b/src/Headers/idDecl.h index 98749b5..83cda5a 100644 --- a/src/Headers/idDecl.h +++ b/src/Headers/idDecl.h @@ -36,6 +36,7 @@ extern /*@only@*/ cstring idDecl_unparseC (idDecl p_d); extern /*@exposed@*/ qtype idDecl_getTyp (idDecl p_d); extern void idDecl_setTyp (idDecl p_d, /*@only@*/ qtype p_c); extern idDecl idDecl_expectFunction (/*@returned@*/ idDecl p_d); +extern void idDecl_notExpectingFunction (idDecl p_d) /*@modifies p_d@*/ ; extern idDecl idDecl_replaceCtype (/*@returned@*/ idDecl p_d, ctype p_c); extern idDecl idDecl_fixBase (/*@returned@*/ idDecl p_t, qtype p_b); extern idDecl idDecl_fixParamBase (/*@returned@*/ idDecl p_t, qtype p_b); diff --git a/src/Headers/lctype.h b/src/Headers/lctype.h index ff1d01d..5bf5a5a 100644 --- a/src/Headers/lctype.h +++ b/src/Headers/lctype.h @@ -250,7 +250,9 @@ extern ctype ctype_createUser (typeId p_u) ; extern bool ctype_isUnnamedSU (ctype p_c) /*@*/ ; extern bool ctype_isUser (ctype p_c) /*@*/ ; + extern ctype ctype_expectFunction(ctype p_c) ; +extern ctype ctype_dontExpectFunction (ctype p_c) ; extern ctype ctype_fixArrayPtr (ctype p_c); diff --git a/src/Headers/mtgrammar_tokens.h b/src/Headers/mtgrammar_tokens.h index 57f538b..5926962 100644 --- a/src/Headers/mtgrammar_tokens.h +++ b/src/Headers/mtgrammar_tokens.h @@ -50,9 +50,6 @@ /*@-bounds@*/ /* < end of bison.head > */ -#ifndef MTGRAMMAR_TAB_H -# define MTGRAMMAR_TAB_H - typedef union { mttok tok; mtDeclarationNode mtdecl; @@ -80,55 +77,53 @@ typedef union { /*@only@*/ qtype qtyp; int count; } YYSTYPE; -# define MT_BADTOK 257 -# define MT_END 258 -# define MT_STATE 259 -# define MT_GLOBAL 260 -# define MT_CONTEXT 261 -# define MT_ONEOF 262 -# define MT_DEFAULTS 263 -# define MT_DEFAULT 264 -# define MT_REFERENCE 265 -# define MT_PARAMETER 266 -# define MT_RESULT 267 -# define MT_CLAUSE 268 -# define MT_LITERAL 269 -# define MT_NULL 270 -# define MT_ANNOTATIONS 271 -# define MT_ARROW 272 -# define MT_MERGE 273 -# define MT_TRANSFERS 274 -# define MT_PRECONDITIONS 275 -# define MT_POSTCONDITIONS 276 -# define MT_LOSEREFERENCE 277 -# define MT_AS 278 -# define MT_ERROR 279 -# define MT_PLUS 280 -# define MT_STAR 281 -# define MT_BAR 282 -# define MT_LPAREN 283 -# define MT_RPAREN 284 -# define MT_LBRACKET 285 -# define MT_RBRACKET 286 -# define MT_LBRACE 287 -# define MT_RBRACE 288 -# define MT_COMMA 289 -# define MT_CHAR 290 -# define MT_INT 291 -# define MT_FLOAT 292 -# define MT_DOUBLE 293 -# define MT_VOID 294 -# define MT_ANYTYPE 295 -# define MT_INTEGRALTYPE 296 -# define MT_UNSIGNEDINTEGRALTYPE 297 -# define MT_SIGNEDINTEGRALTYPE 298 -# define MT_CONST 299 -# define MT_VOLATILE 300 -# define MT_STRINGLIT 301 -# define MT_IDENT 302 - +#define MT_BADTOK 257 +#define MT_END 258 +#define MT_STATE 259 +#define MT_GLOBAL 260 +#define MT_CONTEXT 261 +#define MT_ONEOF 262 +#define MT_DEFAULTS 263 +#define MT_DEFAULT 264 +#define MT_REFERENCE 265 +#define MT_PARAMETER 266 +#define MT_RESULT 267 +#define MT_CLAUSE 268 +#define MT_LITERAL 269 +#define MT_NULL 270 +#define MT_ANNOTATIONS 271 +#define MT_ARROW 272 +#define MT_MERGE 273 +#define MT_TRANSFERS 274 +#define MT_PRECONDITIONS 275 +#define MT_POSTCONDITIONS 276 +#define MT_LOSEREFERENCE 277 +#define MT_AS 278 +#define MT_ERROR 279 +#define MT_PLUS 280 +#define MT_STAR 281 +#define MT_BAR 282 +#define MT_LPAREN 283 +#define MT_RPAREN 284 +#define MT_LBRACKET 285 +#define MT_RBRACKET 286 +#define MT_LBRACE 287 +#define MT_RBRACE 288 +#define MT_COMMA 289 +#define MT_CHAR 290 +#define MT_INT 291 +#define MT_FLOAT 292 +#define MT_DOUBLE 293 +#define MT_VOID 294 +#define MT_ANYTYPE 295 +#define MT_INTEGRALTYPE 296 +#define MT_UNSIGNEDINTEGRALTYPE 297 +#define MT_SIGNEDINTEGRALTYPE 298 +#define MT_CONST 299 +#define MT_VOLATILE 300 +#define MT_STRINGLIT 301 +#define MT_IDENT 302 -#endif /* not MTGRAMMAR_TAB_H */ /* ** Resets all flags in bison.head */ diff --git a/src/cgrammar.c.der b/src/cgrammar.c.der index c3f36ae..fb7124d 100644 --- a/src/cgrammar.c.der +++ b/src/cgrammar.c.der @@ -711,72 +711,72 @@ static const short yyrhs[] = { -1, static const short yyrline[] = { 0, 322, 323, 326, 327, 330, 331, 332, 333, 334, 335, 336, 337, 340, 342, 346, 346, 353, 359, 363, 364, - 368, 369, 371, 373, 386, 389, 399, 402, 410, 411, - 413, 415, 431, 434, 442, 445, 453, 455, 455, 459, - 460, 461, 462, 465, 468, 472, 472, 475, 475, 480, - 481, 484, 489, 490, 493, 494, 497, 502, 503, 506, - 507, 508, 511, 512, 513, 518, 519, 522, 524, 526, - 528, 537, 539, 541, 543, 559, 563, 564, 571, 572, - 580, 582, 586, 587, 588, 589, 590, 591, 594, 595, - 596, 597, 598, 599, 602, 605, 606, 613, 616, 619, - 625, 633, 635, 639, 642, 643, 646, 649, 655, 659, - 660, 663, 666, 667, 670, 671, 672, 675, 676, 677, - 678, 679, 682, 683, 684, 685, 686, 689, 690, 693, - 699, 703, 705, 709, 710, 712, 719, 729, 730, 733, - 734, 735, 736, 737, 738, 739, 740, 744, 745, 749, - 750, 753, 755, 757, 758, 759, 760, 761, 763, 767, - 768, 771, 775, 787, 788, 789, 790, 791, 792, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 806, 807, - 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, - 820, 823, 824, 827, 831, 832, 835, 836, 837, 838, - 841, 842, 846, 847, 848, 849, 852, 853, 854, 857, - 858, 859, 862, 863, 864, 865, 866, 869, 870, 871, - 874, 875, 878, 879, 883, 884, 887, 888, 893, 899, - 900, 906, 912, 913, 913, 915, 918, 919, 920, 921, - 922, 923, 924, 925, 926, 927, 928, 929, 932, 933, - 936, 937, 940, 945, 946, 947, 950, 964, 969, 975, - 977, 983, 988, 988, 992, 993, 995, 996, 999, 1002, - 1005, 1008, 1009, 1012, 1013, 1016, 1017, 1018, 1022, 1024, - 1033, 1034, 1035, 1036, 1037, 1040, 1043, 1049, 1058, 1061, - 1064, 1071, 1078, 1084, 1109, 1110, 1113, 1114, 1115, 1116, - 1117, 1120, 1121, 1122, 1123, 1126, 1127, 1128, 1129, 1130, - 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, - 1141, 1142, 1146, 1147, 1150, 1151, 1154, 1155, 1158, 1159, - 1160, 1161, 1164, 1165, 1166, 1167, 1168, 1169, 1172, 1173, - 1174, 1175, 1178, 1179, 1180, 1181, 1184, 1185, 1186, 1187, - 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1201, 1202, 1203, - 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, - 1214, 1217, 1221, 1222, 1226, 1227, 1231, 1232, 1233, 1236, - 1237, 1241, 1248, 1250, 1252, 1253, 1255, 1257, 1258, 1260, - 1262, 1264, 1266, 1267, 1268, 1271, 1272, 1274, 1276, 1277, - 1280, 1283, 1284, 1285, 1288, 1290, 1294, 1296, 1300, 1301, - 1302, 1306, 1308, 1308, 1310, 1313, 1315, 1317, 1320, 1325, - 1332, 1333, 1334, 1341, 1345, 1346, 1350, 1351, 1354, 1355, - 1358, 1359, 1362, 1363, 1364, 1365, 1368, 1369, 1372, 1373, - 1376, 1377, 1378, 1381, 1381, 1382, 1383, 1386, 1398, 1414, - 1415, 1418, 1419, 1420, 1423, 1424, 1427, 1429, 1430, 1432, - 1433, 1435, 1437, 1439, 1441, 1447, 1448, 1449, 1450, 1451, - 1452, 1453, 1454, 1455, 1459, 1462, 1465, 1466, 1470, 1472, - 1474, 1476, 1480, 1481, 1483, 1487, 1489, 1491, 1494, 1495, - 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, - 1506, 1509, 1510, 1515, 1518, 1521, 1522, 1525, 1526, 1527, - 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1538, 1539, - 1546, 1547, 1553, 1554, 1555, 1556, 1559, 1560, 1561, 1562, - 1565, 1566, 1570, 1573, 1576, 1579, 1582, 1585, 1588, 1589, - 1590, 1591, 1593, 1594, 1596, 1598, 1604, 1608, 1610, 1612, - 1614, 1618, 1619, 1622, 1623, 1626, 1627, 1630, 1631, 1634, - 1635, 1636, 1639, 1652, 1657, 1658, 1662, 1663, 1666, 1671, - 1674, 1675, 1676, 1684, 1685, 1685, 1689, 1690, 1691, 1702, - 1709, 1710, 1713, 1714, 1717, 1718, 1719, 1720, 1721, 1723, - 1724, 1725, 1726, 1729, 1730, 1731, 1732, 1733, 1734, 1735, - 1736, 1737, 1738, 1741, 1742, 1745, 1746, 1747, 1748, 1751, - 1752, 1753, 1756, 1757, 1758, 1761, 1762, 1763, 1764, 1765, - 1768, 1769, 1770, 1773, 1774, 1777, 1778, 1782, 1783, 1786, - 1787, 1790, 1791, 1794, 1795, 1796, 1797, 1800, 1801, 1802, - 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1814, - 1815, 1818, 1821, 1823, 1825, 1829, 1830, 1832, 1834, 1837, - 1838, 1839, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1850, - 1851, 1854, 1857, 1858, 1859, 1860, 1861, 1864, 1865 + 368, 369, 371, 373, 388, 391, 401, 404, 412, 413, + 415, 417, 433, 436, 444, 447, 455, 457, 457, 461, + 462, 463, 464, 467, 470, 474, 474, 477, 477, 482, + 483, 486, 491, 492, 495, 496, 499, 504, 505, 508, + 509, 510, 513, 514, 515, 520, 521, 524, 526, 528, + 530, 539, 541, 543, 545, 561, 565, 566, 573, 574, + 582, 584, 588, 589, 590, 591, 592, 593, 596, 597, + 598, 599, 600, 601, 604, 607, 608, 615, 618, 621, + 627, 635, 637, 641, 644, 645, 648, 651, 657, 661, + 662, 665, 668, 669, 672, 673, 674, 677, 678, 679, + 680, 681, 684, 685, 686, 687, 688, 691, 692, 695, + 701, 705, 707, 711, 712, 714, 721, 731, 732, 735, + 736, 737, 738, 739, 740, 741, 742, 746, 747, 751, + 752, 755, 757, 759, 760, 761, 762, 763, 765, 769, + 770, 773, 777, 789, 790, 791, 792, 793, 794, 797, + 798, 799, 800, 801, 802, 803, 804, 805, 808, 809, + 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, + 822, 825, 826, 829, 833, 834, 837, 838, 839, 840, + 843, 844, 848, 849, 850, 851, 854, 855, 856, 859, + 860, 861, 864, 865, 866, 867, 868, 871, 872, 873, + 876, 877, 880, 881, 885, 886, 889, 890, 895, 901, + 902, 908, 914, 915, 915, 917, 920, 921, 922, 923, + 924, 925, 926, 927, 928, 929, 930, 931, 934, 935, + 938, 939, 942, 947, 948, 949, 952, 966, 971, 977, + 979, 985, 990, 990, 994, 995, 997, 998, 1001, 1004, + 1007, 1010, 1011, 1014, 1015, 1018, 1019, 1020, 1024, 1026, + 1035, 1036, 1037, 1038, 1039, 1042, 1045, 1051, 1060, 1063, + 1066, 1073, 1080, 1086, 1111, 1112, 1115, 1116, 1117, 1118, + 1119, 1122, 1123, 1124, 1125, 1128, 1129, 1130, 1131, 1132, + 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, + 1143, 1144, 1148, 1149, 1152, 1153, 1156, 1157, 1160, 1161, + 1162, 1163, 1166, 1167, 1168, 1169, 1170, 1171, 1174, 1175, + 1176, 1177, 1180, 1181, 1182, 1183, 1186, 1187, 1188, 1189, + 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1203, 1204, 1205, + 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + 1216, 1219, 1223, 1224, 1228, 1229, 1233, 1234, 1235, 1238, + 1239, 1243, 1250, 1252, 1254, 1255, 1257, 1259, 1260, 1262, + 1264, 1266, 1268, 1269, 1270, 1273, 1274, 1276, 1278, 1279, + 1282, 1285, 1286, 1287, 1290, 1292, 1296, 1298, 1302, 1303, + 1304, 1308, 1310, 1310, 1312, 1315, 1317, 1319, 1322, 1327, + 1334, 1335, 1336, 1343, 1347, 1348, 1352, 1353, 1356, 1357, + 1360, 1361, 1364, 1365, 1366, 1367, 1370, 1371, 1374, 1375, + 1378, 1379, 1380, 1383, 1383, 1384, 1385, 1388, 1400, 1416, + 1417, 1420, 1421, 1422, 1425, 1426, 1429, 1431, 1432, 1434, + 1435, 1437, 1439, 1441, 1443, 1449, 1450, 1451, 1452, 1453, + 1454, 1455, 1456, 1457, 1461, 1464, 1467, 1468, 1472, 1474, + 1476, 1478, 1482, 1483, 1485, 1489, 1491, 1493, 1496, 1497, + 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, + 1508, 1511, 1512, 1517, 1520, 1523, 1524, 1527, 1528, 1529, + 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1540, 1541, + 1548, 1549, 1555, 1556, 1557, 1558, 1561, 1562, 1563, 1564, + 1567, 1568, 1572, 1575, 1578, 1581, 1584, 1587, 1590, 1591, + 1592, 1593, 1595, 1596, 1598, 1600, 1606, 1610, 1612, 1614, + 1616, 1620, 1621, 1624, 1625, 1628, 1629, 1632, 1633, 1636, + 1637, 1638, 1641, 1654, 1659, 1660, 1664, 1665, 1668, 1673, + 1676, 1677, 1678, 1686, 1687, 1687, 1691, 1692, 1693, 1704, + 1711, 1712, 1715, 1716, 1719, 1720, 1721, 1722, 1723, 1725, + 1726, 1727, 1728, 1731, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1743, 1744, 1747, 1748, 1749, 1750, 1753, + 1754, 1755, 1758, 1759, 1760, 1763, 1764, 1765, 1766, 1767, + 1770, 1771, 1772, 1775, 1776, 1779, 1780, 1784, 1785, 1788, + 1789, 1792, 1793, 1796, 1797, 1798, 1799, 1802, 1803, 1804, + 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1816, + 1817, 1820, 1823, 1825, 1827, 1831, 1832, 1834, 1836, 1839, + 1840, 1841, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1852, + 1853, 1856, 1859, 1860, 1861, 1862, 1863, 1866, 1867 }; #endif @@ -3218,7 +3218,9 @@ case 23: break;} case 24: { - exprNode_findValue(yyvsp[-2].expr); + exprNode_findValue (yyvsp[-2].expr); + idDecl_notExpectingFunction (yyvsp[-5].ntyp); + if (exprNode_hasValue (yyvsp[-2].expr)) { yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ctype_makeInnerFixedArray (idDecl_getCtype (yyvsp[-5].ntyp), diff --git a/src/cgrammar.y b/src/cgrammar.y index 2c18c2a..993d8e6 100644 --- a/src/cgrammar.y +++ b/src/cgrammar.y @@ -372,7 +372,9 @@ namedDeclBase { $$ = idDecl_replaceCtype ($1, ctype_makeArray (idDecl_getCtype ($1))); } | namedDeclBase TLSQBR IsType constantExpr TRSQBR NotType { - exprNode_findValue($4); + exprNode_findValue ($4); + idDecl_notExpectingFunction ($1); + if (exprNode_hasValue ($4)) { $$ = idDecl_replaceCtype ($1, ctype_makeInnerFixedArray (idDecl_getCtype ($1), diff --git a/src/ctbase.i b/src/ctbase.i index 3b85bc8..473c781 100644 --- a/src/ctbase.i +++ b/src/ctbase.i @@ -1166,6 +1166,19 @@ ctbase_expectFunction (ctype c) return (f); } +static bool +ctbase_isExpectFunction (ctbase ct) +{ + return (ct->type == CT_EXPFCN); +} + +static ctype +ctbase_getExpectFunction (ctbase ct) +{ + llassert (ctbase_isExpectFunction (ct)); + return ct->contents.base; +} + static bool ctbase_genMatch (ctbase c1, ctbase c2, bool force, bool arg, bool def, bool deep) { diff --git a/src/ctype.c b/src/ctype.c index 858287b..31aacd0 100644 --- a/src/ctype.c +++ b/src/ctype.c @@ -648,6 +648,20 @@ ctype ctype_expectFunction (ctype c) return (cttable_addComplex (ctbase_expectFunction (c))); } +ctype ctype_dontExpectFunction (ctype c) +{ + ctbase ctb = ctype_getCtbase (c); + + /* what about this? + if (!ctype_isAP (c)) + { + c = ctype_makePointer (c); + } + */ + + return (ctbase_getExpectFunction (ctb)); +} + /* ** makeRealFunction: function returning base */ diff --git a/src/idDecl.c b/src/idDecl.c index f6d7310..851c622 100644 --- a/src/idDecl.c +++ b/src/idDecl.c @@ -224,6 +224,25 @@ idDecl_expectFunction (/*@returned@*/ idDecl d) return d; } +/* +** evans 2002-02-09: This is a bit of a kludge, but we +** need it to fix declarations like int (*p)[]; +*/ + +void +idDecl_notExpectingFunction (/*@returned@*/ idDecl d) +{ + if (idDecl_isDefined (d)) + { + ctype ct = qtype_getType (d->typ); + + if (ctype_isExpFcn (ct)) + { + qtype_setType (d->typ, ctype_dontExpectFunction (ct)); + } + } +} + void idDecl_addClauses (idDecl d, functionClauseList clauses) { diff --git a/src/mtgrammar.c b/src/mtgrammar.c index 73ecb46..ad56cf6 100644 --- a/src/mtgrammar.c +++ b/src/mtgrammar.c @@ -51,8 +51,8 @@ /* < end of bison.head > */ -/* A Bison parser, made from mtgrammar.y - by GNU bison 1.30. */ +/* A Bison parser, made from mtgrammar.y + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -63,52 +63,52 @@ #define yychar mtchar #define yydebug mtdebug #define yynerrs mtnerrs -# define MT_BADTOK 257 -# define MT_END 258 -# define MT_STATE 259 -# define MT_GLOBAL 260 -# define MT_CONTEXT 261 -# define MT_ONEOF 262 -# define MT_DEFAULTS 263 -# define MT_DEFAULT 264 -# define MT_REFERENCE 265 -# define MT_PARAMETER 266 -# define MT_RESULT 267 -# define MT_CLAUSE 268 -# define MT_LITERAL 269 -# define MT_NULL 270 -# define MT_ANNOTATIONS 271 -# define MT_ARROW 272 -# define MT_MERGE 273 -# define MT_TRANSFERS 274 -# define MT_PRECONDITIONS 275 -# define MT_POSTCONDITIONS 276 -# define MT_LOSEREFERENCE 277 -# define MT_AS 278 -# define MT_ERROR 279 -# define MT_PLUS 280 -# define MT_STAR 281 -# define MT_BAR 282 -# define MT_LPAREN 283 -# define MT_RPAREN 284 -# define MT_LBRACKET 285 -# define MT_RBRACKET 286 -# define MT_LBRACE 287 -# define MT_RBRACE 288 -# define MT_COMMA 289 -# define MT_CHAR 290 -# define MT_INT 291 -# define MT_FLOAT 292 -# define MT_DOUBLE 293 -# define MT_VOID 294 -# define MT_ANYTYPE 295 -# define MT_INTEGRALTYPE 296 -# define MT_UNSIGNEDINTEGRALTYPE 297 -# define MT_SIGNEDINTEGRALTYPE 298 -# define MT_CONST 299 -# define MT_VOLATILE 300 -# define MT_STRINGLIT 301 -# define MT_IDENT 302 +#define MT_BADTOK 257 +#define MT_END 258 +#define MT_STATE 259 +#define MT_GLOBAL 260 +#define MT_CONTEXT 261 +#define MT_ONEOF 262 +#define MT_DEFAULTS 263 +#define MT_DEFAULT 264 +#define MT_REFERENCE 265 +#define MT_PARAMETER 266 +#define MT_RESULT 267 +#define MT_CLAUSE 268 +#define MT_LITERAL 269 +#define MT_NULL 270 +#define MT_ANNOTATIONS 271 +#define MT_ARROW 272 +#define MT_MERGE 273 +#define MT_TRANSFERS 274 +#define MT_PRECONDITIONS 275 +#define MT_POSTCONDITIONS 276 +#define MT_LOSEREFERENCE 277 +#define MT_AS 278 +#define MT_ERROR 279 +#define MT_PLUS 280 +#define MT_STAR 281 +#define MT_BAR 282 +#define MT_LPAREN 283 +#define MT_RPAREN 284 +#define MT_LBRACKET 285 +#define MT_RBRACKET 286 +#define MT_LBRACE 287 +#define MT_RBRACE 288 +#define MT_COMMA 289 +#define MT_CHAR 290 +#define MT_INT 291 +#define MT_FLOAT 292 +#define MT_DOUBLE 293 +#define MT_VOID 294 +#define MT_ANYTYPE 295 +#define MT_INTEGRALTYPE 296 +#define MT_UNSIGNEDINTEGRALTYPE 297 +#define MT_SIGNEDINTEGRALTYPE 298 +#define MT_CONST 299 +#define MT_VOLATILE 300 +#define MT_STRINGLIT 301 +#define MT_IDENT 302 @@ -167,279 +167,258 @@ typedef union { int count; } YYSTYPE; #ifndef YYDEBUG -# define YYDEBUG 1 +#define YYDEBUG 1 #endif #include +#ifndef __cplusplus +#ifndef __STDC__ +#define const +#endif +#endif + #define YYFINAL 135 #define YYFLAG -32768 #define YYNTBASE 49 -/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ #define YYTRANSLATE(x) ((unsigned)(x) <= 302 ? yytranslate[x] : 92) -/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ -static const char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48 +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48 }; #if YYDEBUG != 0 -static const short yyprhs[] = -{ - 0, 0, 1, 3, 7, 12, 15, 16, 19, 21, - 23, 25, 27, 29, 31, 33, 35, 37, 39, 42, - 43, 45, 48, 51, 54, 57, 60, 63, 64, 66, - 68, 71, 73, 77, 80, 81, 83, 85, 87, 90, - 92, 95, 98, 102, 104, 106, 108, 111, 115, 118, - 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, - 142, 144, 147, 149, 153, 156, 159, 163, 168, 171, - 173, 176, 181, 184, 186, 189, 195, 197, 199, 202, - 205, 208, 211, 213, 216, 220, 222, 225, 231, 233, - 235, 237, 240 +static const short yyprhs[] = { 0, + 0, 1, 3, 7, 12, 15, 16, 19, 21, 23, + 25, 27, 29, 31, 33, 35, 37, 39, 42, 43, + 45, 48, 51, 54, 57, 60, 63, 64, 66, 68, + 71, 73, 77, 80, 81, 83, 85, 87, 90, 92, + 95, 98, 102, 104, 106, 108, 111, 115, 118, 122, + 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, + 144, 147, 149, 153, 156, 159, 163, 168, 171, 173, + 176, 181, 184, 186, 189, 195, 197, 199, 202, 205, + 208, 211, 213, 216, 220, 222, 225, 231, 233, 235, + 237, 240 }; -static const short yyrhs[] = -{ - -1, 50, 0, 5, 51, 4, 0, 6, 5, 51, - 4, 0, 48, 52, 0, 0, 53, 52, 0, 54, - 0, 69, 0, 72, 0, 71, 0, 74, 0, 77, - 0, 83, 0, 81, 0, 82, 0, 84, 0, 7, - 56, 0, 0, 56, 0, 12, 57, 0, 11, 57, - 0, 13, 57, 0, 14, 57, 0, 15, 57, 0, - 16, 57, 0, 0, 58, 0, 59, 0, 59, 62, - 0, 60, 0, 59, 28, 58, 0, 67, 61, 0, - 0, 59, 0, 63, 0, 66, 0, 63, 66, 0, - 27, 0, 27, 65, 0, 27, 63, 0, 27, 65, - 63, 0, 45, 0, 46, 0, 64, 0, 65, 64, - 0, 29, 62, 30, 0, 31, 32, 0, 66, 31, - 32, 0, 36, 0, 37, 0, 38, 0, 39, 0, - 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, - 68, 0, 48, 0, 8, 70, 0, 48, 0, 48, - 35, 70, 0, 10, 91, 0, 9, 73, 0, 56, - 18, 91, 0, 56, 18, 91, 73, 0, 17, 75, - 0, 76, 0, 76, 75, 0, 48, 55, 18, 91, - 0, 19, 78, 0, 79, 0, 79, 78, 0, 80, - 26, 80, 18, 89, 0, 91, 0, 27, 0, 21, - 87, 0, 22, 87, 0, 20, 87, 0, 23, 85, - 0, 86, 0, 86, 85, 0, 91, 18, 90, 0, - 88, 0, 88, 87, 0, 91, 24, 91, 18, 89, - 0, 91, 0, 90, 0, 25, 0, 25, 47, 0, - 48, 0 + +static const short yyrhs[] = { -1, + 50, 0, 5, 51, 4, 0, 6, 5, 51, 4, + 0, 48, 52, 0, 0, 53, 52, 0, 54, 0, + 69, 0, 72, 0, 71, 0, 74, 0, 77, 0, + 83, 0, 81, 0, 82, 0, 84, 0, 7, 56, + 0, 0, 56, 0, 12, 57, 0, 11, 57, 0, + 13, 57, 0, 14, 57, 0, 15, 57, 0, 16, + 57, 0, 0, 58, 0, 59, 0, 59, 62, 0, + 60, 0, 59, 28, 58, 0, 67, 61, 0, 0, + 59, 0, 63, 0, 66, 0, 63, 66, 0, 27, + 0, 27, 65, 0, 27, 63, 0, 27, 65, 63, + 0, 45, 0, 46, 0, 64, 0, 65, 64, 0, + 29, 62, 30, 0, 31, 32, 0, 66, 31, 32, + 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, + 0, 41, 0, 42, 0, 43, 0, 44, 0, 68, + 0, 48, 0, 8, 70, 0, 48, 0, 48, 35, + 70, 0, 10, 91, 0, 9, 73, 0, 56, 18, + 91, 0, 56, 18, 91, 73, 0, 17, 75, 0, + 76, 0, 76, 75, 0, 48, 55, 18, 91, 0, + 19, 78, 0, 79, 0, 79, 78, 0, 80, 26, + 80, 18, 89, 0, 91, 0, 27, 0, 21, 87, + 0, 22, 87, 0, 20, 87, 0, 23, 85, 0, + 86, 0, 86, 85, 0, 91, 18, 90, 0, 88, + 0, 88, 87, 0, 91, 24, 91, 18, 89, 0, + 91, 0, 90, 0, 25, 0, 25, 47, 0, 48, + 0 }; #endif #if YYDEBUG != 0 -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const short yyrline[] = -{ - 0, 158, 159, 162, 164, 168, 172, 173, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 189, 193, - 194, 197, 198, 199, 200, 201, 202, 209, 210, 213, - 214, 217, 218, 222, 225, 226, 230, 231, 232, 235, - 236, 237, 238, 241, 242, 245, 246, 249, 250, 251, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 273, 276, 279, 280, 284, 287, 290, 292, 296, 299, - 300, 304, 308, 311, 312, 315, 319, 320, 323, 326, - 329, 332, 335, 336, 339, 342, 343, 346, 350, 351, - 354, 355, 358 +static const short yyrline[] = { 0, + 158, 159, 162, 164, 168, 172, 173, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 189, 193, 194, + 197, 198, 199, 200, 201, 202, 209, 210, 213, 214, + 217, 218, 222, 225, 226, 230, 231, 232, 235, 236, + 237, 238, 241, 242, 245, 246, 249, 250, 251, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 273, + 276, 279, 280, 284, 287, 290, 292, 296, 299, 300, + 304, 308, 311, 312, 315, 319, 320, 323, 326, 329, + 332, 335, 336, 339, 342, 343, 346, 350, 351, 354, + 355, 358 }; #endif -#if YYDEBUG != 0 || defined YYERROR_VERBOSE - -/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ -static const char *const yytname[] = -{ - "$", "error", "$undefined.", "MT_BADTOK", "MT_END", "MT_STATE", - "MT_GLOBAL", "MT_CONTEXT", "MT_ONEOF", "MT_DEFAULTS", "MT_DEFAULT", - "MT_REFERENCE", "MT_PARAMETER", "MT_RESULT", "MT_CLAUSE", "MT_LITERAL", - "MT_NULL", "MT_ANNOTATIONS", "MT_ARROW", "MT_MERGE", "MT_TRANSFERS", - "MT_PRECONDITIONS", "MT_POSTCONDITIONS", "MT_LOSEREFERENCE", "MT_AS", - "MT_ERROR", "MT_PLUS", "MT_STAR", "MT_BAR", "MT_LPAREN", "MT_RPAREN", - "MT_LBRACKET", "MT_RBRACKET", "MT_LBRACE", "MT_RBRACE", "MT_COMMA", - "MT_CHAR", "MT_INT", "MT_FLOAT", "MT_DOUBLE", "MT_VOID", "MT_ANYTYPE", - "MT_INTEGRALTYPE", "MT_UNSIGNEDINTEGRALTYPE", "MT_SIGNEDINTEGRALTYPE", - "MT_CONST", "MT_VOLATILE", "MT_STRINGLIT", "MT_IDENT", "file", - "mtsDeclaration", "declarationNode", "declarationPieces", - "declarationPiece", "contextDeclaration", "optContextSelection", - "contextSelection", "optType", "typeExpression", "completeType", - "completeTypeAux", "optCompleteType", "abstractDecl", "pointers", - "innerMods", "innerModsList", "abstractDeclBase", "typeSpecifier", - "typeName", "valuesDeclaration", "valuesList", "defaultNode", - "defaultsDeclaration", "defaultDeclarationList", - "annotationsDeclaration", "annotationsDeclarationList", - "annotationDeclaration", "mergeDeclaration", "mergeClauses", - "mergeClause", "mergeItem", "preconditionsDeclaration", - "postconditionsDeclaration", "transfersDeclaration", - "loseReferenceDeclaration", "lostClauses", "lostClause", - "transferClauses", "transferClause", "transferAction", "errorAction", - "valueChoice", NULL +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK", +"MT_END","MT_STATE","MT_GLOBAL","MT_CONTEXT","MT_ONEOF","MT_DEFAULTS","MT_DEFAULT", +"MT_REFERENCE","MT_PARAMETER","MT_RESULT","MT_CLAUSE","MT_LITERAL","MT_NULL", +"MT_ANNOTATIONS","MT_ARROW","MT_MERGE","MT_TRANSFERS","MT_PRECONDITIONS","MT_POSTCONDITIONS", +"MT_LOSEREFERENCE","MT_AS","MT_ERROR","MT_PLUS","MT_STAR","MT_BAR","MT_LPAREN", +"MT_RPAREN","MT_LBRACKET","MT_RBRACKET","MT_LBRACE","MT_RBRACE","MT_COMMA","MT_CHAR", +"MT_INT","MT_FLOAT","MT_DOUBLE","MT_VOID","MT_ANYTYPE","MT_INTEGRALTYPE","MT_UNSIGNEDINTEGRALTYPE", +"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_STRINGLIT","MT_IDENT","file", +"mtsDeclaration","declarationNode","declarationPieces","declarationPiece","contextDeclaration", +"optContextSelection","contextSelection","optType","typeExpression","completeType", +"completeTypeAux","optCompleteType","abstractDecl","pointers","innerMods","innerModsList", +"abstractDeclBase","typeSpecifier","typeName","valuesDeclaration","valuesList", +"defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration", +"annotationsDeclarationList","annotationDeclaration","mergeDeclaration","mergeClauses", +"mergeClause","mergeItem","preconditionsDeclaration","postconditionsDeclaration", +"transfersDeclaration","loseReferenceDeclaration","lostClauses","lostClause", +"transferClauses","transferClause","transferAction","errorAction","valueChoice", NULL }; #endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const short yyr1[] = -{ - 0, 49, 49, 50, 50, 51, 52, 52, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 54, 55, - 55, 56, 56, 56, 56, 56, 56, 57, 57, 58, - 58, 59, 59, 60, 61, 61, 62, 62, 62, 63, - 63, 63, 63, 64, 64, 65, 65, 66, 66, 66, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 68, 69, 70, 70, 71, 72, 73, 73, 74, 75, - 75, 76, 77, 78, 78, 79, 80, 80, 81, 82, - 83, 84, 85, 85, 86, 87, 87, 88, 89, 89, - 90, 90, 91 +static const short yyr1[] = { 0, + 49, 49, 50, 50, 51, 52, 52, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 54, 55, 55, + 56, 56, 56, 56, 56, 56, 57, 57, 58, 58, + 59, 59, 60, 61, 61, 62, 62, 62, 63, 63, + 63, 63, 64, 64, 65, 65, 66, 66, 66, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, + 69, 70, 70, 71, 72, 73, 73, 74, 75, 75, + 76, 77, 78, 78, 79, 80, 80, 81, 82, 83, + 84, 85, 85, 86, 87, 87, 88, 89, 89, 90, + 90, 91 }; -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const short yyr2[] = -{ - 0, 0, 1, 3, 4, 2, 0, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 2, 2, 2, 2, 2, 2, 0, 1, 1, - 2, 1, 3, 2, 0, 1, 1, 1, 2, 1, - 2, 2, 3, 1, 1, 1, 2, 3, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 3, 2, 2, 3, 4, 2, 1, - 2, 4, 2, 1, 2, 5, 1, 1, 2, 2, - 2, 2, 1, 2, 3, 1, 2, 5, 1, 1, - 1, 2, 1 +static const short yyr2[] = { 0, + 0, 1, 3, 4, 2, 0, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 2, 2, 2, 2, 2, 2, 0, 1, 1, 2, + 1, 3, 2, 0, 1, 1, 1, 2, 1, 2, + 2, 3, 1, 1, 1, 2, 3, 2, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 3, 2, 2, 3, 4, 2, 1, 2, + 4, 2, 1, 2, 5, 1, 1, 2, 2, 2, + 2, 1, 2, 3, 1, 2, 5, 1, 1, 1, + 2, 1 }; -/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE - doesn't specify something else to do. Zero means the default is an - error. */ -static const short yydefact[] = -{ - 1, 0, 0, 2, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 5, 6, 8, - 9, 11, 10, 12, 13, 15, 16, 14, 17, 3, - 0, 27, 27, 27, 27, 27, 27, 18, 62, 61, - 0, 65, 92, 64, 19, 68, 69, 77, 72, 73, - 0, 76, 80, 85, 0, 78, 79, 81, 82, 0, - 7, 4, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 60, 22, 28, 29, 31, 34, 59, 21, 23, - 24, 25, 26, 0, 0, 0, 20, 70, 74, 0, - 86, 0, 83, 0, 39, 0, 0, 0, 30, 36, - 37, 35, 33, 63, 66, 0, 0, 0, 90, 84, - 43, 44, 41, 45, 40, 32, 0, 48, 38, 0, - 67, 71, 0, 0, 91, 42, 46, 47, 49, 75, - 89, 88, 87, 0, 0, 0 +static const short yydefact[] = { 1, + 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 6, 8, 9, + 11, 10, 12, 13, 15, 16, 14, 17, 3, 0, + 27, 27, 27, 27, 27, 27, 18, 62, 61, 0, + 65, 92, 64, 19, 68, 69, 77, 72, 73, 0, + 76, 80, 85, 0, 78, 79, 81, 82, 0, 7, + 4, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 60, 22, 28, 29, 31, 34, 59, 21, 23, 24, + 25, 26, 0, 0, 0, 20, 70, 74, 0, 86, + 0, 83, 0, 39, 0, 0, 0, 30, 36, 37, + 35, 33, 63, 66, 0, 0, 0, 90, 84, 43, + 44, 41, 45, 40, 32, 0, 48, 38, 0, 67, + 71, 0, 0, 91, 42, 46, 47, 49, 75, 89, + 88, 87, 0, 0, 0 }; -static const short yydefgoto[] = -{ - 133, 3, 5, 17, 18, 19, 85, 40, 72, 73, - 74, 75, 102, 98, 99, 113, 114, 100, 76, 77, - 20, 39, 21, 22, 41, 23, 45, 46, 24, 48, - 49, 50, 25, 26, 27, 28, 57, 58, 52, 53, - 129, 130, 54 +static const short yydefgoto[] = { 133, + 3, 5, 17, 18, 19, 85, 40, 72, 73, 74, + 75, 102, 98, 99, 113, 114, 100, 76, 77, 20, + 39, 21, 22, 41, 23, 45, 46, 24, 48, 49, + 50, 25, 26, 27, 28, 57, 58, 52, 53, 129, + 130, 54 }; -static const short yypact[] = -{ - 4, -37, 35,-32768, 36, 37, -37, 21, 2, 21, - 17, 18, -19, 17, 17, 17, 17,-32768, 36,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 63, -23, -23, -23, -23, -23, -23,-32768, 33,-32768, - 51,-32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, - 44,-32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768, - -32768,-32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19, - -32768, 17,-32768, 50, -15, -23, 20, 45,-32768, 23, - 49, 48,-32768,-32768, 21, 17, 60, 64, 38,-32768, - -32768,-32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52, - -32768,-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768, 86, 87,-32768 +static const short yypact[] = { 4, + -37, 35,-32768, 36, 37, -37, 21, 2, 21, 17, + 18, -19, 17, 17, 17, 17,-32768, 36,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 63, + -23, -23, -23, -23, -23, -23,-32768, 33,-32768, 51, +-32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, 44, +-32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768,-32768, +-32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19,-32768, + 17,-32768, 50, -15, -23, 20, 45,-32768, 23, 49, + 48,-32768,-32768, 21, 17, 60, 64, 38,-32768,-32768, +-32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52,-32768, +-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 86, 87,-32768 }; -static const short yypgoto[] = -{ - -32768,-32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, - 14,-32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768, - -32768, 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57, - -32768, 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, - -18, 7, -10 +static const short yypgoto[] = {-32768, +-32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, 14, +-32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768,-32768, + 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57,-32768, + 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, -18, + 7, -10 }; #define YYLAST 113 -static const short yytable[] = -{ - 43, 37, 51, 55, 56, 108, 59, 112, 47, 1, - 2, 4, 94, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 94, 95, 96, 71, 97, 125, 42, 42, - 110, 111, 31, 32, 33, 34, 35, 36, 86, 51, - 6, 29, 90, 7, 8, 9, 10, 94, 59, 96, - 38, 97, 96, 11, 97, 12, 13, 14, 15, 16, - 78, 79, 80, 81, 82, 42, 44, 61, 83, 84, - 89, 91, 93, 105, 104, 108, 95, 117, 122, 51, - 119, 107, 123, 127, 128, 124, 134, 135, 30, 60, - 101, 115, 126, 116, 103, 121, 120, 118, 106, 92, - 109, 0, 87, 0, 0, 132, 88, 0, 0, 0, - 0, 0, 131, 131 +static const short yytable[] = { 43, + 37, 51, 55, 56, 108, 59, 112, 47, 1, 2, + 4, 94, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 94, 95, 96, 71, 97, 125, 42, 42, 110, + 111, 31, 32, 33, 34, 35, 36, 86, 51, 6, + 29, 90, 7, 8, 9, 10, 94, 59, 96, 38, + 97, 96, 11, 97, 12, 13, 14, 15, 16, 78, + 79, 80, 81, 82, 42, 44, 61, 83, 84, 89, + 91, 93, 105, 104, 108, 95, 117, 122, 51, 119, + 107, 123, 127, 128, 124, 134, 135, 30, 60, 101, + 115, 126, 116, 103, 121, 120, 118, 106, 92, 109, + 0, 87, 0, 0, 132, 88, 0, 0, 0, 0, + 0, 131, 131 }; -static const short yycheck[] = -{ - 10, 7, 12, 14, 15, 25, 16, 94, 27, 5, - 6, 48, 27, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 27, 28, 29, 48, 31, 114, 48, 48, - 45, 46, 11, 12, 13, 14, 15, 16, 44, 49, - 5, 4, 53, 7, 8, 9, 10, 27, 58, 29, - 48, 31, 29, 17, 31, 19, 20, 21, 22, 23, - 32, 33, 34, 35, 36, 48, 48, 4, 35, 18, - 26, 24, 18, 18, 84, 25, 28, 32, 18, 89, - 31, 91, 18, 30, 32, 47, 0, 0, 6, 18, - 76, 95, 114, 96, 83, 105, 104, 99, 89, 58, - 93, -1, 46, -1, -1, 123, 49, -1, -1, -1, - -1, -1, 122, 123 +static const short yycheck[] = { 10, + 7, 12, 14, 15, 25, 16, 94, 27, 5, 6, + 48, 27, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 27, 28, 29, 48, 31, 114, 48, 48, 45, + 46, 11, 12, 13, 14, 15, 16, 44, 49, 5, + 4, 53, 7, 8, 9, 10, 27, 58, 29, 48, + 31, 29, 17, 31, 19, 20, 21, 22, 23, 32, + 33, 34, 35, 36, 48, 48, 4, 35, 18, 26, + 24, 18, 18, 84, 25, 28, 32, 18, 89, 31, + 91, 18, 30, 32, 47, 0, 0, 6, 18, 76, + 95, 114, 96, 83, 105, 104, 99, 89, 58, 93, + -1, 46, -1, -1, 123, 49, -1, -1, -1, -1, + -1, 122, 123 }; #define YYPURE 1 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +/* This file comes from bison-1.28. */ + /* Skeleton output parser for bison, - Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990 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 @@ -461,65 +440,63 @@ static const short yycheck[] = This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* This is the parser code that is written into each bison parser when - the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ #ifndef YYSTACK_USE_ALLOCA -# ifdef alloca -# define YYSTACK_USE_ALLOCA 1 -# else /* alloca not defined */ -# ifdef __GNUC__ -# define YYSTACK_USE_ALLOCA 1 -# define alloca __builtin_alloca -# else /* not GNU C. */ -# if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -# define YYSTACK_USE_ALLOCA 1 -# include -# else /* not sparc */ - /* We think this test detects Watcom and Microsoft C. */ - /* This used to test MSDOS, but that is a bad idea since that - symbol is in the user namespace. */ -# if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -# if 0 - /* No need for malloc.h, which pollutes the namespace; instead, - just don't use alloca. */ -# include -# endif -# else /* not MSDOS, or __TURBOC__ */ -# if defined(_AIX) - /* I don't know what this was needed for, but it pollutes the - namespace. So I turned it off. rms, 2 May 1997. */ - /* #include */ +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ #pragma alloca -# define YYSTACK_USE_ALLOCA 1 -# else /* not MSDOS, or __TURBOC__, or _AIX */ -# if 0 - /* haible@ilog.fr says this works for HPUX 9.05 and up, and on - HPUX 10. Eventually we can turn this on. */ -# ifdef __hpux -# define YYSTACK_USE_ALLOCA 1 -# define alloca __builtin_alloca -# endif /* __hpux */ -# endif -# endif /* not _AIX */ -# endif /* not MSDOS, or __TURBOC__ */ -# endif /* not sparc */ -# endif /* not GNU C */ -# endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifndef YYSTACK_USE_ALLOCA -# define YYSTACK_USE_ALLOCA 0 +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ #endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ -#if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca #else -# define YYSTACK_ALLOC malloc +#define YYSTACK_ALLOC malloc #endif +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 @@ -527,96 +504,84 @@ static const short yycheck[] = #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. +/* 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. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ +#define YYBACKUP(token, value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ + { yychar = (token), yylval = (value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ - { \ - yyerror ("syntax error: cannot back up"); \ - YYERROR; \ - } \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). +#ifndef YYPURE - When YYLLOC_DEFAULT is run, CURRENT is set the location of the - first token. By default, to implement support for ranges, extend - its range to the last symbol. */ +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ #endif +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ -/* YYLEX -- calling `yylex' with the right arguments. */ - -#if YYPURE -# if YYLSP_NEEDED -# ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -# else -# define YYLEX yylex (&yylval, &yylloc) -# endif -# else /* !YYLSP_NEEDED */ -# ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, YYLEX_PARAM) -# else -# define YYLEX yylex (&yylval) -# endif -# endif /* !YYLSP_NEEDED */ -#else /* !YYPURE */ -# define YYLEX yylex () -#endif /* !YYPURE */ - - -/* Enable debugging if requested. */ -#if YYDEBUG -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - fprintf Args; \ -} while (0) -/* Nonzero means print parse trace. [The following comment makes no - sense to me. Could someone clarify it? --akim] Since this is - uninitialized, it does not stop multiple parsers from coexisting. - */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -#endif /* !YYDEBUG */ - -/* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -# define YYINITDEPTH 200 +#define YYINITDEPTH 200 #endif -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). */ +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + #if YYMAXDEPTH == 0 -# undef YYMAXDEPTH +#undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 +#define YYMAXDEPTH 10000 #endif /* Define __yy_memcpy. Note that the size argument @@ -625,22 +590,19 @@ int yydebug; of type size_t, but it can handle unsigned int. */ #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -# define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count) +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ +#ifndef __cplusplus /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -# ifndef __cplusplus __yy_memcpy (to, from, count) char *to; - const char *from; + char *from; unsigned int count; -# else /* __cplusplus */ -__yy_memcpy (char *to, const char *from, unsigned int count) -# endif { - register const char *f = from; + register char *f = from; register char *t = to; register int i = count; @@ -648,6 +610,22 @@ __yy_memcpy (char *to, const char *from, unsigned int count) *t++ = *f++; } +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif #endif @@ -659,121 +637,76 @@ __yy_memcpy (char *to, const char *from, unsigned int count) to the proper pointer type. */ #ifdef YYPARSE_PARAM -# ifdef __cplusplus -# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -# define YYPARSE_PARAM_DECL -# else /* !__cplusplus */ -# define YYPARSE_PARAM_ARG YYPARSE_PARAM -# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -# endif /* !__cplusplus */ -#else /* !YYPARSE_PARAM */ -# define YYPARSE_PARAM_ARG -# define YYPARSE_PARAM_DECL -#endif /* !YYPARSE_PARAM */ +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ -# ifdef YYPARSE_PARAM +#ifdef YYPARSE_PARAM int yyparse (void *); -# else +#else int yyparse (void); -# endif #endif - -/* YY_DECL_VARIABLES -- depending whether we use a pure parser, - variables are global, or local to YYPARSE. */ - -#define _YY_DECL_VARIABLES \ -/* The lookahead symbol. */ \ -int yychar; \ - \ -/* The semantic value of the lookahead symbol. */ \ -YYSTYPE yylval; \ - \ -/* Number of parse errors so far. */ \ -int yynerrs; - -#if YYLSP_NEEDED -# define YY_DECL_VARIABLES \ -_YY_DECL_VARIABLES \ - \ -/* Location data for the lookahead symbol. */ \ -YYLTYPE yylloc; -#else -# define YY_DECL_VARIABLES \ -_YY_DECL_VARIABLES #endif - -/* If nonreentrant, generate the variables here. */ - -#if !YYPURE -YY_DECL_VARIABLES -#endif /* !YYPURE */ - int -yyparse (YYPARSE_PARAM_ARG) +yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { - /* If reentrant, generate the variables here. */ -#if YYPURE - YY_DECL_VARIABLES -#endif /* !YYPURE */ - register int yystate; register int yyn; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yychar1 = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yysv': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ -#if YYLSP_NEEDED - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; -#endif -#if YYLSP_NEEDED -# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else -# define YYPOPSTACK (yyvsp--, yyssp--) +#define YYPOPSTACK (yyvsp--, yyssp--) #endif int yystacksize = YYINITDEPTH; int yyfree_stacks = 0; +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; -# if YYLSP_NEEDED - YYLTYPE yyloc; -# endif + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ int yylen; - YYDPRINTF ((stderr, "Starting parse\n")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif yystate = 0; yyerrstatus = 0; @@ -785,33 +718,26 @@ yyparse (YYPARSE_PARAM_ARG) so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; + yyssp = yyss - 1; yyvsp = yyvs; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp = yyls; #endif - goto yysetstate; -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: - yysetstate: - *yyssp = yystate; + *++yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into memory. - */ + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; short *yyss1 = yyss; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED YYLTYPE *yyls1 = yyls; #endif @@ -819,82 +745,83 @@ yyparse (YYPARSE_PARAM_ARG) int size = yyssp - yyss + 1; #ifdef yyoverflow - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. */ -# if YYLSP_NEEDED + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED /* This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -# else - yyoverflow ("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -# endif + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif yyss = yyss1; yyvs = yyvs1; -# if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yyls = yyls1; -# endif +#endif #else /* no yyoverflow */ /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) { - yyerror ("parser stack overflow"); + yyerror("parser stack overflow"); if (yyfree_stacks) { free (yyss); free (yyvs); -# if YYLSP_NEEDED +#ifdef YYLSP_NEEDED free (yyls); -# endif +#endif } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -# if !YYSTACK_USE_ALLOCA +#ifndef YYSTACK_USE_ALLOCA yyfree_stacks = 1; -# endif +#endif yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); __yy_memcpy ((char *)yyss, (char *)yyss1, size * (unsigned int) sizeof (*yyssp)); yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * (unsigned int) sizeof (*yyvsp)); -# if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); __yy_memcpy ((char *)yyls, (char *)yyls1, size * (unsigned int) sizeof (*yylsp)); -# endif +#endif #endif /* no yyoverflow */ yyssp = yyss + size - 1; yyvsp = yyvs + size - 1; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp = yyls + size - 1; #endif - YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize)); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif if (yyssp >= yyss + yystacksize - 1) YYABORT; } - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: + yybackup: /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ @@ -913,7 +840,10 @@ yybackup: if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif yychar = YYLEX; } @@ -924,23 +854,24 @@ yybackup: yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ - YYDPRINTF ((stderr, "Now at end of input.\n")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif } else { - yychar1 = YYTRANSLATE (yychar); + yychar1 = YYTRANSLATE(yychar); -#if YYDEBUG - /* We have to keep this `#if YYDEBUG', since we use variables - which are defined only if `YYDEBUG' is set. */ +#if YYDEBUG != 0 if (yydebug) { fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise - meaning of a token, for further debugging info. */ -# ifdef YYPRINT + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT YYPRINT (stderr, yychar, yylval); -# endif +#endif fprintf (stderr, ")\n"); } #endif @@ -973,63 +904,41 @@ yybackup: YYACCEPT; /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1])); + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate; - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ +/* Do the default action for the current state. */ yydefault: + yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; - goto yyreduce; - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ +/* Do a reduction. yyn is the number of a rule to reduce with. */ yyreduce: - /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to the semantic value of - the lookahead token. This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - -#if YYLSP_NEEDED - /* Similarly for the default location. Let the user run additional - commands if for instance locations are ranges. */ - yyloc = yylsp[1-yylen]; - YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); -#endif - -#if YYDEBUG - /* We have to keep this `#if YYDEBUG', since we use variables which - are defined only if `YYDEBUG' is set. */ +#if YYDEBUG != 0 if (yydebug) { int i; @@ -1044,6 +953,7 @@ yyreduce: } #endif + switch (yyn) { case 1: @@ -1308,16 +1218,16 @@ case 91: { yyval.mttransferaction = mtTransferAction_createErrorMessage (yyvsp[0].tok); ; break;} } - + /* the action file gets copied in in place of this dollarsign */ yyvsp -= yylen; yyssp -= yylen; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp -= yylen; #endif -#if YYDEBUG +#if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; @@ -1329,13 +1239,28 @@ case 91: #endif *++yyvsp = yyval; -#if YYLSP_NEEDED - *++yylsp = yyloc; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } #endif - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ yyn = yyr1[yyn]; @@ -1347,13 +1272,10 @@ case 91: goto yynewstate; +yyerrlab: /* here on detecting error */ -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ { ++yynerrs; @@ -1369,99 +1291,83 @@ yyerrlab: count = 0; /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ for (x = (yyn < 0 ? -yyn : 0); - x < (int) (sizeof (yytname) / sizeof (char *)); x++) + x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) - size += strlen (yytname[x]) + 15, count++; - size += strlen ("parse error, unexpected `") + 1; - size += strlen (yytname[YYTRANSLATE (yychar)]); - msg = (char *) malloc (size); + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); if (msg != 0) { - strcpy (msg, "parse error, unexpected `"); - strcat (msg, yytname[YYTRANSLATE (yychar)]); - strcat (msg, "'"); + strcpy(msg, "parse error"); if (count < 5) { count = 0; for (x = (yyn < 0 ? -yyn : 0); - x < (int) (sizeof (yytname) / sizeof (char *)); x++) + x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) { - strcat (msg, count == 0 ? ", expecting `" : " or `"); - strcat (msg, yytname[x]); - strcat (msg, "'"); + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); count++; } } - yyerror (msg); - free (msg); + yyerror(msg); + free(msg); } else yyerror ("parse error; also virtual memory exceeded"); } else #endif /* YYERROR_VERBOSE */ - yyerror ("parse error"); + yyerror("parse error"); } - goto yyerrlab1; + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ -/*--------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action | -`--------------------------------------------------*/ -yyerrlab1: if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + /* if just tried and failed to reuse lookahead token after an error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; - YYDPRINTF ((stderr, "Discarding token %d (%s).\n", - yychar, yytname[yychar1])); + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + yychar = YYEMPTY; } - /* Else will try to reuse lookahead token after shifting the error - token. */ + /* Else will try to reuse lookahead token + after shifting the error token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; +yyerrdefault: /* current state does not do anything special for the error token. */ -/*-------------------------------------------------------------------. -| yyerrdefault -- current state does not do anything special for the | -| error token. | -`-------------------------------------------------------------------*/ -yyerrdefault: #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ - - /* If its default is to accept any token, ok. Otherwise pop it. */ - yyn = yydefact[yystate]; - if (yyn) - goto yydefault; + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; #endif +yyerrpop: /* pop the current state because it cannot handle the error token */ -/*---------------------------------------------------------------. -| yyerrpop -- pop the current state because it cannot handle the | -| error token | -`---------------------------------------------------------------*/ -yyerrpop: - if (yyssp == yyss) - YYABORT; + if (yyssp == yyss) YYABORT; yyvsp--; yystate = *--yyssp; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp--; #endif -#if YYDEBUG +#if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; @@ -1472,10 +1378,8 @@ yyerrpop: } #endif -/*--------------. -| yyerrhandle. | -`--------------*/ yyerrhandle: + yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; @@ -1498,41 +1402,38 @@ yyerrhandle: if (yyn == YYFINAL) YYACCEPT; - YYDPRINTF ((stderr, "Shifting error token, ")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif *++yyvsp = yylval; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: + yyacceptlab: + /* YYACCEPT comes here. */ if (yyfree_stacks) { free (yyss); free (yyvs); -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED free (yyls); #endif } return 0; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: + yyabortlab: + /* YYABORT comes here. */ if (yyfree_stacks) { free (yyss); free (yyvs); -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED free (yyls); #endif } diff --git a/src/mtgrammar.c.der b/src/mtgrammar.c.der index 73ecb46..ad56cf6 100644 --- a/src/mtgrammar.c.der +++ b/src/mtgrammar.c.der @@ -51,8 +51,8 @@ /* < end of bison.head > */ -/* A Bison parser, made from mtgrammar.y - by GNU bison 1.30. */ +/* A Bison parser, made from mtgrammar.y + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -63,52 +63,52 @@ #define yychar mtchar #define yydebug mtdebug #define yynerrs mtnerrs -# define MT_BADTOK 257 -# define MT_END 258 -# define MT_STATE 259 -# define MT_GLOBAL 260 -# define MT_CONTEXT 261 -# define MT_ONEOF 262 -# define MT_DEFAULTS 263 -# define MT_DEFAULT 264 -# define MT_REFERENCE 265 -# define MT_PARAMETER 266 -# define MT_RESULT 267 -# define MT_CLAUSE 268 -# define MT_LITERAL 269 -# define MT_NULL 270 -# define MT_ANNOTATIONS 271 -# define MT_ARROW 272 -# define MT_MERGE 273 -# define MT_TRANSFERS 274 -# define MT_PRECONDITIONS 275 -# define MT_POSTCONDITIONS 276 -# define MT_LOSEREFERENCE 277 -# define MT_AS 278 -# define MT_ERROR 279 -# define MT_PLUS 280 -# define MT_STAR 281 -# define MT_BAR 282 -# define MT_LPAREN 283 -# define MT_RPAREN 284 -# define MT_LBRACKET 285 -# define MT_RBRACKET 286 -# define MT_LBRACE 287 -# define MT_RBRACE 288 -# define MT_COMMA 289 -# define MT_CHAR 290 -# define MT_INT 291 -# define MT_FLOAT 292 -# define MT_DOUBLE 293 -# define MT_VOID 294 -# define MT_ANYTYPE 295 -# define MT_INTEGRALTYPE 296 -# define MT_UNSIGNEDINTEGRALTYPE 297 -# define MT_SIGNEDINTEGRALTYPE 298 -# define MT_CONST 299 -# define MT_VOLATILE 300 -# define MT_STRINGLIT 301 -# define MT_IDENT 302 +#define MT_BADTOK 257 +#define MT_END 258 +#define MT_STATE 259 +#define MT_GLOBAL 260 +#define MT_CONTEXT 261 +#define MT_ONEOF 262 +#define MT_DEFAULTS 263 +#define MT_DEFAULT 264 +#define MT_REFERENCE 265 +#define MT_PARAMETER 266 +#define MT_RESULT 267 +#define MT_CLAUSE 268 +#define MT_LITERAL 269 +#define MT_NULL 270 +#define MT_ANNOTATIONS 271 +#define MT_ARROW 272 +#define MT_MERGE 273 +#define MT_TRANSFERS 274 +#define MT_PRECONDITIONS 275 +#define MT_POSTCONDITIONS 276 +#define MT_LOSEREFERENCE 277 +#define MT_AS 278 +#define MT_ERROR 279 +#define MT_PLUS 280 +#define MT_STAR 281 +#define MT_BAR 282 +#define MT_LPAREN 283 +#define MT_RPAREN 284 +#define MT_LBRACKET 285 +#define MT_RBRACKET 286 +#define MT_LBRACE 287 +#define MT_RBRACE 288 +#define MT_COMMA 289 +#define MT_CHAR 290 +#define MT_INT 291 +#define MT_FLOAT 292 +#define MT_DOUBLE 293 +#define MT_VOID 294 +#define MT_ANYTYPE 295 +#define MT_INTEGRALTYPE 296 +#define MT_UNSIGNEDINTEGRALTYPE 297 +#define MT_SIGNEDINTEGRALTYPE 298 +#define MT_CONST 299 +#define MT_VOLATILE 300 +#define MT_STRINGLIT 301 +#define MT_IDENT 302 @@ -167,279 +167,258 @@ typedef union { int count; } YYSTYPE; #ifndef YYDEBUG -# define YYDEBUG 1 +#define YYDEBUG 1 #endif #include +#ifndef __cplusplus +#ifndef __STDC__ +#define const +#endif +#endif + #define YYFINAL 135 #define YYFLAG -32768 #define YYNTBASE 49 -/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ #define YYTRANSLATE(x) ((unsigned)(x) <= 302 ? yytranslate[x] : 92) -/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ -static const char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48 +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48 }; #if YYDEBUG != 0 -static const short yyprhs[] = -{ - 0, 0, 1, 3, 7, 12, 15, 16, 19, 21, - 23, 25, 27, 29, 31, 33, 35, 37, 39, 42, - 43, 45, 48, 51, 54, 57, 60, 63, 64, 66, - 68, 71, 73, 77, 80, 81, 83, 85, 87, 90, - 92, 95, 98, 102, 104, 106, 108, 111, 115, 118, - 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, - 142, 144, 147, 149, 153, 156, 159, 163, 168, 171, - 173, 176, 181, 184, 186, 189, 195, 197, 199, 202, - 205, 208, 211, 213, 216, 220, 222, 225, 231, 233, - 235, 237, 240 +static const short yyprhs[] = { 0, + 0, 1, 3, 7, 12, 15, 16, 19, 21, 23, + 25, 27, 29, 31, 33, 35, 37, 39, 42, 43, + 45, 48, 51, 54, 57, 60, 63, 64, 66, 68, + 71, 73, 77, 80, 81, 83, 85, 87, 90, 92, + 95, 98, 102, 104, 106, 108, 111, 115, 118, 122, + 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, + 144, 147, 149, 153, 156, 159, 163, 168, 171, 173, + 176, 181, 184, 186, 189, 195, 197, 199, 202, 205, + 208, 211, 213, 216, 220, 222, 225, 231, 233, 235, + 237, 240 }; -static const short yyrhs[] = -{ - -1, 50, 0, 5, 51, 4, 0, 6, 5, 51, - 4, 0, 48, 52, 0, 0, 53, 52, 0, 54, - 0, 69, 0, 72, 0, 71, 0, 74, 0, 77, - 0, 83, 0, 81, 0, 82, 0, 84, 0, 7, - 56, 0, 0, 56, 0, 12, 57, 0, 11, 57, - 0, 13, 57, 0, 14, 57, 0, 15, 57, 0, - 16, 57, 0, 0, 58, 0, 59, 0, 59, 62, - 0, 60, 0, 59, 28, 58, 0, 67, 61, 0, - 0, 59, 0, 63, 0, 66, 0, 63, 66, 0, - 27, 0, 27, 65, 0, 27, 63, 0, 27, 65, - 63, 0, 45, 0, 46, 0, 64, 0, 65, 64, - 0, 29, 62, 30, 0, 31, 32, 0, 66, 31, - 32, 0, 36, 0, 37, 0, 38, 0, 39, 0, - 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, - 68, 0, 48, 0, 8, 70, 0, 48, 0, 48, - 35, 70, 0, 10, 91, 0, 9, 73, 0, 56, - 18, 91, 0, 56, 18, 91, 73, 0, 17, 75, - 0, 76, 0, 76, 75, 0, 48, 55, 18, 91, - 0, 19, 78, 0, 79, 0, 79, 78, 0, 80, - 26, 80, 18, 89, 0, 91, 0, 27, 0, 21, - 87, 0, 22, 87, 0, 20, 87, 0, 23, 85, - 0, 86, 0, 86, 85, 0, 91, 18, 90, 0, - 88, 0, 88, 87, 0, 91, 24, 91, 18, 89, - 0, 91, 0, 90, 0, 25, 0, 25, 47, 0, - 48, 0 + +static const short yyrhs[] = { -1, + 50, 0, 5, 51, 4, 0, 6, 5, 51, 4, + 0, 48, 52, 0, 0, 53, 52, 0, 54, 0, + 69, 0, 72, 0, 71, 0, 74, 0, 77, 0, + 83, 0, 81, 0, 82, 0, 84, 0, 7, 56, + 0, 0, 56, 0, 12, 57, 0, 11, 57, 0, + 13, 57, 0, 14, 57, 0, 15, 57, 0, 16, + 57, 0, 0, 58, 0, 59, 0, 59, 62, 0, + 60, 0, 59, 28, 58, 0, 67, 61, 0, 0, + 59, 0, 63, 0, 66, 0, 63, 66, 0, 27, + 0, 27, 65, 0, 27, 63, 0, 27, 65, 63, + 0, 45, 0, 46, 0, 64, 0, 65, 64, 0, + 29, 62, 30, 0, 31, 32, 0, 66, 31, 32, + 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, + 0, 41, 0, 42, 0, 43, 0, 44, 0, 68, + 0, 48, 0, 8, 70, 0, 48, 0, 48, 35, + 70, 0, 10, 91, 0, 9, 73, 0, 56, 18, + 91, 0, 56, 18, 91, 73, 0, 17, 75, 0, + 76, 0, 76, 75, 0, 48, 55, 18, 91, 0, + 19, 78, 0, 79, 0, 79, 78, 0, 80, 26, + 80, 18, 89, 0, 91, 0, 27, 0, 21, 87, + 0, 22, 87, 0, 20, 87, 0, 23, 85, 0, + 86, 0, 86, 85, 0, 91, 18, 90, 0, 88, + 0, 88, 87, 0, 91, 24, 91, 18, 89, 0, + 91, 0, 90, 0, 25, 0, 25, 47, 0, 48, + 0 }; #endif #if YYDEBUG != 0 -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const short yyrline[] = -{ - 0, 158, 159, 162, 164, 168, 172, 173, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 189, 193, - 194, 197, 198, 199, 200, 201, 202, 209, 210, 213, - 214, 217, 218, 222, 225, 226, 230, 231, 232, 235, - 236, 237, 238, 241, 242, 245, 246, 249, 250, 251, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 273, 276, 279, 280, 284, 287, 290, 292, 296, 299, - 300, 304, 308, 311, 312, 315, 319, 320, 323, 326, - 329, 332, 335, 336, 339, 342, 343, 346, 350, 351, - 354, 355, 358 +static const short yyrline[] = { 0, + 158, 159, 162, 164, 168, 172, 173, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 189, 193, 194, + 197, 198, 199, 200, 201, 202, 209, 210, 213, 214, + 217, 218, 222, 225, 226, 230, 231, 232, 235, 236, + 237, 238, 241, 242, 245, 246, 249, 250, 251, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 273, + 276, 279, 280, 284, 287, 290, 292, 296, 299, 300, + 304, 308, 311, 312, 315, 319, 320, 323, 326, 329, + 332, 335, 336, 339, 342, 343, 346, 350, 351, 354, + 355, 358 }; #endif -#if YYDEBUG != 0 || defined YYERROR_VERBOSE - -/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ -static const char *const yytname[] = -{ - "$", "error", "$undefined.", "MT_BADTOK", "MT_END", "MT_STATE", - "MT_GLOBAL", "MT_CONTEXT", "MT_ONEOF", "MT_DEFAULTS", "MT_DEFAULT", - "MT_REFERENCE", "MT_PARAMETER", "MT_RESULT", "MT_CLAUSE", "MT_LITERAL", - "MT_NULL", "MT_ANNOTATIONS", "MT_ARROW", "MT_MERGE", "MT_TRANSFERS", - "MT_PRECONDITIONS", "MT_POSTCONDITIONS", "MT_LOSEREFERENCE", "MT_AS", - "MT_ERROR", "MT_PLUS", "MT_STAR", "MT_BAR", "MT_LPAREN", "MT_RPAREN", - "MT_LBRACKET", "MT_RBRACKET", "MT_LBRACE", "MT_RBRACE", "MT_COMMA", - "MT_CHAR", "MT_INT", "MT_FLOAT", "MT_DOUBLE", "MT_VOID", "MT_ANYTYPE", - "MT_INTEGRALTYPE", "MT_UNSIGNEDINTEGRALTYPE", "MT_SIGNEDINTEGRALTYPE", - "MT_CONST", "MT_VOLATILE", "MT_STRINGLIT", "MT_IDENT", "file", - "mtsDeclaration", "declarationNode", "declarationPieces", - "declarationPiece", "contextDeclaration", "optContextSelection", - "contextSelection", "optType", "typeExpression", "completeType", - "completeTypeAux", "optCompleteType", "abstractDecl", "pointers", - "innerMods", "innerModsList", "abstractDeclBase", "typeSpecifier", - "typeName", "valuesDeclaration", "valuesList", "defaultNode", - "defaultsDeclaration", "defaultDeclarationList", - "annotationsDeclaration", "annotationsDeclarationList", - "annotationDeclaration", "mergeDeclaration", "mergeClauses", - "mergeClause", "mergeItem", "preconditionsDeclaration", - "postconditionsDeclaration", "transfersDeclaration", - "loseReferenceDeclaration", "lostClauses", "lostClause", - "transferClauses", "transferClause", "transferAction", "errorAction", - "valueChoice", NULL +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK", +"MT_END","MT_STATE","MT_GLOBAL","MT_CONTEXT","MT_ONEOF","MT_DEFAULTS","MT_DEFAULT", +"MT_REFERENCE","MT_PARAMETER","MT_RESULT","MT_CLAUSE","MT_LITERAL","MT_NULL", +"MT_ANNOTATIONS","MT_ARROW","MT_MERGE","MT_TRANSFERS","MT_PRECONDITIONS","MT_POSTCONDITIONS", +"MT_LOSEREFERENCE","MT_AS","MT_ERROR","MT_PLUS","MT_STAR","MT_BAR","MT_LPAREN", +"MT_RPAREN","MT_LBRACKET","MT_RBRACKET","MT_LBRACE","MT_RBRACE","MT_COMMA","MT_CHAR", +"MT_INT","MT_FLOAT","MT_DOUBLE","MT_VOID","MT_ANYTYPE","MT_INTEGRALTYPE","MT_UNSIGNEDINTEGRALTYPE", +"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_STRINGLIT","MT_IDENT","file", +"mtsDeclaration","declarationNode","declarationPieces","declarationPiece","contextDeclaration", +"optContextSelection","contextSelection","optType","typeExpression","completeType", +"completeTypeAux","optCompleteType","abstractDecl","pointers","innerMods","innerModsList", +"abstractDeclBase","typeSpecifier","typeName","valuesDeclaration","valuesList", +"defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration", +"annotationsDeclarationList","annotationDeclaration","mergeDeclaration","mergeClauses", +"mergeClause","mergeItem","preconditionsDeclaration","postconditionsDeclaration", +"transfersDeclaration","loseReferenceDeclaration","lostClauses","lostClause", +"transferClauses","transferClause","transferAction","errorAction","valueChoice", NULL }; #endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const short yyr1[] = -{ - 0, 49, 49, 50, 50, 51, 52, 52, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 54, 55, - 55, 56, 56, 56, 56, 56, 56, 57, 57, 58, - 58, 59, 59, 60, 61, 61, 62, 62, 62, 63, - 63, 63, 63, 64, 64, 65, 65, 66, 66, 66, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 68, 69, 70, 70, 71, 72, 73, 73, 74, 75, - 75, 76, 77, 78, 78, 79, 80, 80, 81, 82, - 83, 84, 85, 85, 86, 87, 87, 88, 89, 89, - 90, 90, 91 +static const short yyr1[] = { 0, + 49, 49, 50, 50, 51, 52, 52, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 54, 55, 55, + 56, 56, 56, 56, 56, 56, 57, 57, 58, 58, + 59, 59, 60, 61, 61, 62, 62, 62, 63, 63, + 63, 63, 64, 64, 65, 65, 66, 66, 66, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, + 69, 70, 70, 71, 72, 73, 73, 74, 75, 75, + 76, 77, 78, 78, 79, 80, 80, 81, 82, 83, + 84, 85, 85, 86, 87, 87, 88, 89, 89, 90, + 90, 91 }; -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const short yyr2[] = -{ - 0, 0, 1, 3, 4, 2, 0, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 2, 2, 2, 2, 2, 2, 0, 1, 1, - 2, 1, 3, 2, 0, 1, 1, 1, 2, 1, - 2, 2, 3, 1, 1, 1, 2, 3, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 3, 2, 2, 3, 4, 2, 1, - 2, 4, 2, 1, 2, 5, 1, 1, 2, 2, - 2, 2, 1, 2, 3, 1, 2, 5, 1, 1, - 1, 2, 1 +static const short yyr2[] = { 0, + 0, 1, 3, 4, 2, 0, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 2, 2, 2, 2, 2, 2, 0, 1, 1, 2, + 1, 3, 2, 0, 1, 1, 1, 2, 1, 2, + 2, 3, 1, 1, 1, 2, 3, 2, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 3, 2, 2, 3, 4, 2, 1, 2, + 4, 2, 1, 2, 5, 1, 1, 2, 2, 2, + 2, 1, 2, 3, 1, 2, 5, 1, 1, 1, + 2, 1 }; -/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE - doesn't specify something else to do. Zero means the default is an - error. */ -static const short yydefact[] = -{ - 1, 0, 0, 2, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 5, 6, 8, - 9, 11, 10, 12, 13, 15, 16, 14, 17, 3, - 0, 27, 27, 27, 27, 27, 27, 18, 62, 61, - 0, 65, 92, 64, 19, 68, 69, 77, 72, 73, - 0, 76, 80, 85, 0, 78, 79, 81, 82, 0, - 7, 4, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 60, 22, 28, 29, 31, 34, 59, 21, 23, - 24, 25, 26, 0, 0, 0, 20, 70, 74, 0, - 86, 0, 83, 0, 39, 0, 0, 0, 30, 36, - 37, 35, 33, 63, 66, 0, 0, 0, 90, 84, - 43, 44, 41, 45, 40, 32, 0, 48, 38, 0, - 67, 71, 0, 0, 91, 42, 46, 47, 49, 75, - 89, 88, 87, 0, 0, 0 +static const short yydefact[] = { 1, + 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 6, 8, 9, + 11, 10, 12, 13, 15, 16, 14, 17, 3, 0, + 27, 27, 27, 27, 27, 27, 18, 62, 61, 0, + 65, 92, 64, 19, 68, 69, 77, 72, 73, 0, + 76, 80, 85, 0, 78, 79, 81, 82, 0, 7, + 4, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 60, 22, 28, 29, 31, 34, 59, 21, 23, 24, + 25, 26, 0, 0, 0, 20, 70, 74, 0, 86, + 0, 83, 0, 39, 0, 0, 0, 30, 36, 37, + 35, 33, 63, 66, 0, 0, 0, 90, 84, 43, + 44, 41, 45, 40, 32, 0, 48, 38, 0, 67, + 71, 0, 0, 91, 42, 46, 47, 49, 75, 89, + 88, 87, 0, 0, 0 }; -static const short yydefgoto[] = -{ - 133, 3, 5, 17, 18, 19, 85, 40, 72, 73, - 74, 75, 102, 98, 99, 113, 114, 100, 76, 77, - 20, 39, 21, 22, 41, 23, 45, 46, 24, 48, - 49, 50, 25, 26, 27, 28, 57, 58, 52, 53, - 129, 130, 54 +static const short yydefgoto[] = { 133, + 3, 5, 17, 18, 19, 85, 40, 72, 73, 74, + 75, 102, 98, 99, 113, 114, 100, 76, 77, 20, + 39, 21, 22, 41, 23, 45, 46, 24, 48, 49, + 50, 25, 26, 27, 28, 57, 58, 52, 53, 129, + 130, 54 }; -static const short yypact[] = -{ - 4, -37, 35,-32768, 36, 37, -37, 21, 2, 21, - 17, 18, -19, 17, 17, 17, 17,-32768, 36,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 63, -23, -23, -23, -23, -23, -23,-32768, 33,-32768, - 51,-32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, - 44,-32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768, - -32768,-32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19, - -32768, 17,-32768, 50, -15, -23, 20, 45,-32768, 23, - 49, 48,-32768,-32768, 21, 17, 60, 64, 38,-32768, - -32768,-32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52, - -32768,-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768, 86, 87,-32768 +static const short yypact[] = { 4, + -37, 35,-32768, 36, 37, -37, 21, 2, 21, 17, + 18, -19, 17, 17, 17, 17,-32768, 36,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 63, + -23, -23, -23, -23, -23, -23,-32768, 33,-32768, 51, +-32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, 44, +-32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768,-32768, +-32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19,-32768, + 17,-32768, 50, -15, -23, 20, 45,-32768, 23, 49, + 48,-32768,-32768, 21, 17, 60, 64, 38,-32768,-32768, +-32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52,-32768, +-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 86, 87,-32768 }; -static const short yypgoto[] = -{ - -32768,-32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, - 14,-32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768, - -32768, 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57, - -32768, 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, - -18, 7, -10 +static const short yypgoto[] = {-32768, +-32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, 14, +-32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768,-32768, + 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57,-32768, + 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, -18, + 7, -10 }; #define YYLAST 113 -static const short yytable[] = -{ - 43, 37, 51, 55, 56, 108, 59, 112, 47, 1, - 2, 4, 94, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 94, 95, 96, 71, 97, 125, 42, 42, - 110, 111, 31, 32, 33, 34, 35, 36, 86, 51, - 6, 29, 90, 7, 8, 9, 10, 94, 59, 96, - 38, 97, 96, 11, 97, 12, 13, 14, 15, 16, - 78, 79, 80, 81, 82, 42, 44, 61, 83, 84, - 89, 91, 93, 105, 104, 108, 95, 117, 122, 51, - 119, 107, 123, 127, 128, 124, 134, 135, 30, 60, - 101, 115, 126, 116, 103, 121, 120, 118, 106, 92, - 109, 0, 87, 0, 0, 132, 88, 0, 0, 0, - 0, 0, 131, 131 +static const short yytable[] = { 43, + 37, 51, 55, 56, 108, 59, 112, 47, 1, 2, + 4, 94, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 94, 95, 96, 71, 97, 125, 42, 42, 110, + 111, 31, 32, 33, 34, 35, 36, 86, 51, 6, + 29, 90, 7, 8, 9, 10, 94, 59, 96, 38, + 97, 96, 11, 97, 12, 13, 14, 15, 16, 78, + 79, 80, 81, 82, 42, 44, 61, 83, 84, 89, + 91, 93, 105, 104, 108, 95, 117, 122, 51, 119, + 107, 123, 127, 128, 124, 134, 135, 30, 60, 101, + 115, 126, 116, 103, 121, 120, 118, 106, 92, 109, + 0, 87, 0, 0, 132, 88, 0, 0, 0, 0, + 0, 131, 131 }; -static const short yycheck[] = -{ - 10, 7, 12, 14, 15, 25, 16, 94, 27, 5, - 6, 48, 27, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 27, 28, 29, 48, 31, 114, 48, 48, - 45, 46, 11, 12, 13, 14, 15, 16, 44, 49, - 5, 4, 53, 7, 8, 9, 10, 27, 58, 29, - 48, 31, 29, 17, 31, 19, 20, 21, 22, 23, - 32, 33, 34, 35, 36, 48, 48, 4, 35, 18, - 26, 24, 18, 18, 84, 25, 28, 32, 18, 89, - 31, 91, 18, 30, 32, 47, 0, 0, 6, 18, - 76, 95, 114, 96, 83, 105, 104, 99, 89, 58, - 93, -1, 46, -1, -1, 123, 49, -1, -1, -1, - -1, -1, 122, 123 +static const short yycheck[] = { 10, + 7, 12, 14, 15, 25, 16, 94, 27, 5, 6, + 48, 27, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 27, 28, 29, 48, 31, 114, 48, 48, 45, + 46, 11, 12, 13, 14, 15, 16, 44, 49, 5, + 4, 53, 7, 8, 9, 10, 27, 58, 29, 48, + 31, 29, 17, 31, 19, 20, 21, 22, 23, 32, + 33, 34, 35, 36, 48, 48, 4, 35, 18, 26, + 24, 18, 18, 84, 25, 28, 32, 18, 89, 31, + 91, 18, 30, 32, 47, 0, 0, 6, 18, 76, + 95, 114, 96, 83, 105, 104, 99, 89, 58, 93, + -1, 46, -1, -1, 123, 49, -1, -1, -1, -1, + -1, 122, 123 }; #define YYPURE 1 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +/* This file comes from bison-1.28. */ + /* Skeleton output parser for bison, - Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990 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 @@ -461,65 +440,63 @@ static const short yycheck[] = This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* This is the parser code that is written into each bison parser when - the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ #ifndef YYSTACK_USE_ALLOCA -# ifdef alloca -# define YYSTACK_USE_ALLOCA 1 -# else /* alloca not defined */ -# ifdef __GNUC__ -# define YYSTACK_USE_ALLOCA 1 -# define alloca __builtin_alloca -# else /* not GNU C. */ -# if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -# define YYSTACK_USE_ALLOCA 1 -# include -# else /* not sparc */ - /* We think this test detects Watcom and Microsoft C. */ - /* This used to test MSDOS, but that is a bad idea since that - symbol is in the user namespace. */ -# if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -# if 0 - /* No need for malloc.h, which pollutes the namespace; instead, - just don't use alloca. */ -# include -# endif -# else /* not MSDOS, or __TURBOC__ */ -# if defined(_AIX) - /* I don't know what this was needed for, but it pollutes the - namespace. So I turned it off. rms, 2 May 1997. */ - /* #include */ +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ #pragma alloca -# define YYSTACK_USE_ALLOCA 1 -# else /* not MSDOS, or __TURBOC__, or _AIX */ -# if 0 - /* haible@ilog.fr says this works for HPUX 9.05 and up, and on - HPUX 10. Eventually we can turn this on. */ -# ifdef __hpux -# define YYSTACK_USE_ALLOCA 1 -# define alloca __builtin_alloca -# endif /* __hpux */ -# endif -# endif /* not _AIX */ -# endif /* not MSDOS, or __TURBOC__ */ -# endif /* not sparc */ -# endif /* not GNU C */ -# endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifndef YYSTACK_USE_ALLOCA -# define YYSTACK_USE_ALLOCA 0 +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ #endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ -#if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca #else -# define YYSTACK_ALLOC malloc +#define YYSTACK_ALLOC malloc #endif +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 @@ -527,96 +504,84 @@ static const short yycheck[] = #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. +/* 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. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ +#define YYBACKUP(token, value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ + { yychar = (token), yylval = (value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ - { \ - yyerror ("syntax error: cannot back up"); \ - YYERROR; \ - } \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). +#ifndef YYPURE - When YYLLOC_DEFAULT is run, CURRENT is set the location of the - first token. By default, to implement support for ranges, extend - its range to the last symbol. */ +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ #endif +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ -/* YYLEX -- calling `yylex' with the right arguments. */ - -#if YYPURE -# if YYLSP_NEEDED -# ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -# else -# define YYLEX yylex (&yylval, &yylloc) -# endif -# else /* !YYLSP_NEEDED */ -# ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, YYLEX_PARAM) -# else -# define YYLEX yylex (&yylval) -# endif -# endif /* !YYLSP_NEEDED */ -#else /* !YYPURE */ -# define YYLEX yylex () -#endif /* !YYPURE */ - - -/* Enable debugging if requested. */ -#if YYDEBUG -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - fprintf Args; \ -} while (0) -/* Nonzero means print parse trace. [The following comment makes no - sense to me. Could someone clarify it? --akim] Since this is - uninitialized, it does not stop multiple parsers from coexisting. - */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -#endif /* !YYDEBUG */ - -/* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -# define YYINITDEPTH 200 +#define YYINITDEPTH 200 #endif -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). */ +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + #if YYMAXDEPTH == 0 -# undef YYMAXDEPTH +#undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 +#define YYMAXDEPTH 10000 #endif /* Define __yy_memcpy. Note that the size argument @@ -625,22 +590,19 @@ int yydebug; of type size_t, but it can handle unsigned int. */ #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -# define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count) +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ +#ifndef __cplusplus /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -# ifndef __cplusplus __yy_memcpy (to, from, count) char *to; - const char *from; + char *from; unsigned int count; -# else /* __cplusplus */ -__yy_memcpy (char *to, const char *from, unsigned int count) -# endif { - register const char *f = from; + register char *f = from; register char *t = to; register int i = count; @@ -648,6 +610,22 @@ __yy_memcpy (char *to, const char *from, unsigned int count) *t++ = *f++; } +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif #endif @@ -659,121 +637,76 @@ __yy_memcpy (char *to, const char *from, unsigned int count) to the proper pointer type. */ #ifdef YYPARSE_PARAM -# ifdef __cplusplus -# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -# define YYPARSE_PARAM_DECL -# else /* !__cplusplus */ -# define YYPARSE_PARAM_ARG YYPARSE_PARAM -# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -# endif /* !__cplusplus */ -#else /* !YYPARSE_PARAM */ -# define YYPARSE_PARAM_ARG -# define YYPARSE_PARAM_DECL -#endif /* !YYPARSE_PARAM */ +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ -# ifdef YYPARSE_PARAM +#ifdef YYPARSE_PARAM int yyparse (void *); -# else +#else int yyparse (void); -# endif #endif - -/* YY_DECL_VARIABLES -- depending whether we use a pure parser, - variables are global, or local to YYPARSE. */ - -#define _YY_DECL_VARIABLES \ -/* The lookahead symbol. */ \ -int yychar; \ - \ -/* The semantic value of the lookahead symbol. */ \ -YYSTYPE yylval; \ - \ -/* Number of parse errors so far. */ \ -int yynerrs; - -#if YYLSP_NEEDED -# define YY_DECL_VARIABLES \ -_YY_DECL_VARIABLES \ - \ -/* Location data for the lookahead symbol. */ \ -YYLTYPE yylloc; -#else -# define YY_DECL_VARIABLES \ -_YY_DECL_VARIABLES #endif - -/* If nonreentrant, generate the variables here. */ - -#if !YYPURE -YY_DECL_VARIABLES -#endif /* !YYPURE */ - int -yyparse (YYPARSE_PARAM_ARG) +yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { - /* If reentrant, generate the variables here. */ -#if YYPURE - YY_DECL_VARIABLES -#endif /* !YYPURE */ - register int yystate; register int yyn; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yychar1 = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yysv': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ -#if YYLSP_NEEDED - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; -#endif -#if YYLSP_NEEDED -# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else -# define YYPOPSTACK (yyvsp--, yyssp--) +#define YYPOPSTACK (yyvsp--, yyssp--) #endif int yystacksize = YYINITDEPTH; int yyfree_stacks = 0; +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; -# if YYLSP_NEEDED - YYLTYPE yyloc; -# endif + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ int yylen; - YYDPRINTF ((stderr, "Starting parse\n")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif yystate = 0; yyerrstatus = 0; @@ -785,33 +718,26 @@ yyparse (YYPARSE_PARAM_ARG) so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; + yyssp = yyss - 1; yyvsp = yyvs; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp = yyls; #endif - goto yysetstate; -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: - yysetstate: - *yyssp = yystate; + *++yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into memory. - */ + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; short *yyss1 = yyss; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED YYLTYPE *yyls1 = yyls; #endif @@ -819,82 +745,83 @@ yyparse (YYPARSE_PARAM_ARG) int size = yyssp - yyss + 1; #ifdef yyoverflow - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. */ -# if YYLSP_NEEDED + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED /* This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -# else - yyoverflow ("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -# endif + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif yyss = yyss1; yyvs = yyvs1; -# if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yyls = yyls1; -# endif +#endif #else /* no yyoverflow */ /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) { - yyerror ("parser stack overflow"); + yyerror("parser stack overflow"); if (yyfree_stacks) { free (yyss); free (yyvs); -# if YYLSP_NEEDED +#ifdef YYLSP_NEEDED free (yyls); -# endif +#endif } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -# if !YYSTACK_USE_ALLOCA +#ifndef YYSTACK_USE_ALLOCA yyfree_stacks = 1; -# endif +#endif yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); __yy_memcpy ((char *)yyss, (char *)yyss1, size * (unsigned int) sizeof (*yyssp)); yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * (unsigned int) sizeof (*yyvsp)); -# if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); __yy_memcpy ((char *)yyls, (char *)yyls1, size * (unsigned int) sizeof (*yylsp)); -# endif +#endif #endif /* no yyoverflow */ yyssp = yyss + size - 1; yyvsp = yyvs + size - 1; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp = yyls + size - 1; #endif - YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize)); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif if (yyssp >= yyss + yystacksize - 1) YYABORT; } - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: + yybackup: /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ @@ -913,7 +840,10 @@ yybackup: if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif yychar = YYLEX; } @@ -924,23 +854,24 @@ yybackup: yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ - YYDPRINTF ((stderr, "Now at end of input.\n")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif } else { - yychar1 = YYTRANSLATE (yychar); + yychar1 = YYTRANSLATE(yychar); -#if YYDEBUG - /* We have to keep this `#if YYDEBUG', since we use variables - which are defined only if `YYDEBUG' is set. */ +#if YYDEBUG != 0 if (yydebug) { fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise - meaning of a token, for further debugging info. */ -# ifdef YYPRINT + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT YYPRINT (stderr, yychar, yylval); -# endif +#endif fprintf (stderr, ")\n"); } #endif @@ -973,63 +904,41 @@ yybackup: YYACCEPT; /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1])); + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate; - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ +/* Do the default action for the current state. */ yydefault: + yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; - goto yyreduce; - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ +/* Do a reduction. yyn is the number of a rule to reduce with. */ yyreduce: - /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to the semantic value of - the lookahead token. This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - -#if YYLSP_NEEDED - /* Similarly for the default location. Let the user run additional - commands if for instance locations are ranges. */ - yyloc = yylsp[1-yylen]; - YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); -#endif - -#if YYDEBUG - /* We have to keep this `#if YYDEBUG', since we use variables which - are defined only if `YYDEBUG' is set. */ +#if YYDEBUG != 0 if (yydebug) { int i; @@ -1044,6 +953,7 @@ yyreduce: } #endif + switch (yyn) { case 1: @@ -1308,16 +1218,16 @@ case 91: { yyval.mttransferaction = mtTransferAction_createErrorMessage (yyvsp[0].tok); ; break;} } - + /* the action file gets copied in in place of this dollarsign */ yyvsp -= yylen; yyssp -= yylen; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp -= yylen; #endif -#if YYDEBUG +#if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; @@ -1329,13 +1239,28 @@ case 91: #endif *++yyvsp = yyval; -#if YYLSP_NEEDED - *++yylsp = yyloc; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } #endif - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ yyn = yyr1[yyn]; @@ -1347,13 +1272,10 @@ case 91: goto yynewstate; +yyerrlab: /* here on detecting error */ -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ { ++yynerrs; @@ -1369,99 +1291,83 @@ yyerrlab: count = 0; /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ for (x = (yyn < 0 ? -yyn : 0); - x < (int) (sizeof (yytname) / sizeof (char *)); x++) + x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) - size += strlen (yytname[x]) + 15, count++; - size += strlen ("parse error, unexpected `") + 1; - size += strlen (yytname[YYTRANSLATE (yychar)]); - msg = (char *) malloc (size); + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); if (msg != 0) { - strcpy (msg, "parse error, unexpected `"); - strcat (msg, yytname[YYTRANSLATE (yychar)]); - strcat (msg, "'"); + strcpy(msg, "parse error"); if (count < 5) { count = 0; for (x = (yyn < 0 ? -yyn : 0); - x < (int) (sizeof (yytname) / sizeof (char *)); x++) + x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) { - strcat (msg, count == 0 ? ", expecting `" : " or `"); - strcat (msg, yytname[x]); - strcat (msg, "'"); + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); count++; } } - yyerror (msg); - free (msg); + yyerror(msg); + free(msg); } else yyerror ("parse error; also virtual memory exceeded"); } else #endif /* YYERROR_VERBOSE */ - yyerror ("parse error"); + yyerror("parse error"); } - goto yyerrlab1; + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ -/*--------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action | -`--------------------------------------------------*/ -yyerrlab1: if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + /* if just tried and failed to reuse lookahead token after an error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; - YYDPRINTF ((stderr, "Discarding token %d (%s).\n", - yychar, yytname[yychar1])); + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + yychar = YYEMPTY; } - /* Else will try to reuse lookahead token after shifting the error - token. */ + /* Else will try to reuse lookahead token + after shifting the error token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; +yyerrdefault: /* current state does not do anything special for the error token. */ -/*-------------------------------------------------------------------. -| yyerrdefault -- current state does not do anything special for the | -| error token. | -`-------------------------------------------------------------------*/ -yyerrdefault: #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ - - /* If its default is to accept any token, ok. Otherwise pop it. */ - yyn = yydefact[yystate]; - if (yyn) - goto yydefault; + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; #endif +yyerrpop: /* pop the current state because it cannot handle the error token */ -/*---------------------------------------------------------------. -| yyerrpop -- pop the current state because it cannot handle the | -| error token | -`---------------------------------------------------------------*/ -yyerrpop: - if (yyssp == yyss) - YYABORT; + if (yyssp == yyss) YYABORT; yyvsp--; yystate = *--yyssp; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED yylsp--; #endif -#if YYDEBUG +#if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; @@ -1472,10 +1378,8 @@ yyerrpop: } #endif -/*--------------. -| yyerrhandle. | -`--------------*/ yyerrhandle: + yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; @@ -1498,41 +1402,38 @@ yyerrhandle: if (yyn == YYFINAL) YYACCEPT; - YYDPRINTF ((stderr, "Shifting error token, ")); +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif *++yyvsp = yylval; -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: + yyacceptlab: + /* YYACCEPT comes here. */ if (yyfree_stacks) { free (yyss); free (yyvs); -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED free (yyls); #endif } return 0; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: + yyabortlab: + /* YYABORT comes here. */ if (yyfree_stacks) { free (yyss); free (yyvs); -#if YYLSP_NEEDED +#ifdef YYLSP_NEEDED free (yyls); #endif } diff --git a/test/Makefile.am b/test/Makefile.am index f3d1e7a..1c343c6 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -44,7 +44,7 @@ UNITTESTS = \ linked lintcomments list loopexec \ macros macrosef merge mergenull modifies modtest moduncon \ mongoincludes mystrncat noeffect null observer oldstyle outglob outparam \ - postnotnull preds prefixes printflike rc refcounts release repexpose \ + parentype postnotnull preds prefixes printflike rc refcounts release repexpose \ returned sharing shifts slovaknames \ specclauses \ special stack staticarray strings \ @@ -600,6 +600,12 @@ outparam: .PHONY: postnotnull postnotnull: ${SPLINTR} postnotnull.c -expect 1 + +### evans 2002-02-09: added parentype.c +.PHONY: parentype +parentype: + ${SPLINTR} parentype.c + # # Four new +fcnuse errors for -strict (evans 2001-07-22) # diff --git a/test/Makefile.in b/test/Makefile.in index 88318b9..47302ed 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -121,7 +121,7 @@ UNITTESTS = \ linked lintcomments list loopexec \ macros macrosef merge mergenull modifies modtest moduncon \ mongoincludes mystrncat noeffect null observer oldstyle outglob outparam \ - postnotnull preds prefixes printflike rc refcounts release repexpose \ + parentype postnotnull preds prefixes printflike rc refcounts release repexpose \ returned sharing shifts slovaknames \ specclauses \ special stack staticarray strings \ @@ -1411,6 +1411,12 @@ outparam: .PHONY: postnotnull postnotnull: ${SPLINTR} postnotnull.c -expect 1 + +### evans 2002-02-09: added parentype.c +.PHONY: parentype +parentype: + ${SPLINTR} parentype.c + # # Four new +fcnuse errors for -strict (evans 2001-07-22) # diff --git a/test/parentype.c b/test/parentype.c new file mode 100644 index 0000000..c0a9f59 --- /dev/null +++ b/test/parentype.c @@ -0,0 +1,8 @@ +int f(void) +{ + double (*y)[3]; + double z[3]; + + y = &z; /* line 6 */ + return 0; +} diff --git a/test/parentype.expect b/test/parentype.expect new file mode 100644 index 0000000..2b06c77 --- /dev/null +++ b/test/parentype.expect @@ -0,0 +1,2 @@ + +Finished checking --- no warnings