From c8092cb2609dcb57396fe27c2adfcdba59d9d901 Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Fri, 18 Feb 2005 16:34:21 +0000 Subject: ContainedSubtype parsing --- libasn1parser/asn1p_expr.h | 3 +- libasn1parser/asn1p_y.c | 1547 ++++++++++++++++++++++---------------------- libasn1parser/asn1p_y.y | 55 +- 3 files changed, 834 insertions(+), 771 deletions(-) diff --git a/libasn1parser/asn1p_expr.h b/libasn1parser/asn1p_expr.h index 05329e0c..c7ec1457 100644 --- a/libasn1parser/asn1p_expr.h +++ b/libasn1parser/asn1p_expr.h @@ -31,7 +31,6 @@ typedef enum asn1p_expr_type { A1TC_REFERENCE, /* Reference to the type defined elsewhere */ A1TC_EXPORTVAR, /* We're exporting this definition */ A1TC_UNIVERVAL, /* A value of an ENUMERATED, INTEGER or BS */ - A1TC_BOOLBITPOS, /* A bit position in a BIT STRING */ A1TC_BITVECTOR, /* A plain collection of bits */ A1TC_OPAQUE, /* Opaque data encoded as a bitvector */ A1TC_EXTENSIBLE, /* An extension marker "..." */ @@ -122,7 +121,7 @@ typedef struct asn1p_expr_s { asn1p_expr_type_e expr_type; /* - * Referenced type, if defined elsewhere. + * Referenced type, defined elsewhere. * (If expr_type == A1TC_REFERENCE) */ asn1p_ref_t *reference; diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c index 36a7b3b1..70d1a108 100644 --- a/libasn1parser/asn1p_y.c +++ b/libasn1parser/asn1p_y.c @@ -204,7 +204,7 @@ typedef union { -#define YYFINAL 415 +#define YYFINAL 417 #define YYFLAG -32768 #define YYNTBASE 116 @@ -258,26 +258,26 @@ static const short yyprhs[] = { 0, 107, 111, 113, 117, 119, 123, 127, 130, 132, 136, 138, 142, 144, 151, 153, 155, 156, 158, 160, 164, 166, 168, 173, 177, 181, 188, 190, 194, 196, 200, - 204, 206, 210, 212, 214, 215, 217, 219, 223, 227, - 231, 233, 235, 239, 242, 244, 250, 251, 253, 255, - 259, 262, 267, 272, 273, 275, 276, 283, 285, 288, - 290, 292, 294, 298, 302, 306, 308, 310, 315, 320, - 325, 332, 339, 341, 346, 351, 353, 357, 359, 363, - 367, 371, 373, 377, 379, 383, 385, 387, 389, 391, - 396, 400, 401, 405, 407, 409, 411, 413, 415, 417, - 419, 421, 423, 427, 429, 432, 434, 436, 438, 440, - 443, 446, 448, 450, 453, 456, 458, 460, 462, 464, - 467, 469, 472, 474, 476, 478, 480, 482, 484, 486, - 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, - 508, 510, 511, 513, 515, 520, 524, 529, 531, 535, - 541, 543, 547, 551, 555, 560, 564, 566, 570, 574, - 578, 582, 584, 586, 588, 591, 594, 598, 600, 602, - 604, 606, 608, 610, 612, 618, 620, 624, 626, 630, - 631, 633, 635, 637, 639, 641, 643, 647, 652, 654, - 658, 661, 665, 667, 671, 672, 674, 676, 679, 682, - 686, 688, 692, 694, 699, 704, 706, 708, 710, 712, - 713, 715, 718, 723, 724, 726, 728, 730, 731, 733, - 735, 737, 739, 741, 742, 744 + 204, 208, 210, 214, 216, 218, 219, 221, 223, 227, + 231, 235, 237, 239, 243, 246, 248, 254, 255, 257, + 259, 263, 266, 271, 276, 277, 279, 280, 287, 289, + 292, 294, 296, 298, 302, 306, 310, 312, 314, 319, + 324, 329, 336, 343, 345, 350, 355, 357, 361, 363, + 367, 371, 375, 377, 381, 383, 387, 389, 391, 393, + 395, 400, 404, 405, 409, 411, 413, 415, 417, 419, + 421, 423, 425, 427, 431, 433, 436, 438, 440, 442, + 444, 447, 450, 452, 454, 457, 460, 462, 464, 466, + 468, 471, 473, 476, 478, 480, 482, 484, 486, 488, + 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, + 510, 512, 514, 515, 517, 519, 524, 528, 533, 535, + 539, 545, 547, 551, 555, 559, 564, 568, 570, 574, + 578, 582, 586, 588, 590, 592, 595, 598, 602, 604, + 606, 608, 610, 612, 614, 616, 618, 624, 626, 630, + 632, 636, 637, 639, 641, 643, 645, 647, 649, 653, + 658, 660, 664, 667, 671, 673, 677, 678, 680, 682, + 685, 688, 692, 694, 698, 700, 705, 710, 712, 714, + 716, 718, 719, 721, 724, 729, 730, 732, 734, 736, + 737, 739, 741, 743, 745, 747, 748, 750 }; static const short yyrhs[] = { 117, @@ -300,62 +300,63 @@ static const short yyrhs[] = { 117, 108, 142, 0, 102, 0, 186, 0, 213, 3, 208, 87, 0, 213, 3, 163, 0, 213, 3, 153, 0, 213, 103, 144, 104, 3, 163, 0, 145, 0, 144, - 108, 145, 0, 213, 0, 213, 109, 216, 0, 175, - 109, 216, 0, 147, 0, 146, 108, 147, 0, 163, - 0, 216, 0, 0, 149, 0, 150, 0, 149, 108, - 150, 0, 216, 163, 202, 0, 30, 68, 163, 0, - 162, 0, 152, 0, 151, 108, 152, 0, 216, 163, - 0, 162, 0, 28, 103, 155, 104, 157, 0, 0, - 88, 0, 156, 0, 155, 108, 156, 0, 168, 202, - 0, 168, 163, 154, 202, 0, 168, 168, 154, 202, - 0, 0, 158, 0, 0, 95, 82, 103, 159, 160, - 104, 0, 161, 0, 160, 161, 0, 4, 0, 168, - 0, 102, 0, 102, 110, 173, 0, 102, 110, 207, - 0, 208, 164, 182, 0, 177, 0, 178, 0, 27, - 103, 151, 104, 0, 78, 103, 148, 104, 0, 79, - 103, 148, 104, 0, 78, 182, 68, 215, 208, 164, - 0, 79, 182, 68, 215, 208, 164, 0, 18, 0, - 18, 35, 25, 216, 0, 213, 103, 146, 104, 0, - 165, 0, 56, 68, 165, 0, 11, 0, 11, 111, - 213, 0, 214, 111, 213, 0, 11, 111, 216, 0, - 214, 0, 214, 111, 166, 0, 167, 0, 166, 111, - 167, 0, 169, 0, 169, 0, 13, 0, 14, 0, - 216, 139, 3, 171, 0, 216, 109, 171, 0, 0, - 103, 172, 174, 0, 63, 0, 45, 0, 86, 0, - 5, 0, 7, 0, 6, 0, 207, 0, 173, 0, - 216, 0, 213, 111, 216, 0, 4, 0, 174, 4, - 0, 24, 0, 63, 0, 76, 0, 176, 0, 67, - 81, 0, 65, 51, 0, 77, 0, 44, 0, 36, - 71, 0, 26, 81, 0, 91, 0, 47, 0, 58, - 0, 40, 0, 22, 81, 0, 175, 0, 176, 204, - 0, 23, 0, 48, 0, 49, 0, 50, 0, 59, - 0, 64, 0, 74, 0, 83, 0, 85, 0, 90, - 0, 92, 0, 93, 0, 94, 0, 66, 0, 99, - 0, 100, 0, 97, 0, 98, 0, 96, 0, 0, - 183, 0, 184, 0, 80, 105, 185, 106, 0, 105, - 185, 106, 0, 184, 105, 185, 106, 0, 186, 0, - 186, 108, 102, 0, 186, 108, 102, 108, 186, 0, - 187, 0, 186, 179, 187, 0, 186, 180, 187, 0, - 187, 181, 187, 0, 189, 105, 185, 106, 0, 105, - 185, 106, 0, 190, 0, 190, 188, 190, 0, 61, - 188, 190, 0, 190, 188, 60, 0, 61, 188, 60, - 0, 196, 0, 191, 0, 101, 0, 101, 112, 0, - 112, 101, 0, 112, 101, 112, 0, 80, 0, 46, - 0, 207, 0, 216, 0, 6, 0, 45, 0, 86, - 0, 95, 30, 103, 192, 104, 0, 193, 0, 192, - 108, 193, 0, 102, 0, 216, 182, 194, 0, 0, - 195, 0, 73, 0, 15, 0, 69, 0, 197, 0, - 198, 0, 103, 213, 104, 0, 197, 103, 199, 104, - 0, 200, 0, 199, 108, 200, 0, 113, 201, 0, - 113, 111, 201, 0, 216, 0, 201, 111, 216, 0, - 0, 203, 0, 69, 0, 33, 171, 0, 103, 104, - 0, 103, 205, 104, 0, 206, 0, 205, 108, 206, - 0, 216, 0, 216, 105, 207, 106, 0, 216, 105, - 173, 106, 0, 207, 0, 102, 0, 9, 0, 10, - 0, 0, 209, 0, 210, 212, 0, 114, 211, 9, - 115, 0, 0, 89, 0, 19, 0, 75, 0, 0, - 52, 0, 41, 0, 11, 0, 12, 0, 12, 0, - 0, 216, 0, 8, 0 + 108, 145, 0, 213, 0, 213, 109, 216, 0, 213, + 109, 213, 0, 175, 109, 216, 0, 147, 0, 146, + 108, 147, 0, 163, 0, 216, 0, 0, 149, 0, + 150, 0, 149, 108, 150, 0, 216, 163, 202, 0, + 30, 68, 163, 0, 162, 0, 152, 0, 151, 108, + 152, 0, 216, 163, 0, 162, 0, 28, 103, 155, + 104, 157, 0, 0, 88, 0, 156, 0, 155, 108, + 156, 0, 168, 202, 0, 168, 163, 154, 202, 0, + 168, 168, 154, 202, 0, 0, 158, 0, 0, 95, + 82, 103, 159, 160, 104, 0, 161, 0, 160, 161, + 0, 4, 0, 168, 0, 102, 0, 102, 110, 173, + 0, 102, 110, 207, 0, 208, 164, 182, 0, 177, + 0, 178, 0, 27, 103, 151, 104, 0, 78, 103, + 148, 104, 0, 79, 103, 148, 104, 0, 78, 182, + 68, 215, 208, 164, 0, 79, 182, 68, 215, 208, + 164, 0, 18, 0, 18, 35, 25, 216, 0, 213, + 103, 146, 104, 0, 165, 0, 56, 68, 165, 0, + 11, 0, 11, 111, 213, 0, 214, 111, 213, 0, + 11, 111, 216, 0, 214, 0, 214, 111, 166, 0, + 167, 0, 166, 111, 167, 0, 169, 0, 169, 0, + 13, 0, 14, 0, 216, 139, 3, 171, 0, 216, + 109, 171, 0, 0, 103, 172, 174, 0, 63, 0, + 45, 0, 86, 0, 5, 0, 7, 0, 6, 0, + 207, 0, 173, 0, 216, 0, 213, 111, 216, 0, + 4, 0, 174, 4, 0, 24, 0, 63, 0, 76, + 0, 176, 0, 67, 81, 0, 65, 51, 0, 77, + 0, 44, 0, 36, 71, 0, 26, 81, 0, 91, + 0, 47, 0, 58, 0, 40, 0, 22, 81, 0, + 175, 0, 176, 204, 0, 23, 0, 48, 0, 49, + 0, 50, 0, 59, 0, 64, 0, 74, 0, 83, + 0, 85, 0, 90, 0, 92, 0, 93, 0, 94, + 0, 66, 0, 99, 0, 100, 0, 97, 0, 98, + 0, 96, 0, 0, 183, 0, 184, 0, 80, 105, + 185, 106, 0, 105, 185, 106, 0, 184, 105, 185, + 106, 0, 186, 0, 186, 108, 102, 0, 186, 108, + 102, 108, 186, 0, 187, 0, 186, 179, 187, 0, + 186, 180, 187, 0, 187, 181, 187, 0, 189, 105, + 185, 106, 0, 105, 185, 106, 0, 190, 0, 190, + 188, 190, 0, 61, 188, 190, 0, 190, 188, 60, + 0, 61, 188, 60, 0, 196, 0, 191, 0, 101, + 0, 101, 112, 0, 112, 101, 0, 112, 101, 112, + 0, 80, 0, 46, 0, 45, 0, 86, 0, 207, + 0, 6, 0, 216, 0, 213, 0, 95, 30, 103, + 192, 104, 0, 193, 0, 192, 108, 193, 0, 102, + 0, 216, 182, 194, 0, 0, 195, 0, 73, 0, + 15, 0, 69, 0, 197, 0, 198, 0, 103, 213, + 104, 0, 197, 103, 199, 104, 0, 200, 0, 199, + 108, 200, 0, 113, 201, 0, 113, 111, 201, 0, + 216, 0, 201, 111, 216, 0, 0, 203, 0, 69, + 0, 33, 171, 0, 103, 104, 0, 103, 205, 104, + 0, 206, 0, 205, 108, 206, 0, 216, 0, 216, + 105, 207, 106, 0, 216, 105, 173, 106, 0, 207, + 0, 102, 0, 9, 0, 10, 0, 0, 209, 0, + 210, 212, 0, 114, 211, 9, 115, 0, 0, 89, + 0, 19, 0, 75, 0, 0, 52, 0, 41, 0, + 11, 0, 12, 0, 12, 0, 0, 216, 0, 8, + 0 }; #endif @@ -369,26 +370,26 @@ static const short yyrline[] = { 0, 609, 615, 622, 628, 636, 640, 643, 650, 656, 662, 669, 675, 684, 694, 702, 710, 712, 722, 725, 729, 732, 744, 756, 762, 778, 787, 797, 807, 812, 819, - 829, 835, 841, 845, 857, 859, 861, 867, 873, 880, - 887, 892, 898, 904, 910, 915, 925, 927, 930, 938, - 944, 953, 959, 976, 978, 983, 987, 992, 997, 1003, - 1007, 1018, 1027, 1036, 1047, 1069, 1073, 1079, 1085, 1091, - 1097, 1107, 1117, 1123, 1137, 1161, 1168, 1182, 1191, 1201, - 1211, 1221, 1229, 1250, 1259, 1268, 1269, 1271, 1278, 1290, - 1300, 1308, 1308, 1313, 1318, 1323, 1328, 1332, 1336, 1340, - 1343, 1348, 1360, 1376, 1387, 1401, 1403, 1404, 1405, 1406, - 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1419, 1421, 1422, - 1425, 1432, 1444, 1446, 1450, 1454, 1455, 1456, 1457, 1458, - 1462, 1463, 1464, 1465, 1469, 1470, 1477, 1477, 1478, 1478, - 1479, 1481, 1483, 1488, 1492, 1501, 1505, 1510, 1514, 1520, - 1530, 1534, 1537, 1540, 1545, 1554, 1562, 1568, 1575, 1583, - 1591, 1600, 1603, 1608, 1610, 1611, 1612, 1615, 1619, 1624, - 1628, 1639, 1643, 1648, 1655, 1661, 1665, 1670, 1676, 1688, - 1690, 1693, 1697, 1700, 1705, 1709, 1717, 1732, 1738, 1745, - 1758, 1770, 1785, 1789, 1806, 1811, 1814, 1819, 1841, 1846, - 1851, 1857, 1863, 1871, 1879, 1887, 1894, 1904, 1909, 1939, - 1941, 1944, 1951, 1957, 1959, 1960, 1961, 1964, 1966, 1967, - 1970, 1975, 1982, 1989, 1991, 1995 + 826, 836, 842, 848, 852, 875, 877, 879, 885, 891, + 898, 905, 910, 916, 922, 928, 933, 943, 945, 948, + 956, 962, 971, 977, 994, 996, 1001, 1005, 1010, 1015, + 1021, 1025, 1036, 1045, 1054, 1065, 1087, 1091, 1097, 1103, + 1109, 1115, 1125, 1135, 1141, 1155, 1179, 1186, 1200, 1209, + 1219, 1229, 1239, 1247, 1268, 1277, 1286, 1287, 1289, 1296, + 1308, 1318, 1326, 1326, 1331, 1336, 1341, 1346, 1350, 1354, + 1358, 1361, 1366, 1378, 1394, 1405, 1419, 1421, 1422, 1423, + 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1437, 1439, + 1440, 1443, 1450, 1462, 1464, 1468, 1472, 1473, 1474, 1475, + 1476, 1480, 1481, 1482, 1483, 1487, 1488, 1495, 1495, 1496, + 1496, 1497, 1499, 1501, 1506, 1510, 1519, 1523, 1528, 1532, + 1538, 1548, 1552, 1555, 1558, 1563, 1572, 1580, 1586, 1593, + 1601, 1609, 1618, 1621, 1626, 1628, 1629, 1630, 1633, 1637, + 1642, 1648, 1653, 1656, 1660, 1671, 1684, 1690, 1694, 1699, + 1705, 1717, 1719, 1722, 1726, 1729, 1734, 1738, 1746, 1761, + 1767, 1774, 1787, 1799, 1814, 1818, 1835, 1840, 1843, 1848, + 1870, 1875, 1880, 1886, 1892, 1900, 1908, 1916, 1923, 1933, + 1938, 1968, 1970, 1973, 1980, 1986, 1988, 1989, 1990, 1993, + 1995, 1996, 1999, 2004, 2011, 2018, 2020, 2024 }; #endif @@ -448,26 +449,26 @@ static const short yyr1[] = { 0, 133, 134, 134, 134, 135, 135, 135, 136, 136, 137, 137, 137, 138, 139, 139, 140, 140, 141, 141, 142, 142, 143, 143, 143, 143, 144, 144, 145, 145, 145, - 146, 146, 147, 147, 148, 148, 149, 149, 150, 150, - 150, 151, 151, 152, 152, 153, 154, 154, 155, 155, - 156, 156, 156, 157, 157, 159, 158, 160, 160, 161, - 161, 162, 162, 162, 163, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 165, 165, 165, - 165, 165, 165, 166, 166, 167, 168, 169, 169, 170, - 171, 172, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 173, 173, 174, 174, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 176, 176, 176, - 177, 177, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 179, 179, 180, 180, - 181, 182, 182, 183, 183, 184, 184, 185, 185, 185, - 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 188, 188, 188, 188, 189, 189, 190, - 190, 190, 190, 190, 191, 192, 192, 193, 193, 194, - 194, 195, 195, 195, 196, 196, 197, 198, 199, 199, - 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, - 205, 205, 206, 206, 206, 206, 206, 207, 207, 208, - 208, 209, 210, 211, 211, 211, 211, 212, 212, 212, - 213, 213, 214, 215, 215, 216 + 145, 146, 146, 147, 147, 148, 148, 149, 149, 150, + 150, 150, 151, 151, 152, 152, 153, 154, 154, 155, + 155, 156, 156, 156, 157, 157, 159, 158, 160, 160, + 161, 161, 162, 162, 162, 163, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, + 165, 165, 165, 165, 166, 166, 167, 168, 169, 169, + 170, 171, 172, 171, 171, 171, 171, 171, 171, 171, + 171, 171, 173, 173, 174, 174, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 176, 176, + 176, 177, 177, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 179, 179, 180, + 180, 181, 182, 182, 183, 183, 184, 184, 185, 185, + 185, 186, 186, 186, 186, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 188, 188, 188, 188, 189, 189, + 190, 190, 190, 190, 190, 190, 191, 192, 192, 193, + 193, 194, 194, 195, 195, 195, 196, 196, 197, 198, + 199, 199, 200, 200, 201, 201, 202, 202, 203, 203, + 204, 204, 205, 205, 206, 206, 206, 206, 206, 207, + 207, 208, 208, 209, 210, 211, 211, 211, 211, 212, + 212, 212, 213, 213, 214, 215, 215, 216 }; static const short yyr2[] = { 0, @@ -478,280 +479,290 @@ static const short yyr2[] = { 0, 3, 1, 3, 1, 3, 3, 2, 1, 3, 1, 3, 1, 6, 1, 1, 0, 1, 1, 3, 1, 1, 4, 3, 3, 6, 1, 3, 1, 3, 3, - 1, 3, 1, 1, 0, 1, 1, 3, 3, 3, - 1, 1, 3, 2, 1, 5, 0, 1, 1, 3, - 2, 4, 4, 0, 1, 0, 6, 1, 2, 1, - 1, 1, 3, 3, 3, 1, 1, 4, 4, 4, - 6, 6, 1, 4, 4, 1, 3, 1, 3, 3, - 3, 1, 3, 1, 3, 1, 1, 1, 1, 4, - 3, 0, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 2, 1, 1, 1, 1, 2, - 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 3, 1, 1, 0, 1, 1, 3, 3, + 3, 1, 1, 3, 2, 1, 5, 0, 1, 1, + 3, 2, 4, 4, 0, 1, 0, 6, 1, 2, + 1, 1, 1, 3, 3, 3, 1, 1, 4, 4, + 4, 6, 6, 1, 4, 4, 1, 3, 1, 3, + 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, + 4, 3, 0, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 2, 1, 1, 1, 1, + 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 1, 1, 4, 3, 4, 1, 3, 5, - 1, 3, 3, 3, 4, 3, 1, 3, 3, 3, - 3, 1, 1, 1, 2, 2, 3, 1, 1, 1, - 1, 1, 1, 1, 5, 1, 3, 1, 3, 0, - 1, 1, 1, 1, 1, 1, 3, 4, 1, 3, - 2, 3, 1, 3, 0, 1, 1, 2, 2, 3, - 1, 3, 1, 4, 4, 1, 1, 1, 1, 0, - 1, 2, 4, 0, 1, 1, 1, 0, 1, 1, - 1, 1, 1, 0, 1, 1 + 1, 1, 0, 1, 1, 4, 3, 4, 1, 3, + 5, 1, 3, 3, 3, 4, 3, 1, 3, 3, + 3, 3, 1, 1, 1, 2, 2, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 5, 1, 3, 1, + 3, 0, 1, 1, 1, 1, 1, 1, 3, 4, + 1, 3, 2, 3, 1, 3, 0, 1, 1, 2, + 2, 3, 1, 3, 1, 4, 4, 1, 1, 1, + 1, 0, 1, 2, 4, 0, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, 1, 1 }; static const short yydefact[] = { 0, - 261, 262, 1, 2, 5, 3, 0, 0, 6, 266, + 263, 264, 1, 2, 5, 3, 0, 0, 6, 268, 13, 8, 0, 9, 11, 14, 7, 10, 0, 0, 0, 0, 0, 0, 0, 15, 16, 0, 22, 20, - 18, 21, 19, 0, 17, 12, 23, 163, 0, 0, - 164, 165, 166, 0, 167, 168, 176, 169, 170, 171, - 172, 173, 174, 175, 0, 24, 25, 27, 28, 31, + 18, 21, 19, 0, 17, 12, 23, 164, 0, 0, + 165, 166, 167, 0, 168, 169, 177, 170, 171, 172, + 173, 174, 175, 176, 0, 24, 25, 27, 28, 31, 29, 30, 34, 0, 0, 32, 0, 47, 0, 48, 50, 52, 36, 0, 37, 0, 40, 42, 44, 4, - 26, 250, 118, 263, 0, 146, 0, 0, 159, 153, - 157, 158, 147, 0, 0, 148, 152, 156, 0, 0, - 54, 55, 149, 122, 0, 33, 46, 45, 0, 0, - 35, 38, 0, 0, 0, 0, 254, 64, 63, 0, - 251, 258, 0, 160, 155, 154, 151, 150, 0, 66, + 26, 252, 119, 265, 0, 147, 0, 0, 160, 154, + 158, 159, 148, 0, 0, 149, 153, 157, 0, 0, + 54, 55, 150, 123, 0, 33, 46, 45, 0, 0, + 35, 38, 0, 0, 0, 0, 256, 64, 63, 0, + 253, 260, 0, 161, 156, 155, 152, 151, 0, 66, 0, 68, 0, 0, 0, 49, 51, 5, 41, 43, - 0, 256, 257, 255, 0, 118, 263, 113, 0, 0, - 182, 182, 62, 182, 116, 161, 149, 106, 107, 0, - 260, 259, 252, 119, 121, 0, 0, 0, 0, 56, - 128, 129, 123, 124, 126, 120, 137, 139, 138, 248, - 249, 135, 134, 136, 132, 130, 141, 140, 0, 142, - 39, 0, 89, 250, 127, 0, 0, 0, 0, 0, - 75, 0, 0, 183, 184, 75, 0, 105, 0, 162, - 250, 250, 67, 70, 69, 212, 213, 209, 0, 208, - 214, 0, 60, 0, 0, 0, 57, 58, 61, 191, - 0, 197, 203, 202, 225, 226, 210, 211, 0, 0, - 0, 0, 94, 0, 0, 237, 87, 87, 91, 236, - 0, 253, 0, 102, 0, 82, 85, 250, 117, 0, - 0, 0, 76, 77, 81, 250, 0, 188, 264, 0, - 0, 264, 247, 239, 0, 241, 246, 243, 0, 71, - 73, 74, 65, 204, 0, 0, 0, 0, 0, 53, - 0, 179, 180, 177, 178, 0, 0, 181, 0, 0, - 0, 0, 125, 144, 133, 143, 131, 0, 86, 95, - 90, 238, 88, 235, 235, 114, 0, 108, 0, 84, - 0, 250, 109, 0, 235, 186, 0, 250, 265, 0, - 110, 250, 240, 0, 0, 115, 250, 205, 206, 201, - 199, 0, 227, 196, 59, 192, 193, 194, 0, 200, - 198, 0, 0, 229, 145, 0, 92, 93, 103, 104, - 142, 83, 185, 80, 78, 79, 189, 0, 187, 0, - 242, 0, 0, 72, 207, 218, 0, 216, 182, 195, - 0, 231, 233, 228, 0, 96, 0, 111, 112, 245, - 244, 215, 0, 220, 232, 0, 230, 0, 190, 217, - 223, 224, 222, 219, 221, 234, 100, 0, 98, 101, - 97, 99, 0, 0, 0 + 0, 258, 259, 257, 0, 119, 265, 114, 0, 0, + 183, 183, 62, 183, 117, 162, 150, 107, 108, 0, + 262, 261, 254, 120, 122, 0, 0, 0, 0, 56, + 129, 130, 124, 125, 127, 121, 138, 140, 139, 250, + 251, 136, 135, 137, 133, 131, 142, 141, 0, 143, + 39, 0, 90, 252, 128, 0, 0, 0, 0, 0, + 76, 0, 0, 184, 185, 76, 0, 106, 0, 163, + 252, 252, 67, 71, 70, 69, 214, 211, 210, 0, + 209, 212, 0, 60, 0, 0, 0, 57, 58, 61, + 192, 0, 198, 204, 203, 227, 228, 213, 216, 215, + 0, 0, 0, 0, 95, 0, 0, 239, 88, 88, + 92, 238, 0, 255, 0, 103, 0, 83, 86, 252, + 118, 0, 0, 0, 77, 78, 82, 252, 0, 189, + 266, 0, 0, 266, 249, 241, 0, 243, 248, 245, + 0, 72, 74, 75, 65, 205, 0, 0, 0, 0, + 0, 53, 0, 180, 181, 178, 179, 0, 0, 182, + 0, 0, 0, 0, 126, 145, 134, 144, 132, 0, + 87, 96, 91, 240, 89, 237, 237, 115, 0, 109, + 0, 85, 0, 252, 110, 0, 237, 187, 0, 252, + 267, 0, 111, 252, 242, 0, 0, 116, 252, 206, + 207, 202, 200, 0, 229, 197, 59, 193, 194, 195, + 0, 201, 199, 0, 0, 231, 146, 0, 93, 94, + 104, 105, 143, 84, 186, 81, 79, 80, 190, 0, + 188, 0, 244, 0, 0, 73, 208, 220, 0, 218, + 183, 196, 0, 233, 235, 230, 0, 97, 0, 112, + 113, 247, 246, 217, 0, 222, 234, 0, 232, 0, + 191, 219, 225, 226, 224, 221, 223, 236, 101, 0, + 99, 102, 98, 100, 0, 0, 0 }; -static const short yydefgoto[] = { 413, +static const short yydefgoto[] = { 415, 3, 4, 8, 9, 13, 14, 25, 26, 27, 55, 56, 57, 106, 58, 74, 75, 76, 77, 59, 69, - 70, 60, 100, 226, 227, 228, 61, 129, 130, 279, - 280, 262, 263, 264, 255, 256, 118, 314, 192, 193, - 309, 310, 398, 408, 409, 265, 281, 154, 155, 173, - 174, 194, 195, 62, 186, 240, 187, 305, 156, 103, - 158, 159, 296, 297, 299, 203, 204, 205, 267, 268, - 230, 286, 231, 232, 233, 377, 378, 404, 405, 234, - 235, 236, 353, 354, 382, 249, 250, 210, 275, 276, - 237, 251, 121, 122, 145, 163, 189, 104, 328, 238 + 70, 60, 100, 227, 228, 229, 61, 129, 130, 281, + 282, 264, 265, 266, 257, 258, 118, 316, 192, 193, + 311, 312, 400, 410, 411, 267, 283, 154, 155, 173, + 174, 194, 195, 62, 186, 242, 187, 307, 156, 103, + 158, 159, 298, 299, 301, 203, 204, 205, 269, 270, + 231, 288, 232, 233, 234, 379, 380, 406, 407, 235, + 236, 237, 355, 356, 384, 251, 252, 210, 277, 278, + 238, 253, 121, 122, 145, 163, 239, 104, 330, 240 }; -static const short yypact[] = { 120, --32768,-32768, 120,-32768, -64,-32768, 38, -5,-32768,-32768, --32768,-32768, 55,-32768, -25, 165,-32768,-32768, 90, 49, - 60, 73, 74, 82, 136, 165,-32768, 54,-32768,-32768, --32768,-32768,-32768, 151,-32768,-32768, 314,-32768, 177, 23, --32768,-32768,-32768, 159,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 187, 314,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 256, 528,-32768, 114,-32768, 76,-32768, - 133,-32768,-32768, 42,-32768, -20,-32768, 147,-32768,-32768, --32768, -3, 144,-32768, 183,-32768, 185, 198,-32768,-32768, --32768,-32768,-32768, 232, 212,-32768,-32768,-32768, 545, 292, --32768,-32768,-32768, 186, 295,-32768,-32768,-32768, 101, 195, --32768,-32768, 120, 101, 197, 199, 3,-32768,-32768, 391, --32768, 113, 101,-32768,-32768,-32768,-32768,-32768, 78,-32768, - 200, 202, 210, 263, 279,-32768,-32768, -64,-32768,-32768, - 182,-32768,-32768,-32768, 306, -22, 213, 283, 226, 266, - -12, -8,-32768, -32,-32768,-32768, 228,-32768,-32768, 233, --32768,-32768,-32768,-32768,-32768, 340, 545, 336, 336, 95, --32768,-32768, 235,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 238, 239, --32768, 103,-32768, 29,-32768, 236, 325, 36, 237, 248, - 6, 142, 286,-32768, 250, 6, 289,-32768, 51,-32768, - 5, 244,-32768,-32768,-32768,-32768,-32768,-32768, 57,-32768, --32768, 330,-32768, 120, 142, 257, 258,-32768, 241, 271, - 265, 57,-32768,-32768, 269,-32768,-32768,-32768, 182, 371, - 336, 279, 281, 182, 279,-32768, 291, 291,-32768,-32768, - 468,-32768, 336, 267, 108,-32768,-32768, 244,-32768, 142, - 313, 280, 275,-32768,-32768, 244, 284, 173, 336, 142, - 287, 336,-32768,-32768, 110,-32768,-32768, 282, 116,-32768, --32768,-32768,-32768, 273, 293, 170, 290, 288, 294,-32768, - 95,-32768,-32768,-32768,-32768, 142, 142,-32768, 142, 142, - 234, 285,-32768,-32768, 392,-32768,-32768, 319,-32768,-32768, --32768,-32768,-32768, -17, -17,-32768, 296,-32768, 36,-32768, - 299, 244,-32768, 6, -17,-32768, 308, 244,-32768, 305, --32768, 244,-32768, 61, 296,-32768, 5,-32768, 300,-32768, --32768, 43,-32768,-32768,-32768,-32768,-32768,-32768, 310,-32768, --32768, 11, 123,-32768,-32768, 316,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 312, 468,-32768, 468, --32768, 315, 317,-32768,-32768,-32768, 125,-32768, -32,-32768, - 336, 311,-32768,-32768, 285,-32768, 142,-32768,-32768,-32768, --32768,-32768, 43, 17, 311, 336,-32768, 160, 241,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 14,-32768,-32768, --32768,-32768, 395, 424,-32768 +static const short yypact[] = { 148, +-32768,-32768, 148,-32768, -58,-32768, 45, 43,-32768,-32768, +-32768,-32768, 53,-32768, -13, 144,-32768,-32768, 97, 68, + 59, 83, 84, 95, 189, 144,-32768, 89,-32768,-32768, +-32768,-32768,-32768, 180,-32768,-32768, 367,-32768, 191, 35, +-32768,-32768,-32768, 201,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 167, 367,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 257, 581,-32768, 108,-32768, 69,-32768, + 114,-32768,-32768, 16,-32768, -23,-32768, 122,-32768,-32768, +-32768, -10, 133,-32768, 160,-32768, 165, 181,-32768,-32768, +-32768,-32768,-32768, 214, 190,-32768,-32768,-32768, 598, 271, +-32768,-32768,-32768, 171, 277,-32768,-32768,-32768, 231, 183, +-32768,-32768, 148, 231, 194, 182, 1,-32768,-32768, 444, +-32768, 28, 231,-32768,-32768,-32768,-32768,-32768, 82,-32768, + 185, 186, 196, 350, 163,-32768,-32768, -58,-32768,-32768, + 170,-32768,-32768,-32768, 291, -8, 199, 275, 208, 245, + -17, 75,-32768, -55,-32768,-32768, 213,-32768,-32768, 215, +-32768,-32768,-32768,-32768,-32768, 314, 598, 313, 231, 297, +-32768,-32768, 212,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 216, 217, +-32768, 127,-32768, 27,-32768, 220, 303, 7, 221, 226, + 51, 102, 268,-32768, 233, 51, 273,-32768, 48,-32768, + 6, 225,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -12, +-32768,-32768, 315,-32768, 148, 102, 240, 238,-32768, 272, + 253, 251, -12,-32768,-32768, 254,-32768,-32768,-32768,-32768, + 170, 355, 313, 163, 270, 170, 163,-32768, 279, 279, +-32768,-32768, 521,-32768, 313, 263, 153,-32768,-32768, 225, +-32768, 102, 306, 276, 274,-32768,-32768, 225, 278, 130, + 313, 102, 281, 313,-32768,-32768, 154,-32768,-32768, 282, + 155,-32768,-32768,-32768,-32768, 269, 285, 210, 286, 289, + 288,-32768, 297,-32768,-32768,-32768,-32768, 102, 102,-32768, + 102, 102, 280, 283,-32768,-32768, 391,-32768,-32768, 316, +-32768,-32768,-32768,-32768,-32768, 9, 9,-32768, 343,-32768, + 7,-32768, 298, 225,-32768, 51, 9,-32768, 295, 225, +-32768, 300,-32768, 225,-32768, 56, 343,-32768, 6,-32768, + 296,-32768,-32768, 30,-32768,-32768,-32768,-32768,-32768,-32768, + 301,-32768,-32768, 11, 168,-32768,-32768, 307,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 304, 521, +-32768, 521,-32768, 305, 308,-32768,-32768,-32768, 169,-32768, + -55,-32768, 313, 302,-32768,-32768, 283,-32768, 102,-32768, +-32768,-32768,-32768,-32768, 30, 24, 302, 313,-32768, 125, + 272,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 22, +-32768,-32768,-32768,-32768, 418, 419,-32768 }; static const short yypgoto[] = {-32768, --32768, 422, 298,-32768,-32768, 413,-32768,-32768, 402,-32768, --32768, 373,-32768,-32768,-32768, 356,-32768, 318,-32768,-32768, - 324,-32768, 369,-32768,-32768, 146,-32768,-32768, 276,-32768, - 105, 240,-32768, 121,-32768, 129,-32768, 196,-32768, 207, --32768,-32768,-32768,-32768, 44, -183, -65, -129, -53,-32768, - 214, -185, -114,-32768, -160,-32768, -252,-32768, -41, -117, --32768, 18,-32768,-32768,-32768, -147,-32768,-32768, -204, -168, - -36, 227,-32768, -207,-32768,-32768, 67,-32768,-32768,-32768, --32768,-32768,-32768, 77, 80, -238,-32768,-32768,-32768, 130, - -125, -74,-32768,-32768,-32768,-32768, 1,-32768, 191, -7 +-32768, 417, 284,-32768,-32768, 410,-32768,-32768, 398,-32768, +-32768, 369,-32768,-32768,-32768, 353,-32768, 318,-32768,-32768, + 319,-32768, 364,-32768,-32768, 137,-32768,-32768, 267,-32768, + 96, 230,-32768, 111,-32768, 117,-32768, 192,-32768, 193, +-32768,-32768,-32768,-32768, 33, -185, -79, -300, -53,-32768, + 203, -186, -124,-32768, -165,-32768, -246,-32768, -48, -119, +-32768, 18,-32768,-32768,-32768, -147,-32768,-32768, -178, -166, + -200, 207,-32768, -259,-32768,-32768, 50,-32768,-32768,-32768, +-32768,-32768,-32768, 60, 63, -295,-32768,-32768,-32768, 112, + -126, -80,-32768,-32768,-32768,-32768, 31,-32768, 175, -7 }; -#define YYLAST 636 +#define YYLAST 689 static const short yytable[] = { 15, - 5, 229, 157, 5, 207, 15, 208, 120, 248, 188, - 101, 101, 10, 10, 257, 245, 119, 407, 10, 175, - 289, 142, 102, 102, 116, 113, 171, 172, 16, 65, - 10, 401, 72, 1, 2, 261, 79, 64, 7, 67, - 71, 171, 172, 10, 78, 10, 11, 200, 65, 10, - 10, 246, 1, 2, 63, 321, 64, 131, 10, 180, - 181, 245, 10, 11, 359, 330, 79, 200, 10, 180, - 181, 200, 202, 63, 78, 357, 358, 143, 341, 19, - -261, 307, 372, 277, 312, 402, 366, 114, 123, 403, - 201, 144, 202, 351, 206, 349, 202, 246, 28, 132, - 216, 72, 10, 180, 181, 29, 79, 254, 10, 71, - 117, 1, 2, 138, 78, 165, 188, 411, 117, 188, - 160, 381, 229, 164, 175, 131, 32, 190, 247, 68, - 1, 2, -235, 157, 176, 257, -235, 254, 34, 217, - 218, 12, 117, 30, 376, 259, 283, 216, 111, 10, - 180, 181, 273, 161, 274, 219, 31, 284, 17, 36, - 214, 215, 273, 407, 162, 33, 10, 132, 285, 1, - 2, 37, 171, 172, 220, 216, 20, 10, 180, 181, - 221, 166, 108, 109, 21, 167, 217, 218, 66, 222, - 258, 360, 320, 266, 171, 172, 223, 224, 266, 225, - 325, 278, 219, 282, 73, 22, 243, 23, 277, 373, - 244, 318, 410, 333, 217, 319, 24, 334, 399, 336, - 107, 220, 410, 337, 288, 80, 384, 221, 392, 340, - 385, 394, 393, 306, 190, 110, 222, 190, 388, 216, - 389, 10, 180, 181, 224, 316, 225, 83, 84, 115, - 157, 160, 157, 368, 123, 221, 364, 370, 82, 346, - 347, 329, 348, 124, 329, 125, 83, 84, 126, 292, - 293, 294, 295, 1, 2, 171, 172, 85, 217, 86, - 327, 87, 127, 177, 178, 179, 10, 180, 181, 1, - 2, 88, 128, 350, 133, 89, 134, 135, 137, 90, - 140, 141, 91, 10, 180, 181, 1, 2, 168, 361, - 169, 258, 170, 92, 196, -262, 266, 197, 93, 221, - 94, 10, 95, 182, 1, 2, 278, 361, 198, 282, - 209, 96, 97, 199, 379, 211, 38, 292, 293, 294, - 295, 183, 212, 10, 383, 239, 98, 242, 241, 253, - 252, 39, 260, 269, 270, 40, 272, 117, 99, 287, - 290, 41, 42, 43, 184, 291, 298, 44, 160, 300, - 160, 302, 45, 383, 304, 308, 317, 46, 313, 47, - 322, 185, 324, 323, 338, 379, 335, 48, 406, 326, - 331, 343, 342, 339, 414, 355, 49, 352, 50, 344, - 356, 146, 147, 51, 363, 52, 53, 54, 148, 367, - 369, 375, 85, 38, 86, 380, 87, 149, 386, 387, - 390, 396, 391, 415, 6, 18, 88, 35, 81, 112, - 89, 139, 136, 105, 90, 191, 345, 91, 41, 42, - 43, 374, 213, 315, 365, 271, 150, 362, 92, 45, - 311, 412, 303, 93, 46, 94, 47, 95, 301, 400, - 395, 397, 332, 371, 48, 0, 96, 97, 151, 152, - 0, 0, 0, 49, 0, 50, 0, 153, 146, 147, - 51, 98, 52, 53, 54, 148, 0, 0, 0, 85, - 38, 86, 0, 87, 149, 0, 0, 0, 0, 0, - 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, - 0, 90, 0, 0, 91, 41, 42, 43, 0, 0, - 0, 0, 0, 150, 0, 92, 45, 0, 0, 0, - 93, 46, 94, 47, 95, 0, 0, 0, 83, 84, - 0, 48, 0, 96, 97, 151, 152, 0, 0, 85, - 49, 86, 50, 87, 0, 1, 2, 51, 98, 52, - 53, 54, 0, 88, 0, 0, 85, 89, 86, 0, - 87, 90, 0, 0, 91, 0, 0, 0, 0, 0, - 88, 0, 0, 0, 89, 92, 0, 0, 90, 0, - 93, 91, 94, 0, 95, 0, 0, 0, 0, 0, - 0, 0, 92, 96, 97, 0, 0, 93, 0, 94, - 0, 95, 0, 0, 0, 0, 0, 0, 98, 0, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 98 + 157, 120, 119, 230, 207, 15, 208, 250, 188, 175, + 101, 101, 259, 10, 10, 102, 102, 116, 10, 142, + 359, 360, 113, 10, 200, 409, 1, 2, 343, 65, + 5, 368, 72, 5, 171, 172, 79, 10, 403, 171, + 172, 247, 10, 353, 7, 1, 2, 291, 65, 202, + 131, 67, 10, 11, 63, 10, 180, 181, 10, 247, + 10, 11, 200, 10, 180, 181, 79, 64, 161, 390, + 71, 391, 361, 63, 78, 143, 16, 248, 309, 162, + 263, 314, 279, 323, 114, 201, 64, 202, 286, 144, + 374, 19, 404, 332, -263, 248, 405, 348, 349, 287, + 350, 72, 123, 117, 78, 28, 79, 217, 256, 10, + 180, 181, 1, 2, 249, 165, 175, 188, 131, 117, + 188, 383, 111, 351, 29, 413, 230, 190, 409, 132, + -237, 378, 285, 157, -237, 259, 32, 171, 172, 71, + 117, 68, 30, 138, 78, 261, 218, 219, 12, 275, + 160, 276, 256, 164, 200, 20, 17, 275, 1, 2, + 214, 216, 220, 21, 176, 189, 31, 177, 178, 179, + 10, 180, 181, 1, 2, 108, 109, 206, 33, 202, + 322, 221, 171, 172, 22, 166, 23, 222, 327, 167, + 260, 34, 362, 268, 36, 24, 223, 132, 268, 215, + 37, 280, 66, 284, 225, 80, 226, 182, 10, 279, + 375, 1, 2, 412, 107, 217, 110, 10, 180, 181, + 1, 2, 401, 412, 115, 183, 294, 295, 296, 297, + 245, 83, 84, 396, 246, 308, 190, 329, 10, 190, + 124, 1, 2, 123, 366, 125, 73, 318, 184, 370, + 157, 126, 157, 372, 218, 290, 320, 335, 338, 82, + 321, 336, 339, 331, 127, 185, 331, 83, 84, 342, + 128, 386, 394, 133, 189, 387, 395, 189, 85, 135, + 86, 134, 87, 160, 141, 217, 137, 10, 180, 181, + 1, 2, 88, 168, 169, 222, 89, 140, 170, 196, + 90, -264, 217, 91, 10, 180, 181, 1, 2, 197, + 198, 363, 199, 260, 92, 209, 212, 211, 268, 93, + 10, 94, 241, 95, 218, 244, 243, 255, 280, 363, + 262, 284, 96, 97, 254, 271, 381, 272, 117, 352, + 274, 218, 219, 292, 289, 293, 385, 98, 300, 189, + 10, 180, 181, 1, 2, 302, 304, 220, 306, 99, + 1, 2, 171, 172, 310, 222, 315, 189, 294, 295, + 296, 297, 319, 324, 10, 385, 221, 1, 2, 325, + 340, 326, 222, 328, 333, 341, 337, 381, 344, 38, + 408, 223, 345, 346, 357, 354, 369, 358, 224, 225, + 160, 226, 160, 365, 39, 371, 382, 377, 40, 388, + 392, 389, 398, 393, 41, 42, 43, 416, 417, 6, + 44, 191, 18, 35, 81, 45, 112, 136, 105, 347, + 46, 139, 47, 213, 376, 273, 367, 364, 313, 303, + 48, 317, 414, 305, 402, 397, 399, 373, 334, 49, + 0, 50, 0, 0, 146, 147, 51, 0, 52, 53, + 54, 148, 0, 0, 0, 85, 38, 86, 0, 87, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, + 91, 41, 42, 43, 0, 0, 0, 0, 0, 150, + 0, 92, 45, 0, 0, 0, 93, 46, 94, 47, + 95, 0, 0, 0, 0, 0, 0, 48, 0, 96, + 97, 151, 152, 0, 0, 0, 49, 0, 50, 0, + 153, 146, 147, 51, 98, 52, 53, 54, 148, 0, + 0, 0, 85, 38, 86, 0, 87, 149, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, + 89, 0, 0, 0, 90, 0, 0, 91, 41, 42, + 43, 0, 0, 0, 0, 0, 150, 0, 92, 45, + 0, 0, 0, 93, 46, 94, 47, 95, 0, 0, + 0, 83, 84, 0, 48, 0, 96, 97, 151, 152, + 0, 0, 85, 49, 86, 50, 87, 0, 1, 2, + 51, 98, 52, 53, 54, 0, 88, 0, 0, 85, + 89, 86, 0, 87, 90, 0, 0, 91, 0, 0, + 0, 0, 0, 88, 0, 0, 0, 89, 92, 0, + 0, 90, 0, 93, 91, 94, 0, 95, 0, 0, + 0, 0, 0, 0, 0, 92, 96, 97, 0, 0, + 93, 0, 94, 0, 95, 0, 0, 0, 0, 0, + 0, 98, 0, 96, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98 }; static const short yycheck[] = { 7, - 0, 170, 120, 3, 152, 13, 154, 82, 194, 135, - 64, 65, 8, 8, 198, 33, 82, 4, 8, 134, - 225, 19, 64, 65, 28, 46, 13, 14, 34, 37, - 8, 15, 40, 11, 12, 30, 44, 37, 103, 17, - 40, 13, 14, 8, 44, 8, 9, 80, 56, 8, - 8, 69, 11, 12, 37, 260, 56, 99, 8, 9, - 10, 33, 8, 9, 317, 270, 74, 80, 8, 9, - 10, 80, 105, 56, 74, 314, 315, 75, 286, 105, - 103, 242, 335, 209, 245, 69, 325, 108, 111, 73, - 103, 89, 105, 301, 103, 300, 105, 69, 9, 99, - 6, 109, 8, 9, 10, 57, 114, 102, 8, 109, - 114, 11, 12, 113, 114, 123, 242, 104, 114, 245, - 120, 111, 291, 123, 239, 167, 53, 135, 194, 107, - 11, 12, 104, 251, 134, 319, 108, 102, 3, 45, - 46, 104, 114, 84, 102, 199, 212, 6, 107, 8, - 9, 10, 102, 41, 104, 61, 84, 101, 104, 106, - 168, 169, 102, 4, 52, 84, 8, 167, 112, 11, - 12, 21, 13, 14, 80, 6, 12, 8, 9, 10, - 86, 104, 107, 108, 20, 108, 45, 46, 12, 95, - 198, 317, 258, 201, 13, 14, 102, 103, 206, 105, - 266, 209, 61, 211, 46, 41, 104, 43, 334, 335, - 108, 104, 398, 104, 45, 108, 52, 108, 387, 104, - 107, 80, 408, 108, 224, 39, 104, 86, 104, 60, - 108, 379, 108, 241, 242, 103, 95, 245, 368, 6, - 370, 8, 9, 10, 103, 253, 105, 11, 12, 103, - 368, 251, 370, 328, 111, 86, 322, 332, 3, 296, - 297, 269, 299, 81, 272, 81, 11, 12, 71, 97, - 98, 99, 100, 11, 12, 13, 14, 22, 45, 24, - 108, 26, 51, 5, 6, 7, 8, 9, 10, 11, - 12, 36, 81, 60, 3, 40, 111, 3, 104, 44, - 104, 103, 47, 8, 9, 10, 11, 12, 109, 317, - 109, 319, 103, 58, 9, 103, 324, 35, 63, 86, - 65, 8, 67, 45, 11, 12, 334, 335, 103, 337, - 103, 76, 77, 68, 342, 103, 23, 97, 98, 99, - 100, 63, 3, 8, 352, 111, 91, 109, 111, 25, - 115, 38, 105, 68, 105, 42, 68, 114, 103, 30, - 104, 48, 49, 50, 86, 108, 96, 54, 368, 105, - 370, 103, 59, 381, 4, 95, 110, 64, 88, 66, - 68, 103, 108, 104, 112, 393, 105, 74, 396, 106, - 104, 104, 103, 101, 0, 4, 83, 113, 85, 106, - 82, 11, 12, 90, 106, 92, 93, 94, 18, 102, - 106, 112, 22, 23, 24, 106, 26, 27, 103, 108, - 106, 111, 106, 0, 3, 13, 36, 26, 56, 74, - 40, 114, 109, 65, 44, 138, 291, 47, 48, 49, - 50, 337, 167, 248, 324, 206, 56, 319, 58, 59, - 244, 408, 239, 63, 64, 65, 66, 67, 232, 393, - 381, 385, 272, 334, 74, -1, 76, 77, 78, 79, - -1, -1, -1, 83, -1, 85, -1, 87, 11, 12, - 90, 91, 92, 93, 94, 18, -1, -1, -1, 22, - 23, 24, -1, 26, 27, -1, -1, -1, -1, -1, - -1, -1, -1, 36, -1, -1, -1, 40, -1, -1, - -1, 44, -1, -1, 47, 48, 49, 50, -1, -1, - -1, -1, -1, 56, -1, 58, 59, -1, -1, -1, - 63, 64, 65, 66, 67, -1, -1, -1, 11, 12, - -1, 74, -1, 76, 77, 78, 79, -1, -1, 22, - 83, 24, 85, 26, -1, 11, 12, 90, 91, 92, - 93, 94, -1, 36, -1, -1, 22, 40, 24, -1, - 26, 44, -1, -1, 47, -1, -1, -1, -1, -1, - 36, -1, -1, -1, 40, 58, -1, -1, 44, -1, - 63, 47, 65, -1, 67, -1, -1, -1, -1, -1, - -1, -1, 58, 76, 77, -1, -1, 63, -1, 65, - -1, 67, -1, -1, -1, -1, -1, -1, 91, -1, - 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 91 + 120, 82, 82, 170, 152, 13, 154, 194, 135, 134, + 64, 65, 198, 8, 8, 64, 65, 28, 8, 19, + 316, 317, 46, 8, 80, 4, 11, 12, 288, 37, + 0, 327, 40, 3, 13, 14, 44, 8, 15, 13, + 14, 33, 8, 303, 103, 11, 12, 226, 56, 105, + 99, 17, 8, 9, 37, 8, 9, 10, 8, 33, + 8, 9, 80, 8, 9, 10, 74, 37, 41, 370, + 40, 372, 319, 56, 44, 75, 34, 69, 244, 52, + 30, 247, 209, 262, 108, 103, 56, 105, 101, 89, + 337, 105, 69, 272, 103, 69, 73, 298, 299, 112, + 301, 109, 111, 114, 74, 9, 114, 6, 102, 8, + 9, 10, 11, 12, 194, 123, 241, 244, 167, 114, + 247, 111, 107, 302, 57, 104, 293, 135, 4, 99, + 104, 102, 212, 253, 108, 321, 53, 13, 14, 109, + 114, 107, 84, 113, 114, 199, 45, 46, 104, 102, + 120, 104, 102, 123, 80, 12, 104, 102, 11, 12, + 168, 169, 61, 20, 134, 135, 84, 5, 6, 7, + 8, 9, 10, 11, 12, 107, 108, 103, 84, 105, + 260, 80, 13, 14, 41, 104, 43, 86, 268, 108, + 198, 3, 319, 201, 106, 52, 95, 167, 206, 169, + 21, 209, 12, 211, 103, 39, 105, 45, 8, 336, + 337, 11, 12, 400, 107, 6, 103, 8, 9, 10, + 11, 12, 389, 410, 103, 63, 97, 98, 99, 100, + 104, 11, 12, 381, 108, 243, 244, 108, 8, 247, + 81, 11, 12, 111, 324, 81, 46, 255, 86, 330, + 370, 71, 372, 334, 45, 225, 104, 104, 104, 3, + 108, 108, 108, 271, 51, 103, 274, 11, 12, 60, + 81, 104, 104, 3, 244, 108, 108, 247, 22, 3, + 24, 111, 26, 253, 103, 6, 104, 8, 9, 10, + 11, 12, 36, 109, 109, 86, 40, 104, 103, 9, + 44, 103, 6, 47, 8, 9, 10, 11, 12, 35, + 103, 319, 68, 321, 58, 103, 3, 103, 326, 63, + 8, 65, 111, 67, 45, 109, 111, 25, 336, 337, + 105, 339, 76, 77, 115, 68, 344, 105, 114, 60, + 68, 45, 46, 104, 30, 108, 354, 91, 96, 319, + 8, 9, 10, 11, 12, 105, 103, 61, 4, 103, + 11, 12, 13, 14, 95, 86, 88, 337, 97, 98, + 99, 100, 110, 68, 8, 383, 80, 11, 12, 104, + 112, 108, 86, 106, 104, 101, 105, 395, 103, 23, + 398, 95, 104, 106, 4, 113, 102, 82, 102, 103, + 370, 105, 372, 106, 38, 106, 106, 112, 42, 103, + 106, 108, 111, 106, 48, 49, 50, 0, 0, 3, + 54, 138, 13, 26, 56, 59, 74, 109, 65, 293, + 64, 114, 66, 167, 339, 206, 326, 321, 246, 233, + 74, 250, 410, 241, 395, 383, 387, 336, 274, 83, + -1, 85, -1, -1, 11, 12, 90, -1, 92, 93, + 94, 18, -1, -1, -1, 22, 23, 24, -1, 26, + 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, + -1, -1, -1, 40, -1, -1, -1, 44, -1, -1, + 47, 48, 49, 50, -1, -1, -1, -1, -1, 56, + -1, 58, 59, -1, -1, -1, 63, 64, 65, 66, + 67, -1, -1, -1, -1, -1, -1, 74, -1, 76, + 77, 78, 79, -1, -1, -1, 83, -1, 85, -1, + 87, 11, 12, 90, 91, 92, 93, 94, 18, -1, + -1, -1, 22, 23, 24, -1, 26, 27, -1, -1, + -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, + 40, -1, -1, -1, 44, -1, -1, 47, 48, 49, + 50, -1, -1, -1, -1, -1, 56, -1, 58, 59, + -1, -1, -1, 63, 64, 65, 66, 67, -1, -1, + -1, 11, 12, -1, 74, -1, 76, 77, 78, 79, + -1, -1, 22, 83, 24, 85, 26, -1, 11, 12, + 90, 91, 92, 93, 94, -1, 36, -1, -1, 22, + 40, 24, -1, 26, 44, -1, -1, 47, -1, -1, + -1, -1, -1, 36, -1, -1, -1, 40, 58, -1, + -1, 44, -1, 63, 47, 65, -1, 67, -1, -1, + -1, -1, -1, -1, -1, 58, 76, 77, -1, -1, + 63, -1, 65, -1, 67, -1, -1, -1, -1, -1, + -1, 91, -1, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 91 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison.simple" @@ -1854,6 +1865,16 @@ case 69: break;} case 70: #line 819 "asn1p_y.y" +{ + int ret; + yyval.a_parg.governor = asn1p_ref_new(yylineno); + ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0); + checkmem(ret == 0); + yyval.a_parg.argument = yyvsp[0].tv_str; + ; + break;} +case 71: +#line 826 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1863,29 +1884,29 @@ case 70: yyval.a_parg.argument = yyvsp[0].tv_str; ; break;} -case 71: -#line 830 "asn1p_y.y" +case 72: +#line 837 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 72: -#line 835 "asn1p_y.y" +case 73: +#line 842 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 73: -#line 842 "asn1p_y.y" +case 74: +#line 849 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} -case 74: -#line 845 "asn1p_y.y" +case 75: +#line 852 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1894,31 +1915,31 @@ case 74: yyval.a_expr->meta_type = AMT_VALUE; ; break;} -case 75: -#line 858 "asn1p_y.y" +case 76: +#line 876 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); ; break;} -case 76: -#line 859 "asn1p_y.y" +case 77: +#line 877 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} -case 77: -#line 862 "asn1p_y.y" +case 78: +#line 880 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 78: -#line 867 "asn1p_y.y" +case 79: +#line 885 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 79: -#line 874 "asn1p_y.y" +case 80: +#line 892 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -1926,8 +1947,8 @@ case 79: yyval.a_expr->marker = yyvsp[0].a_marker; ; break;} -case 80: -#line 880 "asn1p_y.y" +case 81: +#line 898 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1936,43 +1957,43 @@ case 80: asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 81: -#line 887 "asn1p_y.y" +case 82: +#line 905 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} -case 82: -#line 893 "asn1p_y.y" +case 83: +#line 911 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 83: -#line 898 "asn1p_y.y" +case 84: +#line 916 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 84: -#line 905 "asn1p_y.y" +case 85: +#line 923 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; assert(yyval.a_expr->Identifier == 0); yyval.a_expr->Identifier = yyvsp[-1].tv_str; ; break;} -case 85: -#line 910 "asn1p_y.y" +case 86: +#line 928 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} -case 86: -#line 916 "asn1p_y.y" +case 87: +#line 934 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; checkmem(yyval.a_expr); @@ -1981,16 +2002,16 @@ case 86: assert(yyval.a_expr->meta_type == AMT_OBJECT); ; break;} -case 87: -#line 926 "asn1p_y.y" +case 88: +#line 944 "asn1p_y.y" { yyval.a_int = 0; ; break;} -case 88: -#line 927 "asn1p_y.y" +case 89: +#line 945 "asn1p_y.y" { yyval.a_int = 1; ; break;} -case 89: -#line 931 "asn1p_y.y" +case 90: +#line 949 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1999,15 +2020,15 @@ case 89: asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 90: -#line 938 "asn1p_y.y" +case 91: +#line 956 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 91: -#line 945 "asn1p_y.y" +case 92: +#line 963 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2017,8 +2038,8 @@ case 91: yyval.a_expr->marker = yyvsp[0].a_marker; ; break;} -case 92: -#line 953 "asn1p_y.y" +case 93: +#line 971 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name; @@ -2026,8 +2047,8 @@ case 92: yyval.a_expr->unique = yyvsp[-1].a_int; ; break;} -case 93: -#line 959 "asn1p_y.y" +case 94: +#line 977 "asn1p_y.y" { int ret; yyval.a_expr = asn1p_expr_new(yylineno); @@ -2044,48 +2065,48 @@ case 93: yyval.a_expr->unique = yyvsp[-1].a_int; ; break;} -case 94: -#line 977 "asn1p_y.y" +case 95: +#line 995 "asn1p_y.y" { yyval.a_wsynt = 0; ; break;} -case 95: -#line 978 "asn1p_y.y" +case 96: +#line 996 "asn1p_y.y" { yyval.a_wsynt = yyvsp[0].a_wsynt; ; break;} -case 96: -#line 985 "asn1p_y.y" +case 97: +#line 1003 "asn1p_y.y" { asn1p_lexer_hack_enable_with_syntax(); ; break;} -case 97: -#line 987 "asn1p_y.y" +case 98: +#line 1005 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; ; break;} -case 98: -#line 993 "asn1p_y.y" +case 99: +#line 1011 "asn1p_y.y" { yyval.a_wsynt = asn1p_wsyntx_new(); TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); ; break;} -case 99: -#line 997 "asn1p_y.y" +case 100: +#line 1015 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); ; break;} -case 100: -#line 1004 "asn1p_y.y" +case 101: +#line 1022 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); ; break;} -case 101: -#line 1007 "asn1p_y.y" +case 102: +#line 1025 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2096,8 +2117,8 @@ case 101: yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0); ; break;} -case 102: -#line 1019 "asn1p_y.y" +case 103: +#line 1037 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2107,8 +2128,8 @@ case 102: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 103: -#line 1027 "asn1p_y.y" +case 104: +#line 1045 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2119,8 +2140,8 @@ case 103: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 104: -#line 1036 "asn1p_y.y" +case 105: +#line 1054 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2131,8 +2152,8 @@ case 104: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 105: -#line 1048 "asn1p_y.y" +case 106: +#line 1066 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyval.a_expr->tag = yyvsp[-2].a_tag; @@ -2153,14 +2174,14 @@ case 105: } ; break;} -case 106: -#line 1070 "asn1p_y.y" +case 107: +#line 1088 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} -case 107: -#line 1073 "asn1p_y.y" +case 108: +#line 1091 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2168,8 +2189,8 @@ case 107: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 108: -#line 1079 "asn1p_y.y" +case 109: +#line 1097 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2177,8 +2198,8 @@ case 108: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 109: -#line 1085 "asn1p_y.y" +case 110: +#line 1103 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2186,8 +2207,8 @@ case 109: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 110: -#line 1091 "asn1p_y.y" +case 111: +#line 1109 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2195,8 +2216,8 @@ case 110: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 111: -#line 1097 "asn1p_y.y" +case 112: +#line 1115 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2208,8 +2229,8 @@ case 111: asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 112: -#line 1107 "asn1p_y.y" +case 113: +#line 1125 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2221,8 +2242,8 @@ case 112: asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 113: -#line 1117 "asn1p_y.y" +case 114: +#line 1135 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2230,8 +2251,8 @@ case 113: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 114: -#line 1123 "asn1p_y.y" +case 115: +#line 1141 "asn1p_y.y" { int ret; yyval.a_expr = asn1p_expr_new(yylineno); @@ -2244,8 +2265,8 @@ case 114: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 115: -#line 1137 "asn1p_y.y" +case 116: +#line 1155 "asn1p_y.y" { int ret; yyval.a_expr = yyvsp[-1].a_expr; @@ -2261,8 +2282,8 @@ case 115: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 116: -#line 1161 "asn1p_y.y" +case 117: +#line 1179 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2271,8 +2292,8 @@ case 116: yyval.a_expr->meta_type = AMT_TYPEREF; ; break;} -case 117: -#line 1168 "asn1p_y.y" +case 118: +#line 1186 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2281,8 +2302,8 @@ case 117: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 118: -#line 1183 "asn1p_y.y" +case 119: +#line 1201 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2292,8 +2313,8 @@ case 118: free(yyvsp[0].tv_str); ; break;} -case 119: -#line 1191 "asn1p_y.y" +case 120: +#line 1209 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2305,8 +2326,8 @@ case 119: free(yyvsp[-2].tv_str); ; break;} -case 120: -#line 1201 "asn1p_y.y" +case 121: +#line 1219 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2318,8 +2339,8 @@ case 120: free(yyvsp[-2].tv_str); ; break;} -case 121: -#line 1211 "asn1p_y.y" +case 122: +#line 1229 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2331,8 +2352,8 @@ case 121: free(yyvsp[-2].tv_str); ; break;} -case 122: -#line 1221 "asn1p_y.y" +case 123: +#line 1239 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2342,8 +2363,8 @@ case 122: checkmem(ret == 0); ; break;} -case 123: -#line 1229 "asn1p_y.y" +case 124: +#line 1247 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[0].a_ref; @@ -2364,8 +2385,8 @@ case 123: } ; break;} -case 124: -#line 1251 "asn1p_y.y" +case 125: +#line 1269 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2375,8 +2396,8 @@ case 124: checkmem(ret == 0); ; break;} -case 125: -#line 1259 "asn1p_y.y" +case 126: +#line 1277 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[-2].a_ref; @@ -2385,22 +2406,22 @@ case 125: checkmem(ret == 0); ; break;} -case 128: -#line 1273 "asn1p_y.y" +case 129: +#line 1291 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_AmpUppercase; yyval.a_refcomp.name = yyvsp[0].tv_str; ; break;} -case 129: -#line 1278 "asn1p_y.y" +case 130: +#line 1296 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_Amplowercase; yyval.a_refcomp.name = yyvsp[0].tv_str; ; break;} -case 130: -#line 1291 "asn1p_y.y" +case 131: +#line 1309 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; assert(yyval.a_expr->Identifier == NULL); @@ -2409,8 +2430,8 @@ case 130: yyval.a_expr->value = yyvsp[0].a_value; ; break;} -case 131: -#line 1301 "asn1p_y.y" +case 132: +#line 1319 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -2419,77 +2440,77 @@ case 131: yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value; ; break;} -case 132: -#line 1308 "asn1p_y.y" +case 133: +#line 1326 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); ; break;} -case 133: -#line 1308 "asn1p_y.y" +case 134: +#line 1326 "asn1p_y.y" { yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); yyval.a_value->type = ATV_UNPARSED; ; break;} -case 134: -#line 1313 "asn1p_y.y" +case 135: +#line 1331 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_NULL; ; break;} -case 135: -#line 1318 "asn1p_y.y" +case 136: +#line 1336 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_FALSE; ; break;} -case 136: -#line 1323 "asn1p_y.y" +case 137: +#line 1341 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); yyval.a_value->type = ATV_TRUE; ; break;} -case 137: -#line 1328 "asn1p_y.y" +case 138: +#line 1346 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B'); checkmem(yyval.a_value); ; break;} -case 138: -#line 1332 "asn1p_y.y" +case 139: +#line 1350 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H'); checkmem(yyval.a_value); ; break;} -case 139: -#line 1336 "asn1p_y.y" +case 140: +#line 1354 "asn1p_y.y" { yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); ; break;} -case 140: -#line 1340 "asn1p_y.y" +case 141: +#line 1358 "asn1p_y.y" { yyval.a_value = yyvsp[0].a_value; ; break;} -case 141: -#line 1343 "asn1p_y.y" +case 142: +#line 1361 "asn1p_y.y" { yyval.a_value = yyvsp[0].a_value; ; break;} -case 142: -#line 1349 "asn1p_y.y" +case 143: +#line 1367 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2502,8 +2523,8 @@ case 142: free(yyvsp[0].tv_str); ; break;} -case 143: -#line 1360 "asn1p_y.y" +case 144: +#line 1378 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2519,8 +2540,8 @@ case 143: free(yyvsp[0].tv_str); ; break;} -case 144: -#line 1377 "asn1p_y.y" +case 145: +#line 1395 "asn1p_y.y" { yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2; yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1); @@ -2532,8 +2553,8 @@ case 144: free(yyvsp[0].tv_opaque.buf); ; break;} -case 145: -#line 1387 "asn1p_y.y" +case 146: +#line 1405 "asn1p_y.y" { int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len; char *p = malloc(newsize + 1); @@ -2547,68 +2568,68 @@ case 145: yyval.tv_opaque.len = newsize; ; break;} -case 146: -#line 1402 "asn1p_y.y" +case 147: +#line 1420 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BOOLEAN; ; break;} -case 147: -#line 1403 "asn1p_y.y" +case 148: +#line 1421 "asn1p_y.y" { yyval.a_type = ASN_BASIC_NULL; ; break;} -case 148: -#line 1404 "asn1p_y.y" +case 149: +#line 1422 "asn1p_y.y" { yyval.a_type = ASN_BASIC_REAL; ; break;} -case 149: -#line 1405 "asn1p_y.y" +case 150: +#line 1423 "asn1p_y.y" { yyval.a_type = yyvsp[0].a_type; ; break;} -case 150: -#line 1406 "asn1p_y.y" +case 151: +#line 1424 "asn1p_y.y" { yyval.a_type = ASN_BASIC_OCTET_STRING; ; break;} -case 151: -#line 1407 "asn1p_y.y" +case 152: +#line 1425 "asn1p_y.y" { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ; break;} -case 152: -#line 1408 "asn1p_y.y" +case 153: +#line 1426 "asn1p_y.y" { yyval.a_type = ASN_BASIC_RELATIVE_OID; ; break;} -case 153: -#line 1409 "asn1p_y.y" +case 154: +#line 1427 "asn1p_y.y" { yyval.a_type = ASN_BASIC_EXTERNAL; ; break;} -case 154: -#line 1410 "asn1p_y.y" +case 155: +#line 1428 "asn1p_y.y" { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ; break;} -case 155: -#line 1411 "asn1p_y.y" +case 156: +#line 1429 "asn1p_y.y" { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ; break;} -case 156: -#line 1412 "asn1p_y.y" +case 157: +#line 1430 "asn1p_y.y" { yyval.a_type = ASN_BASIC_UTCTime; ; break;} -case 157: -#line 1413 "asn1p_y.y" +case 158: +#line 1431 "asn1p_y.y" { yyval.a_type = ASN_BASIC_GeneralizedTime; ; break;} -case 158: -#line 1420 "asn1p_y.y" +case 159: +#line 1438 "asn1p_y.y" { yyval.a_type = ASN_BASIC_INTEGER; ; break;} -case 159: -#line 1421 "asn1p_y.y" +case 160: +#line 1439 "asn1p_y.y" { yyval.a_type = ASN_BASIC_ENUMERATED; ; break;} -case 160: -#line 1422 "asn1p_y.y" +case 161: +#line 1440 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BIT_STRING; ; break;} -case 161: -#line 1426 "asn1p_y.y" +case 162: +#line 1444 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2616,8 +2637,8 @@ case 161: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 162: -#line 1432 "asn1p_y.y" +case 163: +#line 1450 "asn1p_y.y" { if(yyvsp[0].a_expr) { yyval.a_expr = yyvsp[0].a_expr; @@ -2629,92 +2650,92 @@ case 162: yyval.a_expr->meta_type = AMT_TYPE; ; break;} -case 163: -#line 1445 "asn1p_y.y" +case 164: +#line 1463 "asn1p_y.y" { yyval.a_type = ASN_STRING_BMPString; ; break;} -case 164: -#line 1446 "asn1p_y.y" +case 165: +#line 1464 "asn1p_y.y" { yyval.a_type = ASN_STRING_GeneralString; fprintf(stderr, "WARNING: GeneralString is not fully supported\n"); ; break;} -case 165: -#line 1450 "asn1p_y.y" +case 166: +#line 1468 "asn1p_y.y" { yyval.a_type = ASN_STRING_GraphicString; fprintf(stderr, "WARNING: GraphicString is not fully supported\n"); ; break;} -case 166: -#line 1454 "asn1p_y.y" +case 167: +#line 1472 "asn1p_y.y" { yyval.a_type = ASN_STRING_IA5String; ; break;} -case 167: -#line 1455 "asn1p_y.y" +case 168: +#line 1473 "asn1p_y.y" { yyval.a_type = ASN_STRING_ISO646String; ; break;} -case 168: -#line 1456 "asn1p_y.y" +case 169: +#line 1474 "asn1p_y.y" { yyval.a_type = ASN_STRING_NumericString; ; break;} -case 169: -#line 1457 "asn1p_y.y" +case 170: +#line 1475 "asn1p_y.y" { yyval.a_type = ASN_STRING_PrintableString; ; break;} -case 170: -#line 1458 "asn1p_y.y" +case 171: +#line 1476 "asn1p_y.y" { yyval.a_type = ASN_STRING_T61String; fprintf(stderr, "WARNING: T61String is not fully supported\n"); ; break;} -case 171: -#line 1462 "asn1p_y.y" +case 172: +#line 1480 "asn1p_y.y" { yyval.a_type = ASN_STRING_TeletexString; ; break;} -case 172: -#line 1463 "asn1p_y.y" +case 173: +#line 1481 "asn1p_y.y" { yyval.a_type = ASN_STRING_UniversalString; ; break;} -case 173: -#line 1464 "asn1p_y.y" +case 174: +#line 1482 "asn1p_y.y" { yyval.a_type = ASN_STRING_UTF8String; ; break;} -case 174: -#line 1465 "asn1p_y.y" +case 175: +#line 1483 "asn1p_y.y" { yyval.a_type = ASN_STRING_VideotexString; fprintf(stderr, "WARNING: VideotexString is not fully supported\n"); ; break;} -case 175: -#line 1469 "asn1p_y.y" +case 176: +#line 1487 "asn1p_y.y" { yyval.a_type = ASN_STRING_VisibleString; ; break;} -case 176: -#line 1470 "asn1p_y.y" +case 177: +#line 1488 "asn1p_y.y" { yyval.a_type = ASN_STRING_ObjectDescriptor; ; break;} -case 182: -#line 1482 "asn1p_y.y" +case 183: +#line 1500 "asn1p_y.y" { yyval.a_constr = 0; ; break;} -case 183: -#line 1483 "asn1p_y.y" +case 184: +#line 1501 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 184: -#line 1489 "asn1p_y.y" +case 185: +#line 1507 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0); ; break;} -case 185: -#line 1492 "asn1p_y.y" +case 186: +#line 1510 "asn1p_y.y" { /* * This is a special case, for compatibility purposes. @@ -2723,26 +2744,26 @@ case 185: CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0); ; break;} -case 186: -#line 1502 "asn1p_y.y" +case 187: +#line 1520 "asn1p_y.y" { yyval.a_constr = yyvsp[-1].a_constr; ; break;} -case 187: -#line 1505 "asn1p_y.y" +case 188: +#line 1523 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} -case 188: -#line 1511 "asn1p_y.y" +case 189: +#line 1529 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 189: -#line 1514 "asn1p_y.y" +case 190: +#line 1532 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -2750,8 +2771,8 @@ case 189: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct); ; break;} -case 190: -#line 1520 "asn1p_y.y" +case 191: +#line 1538 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -2761,32 +2782,32 @@ case 190: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr); ; break;} -case 191: -#line 1531 "asn1p_y.y" +case 192: +#line 1549 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 192: -#line 1534 "asn1p_y.y" +case 193: +#line 1552 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 193: -#line 1537 "asn1p_y.y" +case 194: +#line 1555 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 194: -#line 1540 "asn1p_y.y" +case 195: +#line 1558 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} -case 195: -#line 1546 "asn1p_y.y" +case 196: +#line 1564 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -2796,8 +2817,8 @@ case 195: checkmem(ret == 0); ; break;} -case 196: -#line 1554 "asn1p_y.y" +case 197: +#line 1572 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -2807,8 +2828,8 @@ case 196: checkmem(ret == 0); ; break;} -case 197: -#line 1562 "asn1p_y.y" +case 198: +#line 1580 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -2816,8 +2837,8 @@ case 197: yyval.a_constr->value = yyvsp[0].a_value; ; break;} -case 198: -#line 1568 "asn1p_y.y" +case 199: +#line 1586 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -2826,8 +2847,8 @@ case 198: yyval.a_constr->range_stop = yyvsp[0].a_value; ; break;} -case 199: -#line 1575 "asn1p_y.y" +case 200: +#line 1593 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -2837,8 +2858,8 @@ case 199: yyval.a_constr->range_start->type = ATV_MIN; ; break;} -case 200: -#line 1583 "asn1p_y.y" +case 201: +#line 1601 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -2848,8 +2869,8 @@ case 200: yyval.a_constr->range_stop->type = ATV_MAX; ; break;} -case 201: -#line 1591 "asn1p_y.y" +case 202: +#line 1609 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -2860,117 +2881,131 @@ case 201: yyval.a_constr->range_stop->type = ATV_MAX; ; break;} -case 202: -#line 1600 "asn1p_y.y" +case 203: +#line 1618 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 203: -#line 1603 "asn1p_y.y" +case 204: +#line 1621 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 204: -#line 1609 "asn1p_y.y" -{ yyval.a_ctype = ACT_EL_RANGE; ; - break;} case 205: -#line 1610 "asn1p_y.y" -{ yyval.a_ctype = ACT_EL_RLRANGE; ; +#line 1627 "asn1p_y.y" +{ yyval.a_ctype = ACT_EL_RANGE; ; break;} case 206: -#line 1611 "asn1p_y.y" -{ yyval.a_ctype = ACT_EL_LLRANGE; ; +#line 1628 "asn1p_y.y" +{ yyval.a_ctype = ACT_EL_RLRANGE; ; break;} case 207: -#line 1612 "asn1p_y.y" -{ yyval.a_ctype = ACT_EL_ULRANGE; ; +#line 1629 "asn1p_y.y" +{ yyval.a_ctype = ACT_EL_LLRANGE; ; break;} case 208: -#line 1616 "asn1p_y.y" -{ - yyval.a_ctype = ACT_CT_SIZE; - ; +#line 1630 "asn1p_y.y" +{ yyval.a_ctype = ACT_EL_ULRANGE; ; break;} case 209: -#line 1619 "asn1p_y.y" +#line 1634 "asn1p_y.y" { - yyval.a_ctype = ACT_CT_FROM; + yyval.a_ctype = ACT_CT_SIZE; ; break;} case 210: -#line 1625 "asn1p_y.y" +#line 1637 "asn1p_y.y" { - yyval.a_value = yyvsp[0].a_value; + yyval.a_ctype = ACT_CT_FROM; ; break;} case 211: -#line 1628 "asn1p_y.y" +#line 1643 "asn1p_y.y" { - asn1p_ref_t *ref; - int ret; - ref = asn1p_ref_new(yylineno); - checkmem(ref); - ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase); - checkmem(ret == 0); - yyval.a_value = asn1p_value_fromref(ref, 0); + yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); - free(yyvsp[0].tv_str); + yyval.a_value->type = ATV_FALSE; ; break;} case 212: -#line 1639 "asn1p_y.y" +#line 1648 "asn1p_y.y" { - yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); + yyval.a_value = asn1p_value_fromint(1); checkmem(yyval.a_value); + yyval.a_value->type = ATV_TRUE; ; break;} case 213: -#line 1643 "asn1p_y.y" +#line 1653 "asn1p_y.y" { - yyval.a_value = asn1p_value_fromint(0); - checkmem(yyval.a_value); - yyval.a_value->type = ATV_FALSE; + yyval.a_value = yyvsp[0].a_value; ; break;} case 214: -#line 1648 "asn1p_y.y" +#line 1656 "asn1p_y.y" { - yyval.a_value = asn1p_value_fromint(1); + yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); - yyval.a_value->type = ATV_TRUE; ; break;} case 215: -#line 1656 "asn1p_y.y" +#line 1660 "asn1p_y.y" { - CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); + asn1p_ref_t *ref; + int ret; + ref = asn1p_ref_new(yylineno); + checkmem(ref); + ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase); + checkmem(ret == 0); + yyval.a_value = asn1p_value_fromref(ref, 0); + checkmem(yyval.a_value); + free(yyvsp[0].tv_str); ; break;} case 216: -#line 1662 "asn1p_y.y" +#line 1671 "asn1p_y.y" { - yyval.a_constr = yyvsp[0].a_constr; + asn1p_ref_t *ref; + int ret; + ref = asn1p_ref_new(yylineno); + checkmem(ref); + ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN); + checkmem(ret == 0); + yyval.a_value = asn1p_value_fromref(ref, 0); + checkmem(yyval.a_value); + free(yyvsp[0].tv_str); ; break;} case 217: -#line 1665 "asn1p_y.y" +#line 1685 "asn1p_y.y" { - CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); + CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); ; break;} case 218: -#line 1671 "asn1p_y.y" +#line 1691 "asn1p_y.y" +{ + yyval.a_constr = yyvsp[0].a_constr; + ; + break;} +case 219: +#line 1694 "asn1p_y.y" +{ + CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); + ; + break;} +case 220: +#line 1700 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); yyval.a_constr->type = ACT_EL_EXT; ; break;} -case 219: -#line 1676 "asn1p_y.y" +case 221: +#line 1705 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -2979,46 +3014,46 @@ case 219: yyval.a_constr->presence = yyvsp[0].a_pres; ; break;} -case 220: -#line 1689 "asn1p_y.y" +case 222: +#line 1718 "asn1p_y.y" { yyval.a_pres = ACPRES_DEFAULT; ; break;} -case 221: -#line 1690 "asn1p_y.y" +case 223: +#line 1719 "asn1p_y.y" { yyval.a_pres = yyvsp[0].a_pres; ; break;} -case 222: -#line 1694 "asn1p_y.y" +case 224: +#line 1723 "asn1p_y.y" { yyval.a_pres = ACPRES_PRESENT; ; break;} -case 223: -#line 1697 "asn1p_y.y" +case 225: +#line 1726 "asn1p_y.y" { yyval.a_pres = ACPRES_ABSENT; ; break;} -case 224: -#line 1700 "asn1p_y.y" +case 226: +#line 1729 "asn1p_y.y" { yyval.a_pres = ACPRES_OPTIONAL; ; break;} -case 225: -#line 1706 "asn1p_y.y" +case 227: +#line 1735 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 226: -#line 1709 "asn1p_y.y" +case 228: +#line 1738 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} -case 227: -#line 1718 "asn1p_y.y" +case 229: +#line 1747 "asn1p_y.y" { asn1p_ref_t *ref = asn1p_ref_new(yylineno); asn1p_constraint_t *ct; @@ -3032,14 +3067,14 @@ case 227: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0); ; break;} -case 228: -#line 1733 "asn1p_y.y" +case 230: +#line 1762 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} -case 229: -#line 1739 "asn1p_y.y" +case 231: +#line 1768 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3047,8 +3082,8 @@ case 229: yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0); ; break;} -case 230: -#line 1745 "asn1p_y.y" +case 232: +#line 1774 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3058,8 +3093,8 @@ case 230: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct); ; break;} -case 231: -#line 1759 "asn1p_y.y" +case 233: +#line 1788 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 2); int ret; @@ -3072,8 +3107,8 @@ case 231: free(yyvsp[0].tv_str); ; break;} -case 232: -#line 1770 "asn1p_y.y" +case 234: +#line 1799 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 3); int ret; @@ -3087,14 +3122,14 @@ case 232: free(yyvsp[0].tv_str); ; break;} -case 233: -#line 1786 "asn1p_y.y" +case 235: +#line 1815 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 234: -#line 1789 "asn1p_y.y" +case 236: +#line 1818 "asn1p_y.y" { int l1 = strlen(yyvsp[-2].tv_str); int l3 = strlen(yyvsp[0].tv_str); @@ -3105,61 +3140,61 @@ case 234: yyval.tv_str[l1 + 1 + l3] = '\0'; ; break;} -case 235: -#line 1807 "asn1p_y.y" +case 237: +#line 1836 "asn1p_y.y" { yyval.a_marker.flags = EM_NOMARK; yyval.a_marker.default_value = 0; ; break;} -case 236: -#line 1811 "asn1p_y.y" +case 238: +#line 1840 "asn1p_y.y" { yyval.a_marker = yyvsp[0].a_marker; ; break;} -case 237: -#line 1815 "asn1p_y.y" +case 239: +#line 1844 "asn1p_y.y" { yyval.a_marker.flags = EM_OPTIONAL; yyval.a_marker.default_value = 0; ; break;} -case 238: -#line 1819 "asn1p_y.y" +case 240: +#line 1848 "asn1p_y.y" { yyval.a_marker.flags = EM_DEFAULT; yyval.a_marker.default_value = yyvsp[0].a_value; ; break;} -case 239: -#line 1842 "asn1p_y.y" +case 241: +#line 1871 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); ; break;} -case 240: -#line 1846 "asn1p_y.y" +case 242: +#line 1875 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; ; break;} -case 241: -#line 1852 "asn1p_y.y" +case 243: +#line 1881 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 242: -#line 1857 "asn1p_y.y" +case 244: +#line 1886 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} -case 243: -#line 1864 "asn1p_y.y" +case 245: +#line 1893 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3168,8 +3203,8 @@ case 243: yyval.a_expr->Identifier = yyvsp[0].tv_str; ; break;} -case 244: -#line 1871 "asn1p_y.y" +case 246: +#line 1900 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3179,8 +3214,8 @@ case 244: yyval.a_expr->value = yyvsp[-1].a_value; ; break;} -case 245: -#line 1879 "asn1p_y.y" +case 247: +#line 1908 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3190,8 +3225,8 @@ case 245: yyval.a_expr->value = yyvsp[-1].a_value; ; break;} -case 246: -#line 1887 "asn1p_y.y" +case 248: +#line 1916 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3200,8 +3235,8 @@ case 246: yyval.a_expr->value = yyvsp[0].a_value; ; break;} -case 247: -#line 1894 "asn1p_y.y" +case 249: +#line 1923 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3211,103 +3246,103 @@ case 247: yyval.a_expr->meta_type = AMT_VALUE; ; break;} -case 248: -#line 1905 "asn1p_y.y" +case 250: +#line 1934 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); ; break;} -case 249: -#line 1909 "asn1p_y.y" +case 251: +#line 1938 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); ; break;} -case 250: -#line 1940 "asn1p_y.y" +case 252: +#line 1969 "asn1p_y.y" { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ; break;} -case 251: -#line 1941 "asn1p_y.y" +case 253: +#line 1970 "asn1p_y.y" { yyval.a_tag = yyvsp[0].a_tag; ; break;} -case 252: -#line 1945 "asn1p_y.y" +case 254: +#line 1974 "asn1p_y.y" { yyval.a_tag = yyvsp[-1].a_tag; yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode; ; break;} -case 253: -#line 1952 "asn1p_y.y" +case 255: +#line 1981 "asn1p_y.y" { yyval.a_tag = yyvsp[-2].a_tag; yyval.a_tag.tag_value = yyvsp[-1].a_int; ; break;} -case 254: -#line 1958 "asn1p_y.y" +case 256: +#line 1987 "asn1p_y.y" { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ; break;} -case 255: -#line 1959 "asn1p_y.y" +case 257: +#line 1988 "asn1p_y.y" { yyval.a_tag.tag_class = TC_UNIVERSAL; ; break;} -case 256: -#line 1960 "asn1p_y.y" +case 258: +#line 1989 "asn1p_y.y" { yyval.a_tag.tag_class = TC_APPLICATION; ; break;} -case 257: -#line 1961 "asn1p_y.y" +case 259: +#line 1990 "asn1p_y.y" { yyval.a_tag.tag_class = TC_PRIVATE; ; break;} -case 258: -#line 1965 "asn1p_y.y" +case 260: +#line 1994 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_DEFAULT; ; break;} -case 259: -#line 1966 "asn1p_y.y" +case 261: +#line 1995 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_IMPLICIT; ; break;} -case 260: -#line 1967 "asn1p_y.y" +case 262: +#line 1996 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_EXPLICIT; ; break;} -case 261: -#line 1971 "asn1p_y.y" +case 263: +#line 2000 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 262: -#line 1975 "asn1p_y.y" +case 264: +#line 2004 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 263: -#line 1983 "asn1p_y.y" +case 265: +#line 2012 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 264: -#line 1990 "asn1p_y.y" +case 266: +#line 2019 "asn1p_y.y" { yyval.tv_str = 0; ; break;} -case 265: -#line 1991 "asn1p_y.y" +case 267: +#line 2020 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 266: -#line 1996 "asn1p_y.y" +case 268: +#line 2025 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; @@ -3535,7 +3570,7 @@ yyerrhandle: } return 1; } -#line 2002 "asn1p_y.y" +#line 2031 "asn1p_y.y" diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y index 3eb38c1b..e316119a 100644 --- a/libasn1parser/asn1p_y.y +++ b/libasn1parser/asn1p_y.y @@ -816,6 +816,13 @@ ParameterArgumentName: checkmem(ret == 0); $$.argument = $3; } + | TypeRefName ':' TypeRefName { + int ret; + $$.governor = asn1p_ref_new(yylineno); + ret = asn1p_ref_add_component($$.governor, $1, 0); + checkmem(ret == 0); + $$.argument = $3; + } | BasicTypeId ':' Identifier { int ret; $$.governor = asn1p_ref_new(yylineno); @@ -851,6 +858,17 @@ ActualParameter: } ; +/* + | '{' ActualParameter '}' { + $$ = asn1p_expr_new(yylineno); + checkmem($$); + asn1p_expr_add($$, $2); + $$->expr_type = A1TC_PARAMETRIZED; + $$->meta_type = AMT_TYPE; + } + ; +*/ + /* * A collection of constructed data type members. */ @@ -1622,9 +1640,23 @@ ConstraintSpec: ; ConstraintValue: - SignedNumber { + TOK_FALSE { + $$ = asn1p_value_fromint(0); + checkmem($$); + $$->type = ATV_FALSE; + } + | TOK_TRUE { + $$ = asn1p_value_fromint(1); + checkmem($$); + $$->type = ATV_TRUE; + } + | SignedNumber { $$ = $1; } + | TOK_cstring { + $$ = asn1p_value_frombuf($1.buf, $1.len, 0); + checkmem($$); + } | Identifier { asn1p_ref_t *ref; int ret; @@ -1636,19 +1668,16 @@ ConstraintValue: checkmem($$); free($1); } - | TOK_cstring { - $$ = asn1p_value_frombuf($1.buf, $1.len, 0); - checkmem($$); - } - | TOK_FALSE { - $$ = asn1p_value_fromint(0); - checkmem($$); - $$->type = ATV_FALSE; - } - | TOK_TRUE { - $$ = asn1p_value_fromint(1); + | TypeRefName { + asn1p_ref_t *ref; + int ret; + ref = asn1p_ref_new(yylineno); + checkmem(ref); + ret = asn1p_ref_add_component(ref, $1, RLT_UNKNOWN); + checkmem(ret == 0); + $$ = asn1p_value_fromref(ref, 0); checkmem($$); - $$->type = ATV_TRUE; + free($1); } ; -- cgit v1.2.3