diff --git a/ChangeLog b/ChangeLog index 9646d94e..3a8a81ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ * Refactored Information Object Classes parsing. * Refactored Parameterization support. * [typedef enum foo {}] foo_e; is now e_foo, see #1287989 + * Refactored ValueSetTypeAssignment parsing. 0.9.20: 2006-Mar-06 diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c index 33d56f91..9bbad6e1 100644 --- a/libasn1parser/asn1p_y.c +++ b/libasn1parser/asn1p_y.c @@ -223,7 +223,7 @@ typedef union { -#define YYFINAL 443 +#define YYFINAL 444 #define YYFLAG -32768 #define YYNTBASE 120 @@ -275,30 +275,30 @@ static const short yyprhs[] = { 0, 57, 60, 63, 64, 66, 68, 71, 73, 75, 77, 79, 81, 82, 86, 88, 92, 95, 97, 100, 101, 103, 108, 110, 114, 116, 120, 122, 126, 130, 133, - 135, 139, 141, 145, 147, 148, 155, 157, 159, 164, - 168, 172, 179, 181, 185, 187, 191, 195, 199, 201, - 205, 207, 209, 211, 212, 214, 216, 220, 224, 227, - 231, 233, 235, 239, 242, 244, 246, 252, 253, 255, - 257, 261, 264, 269, 273, 277, 281, 285, 289, 290, - 292, 293, 300, 302, 305, 307, 309, 311, 315, 317, - 321, 325, 329, 330, 333, 335, 340, 345, 350, 357, - 364, 366, 371, 375, 377, 381, 385, 389, 391, 395, - 397, 401, 403, 405, 407, 409, 413, 417, 419, 424, - 426, 428, 432, 433, 437, 439, 441, 443, 445, 447, - 449, 451, 453, 457, 459, 461, 463, 465, 468, 470, - 472, 474, 476, 479, 482, 484, 486, 489, 492, 494, - 496, 498, 500, 502, 505, 507, 510, 512, 514, 516, - 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, - 538, 540, 542, 544, 546, 548, 549, 551, 553, 558, - 562, 567, 569, 573, 579, 581, 585, 589, 593, 597, - 602, 606, 608, 610, 614, 618, 622, 626, 628, 630, - 631, 637, 639, 642, 645, 649, 651, 653, 655, 657, - 659, 661, 663, 665, 669, 675, 677, 681, 683, 687, - 688, 690, 692, 694, 696, 698, 700, 704, 709, 711, - 715, 718, 722, 724, 728, 729, 731, 733, 736, 739, - 743, 745, 749, 751, 756, 761, 763, 765, 767, 769, - 770, 772, 775, 780, 781, 783, 785, 787, 788, 790, - 792, 794, 796, 798, 799, 801 + 135, 139, 141, 145, 147, 151, 156, 158, 160, 165, + 169, 173, 180, 182, 186, 188, 192, 196, 200, 202, + 206, 208, 210, 212, 213, 215, 217, 221, 225, 228, + 232, 234, 236, 240, 243, 245, 247, 253, 254, 256, + 258, 262, 265, 270, 274, 278, 282, 286, 290, 291, + 293, 294, 301, 303, 306, 308, 310, 312, 316, 318, + 322, 326, 330, 331, 334, 336, 341, 346, 351, 358, + 365, 367, 372, 376, 378, 382, 386, 390, 392, 396, + 398, 402, 404, 406, 408, 410, 414, 418, 420, 425, + 427, 429, 433, 434, 438, 440, 442, 444, 446, 448, + 450, 452, 454, 458, 460, 462, 464, 466, 469, 471, + 473, 475, 477, 480, 483, 485, 487, 490, 493, 495, + 497, 499, 501, 503, 506, 508, 511, 513, 515, 517, + 519, 521, 523, 525, 527, 529, 531, 533, 535, 537, + 539, 541, 543, 545, 547, 549, 550, 552, 554, 559, + 563, 568, 570, 574, 580, 582, 586, 590, 594, 598, + 603, 607, 609, 611, 615, 619, 623, 627, 629, 631, + 632, 638, 640, 643, 646, 650, 652, 654, 656, 658, + 660, 662, 664, 666, 670, 676, 678, 682, 684, 688, + 689, 691, 693, 695, 697, 699, 701, 705, 710, 712, + 716, 719, 723, 725, 729, 730, 732, 734, 737, 740, + 744, 746, 750, 752, 757, 762, 764, 766, 768, 770, + 771, 773, 776, 781, 782, 784, 786, 788, 789, 791, + 793, 795, 797, 799, 800, 802 }; static const short yyrhs[] = { 121, @@ -309,115 +309,115 @@ static const short yyrhs[] = { 121, 128, 0, 129, 0, 128, 129, 0, 45, 88, 0, 56, 88, 0, 24, 88, 0, 47, 57, 0, 15, 61, 0, 0, 131, 0, 132, 0, 131, 132, 0, - 134, 0, 140, 0, 146, 0, 176, 0, 143, 0, + 134, 0, 140, 0, 146, 0, 176, 0, 144, 0, 0, 42, 15, 133, 0, 186, 0, 58, 135, 111, 0, 58, 50, 0, 137, 0, 135, 137, 0, 0, 124, 0, 138, 50, 223, 136, 0, 139, 0, 138, 112, 139, 0, 223, 0, 223, 107, 108, 0, 226, 0, 46, 141, 111, 0, 46, 21, 111, 0, 46, 111, 0, 142, 0, 141, 112, 142, 0, 223, 0, - 223, 107, 108, 0, 226, 0, 0, 223, 145, 3, - 107, 144, 182, 0, 185, 0, 170, 0, 170, 107, - 149, 108, 0, 223, 3, 166, 0, 223, 3, 156, - 0, 223, 107, 147, 108, 3, 166, 0, 148, 0, - 147, 112, 148, 0, 223, 0, 223, 113, 226, 0, - 223, 113, 223, 0, 183, 113, 226, 0, 150, 0, - 149, 112, 150, 0, 166, 0, 179, 0, 226, 0, - 0, 152, 0, 153, 0, 152, 112, 153, 0, 226, - 166, 212, 0, 166, 212, 0, 34, 72, 166, 0, - 165, 0, 155, 0, 154, 112, 155, 0, 226, 166, - 0, 165, 0, 166, 0, 32, 107, 158, 108, 160, - 0, 0, 92, 0, 159, 0, 158, 112, 159, 0, - 16, 212, 0, 17, 166, 157, 212, 0, 17, 174, - 212, 0, 17, 175, 212, 0, 16, 174, 212, 0, - 16, 166, 212, 0, 16, 175, 212, 0, 0, 161, - 0, 0, 99, 86, 107, 162, 163, 108, 0, 164, - 0, 163, 164, 0, 4, 0, 18, 0, 173, 0, - 114, 163, 115, 0, 106, 0, 106, 116, 180, 0, - 106, 116, 217, 0, 218, 168, 190, 0, 0, 167, - 169, 0, 145, 0, 31, 107, 154, 108, 0, 82, - 107, 151, 108, 0, 83, 107, 151, 108, 0, 82, - 190, 72, 225, 218, 168, 0, 83, 190, 72, 225, - 218, 168, 0, 22, 0, 22, 39, 29, 226, 0, - 60, 72, 170, 0, 14, 0, 14, 117, 223, 0, - 224, 117, 223, 0, 14, 117, 226, 0, 224, 0, - 224, 117, 171, 0, 172, 0, 171, 117, 172, 0, - 173, 0, 16, 0, 17, 0, 16, 0, 174, 117, - 16, 0, 174, 117, 17, 0, 15, 0, 226, 145, - 3, 177, 0, 179, 0, 180, 0, 226, 113, 177, - 0, 0, 107, 178, 182, 0, 67, 0, 49, 0, - 90, 0, 6, 0, 8, 0, 181, 0, 217, 0, - 226, 0, 223, 117, 226, 0, 7, 0, 11, 0, - 12, 0, 5, 0, 182, 5, 0, 28, 0, 67, - 0, 80, 0, 184, 0, 71, 85, 0, 69, 55, - 0, 81, 0, 48, 0, 40, 75, 0, 30, 85, - 0, 95, 0, 51, 0, 186, 0, 62, 0, 44, - 0, 26, 85, 0, 183, 0, 184, 214, 0, 27, - 0, 52, 0, 53, 0, 54, 0, 63, 0, 68, - 0, 78, 0, 87, 0, 89, 0, 94, 0, 96, - 0, 97, 0, 98, 0, 70, 0, 103, 0, 104, - 0, 101, 0, 102, 0, 100, 0, 0, 191, 0, - 192, 0, 84, 109, 193, 110, 0, 109, 193, 110, - 0, 192, 109, 193, 110, 0, 194, 0, 194, 112, - 106, 0, 194, 112, 106, 112, 194, 0, 195, 0, - 21, 100, 195, 0, 194, 187, 195, 0, 194, 188, - 195, 0, 195, 189, 195, 0, 198, 109, 193, 110, - 0, 109, 193, 110, 0, 199, 0, 200, 0, 199, - 197, 199, 0, 65, 197, 199, 0, 199, 197, 64, - 0, 65, 197, 64, 0, 206, 0, 201, 0, 0, - 35, 29, 107, 196, 182, 0, 105, 0, 105, 118, - 0, 118, 105, 0, 118, 105, 118, 0, 84, 0, - 50, 0, 49, 0, 90, 0, 217, 0, 181, 0, - 226, 0, 223, 0, 99, 33, 192, 0, 99, 34, - 107, 202, 108, 0, 203, 0, 202, 112, 203, 0, - 106, 0, 226, 190, 204, 0, 0, 205, 0, 77, - 0, 19, 0, 73, 0, 207, 0, 208, 0, 107, - 223, 108, 0, 207, 107, 209, 108, 0, 210, 0, - 209, 112, 210, 0, 119, 211, 0, 119, 117, 211, - 0, 226, 0, 211, 117, 226, 0, 0, 213, 0, - 73, 0, 37, 177, 0, 107, 108, 0, 107, 215, - 108, 0, 216, 0, 215, 112, 216, 0, 226, 0, - 226, 109, 217, 110, 0, 226, 109, 180, 110, 0, - 217, 0, 106, 0, 10, 0, 13, 0, 0, 219, - 0, 220, 222, 0, 114, 221, 10, 115, 0, 0, - 93, 0, 23, 0, 79, 0, 0, 56, 0, 45, - 0, 14, 0, 15, 0, 15, 0, 0, 226, 0, - 9, 0 + 223, 107, 108, 0, 226, 0, 107, 193, 108, 0, + 223, 145, 3, 143, 0, 185, 0, 170, 0, 170, + 107, 149, 108, 0, 223, 3, 166, 0, 223, 3, + 156, 0, 223, 107, 147, 108, 3, 166, 0, 148, + 0, 147, 112, 148, 0, 223, 0, 223, 113, 226, + 0, 223, 113, 223, 0, 183, 113, 226, 0, 150, + 0, 149, 112, 150, 0, 166, 0, 179, 0, 226, + 0, 0, 152, 0, 153, 0, 152, 112, 153, 0, + 226, 166, 212, 0, 166, 212, 0, 34, 72, 166, + 0, 165, 0, 155, 0, 154, 112, 155, 0, 226, + 166, 0, 165, 0, 166, 0, 32, 107, 158, 108, + 160, 0, 0, 92, 0, 159, 0, 158, 112, 159, + 0, 16, 212, 0, 17, 166, 157, 212, 0, 17, + 174, 212, 0, 17, 175, 212, 0, 16, 174, 212, + 0, 16, 166, 212, 0, 16, 175, 212, 0, 0, + 161, 0, 0, 99, 86, 107, 162, 163, 108, 0, + 164, 0, 163, 164, 0, 4, 0, 18, 0, 173, + 0, 114, 163, 115, 0, 106, 0, 106, 116, 180, + 0, 106, 116, 217, 0, 218, 168, 190, 0, 0, + 167, 169, 0, 145, 0, 31, 107, 154, 108, 0, + 82, 107, 151, 108, 0, 83, 107, 151, 108, 0, + 82, 190, 72, 225, 218, 168, 0, 83, 190, 72, + 225, 218, 168, 0, 22, 0, 22, 39, 29, 226, + 0, 60, 72, 170, 0, 14, 0, 14, 117, 223, + 0, 224, 117, 223, 0, 14, 117, 226, 0, 224, + 0, 224, 117, 171, 0, 172, 0, 171, 117, 172, + 0, 173, 0, 16, 0, 17, 0, 16, 0, 174, + 117, 16, 0, 174, 117, 17, 0, 15, 0, 226, + 145, 3, 177, 0, 179, 0, 180, 0, 226, 113, + 177, 0, 0, 107, 178, 182, 0, 67, 0, 49, + 0, 90, 0, 6, 0, 8, 0, 181, 0, 217, + 0, 226, 0, 223, 117, 226, 0, 7, 0, 11, + 0, 12, 0, 5, 0, 182, 5, 0, 28, 0, + 67, 0, 80, 0, 184, 0, 71, 85, 0, 69, + 55, 0, 81, 0, 48, 0, 40, 75, 0, 30, + 85, 0, 95, 0, 51, 0, 186, 0, 62, 0, + 44, 0, 26, 85, 0, 183, 0, 184, 214, 0, + 27, 0, 52, 0, 53, 0, 54, 0, 63, 0, + 68, 0, 78, 0, 87, 0, 89, 0, 94, 0, + 96, 0, 97, 0, 98, 0, 70, 0, 103, 0, + 104, 0, 101, 0, 102, 0, 100, 0, 0, 191, + 0, 192, 0, 84, 109, 193, 110, 0, 109, 193, + 110, 0, 192, 109, 193, 110, 0, 194, 0, 194, + 112, 106, 0, 194, 112, 106, 112, 194, 0, 195, + 0, 21, 100, 195, 0, 194, 187, 195, 0, 194, + 188, 195, 0, 195, 189, 195, 0, 198, 109, 193, + 110, 0, 109, 193, 110, 0, 199, 0, 200, 0, + 199, 197, 199, 0, 65, 197, 199, 0, 199, 197, + 64, 0, 65, 197, 64, 0, 206, 0, 201, 0, + 0, 35, 29, 107, 196, 182, 0, 105, 0, 105, + 118, 0, 118, 105, 0, 118, 105, 118, 0, 84, + 0, 50, 0, 49, 0, 90, 0, 217, 0, 181, + 0, 226, 0, 223, 0, 99, 33, 192, 0, 99, + 34, 107, 202, 108, 0, 203, 0, 202, 112, 203, + 0, 106, 0, 226, 190, 204, 0, 0, 205, 0, + 77, 0, 19, 0, 73, 0, 207, 0, 208, 0, + 107, 223, 108, 0, 207, 107, 209, 108, 0, 210, + 0, 209, 112, 210, 0, 119, 211, 0, 119, 117, + 211, 0, 226, 0, 211, 117, 226, 0, 0, 213, + 0, 73, 0, 37, 177, 0, 107, 108, 0, 107, + 215, 108, 0, 216, 0, 215, 112, 216, 0, 226, + 0, 226, 109, 217, 110, 0, 226, 109, 180, 110, + 0, 217, 0, 106, 0, 10, 0, 13, 0, 0, + 219, 0, 220, 222, 0, 114, 221, 10, 115, 0, + 0, 93, 0, 23, 0, 79, 0, 0, 56, 0, + 45, 0, 14, 0, 15, 0, 15, 0, 0, 226, + 0, 9, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 322, 328, 334, 350, 375, 377, 380, 384, 389, 396, - 404, 409, 413, 422, 424, 432, 436, 444, 448, 451, - 454, 458, 478, 480, 488, 492, 524, 528, 537, 544, - 557, 564, 566, 578, 590, 601, 606, 612, 618, 620, - 623, 634, 640, 646, 653, 659, 667, 671, 674, 681, - 687, 693, 700, 706, 715, 717, 726, 740, 750, 766, - 776, 792, 800, 810, 820, 825, 832, 839, 849, 855, - 861, 865, 873, 900, 902, 904, 910, 916, 924, 930, - 937, 942, 948, 954, 960, 963, 969, 979, 981, 984, - 992, 999, 1012, 1023, 1033, 1044, 1054, 1065, 1076, 1078, - 1083, 1087, 1092, 1097, 1103, 1108, 1111, 1115, 1120, 1129, - 1138, 1149, 1171, 1178, 1197, 1201, 1207, 1213, 1219, 1229, - 1239, 1245, 1257, 1271, 1280, 1290, 1300, 1310, 1318, 1339, - 1348, 1357, 1359, 1366, 1373, 1379, 1383, 1389, 1409, 1419, - 1421, 1422, 1429, 1429, 1434, 1441, 1447, 1452, 1456, 1460, - 1463, 1468, 1480, 1497, 1502, 1507, 1540, 1550, 1564, 1566, - 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, - 1577, 1583, 1585, 1586, 1589, 1596, 1608, 1610, 1614, 1618, - 1619, 1620, 1621, 1622, 1626, 1627, 1628, 1629, 1633, 1634, - 1641, 1641, 1642, 1642, 1643, 1645, 1647, 1652, 1656, 1665, - 1669, 1674, 1678, 1684, 1694, 1698, 1701, 1704, 1707, 1712, - 1721, 1729, 1735, 1741, 1748, 1756, 1764, 1773, 1776, 1779, - 1780, 1790, 1792, 1793, 1794, 1797, 1801, 1806, 1812, 1817, - 1820, 1823, 1836, 1850, 1854, 1859, 1863, 1868, 1875, 1888, - 1890, 1893, 1897, 1900, 1905, 1909, 1917, 1932, 1938, 1945, - 1958, 1970, 1985, 1989, 2006, 2011, 2014, 2019, 2041, 2046, - 2051, 2057, 2063, 2071, 2079, 2087, 2094, 2104, 2109, 2139, - 2141, 2144, 2151, 2157, 2159, 2160, 2161, 2164, 2166, 2167, - 2170, 2175, 2182, 2189, 2191, 2196 + 323, 329, 335, 351, 376, 378, 381, 385, 390, 397, + 405, 410, 414, 423, 425, 433, 437, 445, 449, 452, + 455, 459, 479, 481, 489, 493, 525, 529, 538, 545, + 558, 565, 567, 579, 591, 602, 607, 613, 619, 621, + 624, 635, 641, 647, 654, 660, 668, 672, 675, 682, + 688, 694, 701, 707, 716, 718, 728, 742, 752, 768, + 778, 794, 802, 812, 822, 827, 834, 841, 851, 857, + 863, 867, 875, 902, 904, 906, 912, 918, 926, 932, + 939, 944, 950, 956, 962, 965, 971, 981, 983, 986, + 994, 1001, 1014, 1025, 1035, 1046, 1056, 1067, 1078, 1080, + 1085, 1089, 1094, 1099, 1105, 1110, 1113, 1117, 1122, 1131, + 1140, 1151, 1173, 1180, 1199, 1203, 1209, 1215, 1221, 1231, + 1241, 1247, 1259, 1273, 1282, 1292, 1302, 1312, 1320, 1341, + 1350, 1359, 1361, 1368, 1375, 1381, 1385, 1391, 1411, 1421, + 1423, 1424, 1431, 1431, 1436, 1443, 1449, 1454, 1458, 1462, + 1465, 1470, 1482, 1499, 1504, 1509, 1542, 1552, 1566, 1568, + 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, + 1579, 1585, 1587, 1588, 1591, 1598, 1610, 1612, 1616, 1620, + 1621, 1622, 1623, 1624, 1628, 1629, 1630, 1631, 1635, 1636, + 1643, 1643, 1644, 1644, 1645, 1647, 1649, 1654, 1658, 1667, + 1671, 1676, 1680, 1686, 1696, 1700, 1703, 1706, 1709, 1714, + 1723, 1731, 1737, 1743, 1750, 1758, 1766, 1775, 1778, 1781, + 1782, 1792, 1794, 1795, 1796, 1799, 1803, 1808, 1814, 1819, + 1822, 1825, 1838, 1852, 1856, 1861, 1865, 1870, 1877, 1890, + 1892, 1895, 1899, 1902, 1907, 1911, 1919, 1934, 1940, 1947, + 1960, 1972, 1987, 1991, 2008, 2013, 2016, 2021, 2043, 2048, + 2053, 2059, 2065, 2073, 2081, 2089, 2096, 2106, 2111, 2141, + 2143, 2146, 2153, 2159, 2161, 2162, 2163, 2166, 2168, 2169, + 2172, 2177, 2184, 2191, 2193, 2198 }; #endif @@ -450,18 +450,18 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ", "ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody", "ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition", "ImportsBundleSet","AssignedIdentifier","ImportsBundle","ImportsList","ImportsElement", -"ExportsDefinition","ExportsBody","ExportsElement","ValueSetDefinition","@2", +"ExportsDefinition","ExportsBody","ExportsElement","ValueSet","ValueSetTypeAssignment", "DefinedType","DataTypeReference","ParameterArgumentList","ParameterArgumentName", "Specializations","Specialization","optComponentTypeLists","ComponentTypeLists", "ComponentType","AlternativeTypeLists","AlternativeType","ObjectClass","optUnique", -"FieldSpec","ClassField","optWithSyntax","WithSyntax","@3","WithSyntaxList", +"FieldSpec","ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxList", "WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration", "TypeDeclarationSet","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement", "PrimitiveFieldReference","FieldName","DefinedObjectClass","ValueDefinition", -"Value","@4","SimpleValue","DefinedValue","RestrictedCharacterStringValue","Opaque", +"Value","@3","SimpleValue","DefinedValue","RestrictedCharacterStringValue","Opaque", "BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString", "Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints", -"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec", +"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec", "ConstraintSpec","SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList", "WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint", "SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement", @@ -477,7 +477,7 @@ static const short yyr1[] = { 0, 129, 129, 130, 130, 131, 131, 132, 132, 132, 132, 132, 133, 132, 132, 134, 134, 135, 135, 136, 136, 137, 138, 138, 139, 139, 139, 140, 140, 140, 141, - 141, 142, 142, 142, 144, 143, 145, 145, 145, 146, + 141, 142, 142, 142, 143, 144, 145, 145, 145, 146, 146, 146, 147, 147, 148, 148, 148, 148, 149, 149, 150, 150, 150, 151, 151, 152, 152, 153, 153, 153, 153, 154, 154, 155, 155, 155, 156, 157, 157, 158, @@ -509,7 +509,7 @@ static const short yyr2[] = { 0, 2, 2, 0, 1, 1, 2, 1, 1, 1, 1, 1, 0, 3, 1, 3, 2, 1, 2, 0, 1, 4, 1, 3, 1, 3, 1, 3, 3, 2, 1, - 3, 1, 3, 1, 0, 6, 1, 1, 4, 3, + 3, 1, 3, 1, 3, 4, 1, 1, 4, 3, 3, 6, 1, 3, 1, 3, 3, 3, 1, 3, 1, 1, 1, 0, 1, 1, 3, 3, 2, 3, 1, 1, 3, 2, 1, 1, 5, 0, 1, 1, @@ -552,184 +552,181 @@ static const short yydefact[] = { 0, 0, 63, 0, 162, 65, 0, 270, 0, 176, 0, 0, 51, 53, 39, 43, 45, 0, 276, 277, 275, 0, 0, 196, 280, 279, 272, 125, 127, 0, 0, - 0, 0, 55, 148, 154, 149, 268, 155, 156, 269, - 146, 147, 0, 69, 71, 72, 150, 151, 73, 267, - 259, 0, 261, 266, 263, 133, 134, 129, 130, 132, - 126, 145, 143, 139, 140, 141, 0, 152, 40, 41, - 270, 270, 0, 90, 0, 121, 0, 0, 196, 196, - 115, 114, 0, 0, 112, 197, 198, 270, 64, 68, - 67, 66, 0, 59, 270, 260, 0, 0, 0, 0, - 0, 0, 138, 135, 0, 257, 255, 255, 255, 92, - 256, 88, 255, 255, 99, 0, 273, 0, 270, 0, - 270, 0, 270, 0, 0, 0, 0, 228, 227, 0, - 226, 229, 0, 0, 0, 231, 0, 202, 205, 0, - 212, 213, 219, 218, 245, 246, 230, 233, 232, 0, - 62, 157, 56, 70, 262, 0, 0, 152, 131, 144, - 153, 142, 258, 97, 0, 96, 98, 89, 255, 94, - 95, 0, 87, 100, 91, 0, 109, 0, 82, 85, - 86, 270, 123, 0, 0, 75, 76, 81, 255, 270, - 284, 0, 284, 0, 0, 0, 222, 0, 0, 0, - 0, 0, 0, 200, 193, 194, 191, 192, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 158, 265, 264, - 136, 137, 93, 0, 122, 0, 116, 270, 84, 270, - 117, 270, 79, 255, 270, 285, 118, 270, 199, 206, - 220, 223, 224, 217, 215, 234, 0, 247, 211, 203, - 207, 208, 209, 0, 216, 214, 0, 0, 249, 201, - 101, 110, 111, 83, 80, 77, 78, 113, 113, 0, - 225, 238, 0, 236, 196, 0, 210, 0, 251, 253, - 248, 0, 0, 119, 120, 221, 235, 0, 240, 204, - 252, 0, 250, 105, 106, 0, 0, 103, 107, 237, - 243, 244, 242, 239, 241, 254, 0, 102, 104, 108, - 0, 0, 0 + 0, 0, 0, 56, 148, 154, 149, 268, 155, 156, + 269, 146, 147, 0, 69, 71, 72, 150, 151, 73, + 267, 259, 0, 261, 266, 263, 133, 134, 129, 130, + 132, 126, 145, 143, 139, 140, 141, 0, 152, 40, + 41, 270, 270, 0, 90, 0, 121, 0, 0, 196, + 196, 115, 114, 0, 0, 112, 197, 198, 270, 64, + 68, 67, 66, 0, 0, 228, 227, 0, 226, 229, + 0, 0, 0, 231, 0, 202, 205, 0, 212, 213, + 219, 218, 245, 246, 230, 233, 232, 59, 270, 260, + 0, 0, 0, 0, 0, 0, 138, 135, 0, 257, + 255, 255, 255, 92, 256, 88, 255, 255, 99, 0, + 273, 0, 270, 0, 270, 0, 270, 0, 0, 0, + 0, 62, 0, 0, 222, 0, 0, 0, 0, 0, + 0, 55, 193, 194, 191, 192, 0, 0, 0, 195, + 0, 0, 0, 0, 70, 262, 0, 0, 152, 131, + 157, 144, 153, 142, 258, 97, 0, 96, 98, 89, + 255, 94, 95, 0, 87, 100, 91, 0, 109, 0, + 82, 85, 86, 270, 123, 0, 0, 75, 76, 81, + 255, 270, 284, 0, 284, 0, 200, 0, 206, 220, + 223, 224, 217, 215, 234, 0, 247, 211, 203, 207, + 208, 209, 0, 216, 214, 0, 0, 249, 265, 264, + 158, 136, 137, 93, 0, 122, 0, 116, 270, 84, + 270, 117, 270, 79, 255, 270, 285, 118, 270, 199, + 201, 0, 225, 238, 0, 236, 196, 0, 210, 0, + 251, 253, 248, 0, 101, 110, 111, 83, 80, 77, + 78, 113, 113, 221, 235, 0, 240, 204, 252, 0, + 250, 0, 119, 120, 237, 243, 244, 242, 239, 241, + 254, 105, 106, 0, 0, 103, 107, 0, 102, 104, + 108, 0, 0, 0 }; -static const short yydefgoto[] = { 441, +static const short yydefgoto[] = { 442, 3, 4, 8, 9, 13, 14, 25, 26, 27, 55, - 56, 57, 108, 58, 74, 200, 75, 76, 77, 59, - 69, 70, 60, 223, 100, 61, 131, 132, 173, 174, - 315, 316, 317, 308, 309, 120, 299, 203, 204, 303, - 304, 413, 427, 428, 318, 319, 152, 153, 212, 101, - 188, 189, 429, 238, 239, 62, 194, 230, 195, 196, - 266, 283, 102, 103, 104, 105, 340, 341, 343, 215, - 216, 217, 267, 268, 269, 400, 329, 270, 271, 272, - 273, 403, 404, 434, 435, 274, 275, 276, 388, 389, - 409, 240, 241, 139, 182, 183, 277, 122, 123, 124, - 151, 156, 278, 106, 365, 279 + 56, 57, 108, 58, 74, 201, 75, 76, 77, 59, + 69, 70, 164, 60, 100, 61, 131, 132, 174, 175, + 337, 338, 339, 330, 331, 120, 321, 204, 205, 325, + 326, 422, 435, 436, 340, 341, 152, 153, 213, 101, + 189, 190, 437, 262, 263, 62, 195, 254, 196, 197, + 234, 312, 102, 103, 104, 105, 298, 299, 301, 216, + 217, 218, 235, 236, 237, 392, 287, 238, 239, 240, + 241, 395, 396, 429, 430, 242, 243, 244, 367, 368, + 401, 264, 265, 139, 183, 184, 245, 122, 123, 124, + 151, 156, 246, 106, 386, 247 }; -static const short yypact[] = { 58, --32768,-32768, 58,-32768, -52,-32768, 11, 63,-32768,-32768, --32768,-32768, 19,-32768, -13, 193,-32768,-32768, 105, 92, - 20, 71, 108, 107, 197, 193,-32768, 101,-32768,-32768, --32768,-32768,-32768, 212,-32768,-32768, 415,-32768, 230, 45, --32768,-32768,-32768, 182,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 210, 415,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 240, 568,-32768, 152,-32768, 139,-32768, - 162,-32768,-32768, 47,-32768, -34,-32768, 164,-32768,-32768, --32768, 37, 157,-32768, 204,-32768, 211, 226,-32768,-32768, --32768,-32768,-32768, 251, 227,-32768,-32768,-32768, 644, 314, - 217,-32768, 235,-32768,-32768, 202, 330,-32768,-32768,-32768, - 200, 232,-32768,-32768, 58, 200, 253, 241, 134,-32768, --32768,-32768,-32768, 36, 200,-32768,-32768,-32768,-32768,-32768, - 95,-32768, 256,-32768, 260, 272, 76, 61,-32768, 367, - 174,-32768,-32768, -52,-32768,-32768, 288,-32768,-32768,-32768, - 375, 492, 90,-32768,-32768,-32768,-32768,-32768, 384, 644, - 381, 200,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 122,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 140,-32768,-32768, 289,-32768,-32768, 282,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 283, 293,-32768,-32768, - 98, 32, 178,-32768, 292, 373, 306, 344, 188, 216, --32768,-32768, 305, 353,-32768,-32768, 316, 309,-32768,-32768, --32768,-32768, 421,-32768, 76,-32768, 67, 395, 315, 421, - 381, 174,-32768,-32768, 174,-32768, 21, 99, 21,-32768, --32768, 335, 99, 21, 329, 288,-32768, 404, 33, 268, - 56, 362, 56, 363, 353, 336, 409,-32768,-32768, 74, --32768,-32768, 319, 58, 353,-32768, 331, 274, 339, 337, - 74,-32768,-32768,-32768, 333,-32768,-32768,-32768,-32768, 353, --32768,-32768, 439,-32768,-32768, 338, 340,-32768,-32768, 439, --32768,-32768,-32768,-32768, 342,-32768,-32768,-32768, 21,-32768, --32768, 359,-32768,-32768,-32768, 381, 343, 214,-32768,-32768, --32768, 309,-32768, 377, 345, 346,-32768,-32768, 21, 309, - 381, 347, 381, 341, 382, 349, 352, 358, 249, 355, - 364, 357, 365,-32768,-32768,-32768,-32768,-32768, 348, 382, - 382,-32768, 382, 353, 266, 360, 366,-32768,-32768,-32768, --32768,-32768,-32768, 370,-32768, 395,-32768, 33,-32768, 309, --32768, 34,-32768, 21, 309,-32768,-32768, 309,-32768,-32768, --32768,-32768, 356,-32768,-32768, 316, 31,-32768,-32768, 368, --32768,-32768,-32768, 372,-32768,-32768, 5, 233,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 421, --32768,-32768, 242,-32768, 90, 353,-32768, 381, 369,-32768, --32768, 360, 18,-32768,-32768, 439,-32768, 31, 158, 318, - 369, 381,-32768,-32768,-32768, 18, 35,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 9,-32768,-32768,-32768, - 484, 487,-32768 +static const short yypact[] = { 275, +-32768,-32768, 275,-32768, -91,-32768, 17, 36,-32768,-32768, +-32768,-32768, 56,-32768, -47, 262,-32768,-32768, 54, 44, + 41, 62, 91, 68, 175, 262,-32768, 82,-32768,-32768, +-32768,-32768,-32768, 155,-32768,-32768, 453,-32768, 193, 75, +-32768,-32768,-32768, 197,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 198, 453,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 337, 614,-32768, 132,-32768, 119,-32768, + 144,-32768,-32768, 3,-32768, 57,-32768, 154,-32768,-32768, +-32768, -11, 184,-32768, 196,-32768, 223, 251,-32768,-32768, +-32768,-32768,-32768, 273, 252,-32768,-32768,-32768, 690, 336, + 243,-32768, 246,-32768,-32768, 241, 357,-32768,-32768,-32768, + 290, 253,-32768,-32768, 275, 290, 254, 259, 9,-32768, +-32768,-32768,-32768, 102, 290,-32768,-32768,-32768,-32768,-32768, + -2,-32768, 255,-32768, 258, 266, 70, 163,-32768, 308, + 207,-32768,-32768, -91,-32768,-32768, 303,-32768,-32768,-32768, + 364, 538, -38,-32768,-32768,-32768,-32768,-32768, 372, 690, + 370, 290, 189,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 69,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 85,-32768,-32768, 271,-32768,-32768, 265,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 269, 270,-32768, +-32768, 71, 76, 128,-32768, 272, 353, 287, 323, 98, + 125,-32768,-32768, 288, 189,-32768,-32768, 289, 282,-32768, +-32768,-32768,-32768, 311, 373,-32768,-32768, -50,-32768,-32768, + 301, 275, 189,-32768, 293, 191, 312, 294, -50,-32768, +-32768,-32768, 307,-32768,-32768,-32768,-32768,-32768, 70,-32768, + 178, 302, 329, 411, 370, 207,-32768,-32768, 207,-32768, + 26, 48, 26,-32768,-32768, 327, 48, 26, 321, 303, +-32768, 392, 39, 333, 60, 350, 60, 351, 189, 315, + 189,-32768, 436, 322, 309, 325, 216, 319, 330, 328, + 331,-32768,-32768,-32768,-32768,-32768, 332, 436, 436,-32768, + 436, 189, 320, 334,-32768,-32768, 342, 344,-32768,-32768, +-32768, 434,-32768,-32768,-32768,-32768, 338,-32768,-32768,-32768, + 26,-32768,-32768, 354,-32768,-32768,-32768, 370, 326, 138, +-32768,-32768,-32768, 282,-32768, 383, 348, 345,-32768,-32768, + 26, 282, 370, 352, 370, 349,-32768, 355,-32768,-32768, +-32768, 340,-32768,-32768, 289, 22,-32768,-32768, 358,-32768, +-32768,-32768, 356,-32768,-32768, -4, 164,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 362,-32768, 302,-32768, 39,-32768, + 282,-32768, 61,-32768, 26, 282,-32768,-32768, 282,-32768, +-32768, 411,-32768,-32768, 179,-32768, -38, 189,-32768, 370, + 346,-32768,-32768, 334,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 434,-32768, 22, 24, 240, 346, 370, +-32768, 35,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 35, 43,-32768,-32768, 18,-32768,-32768, +-32768, 461, 464,-32768 }; static const short yypgoto[] = {-32768, --32768, 485,-32768, 350,-32768, 477,-32768,-32768, 466,-32768, --32768, 440,-32768,-32768,-32768,-32768, 423,-32768, 379,-32768, --32768, 387,-32768,-32768, -19,-32768,-32768, 361,-32768, 275, - 246,-32768, 141,-32768, 143,-32768,-32768,-32768, 259,-32768, --32768,-32768, 82, -277, -237, -73,-32768, -27,-32768, 265, --32768, 281, -109, 322, 323,-32768, -30,-32768, -122, -218, - -31, -225, -67, -49,-32768, 7,-32768,-32768,-32768, -207, --32768, 186, -87, 111, 3,-32768, 255,-32768, -238,-32768, --32768,-32768, 109,-32768,-32768,-32768,-32768,-32768,-32768, 116, - 121, -220,-32768,-32768,-32768, 303, -130, -146,-32768,-32768, --32768,-32768, 1,-32768, 208, -7 +-32768, 469,-32768, 335,-32768, 460,-32768,-32768, 448,-32768, +-32768, 419,-32768,-32768,-32768,-32768, 402,-32768, 361,-32768, +-32768, 367,-32768,-32768, -54,-32768,-32768, 324,-32768, 232, + 205,-32768, 100,-32768, 108,-32768,-32768,-32768, 218,-32768, +-32768,-32768, 55, -176, -244, -79,-32768, -56,-32768, 217, +-32768, 237, -133, 291, 295,-32768, 19,-32768, -127, -250, + -97, 101, -49, -45,-32768, -14,-32768,-32768,-32768, -202, +-32768, 204, -44, 99, -16,-32768, 257,-32768, -231,-32768, +-32768,-32768, 84,-32768,-32768,-32768,-32768,-32768,-32768, 104, + 103, -248,-32768,-32768,-32768, 261, -113, -76,-32768,-32768, +-32768,-32768, 1,-32768, 157, -7 }; -#define YYLAST 742 +#define YYLAST 788 static const short yytable[] = { 15, - 5, 252, 254, 5, 290, 15, 178, 184, 121, 286, - 178, 310, 424, 10, 176, 115, 294, 296, 297, 10, - 11, 424, 300, 301, 186, 187, 425, 10, 11, 65, - 190, 133, 72, 186, 187, 425, 79, 64, 424, 10, - 71, 10, 10, 63, 78, 107, 233, 234, 65, 134, - 186, 187, 425, 10, 7, 10, 64, 235, 1, 2, - 1, 2, 63, 175, 10, 67, 79, 314, 118, 10, - 167, 1, 2, 170, 78, 10, 167, 116, 353, 170, - 154, 164, 165, 166, 10, 167, 168, 169, 170, 314, - 375, 155, 133, 236, 178, 19, 184, 287, 363, 135, - 16, 178, 176, 72, 178, 177, 386, 30, 79, 177, - 134, 71, 233, 234, 28, 144, 78, 158, 12, 190, - 310, 408, 426, 440, 171, 157, 17, 237, 242, 179, - 185, 426, 211, 198, 235, 235, 402, 392, 307, 307, - 191, 197, 438, 397, 281, 119, 119, 119, 426, 439, - 119, 175, 29, 220, 222, 68, 148, 113, 31, 439, - 135, 307, 221, -74, 32, 172, 180, 324, 181, 119, - 236, 236, 180, 213, 416, 311, 431, 333, 327, 164, - 165, 166, 10, 167, 168, 169, 170, 1, 2, 119, - 10, 328, 347, 177, 33, 1, 2, 419, 214, 34, - 177, 292, 159, 177, 293, -255, 160, 20, 10, -255, - 36, 119, 149, 1, 2, 295, 21, 179, 398, 185, - 288, 399, 171, 291, 198, 393, 150, 198, 197, 224, - 432, 73, 197, 225, 433, 197, 37, 22, 359, 23, - 192, 312, 82, 320, 66, 320, 364, 226, 24, 110, - 111, 227, 80, 83, 84, 165, 384, 10, 167, 168, - 169, 170, 109, 172, 332, 85, 38, 86, 112, 87, - 117, 213, 165, 125, 10, 167, 168, 169, 170, 88, - 193, 83, 84, 89, 311, 245, 395, 90, 126, 246, - 91, 41, 42, 43, 251, 127, 214, 258, 355, 213, - 128, 92, 45, 201, 202, 129, 93, 46, 94, 47, - 95, 130, 374, 366, 258, 366, 136, 48, 140, 96, - 97, 357, 253, 137, 214, 358, 49, 370, 50, 385, - 186, 187, 141, 51, 98, 52, 53, 54, 262, 143, - 411, 138, 381, 382, 412, 383, 99, 147, 288, 417, - 312, 330, 331, 418, 320, 262, 197, 351, 352, 165, - 146, 10, 167, 168, 169, 170, 1, 2, 161, 405, - 414, 415, 162, 256, 335, 336, 337, 338, 163, 410, - 1, 2, 186, 187, 205, 339, 218, 257, 165, 10, - 10, 167, 168, 169, 170, 1, 2, 228, 229, 231, - 410, 258, 259, 10, 167, 232, 247, 170, 1, 2, - 405, 248, 249, 255, 436, 250, 257, 260, 335, 336, - 337, 338, 119, 10, 280, 282, 298, 302, 1, 2, - 258, 259, 306, 321, 323, 325, 261, 326, 342, 346, - 334, 38, 262, 348, 354, 344, 260, 349, 360, 350, - 369, 263, 361, 380, 367, 371, 39, 362, 356, 264, - 40, 265, 373, 214, 378, 261, 41, 42, 43, 372, - 377, 262, 44, 401, 379, 390, 391, 45, 387, 406, - 263, 407, 46, 442, 47, 422, 443, 6, 264, 18, - 265, 35, 48, 199, 145, 81, 114, 142, 322, 284, - 394, 49, 396, 50, 305, 83, 84, 437, 51, 289, - 52, 53, 54, 206, 313, 376, 420, 85, 38, 86, - 219, 87, 207, 243, 244, 345, 430, 423, 421, 285, - 368, 88, 0, 0, 0, 89, 0, 0, 0, 90, - 0, 0, 91, 41, 42, 43, 0, 0, 0, 0, - 0, 208, 0, 92, 45, 0, 0, 0, 93, 46, - 94, 47, 95, 0, 0, 0, 0, 0, 0, 48, - 0, 96, 97, 209, 210, 0, 0, 0, 49, 0, - 50, 83, 84, 0, 0, 51, 98, 52, 53, 54, - 0, 0, 0, 85, 38, 86, 0, 87, 0, 0, + 5, 307, 121, 5, 10, 15, 191, 276, 278, 177, + 107, 10, 316, 318, 319, 7, 1, 2, 322, 323, + 118, 432, 63, 179, 185, 10, 11, 179, 332, 65, + 10, 148, 72, 187, 188, 433, 79, 64, 432, 178, + 71, 63, 426, 178, 78, 214, 432, 10, 65, 133, + 187, 188, 433, 134, 285, 354, 64, 176, 187, 188, + 433, 19, 259, 28, 10, 11, 79, 286, 10, 10, + 215, 365, 374, 16, 78, 165, 166, 167, 10, 168, + 169, 170, 171, 10, 259, 257, 258, 149, 1, 2, + 257, 258, 384, 336, 336, 67, 427, 212, 260, 135, + 428, 150, 119, 72, 29, 159, 115, 259, 79, 160, + 133, 71, 400, 113, 134, 144, 78, 158, 172, 191, + 260, 177, 261, 266, 12, 157, 406, 394, 30, 180, + 186, 434, 441, 199, 332, 179, 411, 185, 308, 282, + 192, 198, 179, 260, 329, 179, 154, 32, 434, 31, + 439, 178, 119, 221, 223, 33, 434, 155, 178, 173, + 135, 178, 222, 17, 317, 329, 329, -74, 116, 176, + 280, 10, 168, 119, 119, 171, 248, 34, -255, 37, + 249, 214, -255, 119, 119, 68, 10, 168, 291, 119, + 171, 36, 250, 333, 417, 166, 251, 10, 168, 169, + 170, 171, 1, 2, 275, 10, 215, 66, 214, 224, + 1, 2, 165, 166, 167, 10, 168, 169, 170, 171, + 1, 2, 166, 225, 10, 168, 169, 170, 171, 110, + 111, 277, 290, 215, 346, 269, 348, 226, 227, 270, + 80, 180, 109, 186, 309, 378, 73, 313, 199, 379, + 112, 199, 198, 228, 380, 172, 198, 363, 440, 198, + 117, 440, 385, 407, 226, 334, 349, 342, 181, 342, + 182, 403, 229, 193, 314, 404, 20, 315, 230, 353, + 126, 360, 361, 181, 362, 21, 415, 231, 1, 2, + 416, 293, 294, 295, 296, 232, 173, 233, 10, 333, + 125, 409, 297, 1, 2, 230, 22, 127, 23, 412, + 10, 168, 413, 194, 171, 1, 2, 24, 202, 203, + 376, 1, 2, 187, 188, 128, 166, 129, 10, 168, + 169, 170, 171, 288, 289, 387, 130, 387, 136, 82, + 293, 294, 295, 296, 187, 188, 83, 84, 397, 137, + 83, 84, 138, 372, 373, 423, 424, 140, 402, 141, + 143, 146, 85, 38, 86, 147, 87, 161, 226, 309, + 162, 334, 163, 206, 219, 342, 88, 198, 10, 252, + 89, 253, 256, 364, 90, 255, 271, 91, 41, 42, + 43, 272, 402, 273, 274, 119, 279, 281, 92, 45, + 292, 284, 302, 93, 46, 94, 47, 95, 397, 230, + 283, 300, 431, 304, 48, 311, 96, 97, 320, 324, + 328, 343, 345, 49, 347, 50, 351, 215, 350, 352, + 51, 98, 52, 53, 54, 357, 356, 359, 371, 375, + 358, 377, 166, 99, 10, 168, 169, 170, 171, 1, + 2, 369, 366, 370, 381, 382, 383, 393, 390, 388, + 443, 10, 420, 444, 391, 399, 1, 2, 405, 398, + 225, 6, 18, 35, 81, 114, 145, 142, 200, 38, + 305, 344, 410, 220, 226, 227, 408, 327, 438, 310, + 335, 355, 414, 267, 39, 303, 418, 268, 40, 425, + 228, 389, 419, 0, 41, 42, 43, 421, 0, 0, + 44, 306, 0, 0, 0, 45, 0, 0, 0, 229, + 46, 0, 47, 0, 0, 230, 0, 0, 0, 0, + 48, 0, 0, 0, 231, 0, 0, 0, 0, 49, + 0, 50, 232, 0, 233, 0, 51, 0, 52, 53, + 54, 83, 84, 0, 0, 0, 0, 0, 0, 207, + 0, 0, 0, 85, 38, 86, 0, 87, 208, 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, 0, 0, 92, + 42, 43, 0, 0, 0, 0, 0, 209, 0, 92, 45, 0, 0, 0, 93, 46, 94, 47, 95, 0, - 0, 0, 0, 0, 0, 48, 0, 96, 97, 0, - 0, 0, 0, 0, 49, 0, 50, 1, 2, 0, + 0, 0, 0, 0, 0, 48, 0, 96, 97, 210, + 211, 0, 0, 0, 49, 0, 50, 83, 84, 0, 0, 51, 98, 52, 53, 54, 0, 0, 0, 85, 38, 86, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, @@ -737,77 +734,81 @@ static const short yytable[] = { 15, 0, 0, 0, 0, 0, 92, 45, 0, 0, 0, 93, 46, 94, 47, 95, 0, 0, 0, 0, 0, 0, 48, 0, 96, 97, 0, 0, 0, 0, 0, - 49, 0, 50, 0, 0, 0, 0, 51, 98, 52, - 53, 54 + 49, 0, 50, 1, 2, 0, 0, 51, 98, 52, + 53, 54, 0, 0, 0, 85, 38, 86, 0, 87, + 0, 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, 0, + 0, 92, 45, 0, 0, 0, 93, 46, 94, 47, + 95, 0, 0, 0, 0, 0, 0, 48, 0, 96, + 97, 0, 0, 0, 0, 0, 49, 0, 50, 0, + 0, 0, 0, 51, 98, 52, 53, 54 }; static const short yycheck[] = { 7, - 0, 209, 210, 3, 230, 13, 137, 138, 82, 228, - 141, 249, 4, 9, 137, 50, 237, 238, 239, 9, - 10, 4, 243, 244, 16, 17, 18, 9, 10, 37, - 140, 99, 40, 16, 17, 18, 44, 37, 4, 9, - 40, 9, 9, 37, 44, 65, 15, 16, 56, 99, - 16, 17, 18, 9, 107, 9, 56, 37, 14, 15, - 14, 15, 56, 137, 9, 21, 74, 34, 32, 9, - 10, 14, 15, 13, 74, 9, 10, 112, 299, 13, - 45, 6, 7, 8, 9, 10, 11, 12, 13, 34, - 329, 56, 160, 73, 225, 109, 227, 228, 319, 99, - 38, 232, 225, 111, 235, 137, 345, 88, 116, 141, - 160, 111, 15, 16, 10, 115, 116, 125, 108, 229, - 358, 117, 114, 115, 49, 125, 108, 201, 202, 137, - 138, 114, 152, 141, 37, 37, 106, 356, 106, 106, - 140, 141, 108, 364, 218, 114, 114, 114, 114, 427, - 114, 225, 61, 161, 162, 111, 23, 111, 88, 437, - 160, 106, 162, 108, 57, 90, 106, 255, 108, 114, - 73, 73, 106, 84, 400, 249, 19, 265, 105, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 114, - 9, 118, 280, 225, 88, 14, 15, 405, 109, 3, - 232, 232, 108, 235, 235, 108, 112, 15, 9, 112, - 110, 114, 79, 14, 15, 117, 24, 225, 365, 227, - 228, 368, 49, 231, 232, 356, 93, 235, 228, 108, - 73, 50, 232, 112, 77, 235, 25, 45, 312, 47, - 67, 249, 3, 251, 15, 253, 320, 108, 56, 111, - 112, 112, 43, 14, 15, 7, 344, 9, 10, 11, - 12, 13, 111, 90, 264, 26, 27, 28, 107, 30, - 107, 84, 7, 117, 9, 10, 11, 12, 13, 40, - 107, 14, 15, 44, 358, 108, 360, 48, 85, 112, - 51, 52, 53, 54, 107, 85, 109, 49, 306, 84, - 75, 62, 63, 16, 17, 55, 67, 68, 69, 70, - 71, 85, 64, 321, 49, 323, 3, 78, 117, 80, - 81, 108, 107, 107, 109, 112, 87, 325, 89, 64, - 16, 17, 3, 94, 95, 96, 97, 98, 90, 108, - 108, 107, 340, 341, 112, 343, 107, 107, 356, 108, - 358, 33, 34, 112, 362, 90, 356, 16, 17, 7, - 108, 9, 10, 11, 12, 13, 14, 15, 113, 377, - 398, 399, 113, 21, 101, 102, 103, 104, 107, 387, - 14, 15, 16, 17, 10, 112, 3, 35, 7, 9, - 9, 10, 11, 12, 13, 14, 15, 109, 117, 117, - 408, 49, 50, 9, 10, 113, 115, 13, 14, 15, - 418, 39, 107, 109, 422, 72, 35, 65, 101, 102, - 103, 104, 114, 9, 109, 5, 92, 99, 14, 15, - 49, 50, 29, 72, 72, 100, 84, 29, 100, 107, - 110, 27, 90, 5, 86, 109, 65, 110, 72, 110, - 110, 99, 108, 106, 108, 107, 42, 112, 116, 107, - 46, 109, 105, 109, 108, 84, 52, 53, 54, 118, - 107, 90, 58, 118, 110, 110, 107, 63, 119, 112, - 99, 110, 68, 0, 70, 117, 0, 3, 107, 13, - 109, 26, 78, 144, 116, 56, 74, 111, 253, 225, - 358, 87, 362, 89, 246, 14, 15, 426, 94, 229, - 96, 97, 98, 22, 250, 330, 406, 26, 27, 28, - 160, 30, 31, 202, 202, 271, 418, 412, 408, 227, - 323, 40, -1, -1, -1, 44, -1, -1, -1, 48, - -1, -1, 51, 52, 53, 54, -1, -1, -1, -1, - -1, 60, -1, 62, 63, -1, -1, -1, 67, 68, - 69, 70, 71, -1, -1, -1, -1, -1, -1, 78, - -1, 80, 81, 82, 83, -1, -1, -1, 87, -1, - 89, 14, 15, -1, -1, 94, 95, 96, 97, 98, - -1, -1, -1, 26, 27, 28, -1, 30, -1, -1, + 0, 252, 82, 3, 9, 13, 140, 210, 211, 137, + 65, 9, 261, 262, 263, 107, 14, 15, 267, 268, + 32, 4, 37, 137, 138, 9, 10, 141, 273, 37, + 9, 23, 40, 16, 17, 18, 44, 37, 4, 137, + 40, 56, 19, 141, 44, 84, 4, 9, 56, 99, + 16, 17, 18, 99, 105, 287, 56, 137, 16, 17, + 18, 109, 37, 10, 9, 10, 74, 118, 9, 9, + 109, 303, 321, 38, 74, 6, 7, 8, 9, 10, + 11, 12, 13, 9, 37, 15, 16, 79, 14, 15, + 15, 16, 341, 34, 34, 21, 73, 152, 73, 99, + 77, 93, 114, 111, 61, 108, 50, 37, 116, 112, + 160, 111, 117, 111, 160, 115, 116, 125, 49, 253, + 73, 249, 202, 203, 108, 125, 377, 106, 88, 137, + 138, 114, 115, 141, 379, 249, 385, 251, 252, 219, + 140, 141, 256, 73, 106, 259, 45, 57, 114, 88, + 108, 249, 114, 161, 162, 88, 114, 56, 256, 90, + 160, 259, 162, 108, 117, 106, 106, 108, 112, 249, + 215, 9, 10, 114, 114, 13, 108, 3, 108, 25, + 112, 84, 112, 114, 114, 111, 9, 10, 233, 114, + 13, 110, 108, 273, 397, 7, 112, 9, 10, 11, + 12, 13, 14, 15, 107, 9, 109, 15, 84, 21, + 14, 15, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 7, 35, 9, 10, 11, 12, 13, 111, + 112, 107, 232, 109, 279, 108, 281, 49, 50, 112, + 43, 249, 111, 251, 252, 108, 50, 255, 256, 112, + 107, 259, 252, 65, 334, 49, 256, 302, 435, 259, + 107, 438, 342, 377, 49, 273, 283, 275, 106, 277, + 108, 108, 84, 67, 256, 112, 15, 259, 90, 64, + 85, 298, 299, 106, 301, 24, 108, 99, 14, 15, + 112, 101, 102, 103, 104, 107, 90, 109, 9, 379, + 117, 381, 112, 14, 15, 90, 45, 85, 47, 386, + 9, 10, 389, 107, 13, 14, 15, 56, 16, 17, + 328, 14, 15, 16, 17, 75, 7, 55, 9, 10, + 11, 12, 13, 33, 34, 343, 85, 345, 3, 3, + 101, 102, 103, 104, 16, 17, 14, 15, 356, 107, + 14, 15, 107, 16, 17, 412, 413, 117, 366, 3, + 108, 108, 26, 27, 28, 107, 30, 113, 49, 377, + 113, 379, 107, 10, 3, 383, 40, 377, 9, 109, + 44, 117, 113, 64, 48, 117, 115, 51, 52, 53, + 54, 39, 400, 107, 72, 114, 109, 109, 62, 63, + 108, 29, 109, 67, 68, 69, 70, 71, 416, 90, + 100, 100, 420, 107, 78, 5, 80, 81, 92, 99, + 29, 72, 72, 87, 110, 89, 118, 109, 107, 105, + 94, 95, 96, 97, 98, 108, 107, 106, 5, 86, + 110, 116, 7, 107, 9, 10, 11, 12, 13, 14, + 15, 110, 119, 110, 72, 108, 112, 118, 110, 108, + 0, 9, 117, 0, 110, 110, 14, 15, 107, 112, + 35, 3, 13, 26, 56, 74, 116, 111, 144, 27, + 249, 277, 383, 160, 49, 50, 379, 270, 434, 253, + 274, 288, 392, 203, 42, 239, 398, 203, 46, 416, + 65, 345, 400, -1, 52, 53, 54, 404, -1, -1, + 58, 251, -1, -1, -1, 63, -1, -1, -1, 84, + 68, -1, 70, -1, -1, 90, -1, -1, -1, -1, + 78, -1, -1, -1, 99, -1, -1, -1, -1, 87, + -1, 89, 107, -1, 109, -1, 94, -1, 96, 97, + 98, 14, 15, -1, -1, -1, -1, -1, -1, 22, + -1, -1, -1, 26, 27, 28, -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, 51, 52, - 53, 54, -1, -1, -1, -1, -1, -1, -1, 62, + 53, 54, -1, -1, -1, -1, -1, 60, -1, 62, 63, -1, -1, -1, 67, 68, 69, 70, 71, -1, - -1, -1, -1, -1, -1, 78, -1, 80, 81, -1, - -1, -1, -1, -1, 87, -1, 89, 14, 15, -1, + -1, -1, -1, -1, -1, 78, -1, 80, 81, 82, + 83, -1, -1, -1, 87, -1, 89, 14, 15, -1, -1, 94, 95, 96, 97, 98, -1, -1, -1, 26, 27, 28, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, 44, -1, -1, @@ -815,8 +816,15 @@ static const short yycheck[] = { 7, -1, -1, -1, -1, -1, 62, 63, -1, -1, -1, 67, 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, 78, -1, 80, 81, -1, -1, -1, -1, -1, - 87, -1, 89, -1, -1, -1, -1, 94, 95, 96, - 97, 98 + 87, -1, 89, 14, 15, -1, -1, 94, 95, 96, + 97, 98, -1, -1, -1, 26, 27, 28, -1, 30, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, + -1, -1, -1, 44, -1, -1, -1, 48, -1, -1, + 51, 52, 53, 54, -1, -1, -1, -1, -1, -1, + -1, 62, 63, -1, -1, -1, 67, 68, 69, 70, + 71, -1, -1, -1, -1, -1, -1, 78, -1, 80, + 81, -1, -1, -1, -1, -1, 87, -1, 89, -1, + -1, -1, -1, 94, 95, 96, 97, 98 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison.simple" @@ -1362,13 +1370,13 @@ yyreduce: switch (yyn) { case 1: -#line 323 "asn1p_y.y" +#line 324 "asn1p_y.y" { *(void **)param = yyvsp[0].a_grammar; ; break;} case 2: -#line 329 "asn1p_y.y" +#line 330 "asn1p_y.y" { yyval.a_grammar = asn1p_new(); checkmem(yyval.a_grammar); @@ -1376,14 +1384,14 @@ case 2: ; break;} case 3: -#line 334 "asn1p_y.y" +#line 335 "asn1p_y.y" { yyval.a_grammar = yyvsp[-1].a_grammar; TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next); ; break;} case 4: -#line 355 "asn1p_y.y" +#line 356 "asn1p_y.y" { if(yyvsp[-1].a_module) { @@ -1400,27 +1408,27 @@ case 4: ; break;} case 5: -#line 376 "asn1p_y.y" +#line 377 "asn1p_y.y" { yyval.a_oid = 0; ; break;} case 6: -#line 377 "asn1p_y.y" +#line 378 "asn1p_y.y" { yyval.a_oid = yyvsp[0].a_oid; ; break;} case 7: -#line 381 "asn1p_y.y" +#line 382 "asn1p_y.y" { yyval.a_oid = yyvsp[-1].a_oid; ; break;} case 8: -#line 384 "asn1p_y.y" +#line 385 "asn1p_y.y" { yyval.a_oid = 0; ; break;} case 9: -#line 390 "asn1p_y.y" +#line 391 "asn1p_y.y" { yyval.a_oid = asn1p_oid_new(); asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc); @@ -1429,7 +1437,7 @@ case 9: ; break;} case 10: -#line 396 "asn1p_y.y" +#line 397 "asn1p_y.y" { yyval.a_oid = yyvsp[-1].a_oid; asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc); @@ -1438,74 +1446,74 @@ case 10: ; break;} case 11: -#line 405 "asn1p_y.y" +#line 406 "asn1p_y.y" { /* iso */ yyval.a_oid_arc.name = yyvsp[0].tv_str; yyval.a_oid_arc.number = -1; ; break;} case 12: -#line 409 "asn1p_y.y" +#line 410 "asn1p_y.y" { /* iso(1) */ yyval.a_oid_arc.name = yyvsp[-3].tv_str; yyval.a_oid_arc.number = yyvsp[-1].a_int; ; break;} case 13: -#line 413 "asn1p_y.y" +#line 414 "asn1p_y.y" { /* 1 */ yyval.a_oid_arc.name = 0; yyval.a_oid_arc.number = yyvsp[0].a_int; ; break;} case 14: -#line 423 "asn1p_y.y" +#line 424 "asn1p_y.y" { yyval.a_module_flags = MSF_NOFLAGS; ; break;} case 15: -#line 424 "asn1p_y.y" +#line 425 "asn1p_y.y" { yyval.a_module_flags = yyvsp[0].a_module_flags; ; break;} case 16: -#line 433 "asn1p_y.y" +#line 434 "asn1p_y.y" { yyval.a_module_flags = yyvsp[0].a_module_flags; ; break;} case 17: -#line 436 "asn1p_y.y" +#line 437 "asn1p_y.y" { yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags; ; break;} case 18: -#line 445 "asn1p_y.y" +#line 446 "asn1p_y.y" { yyval.a_module_flags = MSF_EXPLICIT_TAGS; ; break;} case 19: -#line 448 "asn1p_y.y" +#line 449 "asn1p_y.y" { yyval.a_module_flags = MSF_IMPLICIT_TAGS; ; break;} case 20: -#line 451 "asn1p_y.y" +#line 452 "asn1p_y.y" { yyval.a_module_flags = MSF_AUTOMATIC_TAGS; ; break;} case 21: -#line 454 "asn1p_y.y" +#line 455 "asn1p_y.y" { yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED; ; break;} case 22: -#line 458 "asn1p_y.y" +#line 459 "asn1p_y.y" { /* X.680Amd1 specifies TAG and XER */ if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) { @@ -1523,23 +1531,23 @@ case 22: ; break;} case 23: -#line 479 "asn1p_y.y" +#line 480 "asn1p_y.y" { yyval.a_module = 0; ; break;} case 24: -#line 480 "asn1p_y.y" +#line 481 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; ; break;} case 25: -#line 489 "asn1p_y.y" +#line 490 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; ; break;} case 26: -#line 492 "asn1p_y.y" +#line 493 "asn1p_y.y" { yyval.a_module = yyvsp[-1].a_module; @@ -1569,13 +1577,13 @@ case 26: ; break;} case 27: -#line 525 "asn1p_y.y" +#line 526 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; ; break;} case 28: -#line 528 "asn1p_y.y" +#line 529 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1587,7 +1595,7 @@ case 28: ; break;} case 29: -#line 537 "asn1p_y.y" +#line 538 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1597,7 +1605,7 @@ case 29: ; break;} case 30: -#line 544 "asn1p_y.y" +#line 545 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1607,7 +1615,7 @@ case 30: ; break;} case 31: -#line 557 "asn1p_y.y" +#line 558 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1617,11 +1625,11 @@ case 31: ; break;} case 32: -#line 565 "asn1p_y.y" +#line 566 "asn1p_y.y" { asn1p_lexer_hack_push_encoding_control(); ; break;} case 33: -#line 566 "asn1p_y.y" +#line 567 "asn1p_y.y" { fprintf(stderr, "WARNING: ENCODING-CONTROL %s " @@ -1632,7 +1640,7 @@ case 33: ; break;} case 34: -#line 578 "asn1p_y.y" +#line 579 "asn1p_y.y" { return yyerror( "Attempt to redefine a standard basic string type, " @@ -1640,7 +1648,7 @@ case 34: ; break;} case 35: -#line 591 "asn1p_y.y" +#line 592 "asn1p_y.y" { if(!saved_aid && 0) return yyerror("Unterminated IMPORTS FROM, " @@ -1650,13 +1658,13 @@ case 35: ; break;} case 36: -#line 601 "asn1p_y.y" +#line 602 "asn1p_y.y" { return yyerror("Empty IMPORTS list"); ; break;} case 37: -#line 607 "asn1p_y.y" +#line 608 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -1664,22 +1672,22 @@ case 37: ; break;} case 38: -#line 612 "asn1p_y.y" +#line 613 "asn1p_y.y" { yyval.a_module = yyvsp[-1].a_module; TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next); ; break;} case 39: -#line 619 "asn1p_y.y" +#line 620 "asn1p_y.y" { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ; break;} case 40: -#line 620 "asn1p_y.y" +#line 621 "asn1p_y.y" { yyval.a_aid.oid = yyvsp[0].a_oid; ; break;} case 41: -#line 624 "asn1p_y.y" +#line 625 "asn1p_y.y" { yyval.a_xports = yyvsp[-3].a_xports; yyval.a_xports->fromModuleName = yyvsp[-1].tv_str; @@ -1690,7 +1698,7 @@ case 41: ; break;} case 42: -#line 635 "asn1p_y.y" +#line 636 "asn1p_y.y" { yyval.a_xports = asn1p_xports_new(); checkmem(yyval.a_xports); @@ -1698,14 +1706,14 @@ case 42: ; break;} case 43: -#line 640 "asn1p_y.y" +#line 641 "asn1p_y.y" { yyval.a_xports = yyvsp[-2].a_xports; TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next); ; break;} case 44: -#line 647 "asn1p_y.y" +#line 648 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1714,7 +1722,7 @@ case 44: ; break;} case 45: -#line 653 "asn1p_y.y" +#line 654 "asn1p_y.y" { /* Completely equivalent to above */ yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1723,7 +1731,7 @@ case 45: ; break;} case 46: -#line 659 "asn1p_y.y" +#line 660 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1732,19 +1740,19 @@ case 46: ; break;} case 47: -#line 668 "asn1p_y.y" +#line 669 "asn1p_y.y" { yyval.a_xports = yyvsp[-1].a_xports; ; break;} case 48: -#line 671 "asn1p_y.y" +#line 672 "asn1p_y.y" { yyval.a_xports = 0; ; break;} case 49: -#line 674 "asn1p_y.y" +#line 675 "asn1p_y.y" { /* Empty EXPORTS clause effectively prohibits export. */ yyval.a_xports = asn1p_xports_new(); @@ -1752,7 +1760,7 @@ case 49: ; break;} case 50: -#line 682 "asn1p_y.y" +#line 683 "asn1p_y.y" { yyval.a_xports = asn1p_xports_new(); assert(yyval.a_xports); @@ -1760,14 +1768,14 @@ case 50: ; break;} case 51: -#line 687 "asn1p_y.y" +#line 688 "asn1p_y.y" { yyval.a_xports = yyvsp[-2].a_xports; TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next); ; break;} case 52: -#line 694 "asn1p_y.y" +#line 695 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1776,7 +1784,7 @@ case 52: ; break;} case 53: -#line 700 "asn1p_y.y" +#line 701 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1785,7 +1793,7 @@ case 53: ; break;} case 54: -#line 706 "asn1p_y.y" +#line 707 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1794,27 +1802,27 @@ case 54: ; break;} case 55: -#line 717 "asn1p_y.y" -{ asn1p_lexer_hack_push_opaque_state(); ; +#line 716 "asn1p_y.y" +{ yyval.a_constr = yyvsp[-1].a_constr; ; break;} case 56: -#line 717 "asn1p_y.y" +#line 719 "asn1p_y.y" { - yyval.a_expr = yyvsp[-4].a_expr; + yyval.a_expr = yyvsp[-2].a_expr; assert(yyval.a_expr->Identifier == 0); - yyval.a_expr->Identifier = yyvsp[-5].tv_str; + yyval.a_expr->Identifier = yyvsp[-3].tv_str; yyval.a_expr->meta_type = AMT_VALUESET; - /* take care of ValueSet body */ + yyval.a_expr->constraints = yyvsp[0].a_constr; ; break;} case 57: -#line 727 "asn1p_y.y" +#line 729 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 58: -#line 740 "asn1p_y.y" +#line 742 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1824,7 +1832,7 @@ case 58: ; break;} case 59: -#line 750 "asn1p_y.y" +#line 752 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1835,7 +1843,7 @@ case 59: ; break;} case 60: -#line 770 "asn1p_y.y" +#line 772 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -1844,7 +1852,7 @@ case 60: ; break;} case 61: -#line 776 "asn1p_y.y" +#line 778 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -1853,7 +1861,7 @@ case 61: ; break;} case 62: -#line 792 "asn1p_y.y" +#line 794 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -1862,7 +1870,7 @@ case 62: ; break;} case 63: -#line 801 "asn1p_y.y" +#line 803 "asn1p_y.y" { int ret; yyval.a_plist = asn1p_paramlist_new(yylineno); @@ -1874,7 +1882,7 @@ case 63: ; break;} case 64: -#line 810 "asn1p_y.y" +#line 812 "asn1p_y.y" { int ret; yyval.a_plist = yyvsp[-2].a_plist; @@ -1885,14 +1893,14 @@ case 64: ; break;} case 65: -#line 821 "asn1p_y.y" +#line 823 "asn1p_y.y" { yyval.a_parg.governor = NULL; yyval.a_parg.argument = yyvsp[0].tv_str; ; break;} case 66: -#line 825 "asn1p_y.y" +#line 827 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1902,7 +1910,7 @@ case 66: ; break;} case 67: -#line 832 "asn1p_y.y" +#line 834 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1912,7 +1920,7 @@ case 67: ; break;} case 68: -#line 839 "asn1p_y.y" +#line 841 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -1923,7 +1931,7 @@ case 68: ; break;} case 69: -#line 850 "asn1p_y.y" +#line 852 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1931,20 +1939,20 @@ case 69: ; break;} case 70: -#line 855 "asn1p_y.y" +#line 857 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 71: -#line 862 "asn1p_y.y" +#line 864 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 72: -#line 865 "asn1p_y.y" +#line 867 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1955,7 +1963,7 @@ case 72: ; break;} case 73: -#line 873 "asn1p_y.y" +#line 875 "asn1p_y.y" { asn1p_ref_t *ref; yyval.a_expr = asn1p_expr_new(yylineno); @@ -1969,15 +1977,15 @@ case 73: ; break;} case 74: -#line 901 "asn1p_y.y" +#line 903 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); ; break;} case 75: -#line 902 "asn1p_y.y" +#line 904 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 76: -#line 905 "asn1p_y.y" +#line 907 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -1985,14 +1993,14 @@ case 76: ; break;} case 77: -#line 910 "asn1p_y.y" +#line 912 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 78: -#line 917 "asn1p_y.y" +#line 919 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -2002,7 +2010,7 @@ case 78: ; break;} case 79: -#line 924 "asn1p_y.y" +#line 926 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags; @@ -2011,7 +2019,7 @@ case 79: ; break;} case 80: -#line 930 "asn1p_y.y" +#line 932 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2021,13 +2029,13 @@ case 80: ; break;} case 81: -#line 937 "asn1p_y.y" +#line 939 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 82: -#line 943 "asn1p_y.y" +#line 945 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2035,14 +2043,14 @@ case 82: ; break;} case 83: -#line 948 "asn1p_y.y" +#line 950 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 84: -#line 955 "asn1p_y.y" +#line 957 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -2050,20 +2058,20 @@ case 84: ; break;} case 85: -#line 960 "asn1p_y.y" +#line 962 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 86: -#line 963 "asn1p_y.y" +#line 965 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; _fixup_anonymous_identifier(yyval.a_expr); ; break;} case 87: -#line 970 "asn1p_y.y" +#line 972 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; checkmem(yyval.a_expr); @@ -2073,15 +2081,15 @@ case 87: ; break;} case 88: -#line 980 "asn1p_y.y" +#line 982 "asn1p_y.y" { yyval.a_int = 0; ; break;} case 89: -#line 981 "asn1p_y.y" +#line 983 "asn1p_y.y" { yyval.a_int = 1; ; break;} case 90: -#line 985 "asn1p_y.y" +#line 987 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2091,14 +2099,14 @@ case 90: ; break;} case 91: -#line 992 "asn1p_y.y" +#line 994 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 92: -#line 1002 "asn1p_y.y" +#line 1004 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2109,7 +2117,7 @@ case 92: ; break;} case 93: -#line 1012 "asn1p_y.y" +#line 1014 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-3].tv_str; @@ -2121,7 +2129,7 @@ case 93: ; break;} case 94: -#line 1023 "asn1p_y.y" +#line 1025 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2132,7 +2140,7 @@ case 94: ; break;} case 95: -#line 1033 "asn1p_y.y" +#line 1035 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2144,7 +2152,7 @@ case 95: ; break;} case 96: -#line 1044 "asn1p_y.y" +#line 1046 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2155,7 +2163,7 @@ case 96: ; break;} case 97: -#line 1054 "asn1p_y.y" +#line 1056 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2167,7 +2175,7 @@ case 97: ; break;} case 98: -#line 1065 "asn1p_y.y" +#line 1067 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2179,67 +2187,67 @@ case 98: ; break;} case 99: -#line 1077 "asn1p_y.y" +#line 1079 "asn1p_y.y" { yyval.a_wsynt = 0; ; break;} case 100: -#line 1078 "asn1p_y.y" +#line 1080 "asn1p_y.y" { yyval.a_wsynt = yyvsp[0].a_wsynt; ; break;} case 101: -#line 1085 "asn1p_y.y" +#line 1087 "asn1p_y.y" { asn1p_lexer_hack_enable_with_syntax(); ; break;} case 102: -#line 1087 "asn1p_y.y" +#line 1089 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; ; break;} case 103: -#line 1093 "asn1p_y.y" +#line 1095 "asn1p_y.y" { yyval.a_wsynt = asn1p_wsyntx_new(); TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); ; break;} case 104: -#line 1097 "asn1p_y.y" +#line 1099 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); ; break;} case 105: -#line 1104 "asn1p_y.y" +#line 1106 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); yyval.a_wchunk->type = WC_WHITESPACE; ; break;} case 106: -#line 1108 "asn1p_y.y" +#line 1110 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0); ; break;} case 107: -#line 1111 "asn1p_y.y" +#line 1113 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].a_refcomp.name, strlen(yyvsp[0].a_refcomp.name), 0); yyval.a_wchunk->type = WC_FIELD; ; break;} case 108: -#line 1115 "asn1p_y.y" +#line 1117 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt); ; break;} case 109: -#line 1121 "asn1p_y.y" +#line 1123 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2250,7 +2258,7 @@ case 109: ; break;} case 110: -#line 1129 "asn1p_y.y" +#line 1131 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2262,7 +2270,7 @@ case 110: ; break;} case 111: -#line 1138 "asn1p_y.y" +#line 1140 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2274,7 +2282,7 @@ case 111: ; break;} case 112: -#line 1150 "asn1p_y.y" +#line 1152 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyval.a_expr->tag = yyvsp[-2].a_tag; @@ -2296,14 +2304,14 @@ case 112: ; break;} case 113: -#line 1172 "asn1p_y.y" +#line 1174 "asn1p_y.y" { yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0; asn1p_as_pointer = 0; ; break;} case 114: -#line 1179 "asn1p_y.y" +#line 1181 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->marker.flags |= yyvsp[-1].a_int; @@ -2322,13 +2330,13 @@ case 114: ; break;} case 115: -#line 1198 "asn1p_y.y" +#line 1200 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; ; break;} case 116: -#line 1201 "asn1p_y.y" +#line 1203 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2337,7 +2345,7 @@ case 116: ; break;} case 117: -#line 1207 "asn1p_y.y" +#line 1209 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2346,7 +2354,7 @@ case 117: ; break;} case 118: -#line 1213 "asn1p_y.y" +#line 1215 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2355,7 +2363,7 @@ case 118: ; break;} case 119: -#line 1219 "asn1p_y.y" +#line 1221 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2368,7 +2376,7 @@ case 119: ; break;} case 120: -#line 1229 "asn1p_y.y" +#line 1231 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2381,7 +2389,7 @@ case 120: ; break;} case 121: -#line 1239 "asn1p_y.y" +#line 1241 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2390,7 +2398,7 @@ case 121: ; break;} case 122: -#line 1245 "asn1p_y.y" +#line 1247 "asn1p_y.y" { int ret; yyval.a_expr = asn1p_expr_new(yylineno); @@ -2404,7 +2412,7 @@ case 122: ; break;} case 123: -#line 1257 "asn1p_y.y" +#line 1259 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2414,7 +2422,7 @@ case 123: ; break;} case 124: -#line 1272 "asn1p_y.y" +#line 1274 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2425,7 +2433,7 @@ case 124: ; break;} case 125: -#line 1280 "asn1p_y.y" +#line 1282 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2438,7 +2446,7 @@ case 125: ; break;} case 126: -#line 1290 "asn1p_y.y" +#line 1292 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2451,7 +2459,7 @@ case 126: ; break;} case 127: -#line 1300 "asn1p_y.y" +#line 1302 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2464,7 +2472,7 @@ case 127: ; break;} case 128: -#line 1310 "asn1p_y.y" +#line 1312 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2475,7 +2483,7 @@ case 128: ; break;} case 129: -#line 1318 "asn1p_y.y" +#line 1320 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[0].a_ref; @@ -2497,7 +2505,7 @@ case 129: ; break;} case 130: -#line 1340 "asn1p_y.y" +#line 1342 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -2508,7 +2516,7 @@ case 130: ; break;} case 131: -#line 1348 "asn1p_y.y" +#line 1350 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[-2].a_ref; @@ -2518,49 +2526,49 @@ case 131: ; break;} case 133: -#line 1361 "asn1p_y.y" +#line 1363 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_AmpUppercase; yyval.a_refcomp.name = yyvsp[0].tv_str; ; break;} case 134: -#line 1366 "asn1p_y.y" +#line 1368 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_Amplowercase; yyval.a_refcomp.name = yyvsp[0].tv_str; ; break;} case 135: -#line 1375 "asn1p_y.y" +#line 1377 "asn1p_y.y" { yyval.a_ref = asn1p_ref_new(yylineno); asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase); ; break;} case 136: -#line 1379 "asn1p_y.y" +#line 1381 "asn1p_y.y" { yyval.a_ref = yyval.a_ref; asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase); ; break;} case 137: -#line 1383 "asn1p_y.y" +#line 1385 "asn1p_y.y" { yyval.a_ref = yyval.a_ref; asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase); ; break;} case 138: -#line 1390 "asn1p_y.y" +#line 1392 "asn1p_y.y" { yyval.a_ref = asn1p_ref_new(yylineno); asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS); ; break;} case 139: -#line 1410 "asn1p_y.y" +#line 1412 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; assert(yyval.a_expr->Identifier == NULL); @@ -2570,7 +2578,7 @@ case 139: ; break;} case 142: -#line 1422 "asn1p_y.y" +#line 1424 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -2580,11 +2588,11 @@ case 142: ; break;} case 143: -#line 1429 "asn1p_y.y" +#line 1431 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); ; break;} case 144: -#line 1429 "asn1p_y.y" +#line 1431 "asn1p_y.y" { yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); @@ -2592,7 +2600,7 @@ case 144: ; break;} case 145: -#line 1434 "asn1p_y.y" +#line 1436 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -2600,7 +2608,7 @@ case 145: ; break;} case 146: -#line 1442 "asn1p_y.y" +#line 1444 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -2608,7 +2616,7 @@ case 146: ; break;} case 147: -#line 1447 "asn1p_y.y" +#line 1449 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -2616,33 +2624,33 @@ case 147: ; break;} case 148: -#line 1452 "asn1p_y.y" +#line 1454 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B'); checkmem(yyval.a_value); ; break;} case 149: -#line 1456 "asn1p_y.y" +#line 1458 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H'); checkmem(yyval.a_value); ; break;} case 150: -#line 1460 "asn1p_y.y" +#line 1462 "asn1p_y.y" { yyval.a_value = yyval.a_value; ; break;} case 151: -#line 1463 "asn1p_y.y" +#line 1465 "asn1p_y.y" { yyval.a_value = yyvsp[0].a_value; ; break;} case 152: -#line 1469 "asn1p_y.y" +#line 1471 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2656,7 +2664,7 @@ case 152: ; break;} case 153: -#line 1480 "asn1p_y.y" +#line 1482 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -2673,14 +2681,14 @@ case 153: ; break;} case 154: -#line 1498 "asn1p_y.y" +#line 1500 "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 155: -#line 1502 "asn1p_y.y" +#line 1504 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); @@ -2688,7 +2696,7 @@ case 155: ; break;} case 156: -#line 1507 "asn1p_y.y" +#line 1509 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); @@ -2696,7 +2704,7 @@ case 156: ; break;} case 157: -#line 1541 "asn1p_y.y" +#line 1543 "asn1p_y.y" { yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1; yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1); @@ -2708,7 +2716,7 @@ case 157: ; break;} case 158: -#line 1550 "asn1p_y.y" +#line 1552 "asn1p_y.y" { int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len; char *p = malloc(newsize + 1); @@ -2723,71 +2731,71 @@ case 158: ; break;} case 159: -#line 1565 "asn1p_y.y" +#line 1567 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BOOLEAN; ; break;} case 160: -#line 1566 "asn1p_y.y" +#line 1568 "asn1p_y.y" { yyval.a_type = ASN_BASIC_NULL; ; break;} case 161: -#line 1567 "asn1p_y.y" +#line 1569 "asn1p_y.y" { yyval.a_type = ASN_BASIC_REAL; ; break;} case 162: -#line 1568 "asn1p_y.y" +#line 1570 "asn1p_y.y" { yyval.a_type = yyvsp[0].a_type; ; break;} case 163: -#line 1569 "asn1p_y.y" +#line 1571 "asn1p_y.y" { yyval.a_type = ASN_BASIC_OCTET_STRING; ; break;} case 164: -#line 1570 "asn1p_y.y" +#line 1572 "asn1p_y.y" { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ; break;} case 165: -#line 1571 "asn1p_y.y" +#line 1573 "asn1p_y.y" { yyval.a_type = ASN_BASIC_RELATIVE_OID; ; break;} case 166: -#line 1572 "asn1p_y.y" +#line 1574 "asn1p_y.y" { yyval.a_type = ASN_BASIC_EXTERNAL; ; break;} case 167: -#line 1573 "asn1p_y.y" +#line 1575 "asn1p_y.y" { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ; break;} case 168: -#line 1574 "asn1p_y.y" +#line 1576 "asn1p_y.y" { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ; break;} case 169: -#line 1575 "asn1p_y.y" +#line 1577 "asn1p_y.y" { yyval.a_type = ASN_BASIC_UTCTime; ; break;} case 170: -#line 1576 "asn1p_y.y" +#line 1578 "asn1p_y.y" { yyval.a_type = ASN_BASIC_GeneralizedTime; ; break;} case 171: -#line 1577 "asn1p_y.y" +#line 1579 "asn1p_y.y" { yyval.a_type = yyvsp[0].a_type; ; break;} case 172: -#line 1584 "asn1p_y.y" +#line 1586 "asn1p_y.y" { yyval.a_type = ASN_BASIC_INTEGER; ; break;} case 173: -#line 1585 "asn1p_y.y" +#line 1587 "asn1p_y.y" { yyval.a_type = ASN_BASIC_ENUMERATED; ; break;} case 174: -#line 1586 "asn1p_y.y" +#line 1588 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BIT_STRING; ; break;} case 175: -#line 1590 "asn1p_y.y" +#line 1592 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2796,7 +2804,7 @@ case 175: ; break;} case 176: -#line 1596 "asn1p_y.y" +#line 1598 "asn1p_y.y" { if(yyvsp[0].a_expr) { yyval.a_expr = yyvsp[0].a_expr; @@ -2809,91 +2817,91 @@ case 176: ; break;} case 177: -#line 1609 "asn1p_y.y" +#line 1611 "asn1p_y.y" { yyval.a_type = ASN_STRING_BMPString; ; break;} case 178: -#line 1610 "asn1p_y.y" +#line 1612 "asn1p_y.y" { yyval.a_type = ASN_STRING_GeneralString; fprintf(stderr, "WARNING: GeneralString is not fully supported\n"); ; break;} case 179: -#line 1614 "asn1p_y.y" +#line 1616 "asn1p_y.y" { yyval.a_type = ASN_STRING_GraphicString; fprintf(stderr, "WARNING: GraphicString is not fully supported\n"); ; break;} case 180: -#line 1618 "asn1p_y.y" +#line 1620 "asn1p_y.y" { yyval.a_type = ASN_STRING_IA5String; ; break;} case 181: -#line 1619 "asn1p_y.y" +#line 1621 "asn1p_y.y" { yyval.a_type = ASN_STRING_ISO646String; ; break;} case 182: -#line 1620 "asn1p_y.y" +#line 1622 "asn1p_y.y" { yyval.a_type = ASN_STRING_NumericString; ; break;} case 183: -#line 1621 "asn1p_y.y" +#line 1623 "asn1p_y.y" { yyval.a_type = ASN_STRING_PrintableString; ; break;} case 184: -#line 1622 "asn1p_y.y" +#line 1624 "asn1p_y.y" { yyval.a_type = ASN_STRING_T61String; fprintf(stderr, "WARNING: T61String is not fully supported\n"); ; break;} case 185: -#line 1626 "asn1p_y.y" +#line 1628 "asn1p_y.y" { yyval.a_type = ASN_STRING_TeletexString; ; break;} case 186: -#line 1627 "asn1p_y.y" +#line 1629 "asn1p_y.y" { yyval.a_type = ASN_STRING_UniversalString; ; break;} case 187: -#line 1628 "asn1p_y.y" +#line 1630 "asn1p_y.y" { yyval.a_type = ASN_STRING_UTF8String; ; break;} case 188: -#line 1629 "asn1p_y.y" +#line 1631 "asn1p_y.y" { yyval.a_type = ASN_STRING_VideotexString; fprintf(stderr, "WARNING: VideotexString is not fully supported\n"); ; break;} case 189: -#line 1633 "asn1p_y.y" +#line 1635 "asn1p_y.y" { yyval.a_type = ASN_STRING_VisibleString; ; break;} case 190: -#line 1634 "asn1p_y.y" +#line 1636 "asn1p_y.y" { yyval.a_type = ASN_STRING_ObjectDescriptor; ; break;} case 196: -#line 1646 "asn1p_y.y" +#line 1648 "asn1p_y.y" { yyval.a_constr = 0; ; break;} case 197: -#line 1647 "asn1p_y.y" +#line 1649 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 198: -#line 1653 "asn1p_y.y" +#line 1655 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0); ; break;} case 199: -#line 1656 "asn1p_y.y" +#line 1658 "asn1p_y.y" { /* * This is a special case, for compatibility purposes. @@ -2903,25 +2911,25 @@ case 199: ; break;} case 200: -#line 1666 "asn1p_y.y" +#line 1668 "asn1p_y.y" { yyval.a_constr = yyvsp[-1].a_constr; ; break;} case 201: -#line 1669 "asn1p_y.y" +#line 1671 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} case 202: -#line 1675 "asn1p_y.y" +#line 1677 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 203: -#line 1678 "asn1p_y.y" +#line 1680 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -2930,7 +2938,7 @@ case 203: ; break;} case 204: -#line 1684 "asn1p_y.y" +#line 1686 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -2941,37 +2949,37 @@ case 204: ; break;} case 205: -#line 1695 "asn1p_y.y" +#line 1697 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 206: -#line 1698 "asn1p_y.y" +#line 1700 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0); ; break;} case 207: -#line 1701 "asn1p_y.y" +#line 1703 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} case 208: -#line 1704 "asn1p_y.y" +#line 1706 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} case 209: -#line 1707 "asn1p_y.y" +#line 1709 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} case 210: -#line 1713 "asn1p_y.y" +#line 1715 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -2982,7 +2990,7 @@ case 210: ; break;} case 211: -#line 1721 "asn1p_y.y" +#line 1723 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -2993,7 +3001,7 @@ case 211: ; break;} case 212: -#line 1729 "asn1p_y.y" +#line 1731 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3002,7 +3010,7 @@ case 212: ; break;} case 213: -#line 1735 "asn1p_y.y" +#line 1737 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3011,7 +3019,7 @@ case 213: ; break;} case 214: -#line 1741 "asn1p_y.y" +#line 1743 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3021,7 +3029,7 @@ case 214: ; break;} case 215: -#line 1748 "asn1p_y.y" +#line 1750 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3032,7 +3040,7 @@ case 215: ; break;} case 216: -#line 1756 "asn1p_y.y" +#line 1758 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3043,7 +3051,7 @@ case 216: ; break;} case 217: -#line 1764 "asn1p_y.y" +#line 1766 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3055,23 +3063,23 @@ case 217: ; break;} case 218: -#line 1773 "asn1p_y.y" +#line 1775 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 219: -#line 1776 "asn1p_y.y" +#line 1778 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 220: -#line 1780 "asn1p_y.y" +#line 1782 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); ; break;} case 221: -#line 1780 "asn1p_y.y" +#line 1782 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3082,35 +3090,35 @@ case 221: ; break;} case 222: -#line 1791 "asn1p_y.y" +#line 1793 "asn1p_y.y" { yyval.a_ctype = ACT_EL_RANGE; ; break;} case 223: -#line 1792 "asn1p_y.y" +#line 1794 "asn1p_y.y" { yyval.a_ctype = ACT_EL_RLRANGE; ; break;} case 224: -#line 1793 "asn1p_y.y" +#line 1795 "asn1p_y.y" { yyval.a_ctype = ACT_EL_LLRANGE; ; break;} case 225: -#line 1794 "asn1p_y.y" +#line 1796 "asn1p_y.y" { yyval.a_ctype = ACT_EL_ULRANGE; ; break;} case 226: -#line 1798 "asn1p_y.y" +#line 1800 "asn1p_y.y" { yyval.a_ctype = ACT_CT_SIZE; ; break;} case 227: -#line 1801 "asn1p_y.y" +#line 1803 "asn1p_y.y" { yyval.a_ctype = ACT_CT_FROM; ; break;} case 228: -#line 1807 "asn1p_y.y" +#line 1809 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -3118,7 +3126,7 @@ case 228: ; break;} case 229: -#line 1812 "asn1p_y.y" +#line 1814 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(1); checkmem(yyval.a_value); @@ -3126,19 +3134,19 @@ case 229: ; break;} case 230: -#line 1817 "asn1p_y.y" +#line 1819 "asn1p_y.y" { yyval.a_value = yyvsp[0].a_value; ; break;} case 231: -#line 1820 "asn1p_y.y" +#line 1822 "asn1p_y.y" { yyval.a_value = yyvsp[0].a_value; ; break;} case 232: -#line 1823 "asn1p_y.y" +#line 1825 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3152,7 +3160,7 @@ case 232: ; break;} case 233: -#line 1837 "asn1p_y.y" +#line 1839 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3166,31 +3174,31 @@ case 233: ; break;} case 234: -#line 1851 "asn1p_y.y" +#line 1853 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0); ; break;} case 235: -#line 1854 "asn1p_y.y" +#line 1856 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); ; break;} case 236: -#line 1860 "asn1p_y.y" +#line 1862 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 237: -#line 1863 "asn1p_y.y" +#line 1865 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); ; break;} case 238: -#line 1869 "asn1p_y.y" +#line 1871 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3199,7 +3207,7 @@ case 238: ; break;} case 239: -#line 1875 "asn1p_y.y" +#line 1877 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3210,45 +3218,45 @@ case 239: ; break;} case 240: -#line 1889 "asn1p_y.y" +#line 1891 "asn1p_y.y" { yyval.a_pres = ACPRES_DEFAULT; ; break;} case 241: -#line 1890 "asn1p_y.y" +#line 1892 "asn1p_y.y" { yyval.a_pres = yyvsp[0].a_pres; ; break;} case 242: -#line 1894 "asn1p_y.y" +#line 1896 "asn1p_y.y" { yyval.a_pres = ACPRES_PRESENT; ; break;} case 243: -#line 1897 "asn1p_y.y" +#line 1899 "asn1p_y.y" { yyval.a_pres = ACPRES_ABSENT; ; break;} case 244: -#line 1900 "asn1p_y.y" +#line 1902 "asn1p_y.y" { yyval.a_pres = ACPRES_OPTIONAL; ; break;} case 245: -#line 1906 "asn1p_y.y" +#line 1908 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 246: -#line 1909 "asn1p_y.y" +#line 1911 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 247: -#line 1918 "asn1p_y.y" +#line 1920 "asn1p_y.y" { asn1p_ref_t *ref = asn1p_ref_new(yylineno); asn1p_constraint_t *ct; @@ -3263,13 +3271,13 @@ case 247: ; break;} case 248: -#line 1933 "asn1p_y.y" +#line 1935 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} case 249: -#line 1939 "asn1p_y.y" +#line 1941 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3278,7 +3286,7 @@ case 249: ; break;} case 250: -#line 1945 "asn1p_y.y" +#line 1947 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3289,7 +3297,7 @@ case 250: ; break;} case 251: -#line 1959 "asn1p_y.y" +#line 1961 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 2); int ret; @@ -3303,7 +3311,7 @@ case 251: ; break;} case 252: -#line 1970 "asn1p_y.y" +#line 1972 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 3); int ret; @@ -3318,13 +3326,13 @@ case 252: ; break;} case 253: -#line 1986 "asn1p_y.y" +#line 1988 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} case 254: -#line 1989 "asn1p_y.y" +#line 1991 "asn1p_y.y" { int l1 = strlen(yyvsp[-2].tv_str); int l3 = strlen(yyvsp[0].tv_str); @@ -3336,45 +3344,45 @@ case 254: ; break;} case 255: -#line 2007 "asn1p_y.y" +#line 2009 "asn1p_y.y" { yyval.a_marker.flags = EM_NOMARK; yyval.a_marker.default_value = 0; ; break;} case 256: -#line 2011 "asn1p_y.y" +#line 2013 "asn1p_y.y" { yyval.a_marker = yyvsp[0].a_marker; ; break;} case 257: -#line 2015 "asn1p_y.y" +#line 2017 "asn1p_y.y" { yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT; yyval.a_marker.default_value = 0; ; break;} case 258: -#line 2019 "asn1p_y.y" +#line 2021 "asn1p_y.y" { yyval.a_marker.flags = EM_DEFAULT; yyval.a_marker.default_value = yyvsp[0].a_value; ; break;} case 259: -#line 2042 "asn1p_y.y" +#line 2044 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); ; break;} case 260: -#line 2046 "asn1p_y.y" +#line 2048 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; ; break;} case 261: -#line 2052 "asn1p_y.y" +#line 2054 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3382,14 +3390,14 @@ case 261: ; break;} case 262: -#line 2057 "asn1p_y.y" +#line 2059 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 263: -#line 2064 "asn1p_y.y" +#line 2066 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3399,7 +3407,7 @@ case 263: ; break;} case 264: -#line 2071 "asn1p_y.y" +#line 2073 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3410,7 +3418,7 @@ case 264: ; break;} case 265: -#line 2079 "asn1p_y.y" +#line 2081 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3421,7 +3429,7 @@ case 265: ; break;} case 266: -#line 2087 "asn1p_y.y" +#line 2089 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3431,7 +3439,7 @@ case 266: ; break;} case 267: -#line 2094 "asn1p_y.y" +#line 2096 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3442,102 +3450,102 @@ case 267: ; break;} case 268: -#line 2105 "asn1p_y.y" +#line 2107 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); ; break;} case 269: -#line 2109 "asn1p_y.y" +#line 2111 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); ; break;} case 270: -#line 2140 "asn1p_y.y" +#line 2142 "asn1p_y.y" { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ; break;} case 271: -#line 2141 "asn1p_y.y" +#line 2143 "asn1p_y.y" { yyval.a_tag = yyvsp[0].a_tag; ; break;} case 272: -#line 2145 "asn1p_y.y" +#line 2147 "asn1p_y.y" { yyval.a_tag = yyvsp[-1].a_tag; yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode; ; break;} case 273: -#line 2152 "asn1p_y.y" +#line 2154 "asn1p_y.y" { yyval.a_tag = yyvsp[-2].a_tag; yyval.a_tag.tag_value = yyvsp[-1].a_int; ; break;} case 274: -#line 2158 "asn1p_y.y" +#line 2160 "asn1p_y.y" { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ; break;} case 275: -#line 2159 "asn1p_y.y" +#line 2161 "asn1p_y.y" { yyval.a_tag.tag_class = TC_UNIVERSAL; ; break;} case 276: -#line 2160 "asn1p_y.y" +#line 2162 "asn1p_y.y" { yyval.a_tag.tag_class = TC_APPLICATION; ; break;} case 277: -#line 2161 "asn1p_y.y" +#line 2163 "asn1p_y.y" { yyval.a_tag.tag_class = TC_PRIVATE; ; break;} case 278: -#line 2165 "asn1p_y.y" +#line 2167 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_DEFAULT; ; break;} case 279: -#line 2166 "asn1p_y.y" +#line 2168 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_IMPLICIT; ; break;} case 280: -#line 2167 "asn1p_y.y" +#line 2169 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_EXPLICIT; ; break;} case 281: -#line 2171 "asn1p_y.y" +#line 2173 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 282: -#line 2175 "asn1p_y.y" +#line 2177 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 283: -#line 2183 "asn1p_y.y" +#line 2185 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 284: -#line 2190 "asn1p_y.y" +#line 2192 "asn1p_y.y" { yyval.tv_str = 0; ; break;} case 285: -#line 2191 "asn1p_y.y" +#line 2193 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} case 286: -#line 2197 "asn1p_y.y" +#line 2199 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; @@ -3765,7 +3773,7 @@ yyerrhandle: } return 1; } -#line 2203 "asn1p_y.y" +#line 2205 "asn1p_y.y" diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y index e009d067..597f77c5 100644 --- a/libasn1parser/asn1p_y.y +++ b/libasn1parser/asn1p_y.y @@ -251,7 +251,8 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); %type Type %type DataTypeReference /* Type1 ::= Type2 */ %type DefinedType -%type ValueSetDefinition /* Val INTEGER ::= {1|2} */ +%type ValueSet /* {a|b|c}*/ +%type ValueSetTypeAssignment /* Val INTEGER ::= {1|2} */ %type ValueDefinition /* val INTEGER ::= 1*/ %type Value %type SimpleValue @@ -554,7 +555,7 @@ ModuleSpecificationElement: * EvenNumbers INTEGER ::= { 2 | 4 | 6 | 8 } * === EOF === */ - | ValueSetDefinition { + | ValueSetTypeAssignment { $$ = asn1p_module_new(); checkmem($$); assert($1->expr_type != A1TC_INVALID); @@ -712,14 +713,15 @@ ExportsElement: ; -ValueSetDefinition: - TypeRefName DefinedType TOK_PPEQ - '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ { +ValueSet: '{' ElementSetSpecs '}' { $$ = $2; } + +ValueSetTypeAssignment: + TypeRefName DefinedType TOK_PPEQ ValueSet { $$ = $2; assert($$->Identifier == 0); $$->Identifier = $1; $$->meta_type = AMT_VALUESET; - /* take care of ValueSet body */ + $$->constraints = $4; } ; diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c index 13784860..4cab16ba 100644 --- a/libasn1print/asn1print.c +++ b/libasn1print/asn1print.c @@ -607,7 +607,6 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri */ if(TQ_FIRST(&(tc->members)) || (tc->expr_type & ASN_CONSTR_MASK) - || tc->meta_type == AMT_VALUESET || tc->meta_type == AMT_OBJECT || tc->meta_type == AMT_OBJECTCLASS || tc->meta_type == AMT_OBJECTFIELD @@ -675,7 +674,11 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri if(!SEQ_OF && tc->constraints) { printf(" "); + if(tc->meta_type == AMT_VALUESET) + printf("{"); asn1print_constraint(tc->constraints, flags); + if(tc->meta_type == AMT_VALUESET) + printf("}"); } if(tc->unique) {