Commit ff7dd147 authored by Lev Walkin's avatar Lev Walkin

ContainedSubtype support

parent 7ec9b4c7
......@@ -4,6 +4,7 @@
* Added extra const qualifiers into the support code.
* More RFC variations supported in crfc2asn1.pl.
* Refined string values compatibility. (Test cases 77, 78).
* Support for ContainedSubtype constraints. (Test case 16).
0.9.12: 2005-Mar-10
......
......@@ -16,6 +16,3 @@ which is already completed. Also see #3.2.
3. MINOR:
3.1 Parsing of CONSTRAINED BY clauses
3.2 Support for ContainedSubtype constraint.
......@@ -22,6 +22,8 @@ void
asn1p_constraint_free(asn1p_constraint_t *ct) {
if(ct) {
if(ct->containedSubtype)
asn1p_value_free(ct->containedSubtype);
if(ct->value)
asn1p_value_free(ct->value);
if(ct->range_start)
......@@ -59,9 +61,10 @@ asn1p_constraint_clone(asn1p_constraint_t *src) {
clone->type = src->type;
clone->presence = src->presence;
CLONE(value, asn1p_value_clone);
CLONE(range_start, asn1p_value_clone);
CLONE(range_stop, asn1p_value_clone);
CLONE(containedSubtype, asn1p_value_clone);
CLONE(value, asn1p_value_clone);
CLONE(range_start, asn1p_value_clone);
CLONE(range_stop, asn1p_value_clone);
for(i = 0; i < src->el_count; i++) {
asn1p_constraint_t *t;
......@@ -115,6 +118,8 @@ asn1p_constraint_type2str(enum asn1p_constraint_type_e type) {
switch(type) {
case ACT_INVALID:
return "INVALID";
case ACT_EL_TYPE:
return "ContainedSubtype";
case ACT_EL_VALUE:
return "SingleValue";
case ACT_EL_RANGE:
......
......@@ -11,7 +11,8 @@ typedef struct asn1p_constraint_s {
/*
* Constraint elements.
*/
ACT_EL_VALUE, /* 123, "A", T (elementary value) */
ACT_EL_TYPE, /* T (contained subtype) */
ACT_EL_VALUE, /* 123, "A", (elementary value) */
ACT_EL_RANGE, /* 1..2 (elementary range) */
ACT_EL_LLRANGE, /* 1<..2 (elementary range) */
ACT_EL_RLRANGE, /* 1..<2 (elementary range) */
......@@ -43,8 +44,9 @@ typedef struct asn1p_constraint_s {
} presence;
/*
* A single values.
* Separate types and values.
*/
asn1p_value_t *containedSubtype;
asn1p_value_t *value;
asn1p_value_t *range_start;
asn1p_value_t *range_stop;
......
......@@ -204,11 +204,11 @@ typedef union {
#define YYFINAL 417
#define YYFINAL 418
#define YYFLAG -32768
#define YYNTBASE 116
#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 217)
#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 218)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
......@@ -270,65 +270,65 @@ static const short yyprhs[] = { 0,
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
539, 545, 547, 551, 555, 559, 564, 568, 570, 572,
576, 580, 584, 588, 590, 592, 594, 597, 600, 604,
606, 608, 610, 612, 614, 616, 618, 620, 626, 628,
632, 634, 638, 639, 641, 643, 645, 647, 649, 651,
655, 660, 662, 666, 669, 673, 675, 679, 680, 682,
684, 687, 690, 694, 696, 700, 702, 707, 712, 714,
716, 718, 720, 721, 723, 726, 731, 732, 734, 736,
738, 739, 741, 743, 745, 747, 749, 750, 752
};
static const short yyrhs[] = { 117,
0, 118, 0, 117, 118, 0, 213, 119, 34, 123,
0, 118, 0, 117, 118, 0, 214, 119, 34, 123,
3, 21, 126, 39, 0, 0, 120, 0, 103, 121,
104, 0, 103, 104, 0, 122, 0, 121, 122, 0,
216, 0, 216, 105, 9, 106, 0, 9, 0, 0,
217, 0, 217, 105, 9, 106, 0, 9, 0, 0,
124, 0, 125, 0, 124, 125, 0, 41, 84, 0,
52, 84, 0, 20, 84, 0, 43, 53, 0, 12,
57, 0, 0, 127, 0, 128, 0, 127, 128, 0,
130, 0, 135, 0, 143, 0, 170, 0, 138, 0,
0, 38, 12, 129, 0, 178, 0, 54, 131, 107,
0, 54, 46, 0, 132, 0, 131, 132, 0, 133,
46, 213, 119, 0, 134, 0, 133, 108, 134, 0,
213, 0, 213, 103, 104, 0, 216, 0, 42, 136,
46, 214, 119, 0, 134, 0, 133, 108, 134, 0,
214, 0, 214, 103, 104, 0, 217, 0, 42, 136,
107, 0, 42, 17, 107, 0, 42, 107, 0, 137,
0, 136, 108, 137, 0, 213, 0, 213, 103, 104,
0, 216, 0, 213, 139, 3, 103, 140, 104, 0,
0, 136, 108, 137, 0, 214, 0, 214, 103, 104,
0, 217, 0, 214, 139, 3, 103, 140, 104, 0,
165, 0, 175, 0, 0, 141, 0, 142, 0, 141,
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, 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,
108, 142, 0, 102, 0, 186, 0, 214, 3, 209,
87, 0, 214, 3, 163, 0, 214, 3, 153, 0,
214, 103, 144, 104, 3, 163, 0, 145, 0, 144,
108, 145, 0, 214, 0, 214, 109, 217, 0, 214,
109, 214, 0, 175, 109, 217, 0, 147, 0, 146,
108, 147, 0, 163, 0, 217, 0, 0, 149, 0,
150, 0, 149, 108, 150, 0, 217, 163, 203, 0,
30, 68, 163, 0, 162, 0, 152, 0, 151, 108,
152, 0, 216, 163, 0, 162, 0, 28, 103, 155,
152, 0, 217, 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,
156, 0, 168, 203, 0, 168, 163, 154, 203, 0,
168, 168, 154, 203, 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, 102, 110, 208, 0, 209, 164, 182, 0, 177,
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,
0, 79, 103, 148, 104, 0, 78, 182, 68, 216,
209, 164, 0, 79, 182, 68, 216, 209, 164, 0,
18, 0, 18, 35, 25, 217, 0, 214, 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,
11, 111, 214, 0, 215, 111, 214, 0, 11, 111,
217, 0, 215, 0, 215, 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,
14, 0, 217, 139, 3, 171, 0, 217, 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,
86, 0, 5, 0, 7, 0, 6, 0, 208, 0,
173, 0, 217, 0, 214, 111, 217, 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, 178, 0, 58, 0, 40, 0, 22, 81, 0,
175, 0, 176, 204, 0, 23, 0, 48, 0, 49,
175, 0, 176, 205, 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,
......@@ -337,59 +337,59 @@ static const short yyrhs[] = { 117,
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
185, 106, 0, 105, 185, 106, 0, 190, 0, 191,
0, 190, 188, 190, 0, 61, 188, 190, 0, 190,
188, 60, 0, 61, 188, 60, 0, 197, 0, 192,
0, 101, 0, 101, 112, 0, 112, 101, 0, 112,
101, 112, 0, 80, 0, 46, 0, 45, 0, 86,
0, 208, 0, 6, 0, 217, 0, 214, 0, 95,
30, 103, 193, 104, 0, 194, 0, 193, 108, 194,
0, 102, 0, 217, 182, 195, 0, 0, 196, 0,
73, 0, 15, 0, 69, 0, 198, 0, 199, 0,
103, 214, 104, 0, 198, 103, 200, 104, 0, 201,
0, 200, 108, 201, 0, 113, 202, 0, 113, 111,
202, 0, 217, 0, 202, 111, 217, 0, 0, 204,
0, 69, 0, 33, 171, 0, 103, 104, 0, 103,
206, 104, 0, 207, 0, 206, 108, 207, 0, 217,
0, 217, 105, 208, 106, 0, 217, 105, 173, 106,
0, 208, 0, 102, 0, 9, 0, 10, 0, 0,
210, 0, 211, 213, 0, 114, 212, 9, 115, 0,
0, 89, 0, 19, 0, 75, 0, 0, 52, 0,
41, 0, 11, 0, 12, 0, 12, 0, 0, 217,
0, 8, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
301, 307, 313, 329, 354, 356, 359, 363, 368, 375,
383, 388, 392, 401, 403, 411, 415, 423, 427, 430,
433, 437, 457, 459, 467, 471, 503, 507, 516, 523,
536, 543, 545, 557, 570, 577, 582, 588, 594, 603,
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,
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, 1119, 1129, 1135, 1149, 1173, 1180, 1194, 1203, 1213,
1223, 1233, 1241, 1262, 1271, 1280, 1281, 1283, 1290, 1302,
1312, 1320, 1320, 1325, 1330, 1335, 1340, 1344, 1348, 1352,
1355, 1360, 1372, 1388, 1399, 1413, 1415, 1416, 1417, 1418,
1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1432, 1434,
1435, 1438, 1445, 1457, 1459, 1463, 1467, 1468, 1469, 1470,
1471, 1475, 1476, 1477, 1478, 1482, 1483, 1490, 1490, 1491,
1491, 1492, 1494, 1496, 1501, 1505, 1514, 1518, 1523, 1527,
1533, 1543, 1547, 1550, 1553, 1558, 1567, 1575, 1581, 1588,
1596, 1604, 1613, 1616, 1621, 1623, 1624, 1625, 1628, 1632,
1637, 1643, 1648, 1651, 1655, 1666, 1679, 1685, 1689, 1694,
1700, 1712, 1714, 1717, 1721, 1724, 1729, 1733, 1741, 1756,
1762, 1769, 1782, 1794, 1809, 1813, 1830, 1835, 1838, 1843,
1865, 1870, 1875, 1881, 1887, 1895, 1903, 1911, 1918, 1928,
1933, 1963, 1965, 1968, 1975, 1981, 1983, 1984, 1985, 1988,
1990, 1991, 1994, 1999, 2006, 2013, 2015, 2019
302, 308, 314, 330, 355, 357, 360, 364, 369, 376,
384, 389, 393, 402, 404, 412, 416, 424, 428, 431,
434, 438, 458, 460, 468, 472, 504, 508, 517, 524,
537, 544, 546, 558, 571, 578, 583, 589, 595, 604,
610, 616, 623, 629, 637, 641, 644, 651, 657, 663,
670, 676, 685, 695, 703, 711, 713, 723, 726, 730,
733, 745, 757, 763, 779, 788, 798, 808, 813, 820,
827, 837, 843, 849, 853, 876, 878, 880, 886, 892,
899, 906, 911, 917, 923, 929, 934, 944, 946, 949,
957, 963, 972, 978, 995, 997, 1002, 1006, 1011, 1016,
1022, 1026, 1037, 1046, 1055, 1066, 1088, 1092, 1098, 1104,
1110, 1120, 1130, 1136, 1150, 1174, 1181, 1195, 1204, 1214,
1224, 1234, 1242, 1263, 1272, 1281, 1282, 1284, 1291, 1303,
1313, 1321, 1321, 1326, 1331, 1336, 1341, 1345, 1349, 1353,
1356, 1361, 1373, 1389, 1400, 1414, 1416, 1417, 1418, 1419,
1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1433, 1435,
1436, 1439, 1446, 1458, 1460, 1464, 1468, 1469, 1470, 1471,
1472, 1476, 1477, 1478, 1479, 1483, 1484, 1491, 1491, 1492,
1492, 1493, 1495, 1497, 1502, 1506, 1515, 1519, 1524, 1528,
1534, 1544, 1548, 1551, 1554, 1559, 1568, 1576, 1582, 1588,
1595, 1603, 1611, 1620, 1623, 1628, 1630, 1631, 1632, 1635,
1639, 1644, 1650, 1655, 1658, 1662, 1675, 1689, 1695, 1699,
1704, 1710, 1722, 1724, 1727, 1731, 1734, 1739, 1743, 1751,
1766, 1772, 1779, 1792, 1804, 1819, 1823, 1840, 1845, 1848,
1853, 1875, 1880, 1885, 1891, 1897, 1905, 1913, 1921, 1928,
1938, 1943, 1973, 1975, 1978, 1985, 1991, 1993, 1994, 1995,
1998, 2000, 2001, 2004, 2009, 2016, 2023, 2025, 2029
};
#endif
......@@ -432,12 +432,13 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
"Value","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
"ConstraintRangeSpec","ConstraintSpec","SingleValue","ContainedSubtype","WithComponents",
"WithComponentsList","WithComponentsElement","optPresenceConstraint","PresenceConstraint",
"TableConstraint","SimpleTableConstraint","ComponentRelationConstraint","AtNotationList",
"AtNotationElement","ComponentIdList","optMarker","Marker","UniverationDefinition",
"UniverationList","UniverationElement","SignedNumber","optTag","Tag","TagTypeValue",
"TagClass","TagPlicit","TypeRefName","ObjectClassReference","optIdentifier",
"Identifier", NULL
};
#endif
......@@ -462,13 +463,13 @@ static const short yyr1[] = { 0,
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
187, 187, 187, 187, 187, 188, 188, 188, 188, 189,
189, 190, 190, 190, 190, 190, 191, 192, 193, 193,
194, 194, 195, 195, 196, 196, 196, 197, 197, 198,
199, 200, 200, 201, 201, 202, 202, 203, 203, 204,
204, 205, 205, 206, 206, 207, 207, 207, 207, 207,
208, 208, 209, 209, 210, 211, 212, 212, 212, 212,
213, 213, 213, 214, 214, 215, 216, 216, 217
};
static const short yyr2[] = { 0,
......@@ -491,18 +492,18 @@ static const short yyr2[] = { 0,
2, 1, 2, 1, 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, 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
5, 1, 3, 3, 3, 4, 3, 1, 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,
263, 264, 1, 2, 5, 3, 0, 0, 6, 268,
264, 265, 1, 2, 5, 3, 0, 0, 6, 269,
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, 164, 0, 0,
......@@ -510,283 +511,287 @@ static const short yydefact[] = { 0,
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, 252, 118, 265, 0, 146, 0, 0, 160, 153,
26, 253, 118, 266, 0, 146, 0, 0, 160, 153,
157, 159, 147, 0, 0, 148, 152, 156, 0, 0,
54, 55, 149, 158, 122, 0, 33, 46, 45, 0,
0, 35, 38, 0, 0, 0, 0, 256, 64, 63,
0, 253, 260, 0, 161, 155, 154, 151, 150, 0,
0, 35, 38, 0, 0, 0, 0, 257, 64, 63,
0, 254, 261, 0, 161, 155, 154, 151, 150, 0,
66, 0, 68, 0, 0, 0, 49, 51, 5, 41,
43, 0, 258, 259, 257, 0, 118, 265, 113, 0,
43, 0, 259, 260, 258, 0, 118, 266, 113, 0,
0, 183, 183, 62, 183, 116, 162, 149, 107, 0,
262, 261, 254, 119, 121, 0, 0, 0, 0, 56,
128, 129, 123, 124, 126, 120, 137, 139, 138, 250,
251, 135, 134, 136, 132, 130, 141, 140, 0, 142,
39, 0, 90, 252, 127, 0, 0, 0, 0, 0,
263, 262, 255, 119, 121, 0, 0, 0, 0, 56,
128, 129, 123, 124, 126, 120, 137, 139, 138, 251,
252, 135, 134, 136, 132, 130, 141, 140, 0, 142,
39, 0, 90, 253, 127, 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,
117, 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, 125, 144, 133, 143, 131, 0,
87, 96, 91, 240, 89, 237, 237, 114, 0, 108,
0, 85, 0, 252, 109, 0, 237, 187, 0, 252,
267, 0, 110, 252, 242, 0, 0, 115, 252, 206,
207, 202, 200, 0, 229, 197, 59, 193, 194, 195,
0, 201, 199, 0, 0, 231, 145, 0, 93, 94,
104, 105, 142, 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, 111,
112, 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
253, 253, 67, 71, 70, 69, 215, 212, 211, 0,
210, 213, 0, 60, 0, 0, 0, 57, 58, 61,
192, 0, 198, 199, 205, 204, 228, 229, 214, 217,
216, 0, 0, 0, 0, 95, 0, 0, 240, 88,
88, 92, 239, 0, 256, 0, 103, 0, 83, 86,
253, 117, 0, 0, 0, 77, 78, 82, 253, 0,
189, 267, 0, 0, 267, 250, 242, 0, 244, 249,
246, 0, 72, 74, 75, 65, 206, 0, 0, 0,
0, 0, 53, 0, 180, 181, 178, 179, 0, 0,
182, 0, 0, 0, 0, 125, 144, 133, 143, 131,
0, 87, 96, 91, 241, 89, 238, 238, 114, 0,
108, 0, 85, 0, 253, 109, 0, 238, 187, 0,
253, 268, 0, 110, 253, 243, 0, 0, 115, 253,
207, 208, 203, 201, 0, 230, 197, 59, 193, 194,
195, 0, 202, 200, 0, 0, 232, 145, 0, 93,
94, 104, 105, 142, 84, 186, 81, 79, 80, 190,
0, 188, 0, 245, 0, 0, 73, 209, 221, 0,
219, 183, 196, 0, 234, 236, 231, 0, 97, 0,
111, 112, 248, 247, 218, 0, 223, 235, 0, 233,
0, 191, 220, 226, 227, 225, 222, 224, 237, 101,
0, 99, 102, 98, 100, 0, 0, 0
};
static const short yydefgoto[] = { 415,
static const short yydefgoto[] = { 416,
3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
56, 57, 107, 58, 74, 75, 76, 77, 59, 69,
70, 60, 100, 227, 228, 229, 61, 130, 131, 281,
282, 264, 265, 266, 257, 258, 119, 316, 192, 193,
311, 312, 400, 410, 411, 267, 283, 155, 156, 173,
174, 194, 195, 62, 186, 242, 187, 307, 157, 103,
159, 104, 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, 122, 123, 146, 163, 239, 105, 330, 240
70, 60, 100, 227, 228, 229, 61, 130, 131, 282,
283, 265, 266, 267, 258, 259, 119, 317, 192, 193,
312, 313, 401, 411, 412, 268, 284, 155, 156, 173,
174, 194, 195, 62, 186, 243, 187, 308, 157, 103,
159, 104, 299, 300, 302, 203, 204, 205, 270, 271,
231, 289, 232, 233, 234, 235, 380, 381, 407, 408,
236, 237, 238, 356, 357, 385, 252, 253, 210, 278,
279, 239, 254, 122, 123, 146, 163, 240, 105, 331,
241
};
static const short yypact[] = { 152,
-32768,-32768, 152,-32768, -74,-32768, 12, 5,-32768,-32768,
-32768,-32768, 38,-32768, -16, 54,-32768,-32768, 44, 56,
47, 72, 85, 81, 141, 54,-32768, 64,-32768,-32768,
-32768,-32768,-32768, 132,-32768,-32768, 407,-32768, 161, 33,
-32768,-32768,-32768, 53,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 156, 407,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 331, 636,-32768, 118,-32768, 105,-32768,
124,-32768,-32768, 16,-32768, -23,-32768, 147,-32768,-32768,
-32768, -3, 140,-32768, 176,-32768, 182, 203,-32768,-32768,
-32768,-32768,-32768, 225, 198,-32768,-32768,-32768, 711, 278,
-32768,-32768,-32768,-32768, 171, 283,-32768,-32768,-32768, 65,
189,-32768,-32768, 152, 65, 194, 200, 3,-32768,-32768,
484,-32768, 84, 65,-32768,-32768,-32768,-32768,-32768, 67,
-32768, 192, 195, 204, 248, 210,-32768,-32768, -74,-32768,
-32768, 163,-32768,-32768,-32768, 306, -10, 213, 282, 215,
253, -1, 69,-32768, -42,-32768,-32768, 219,-32768, 223,
-32768,-32768,-32768,-32768,-32768, 320, 711, 319, 65, 197,
-32768,-32768, 217,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 222, 226,
-32768, 82,-32768, 29,-32768, 216, 311, 7, 235, 233,
10, 279, 271,-32768, 236, 10, 276,-32768, 46,-32768,
1, 231,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 27,
-32768,-32768, 318,-32768, 152, 279, 245, 243,-32768, 211,
256, 251, 27,-32768,-32768, 255,-32768,-32768,-32768,-32768,
163, 356, 319, 210, 266, 163, 210,-32768, 274, 274,
-32768,-32768, 561,-32768, 319, 254, 88,-32768,-32768, 231,
-32768, 279, 295, 262, 261,-32768,-32768, 231, 264, 60,
319, 279, 268, 319,-32768,-32768, 93,-32768,-32768, 272,
130,-32768,-32768,-32768,-32768, 273, 285, 220, 270, 288,
277,-32768, 197,-32768,-32768,-32768,-32768, 279, 279,-32768,
279, 279, 260, 280,-32768,-32768, 383,-32768,-32768, 317,
-32768,-32768,-32768,-32768,-32768, 19, 19,-32768, 173,-32768,
7,-32768, 294, 231,-32768, 10, 19,-32768, 300, 231,
-32768, 298,-32768, 231,-32768, 49, 173,-32768, 1,-32768,
297,-32768,-32768, 52,-32768,-32768,-32768,-32768,-32768,-32768,
304,-32768,-32768, 11, 131,-32768,-32768, 303,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 305, 561,
-32768, 561,-32768, 314, 321,-32768,-32768,-32768, 137,-32768,
-42,-32768, 319, 301,-32768,-32768, 280,-32768, 279,-32768,
-32768,-32768,-32768,-32768, 52, 17, 301, 319,-32768, 165,
211,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 22,
-32768,-32768,-32768,-32768, 411, 417,-32768
static const short yypact[] = { 228,
-32768,-32768, 228,-32768, -71,-32768, 38, 59,-32768,-32768,
-32768,-32768, 49,-32768, -3, 58,-32768,-32768, 74, 54,
60, 67, 112, 84, 136, 58,-32768, 82,-32768,-32768,
-32768,-32768,-32768, 152,-32768,-32768, 419,-32768, 178, 33,
-32768,-32768,-32768, 61,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 181, 419,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 332, 648,-32768, 121,-32768, 144,-32768,
132,-32768,-32768, 17,-32768, -22,-32768, 143,-32768,-32768,
-32768, -17, 137,-32768, 183,-32768, 194, 186,-32768,-32768,
-32768,-32768,-32768, 208, 203,-32768,-32768,-32768, 723, 275,
-32768,-32768,-32768,-32768, 179, 288,-32768,-32768,-32768, 184,
190,-32768,-32768, 228, 184, 191, 193, 20,-32768,-32768,
496,-32768, 86, 184,-32768,-32768,-32768,-32768,-32768, 79,
-32768, 188, 195, 200, 258, 355,-32768,-32768, -71,-32768,
-32768, 260,-32768,-32768,-32768, 284, 53, 202, 263, 205,
238, -15, -14,-32768, 55,-32768,-32768, 206,-32768, 207,
-32768,-32768,-32768,-32768,-32768, 308, 723, 304, 184, 197,
-32768,-32768, 210,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 211, 209,
-32768, 93,-32768, 29,-32768, 199, 292, 11, 269, 214,
10, 221, 255,-32768, 220, 10, 259,-32768, 46,-32768,
6, 215,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 62,
-32768,-32768, 298,-32768, 228, 221, 230, 224,-32768, 189,
240, 232, 62,-32768,-32768,-32768, 236,-32768,-32768,-32768,
-32768, 260, 336, 304, 355, 246, 260, 355,-32768, 254,
254,-32768,-32768, 573,-32768, 304, 235, 108,-32768,-32768,
215,-32768, 221, 278, 243, 241,-32768,-32768, 215, 244,
72, 304, 221, 248, 304,-32768,-32768, 109,-32768,-32768,
252, 110,-32768,-32768,-32768,-32768, 247, 270, 71, 250,
266, 267,-32768, 197,-32768,-32768,-32768,-32768, 221, 221,
-32768, 221, 221, 176, 261,-32768,-32768, 371,-32768,-32768,
296,-32768,-32768,-32768,-32768,-32768, 15, 15,-32768, 167,
-32768, 11,-32768, 277, 215,-32768, 10, 15,-32768, 282,
215,-32768, 279,-32768, 215,-32768, 13, 167,-32768, 6,
-32768, 274,-32768,-32768, 52,-32768,-32768,-32768,-32768,-32768,
-32768, 281,-32768,-32768, 12, 115,-32768,-32768, 285,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 286,
573,-32768, 573,-32768, 287, 295,-32768,-32768,-32768, 118,
-32768, 55,-32768, 304, 294,-32768,-32768, 261,-32768, 221,
-32768,-32768,-32768,-32768,-32768, 52, 23, 294, 304,-32768,
145, 189,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
22,-32768,-32768,-32768,-32768, 403, 407,-32768
};
static const short yypgoto[] = {-32768,
-32768, 423, 289,-32768,-32768, 416,-32768,-32768, 405,-32768,
-32768, 376,-32768,-32768,-32768, 359,-32768, 322,-32768,-32768,
325,-32768, 371,-32768,-32768, 145,-32768,-32768, 275,-32768,
100, 234,-32768, 115,-32768, 122,-32768, 196,-32768, 201,
-32768,-32768,-32768,-32768, 34, -187, -80, -183, -52,-32768,
207, -186, -121,-32768, -137,-32768, -237,-32768, -48, -118,
-32768, 35,-32768,-32768,-32768, -148,-32768,-32768, -178, -166,
-4, 218,-32768, -207,-32768,-32768, 55,-32768,-32768,-32768,
-32768,-32768,-32768, 66, 71, -247,-32768,-32768,-32768, 116,
-126, -81,-32768,-32768,-32768,-32768, 31,-32768, 184, -7
-32768, 408, 271,-32768,-32768, 399,-32768,-32768, 387,-32768,
-32768, 358,-32768,-32768,-32768, 342,-32768, 305,-32768,-32768,
309,-32768, 356,-32768,-32768, 134,-32768,-32768, 262,-32768,
92, 227,-32768, 107,-32768, 114,-32768, 187,-32768, 192,
-32768,-32768,-32768,-32768, 26, -188, -80, -312, -52,-32768,
198, -186, -120,-32768, -1,-32768, -244,-32768, -48, -118,
-32768, 69,-32768,-32768,-32768, -148,-32768,-32768, -199, -166,
-39, 212,-32768, -204,-32768,-32768,-32768, 47,-32768,-32768,
-32768,-32768,-32768,-32768, 56, 63, -265,-32768,-32768,-32768,
111, -127, -81,-32768,-32768,-32768,-32768, 31,-32768, 171,
-7
};
#define YYLAST 805
#define YYLAST 817
static const short yytable[] = { 15,
121, 120, 158, 230, 207, 15, 208, 250, 10, 188,
259, 101, 101, 175, 10, 102, 102, 10, 10, 10,
11, 143, 114, 10, 117, 409, 1, 2, 7, 65,
5, 403, 72, 5, 171, 172, 79, 200, 16, 263,
10, 171, 172, 1, 2, 10, 11, 291, 65, 67,
132, 247, 28, 10, 180, 181, 10, 180, 181, 10,
10, 247, 202, 1, 2, 20, 79, 64, 359, 360,
71, 63, 10, 21, 78, 1, 2, 144, 200, 368,
343, 361, 279, 323, 115, 404, 64, 248, 19, 405,
63, 145, -263, 332, 22, 353, 23, 248, 73, 374,
124, 201, 72, 202, 78, 24, 309, 79, 256, 314,
118, 256, 29, 249, 118, 12, 165, 188, 132, 175,
188, 383, 112, 351, 161, 413, 230, 286, 190, 133,
30, 285, -237, 259, 158, 162, -237, 32, 287, 68,
71, 17, 118, 34, 139, 78, 261, 275, 200, 276,
275, 160, 37, 378, 164, 31, 294, 295, 296, 297,
214, 216, 1, 2, 33, 176, 189, 329, 409, 36,
166, 206, 66, 202, 167, 171, 172, 171, 172, 322,
10, 180, 181, 1, 2, 245, 390, 327, 391, 246,
260, 320, 362, 268, 80, 321, 335, 133, 268, 215,
336, 280, 217, 284, 10, 180, 181, 1, 2, 279,
375, 109, 110, 412, 177, 178, 179, 10, 180, 181,
1, 2, 401, 412, 108, 217, 111, 10, 180, 181,
1, 2, 396, 338, 386, 308, 190, 339, 387, 190,
394, 218, 219, 366, 395, 83, 84, 318, 370, 116,
124, 158, 372, 158, 182, 290, 125, 220, 1, 2,
171, 172, 126, 331, 218, 217, 331, 10, 180, 181,
1, 2, 183, 127, 189, 128, 221, 189, 129, 342,
134, 135, 222, 160, 217, 136, 10, 180, 181, 1,
2, 223, 138, 348, 349, 184, 350, 141, 224, 225,
168, 226, 142, 169, 218, 222, 170, 294, 295, 296,
297, 363, 185, 260, 196, -264, 197, 198, 268, 352,
199, 209, 212, 218, 219, 211, 10, 241, 280, 363,
254, 284, 243, 82, 244, 255, 381, 262, 271, 220,
272, 83, 84, 274, 118, 222, 385, 289, 292, 189,
293, 300, 85, 38, 86, 302, 87, 304, 221, 306,
310, 315, 324, 319, 222, 325, 88, 189, 326, 328,
89, 333, 344, 223, 90, 385, 337, 91, 41, 42,
43, 225, 346, 226, 340, 341, 357, 381, 92, 45,
408, 345, 354, 93, 46, 94, 47, 95, 358, 365,
160, 369, 160, 371, 48, 388, 96, 97, 377, 382,
416, 398, 389, 49, 10, 50, 417, 1, 2, 392,
51, 98, 52, 53, 54, 6, 393, 191, 18, 38,
35, 81, 113, 99, 137, 106, 140, 347, 376, 273,
367, 213, 364, 414, 39, 317, 313, 305, 40, 402,
303, 373, 399, 397, 41, 42, 43, 334, 0, 0,
44, 0, 0, 0, 0, 45, 0, 0, 0, 0,
46, 0, 47, 0, 0, 0, 0, 0, 0, 0,
48, 0, 0, 0, 0, 0, 0, 0, 0, 49,
0, 50, 0, 0, 147, 148, 51, 0, 52, 53,
54, 149, 0, 0, 0, 85, 38, 86, 0, 87,
150, 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, 151,
0, 92, 45, 0, 0, 0, 93, 46, 94, 47,
95, 0, 0, 0, 0, 0, 0, 48, 0, 96,
97, 152, 153, 0, 0, 0, 49, 0, 50, 0,
154, 147, 148, 51, 98, 52, 53, 54, 149, 0,
0, 0, 85, 38, 86, 0, 87, 150, 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, 151, 0, 92, 45,
0, 0, 0, 93, 46, 94, 47, 95, 0, 0,
0, 0, 0, 0, 48, 0, 96, 97, 152, 153,
0, 0, 0, 49, 0, 50, 83, 84, 0, 0,
51, 98, 52, 53, 54, 0, 0, 85, 38, 86,
0, 87, 0, 0, 0, 0, 0, 0, 0, 0,
121, 120, 158, 230, 207, 15, 208, 251, 188, 260,
117, 101, 101, 10, 175, 102, 102, 10, 10, 10,
10, 180, 181, 114, 10, 410, 292, 1, 2, 65,
5, 7, 72, 5, 171, 172, 79, 404, 143, 264,
10, 171, 172, 1, 2, 10, 11, 248, 65, 67,
132, 360, 361, 10, 180, 181, 10, 11, 391, 10,
392, 248, 369, 324, 200, 200, 79, 64, 10, 20,
71, 1, 2, 333, 78, 362, 217, 21, 10, 180,
181, 280, 28, 249, 344, 115, 64, 201, 206, 202,
202, 405, 16, 375, 144, 406, 118, 249, 22, 354,
23, 19, 72, 352, 78, 63, 73, 79, 145, 24,
29, 257, 257, 250, 276, 218, 165, 188, 132, 118,
188, 175, 384, 112, 63, 414, 161, 230, 190, 133,
343, 286, -238, 260, 200, 158, -238, 162, 34, 68,
71, 12, 118, 30, 139, 78, 262, 276, 410, 277,
31, 160, 17, 379, 164, -264, 222, 171, 172, 202,
214, 216, 287, 124, 32, 176, 189, 33, 295, 296,
297, 298, 37, 288, 10, 180, 181, 1, 2, 330,
323, 217, 166, 10, 180, 181, 167, 36, 328, 66,
261, 10, 363, 269, 1, 2, 246, 133, 269, 215,
247, 281, 217, 285, 10, 180, 181, 1, 2, 280,
376, 321, 336, 339, 413, 322, 337, 340, 387, 80,
218, 395, 388, 402, 413, 396, 217, 108, 10, 180,
181, 1, 2, 397, 111, 353, 309, 190, 1, 2,
190, 218, 219, 310, 367, 116, 315, 124, 319, 371,
109, 110, 158, 373, 158, 291, 127, 220, 128, 349,
350, 222, 351, 125, 332, 218, 219, 332, 1, 2,
171, 172, 171, 172, 126, 189, 221, 134, 189, 83,
84, 220, 222, 129, 160, 295, 296, 297, 298, 135,
136, 223, 196, 138, 141, 142, 168, 197, 224, 225,
221, 226, 170, 169, -265, 199, 222, 198, 209, 211,
212, 10, 364, 255, 261, 223, 256, 245, 263, 269,
242, 244, 272, 225, 273, 226, 275, 290, 118, 281,
364, 294, 285, 293, 82, 301, 303, 382, 305, 307,
311, 316, 83, 84, 320, 325, 326, 386, 327, 329,
189, 334, 345, 85, 38, 86, 338, 87, 341, 177,
178, 179, 10, 180, 181, 1, 2, 88, 189, 346,
342, 89, 347, 355, 358, 90, 386, 359, 91, 41,
42, 43, 366, 370, 372, 378, 383, 389, 382, 92,
45, 409, 393, 390, 93, 46, 94, 47, 95, 182,
394, 160, 417, 160, 399, 48, 418, 96, 97, 191,
6, 18, 35, 81, 49, 113, 50, 183, 137, 140,
106, 51, 98, 52, 53, 54, 10, 348, 213, 1,
2, 377, 274, 368, 99, 365, 415, 318, 314, 306,
184, 38, 403, 400, 304, 335, 398, 374, 0, 0,
0, 0, 0, 0, 0, 0, 39, 185, 0, 0,
40, 0, 0, 0, 0, 0, 41, 42, 43, 0,
0, 0, 44, 0, 0, 0, 0, 45, 0, 0,
0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
0, 0, 48, 0, 0, 0, 0, 0, 0, 0,
0, 49, 0, 50, 0, 0, 147, 148, 51, 0,
52, 53, 54, 149, 0, 0, 0, 85, 38, 86,
0, 87, 150, 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,
0, 151, 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, 51, 98, 52, 53, 54,
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
0, 96, 97, 152, 153, 0, 0, 0, 49, 0,
50, 0, 154, 147, 148, 51, 98, 52, 53, 54,
149, 0, 0, 0, 85, 38, 86, 0, 87, 150,
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, 151, 0,
92, 45, 0, 0, 0, 93, 46, 94, 47, 95,
0, 0, 0, 0, 0, 0, 48, 0, 96, 97,
152, 153, 0, 0, 0, 49, 0, 50, 83, 84,
0, 0, 51, 98, 52, 53, 54, 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, 1, 2, 0, 0, 51, 98, 52,
53, 54, 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,
82, 82, 121, 170, 153, 13, 155, 194, 8, 136,
198, 64, 65, 135, 8, 64, 65, 8, 8, 8,
9, 19, 46, 8, 28, 4, 11, 12, 103, 37,
0, 15, 40, 3, 13, 14, 44, 80, 34, 30,
8, 13, 14, 11, 12, 8, 9, 226, 56, 17,
99, 33, 9, 8, 9, 10, 8, 9, 10, 8,
8, 33, 105, 11, 12, 12, 74, 37, 316, 317,
40, 37, 8, 20, 44, 11, 12, 75, 80, 327,
288, 319, 209, 262, 108, 69, 56, 69, 105, 73,
56, 89, 103, 272, 41, 303, 43, 69, 46, 337,
111, 103, 110, 105, 74, 52, 244, 115, 102, 247,
114, 102, 57, 194, 114, 104, 124, 244, 167, 241,
247, 111, 107, 302, 41, 104, 293, 101, 136, 99,
84, 212, 104, 321, 253, 52, 108, 53, 112, 107,
110, 104, 114, 3, 114, 115, 199, 102, 80, 104,
102, 121, 21, 102, 124, 84, 97, 98, 99, 100,
168, 169, 11, 12, 84, 135, 136, 108, 4, 106,
104, 103, 12, 105, 108, 13, 14, 13, 14, 260,
8, 9, 10, 11, 12, 104, 370, 268, 372, 108,
198, 104, 319, 201, 39, 108, 104, 167, 206, 169,
108, 209, 6, 211, 8, 9, 10, 11, 12, 336,
337, 107, 108, 400, 5, 6, 7, 8, 9, 10,
11, 12, 389, 410, 107, 6, 103, 8, 9, 10,
11, 12, 381, 104, 104, 243, 244, 108, 108, 247,
104, 45, 46, 324, 108, 11, 12, 255, 330, 103,
111, 370, 334, 372, 45, 225, 81, 61, 11, 12,
13, 14, 81, 271, 45, 6, 274, 8, 9, 10,
11, 12, 63, 71, 244, 51, 80, 247, 81, 60,
3, 111, 86, 253, 6, 3, 8, 9, 10, 11,
12, 95, 104, 298, 299, 86, 301, 104, 102, 103,
109, 105, 103, 109, 45, 86, 103, 97, 98, 99,
100, 319, 103, 321, 9, 103, 35, 103, 326, 60,
68, 103, 3, 45, 46, 103, 8, 111, 336, 337,
115, 339, 111, 3, 109, 25, 344, 105, 68, 61,
105, 11, 12, 68, 114, 86, 354, 30, 104, 319,
108, 96, 22, 23, 24, 105, 26, 103, 80, 4,
95, 88, 68, 110, 86, 104, 36, 337, 108, 106,
40, 104, 103, 95, 44, 383, 105, 47, 48, 49,
50, 103, 106, 105, 112, 101, 4, 395, 58, 59,
398, 104, 113, 63, 64, 65, 66, 67, 82, 106,
370, 102, 372, 106, 74, 103, 76, 77, 112, 106,
0, 111, 108, 83, 8, 85, 0, 11, 12, 106,
90, 91, 92, 93, 94, 3, 106, 139, 13, 23,
26, 56, 74, 103, 110, 65, 115, 293, 339, 206,
326, 167, 321, 410, 38, 250, 246, 241, 42, 395,
233, 336, 387, 383, 48, 49, 50, 274, -1, -1,
54, -1, -1, -1, -1, 59, -1, -1, -1, -1,
64, -1, 66, -1, -1, -1, -1, -1, -1, -1,
74, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, -1, 74, -1, 76, 77, 78, 79,
-1, -1, -1, 83, -1, 85, 11, 12, -1, -1,
90, 91, 92, 93, 94, -1, -1, 22, 23, 24,
-1, 26, -1, -1, -1, -1, -1, -1, -1, -1,
82, 82, 121, 170, 153, 13, 155, 194, 136, 198,
28, 64, 65, 8, 135, 64, 65, 8, 8, 8,
8, 9, 10, 46, 8, 4, 226, 11, 12, 37,
0, 103, 40, 3, 13, 14, 44, 15, 19, 30,
8, 13, 14, 11, 12, 8, 9, 33, 56, 17,
99, 317, 318, 8, 9, 10, 8, 9, 371, 8,
373, 33, 328, 263, 80, 80, 74, 37, 8, 12,
40, 11, 12, 273, 44, 320, 6, 20, 8, 9,
10, 209, 9, 69, 289, 108, 56, 103, 103, 105,
105, 69, 34, 338, 75, 73, 114, 69, 41, 304,
43, 105, 110, 303, 74, 37, 46, 115, 89, 52,
57, 102, 102, 194, 102, 45, 124, 245, 167, 114,
248, 242, 111, 107, 56, 104, 41, 294, 136, 99,
60, 212, 104, 322, 80, 254, 108, 52, 3, 107,
110, 104, 114, 84, 114, 115, 199, 102, 4, 104,
84, 121, 104, 102, 124, 103, 86, 13, 14, 105,
168, 169, 101, 111, 53, 135, 136, 84, 97, 98,
99, 100, 21, 112, 8, 9, 10, 11, 12, 108,
261, 6, 104, 8, 9, 10, 108, 106, 269, 12,
198, 8, 320, 201, 11, 12, 104, 167, 206, 169,
108, 209, 6, 211, 8, 9, 10, 11, 12, 337,
338, 104, 104, 104, 401, 108, 108, 108, 104, 39,
45, 104, 108, 390, 411, 108, 6, 107, 8, 9,
10, 11, 12, 382, 103, 60, 244, 245, 11, 12,
248, 45, 46, 245, 325, 103, 248, 111, 256, 331,
107, 108, 371, 335, 373, 225, 71, 61, 51, 299,
300, 86, 302, 81, 272, 45, 46, 275, 11, 12,
13, 14, 13, 14, 81, 245, 80, 3, 248, 11,
12, 61, 86, 81, 254, 97, 98, 99, 100, 111,
3, 95, 9, 104, 104, 103, 109, 35, 102, 103,
80, 105, 103, 109, 103, 68, 86, 103, 103, 103,
3, 8, 320, 115, 322, 95, 25, 109, 105, 327,
111, 111, 68, 103, 105, 105, 68, 30, 114, 337,
338, 108, 340, 104, 3, 96, 105, 345, 103, 4,
95, 88, 11, 12, 110, 68, 104, 355, 108, 106,
320, 104, 103, 22, 23, 24, 105, 26, 112, 5,
6, 7, 8, 9, 10, 11, 12, 36, 338, 104,
101, 40, 106, 113, 4, 44, 384, 82, 47, 48,
49, 50, 106, 102, 106, 112, 106, 103, 396, 58,
59, 399, 106, 108, 63, 64, 65, 66, 67, 45,
106, 371, 0, 373, 111, 74, 0, 76, 77, 139,
3, 13, 26, 56, 83, 74, 85, 63, 110, 115,
65, 90, 91, 92, 93, 94, 8, 294, 167, 11,
12, 340, 206, 327, 103, 322, 411, 251, 247, 242,
86, 23, 396, 388, 233, 275, 384, 337, -1, -1,
-1, -1, -1, -1, -1, -1, 38, 103, -1, -1,
42, -1, -1, -1, -1, -1, 48, 49, 50, -1,
-1, -1, 54, -1, -1, -1, -1, 59, -1, -1,
-1, -1, 64, -1, 66, -1, -1, -1, -1, -1,
-1, -1, 74, -1, -1, -1, -1, -1, -1, -1,
-1, 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, -1, -1, 58, 59, -1, -1, -1, 63, 64,
-1, 56, -1, 58, 59, -1, -1, -1, 63, 64,
65, 66, 67, -1, -1, -1, -1, -1, -1, 74,
-1, 76, 77, -1, -1, -1, -1, -1, 83, -1,
85, 11, 12, -1, -1, 90, 91, 92, 93, 94,
-1, -1, 22, 23, 24, -1, 26, -1, -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, -1, -1, 58, 59,
-1, -1, -1, 63, 64, 65, 66, 67, -1, -1,
-1, -1, -1, -1, 74, -1, 76, 77, -1, -1,
-1, -1, -1, 83, -1, 85, -1, -1, -1, -1,
90, 91, 92, 93, 94
-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, -1, -1, -1, 74, -1, 76, 77,
78, 79, -1, -1, -1, 83, -1, 85, 11, 12,
-1, -1, 90, 91, 92, 93, 94, -1, -1, 22,
23, 24, -1, 26, -1, -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, -1, -1, 58, 59, -1, -1, -1,
63, 64, 65, 66, 67, -1, -1, -1, -1, -1,
-1, 74, -1, 76, 77, -1, -1, -1, -1, -1,
83, -1, 85, 11, 12, -1, -1, 90, 91, 92,
93, 94, -1, -1, 22, 23, 24, -1, 26, -1,
-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, -1, -1,
58, 59, -1, -1, -1, 63, 64, 65, 66, 67,
-1, -1, -1, -1, -1, -1, 74, -1, 76, 77,
-1, -1, -1, -1, -1, 83, -1, 85, -1, -1,
-1, -1, 90, 91, 92, 93, 94
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison.simple"
......@@ -1332,13 +1337,13 @@ yyreduce:
switch (yyn) {
case 1:
#line 302 "asn1p_y.y"
#line 303 "asn1p_y.y"
{
*(void **)param = yyvsp[0].a_grammar;
;
break;}
case 2:
#line 308 "asn1p_y.y"
#line 309 "asn1p_y.y"
{
yyval.a_grammar = asn1p_new();
checkmem(yyval.a_grammar);
......@@ -1346,14 +1351,14 @@ case 2:
;
break;}
case 3:
#line 313 "asn1p_y.y"
#line 314 "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 334 "asn1p_y.y"
#line 335 "asn1p_y.y"
{
if(yyvsp[-1].a_module) {
......@@ -1370,27 +1375,27 @@ case 4:
;
break;}
case 5:
#line 355 "asn1p_y.y"
#line 356 "asn1p_y.y"
{ yyval.a_oid = 0; ;
break;}
case 6:
#line 356 "asn1p_y.y"
#line 357 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
break;}
case 7:
#line 360 "asn1p_y.y"
#line 361 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
;
break;}
case 8:
#line 363 "asn1p_y.y"
#line 364 "asn1p_y.y"
{
yyval.a_oid = 0;
;
break;}
case 9:
#line 369 "asn1p_y.y"
#line 370 "asn1p_y.y"
{
yyval.a_oid = asn1p_oid_new();
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
......@@ -1399,7 +1404,7 @@ case 9:
;
break;}
case 10:
#line 375 "asn1p_y.y"
#line 376 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
......@@ -1408,74 +1413,74 @@ case 10:
;
break;}
case 11:
#line 384 "asn1p_y.y"
#line 385 "asn1p_y.y"
{ /* iso */
yyval.a_oid_arc.name = yyvsp[0].tv_str;
yyval.a_oid_arc.number = -1;
;
break;}
case 12:
#line 388 "asn1p_y.y"
#line 389 "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 392 "asn1p_y.y"
#line 393 "asn1p_y.y"
{ /* 1 */
yyval.a_oid_arc.name = 0;
yyval.a_oid_arc.number = yyvsp[0].a_int;
;
break;}
case 14:
#line 402 "asn1p_y.y"
#line 403 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
break;}
case 15:
#line 403 "asn1p_y.y"
#line 404 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 16:
#line 412 "asn1p_y.y"
#line 413 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 17:
#line 415 "asn1p_y.y"
#line 416 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
;
break;}
case 18:
#line 424 "asn1p_y.y"
#line 425 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXPLICIT_TAGS;
;
break;}
case 19:
#line 427 "asn1p_y.y"
#line 428 "asn1p_y.y"
{
yyval.a_module_flags = MSF_IMPLICIT_TAGS;
;
break;}
case 20:
#line 430 "asn1p_y.y"
#line 431 "asn1p_y.y"
{
yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
;
break;}
case 21:
#line 433 "asn1p_y.y"
#line 434 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
;
break;}
case 22:
#line 437 "asn1p_y.y"
#line 438 "asn1p_y.y"
{
/* X.680Amd1 specifies TAG and XER */
if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
......@@ -1493,23 +1498,23 @@ case 22:
;
break;}
case 23:
#line 458 "asn1p_y.y"
#line 459 "asn1p_y.y"
{ yyval.a_module = 0; ;
break;}
case 24:
#line 459 "asn1p_y.y"
#line 460 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 25:
#line 468 "asn1p_y.y"
#line 469 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 26:
#line 471 "asn1p_y.y"
#line 472 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
......@@ -1539,13 +1544,13 @@ case 26:
;
break;}
case 27:
#line 504 "asn1p_y.y"
#line 505 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 28:
#line 507 "asn1p_y.y"
#line 508 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1557,7 +1562,7 @@ case 28:
;
break;}
case 29:
#line 516 "asn1p_y.y"
#line 517 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1567,7 +1572,7 @@ case 29:
;
break;}
case 30:
#line 523 "asn1p_y.y"
#line 524 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1577,7 +1582,7 @@ case 30:
;
break;}
case 31:
#line 536 "asn1p_y.y"
#line 537 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1587,11 +1592,11 @@ case 31:
;
break;}
case 32:
#line 544 "asn1p_y.y"
#line 545 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
break;}
case 33:
#line 545 "asn1p_y.y"
#line 546 "asn1p_y.y"
{
fprintf(stderr,
"WARNING: ENCODING-CONTROL %s "
......@@ -1602,7 +1607,7 @@ case 33:
;
break;}
case 34:
#line 557 "asn1p_y.y"
#line 558 "asn1p_y.y"
{
return yyerror(
"Attempt to redefine a standard basic type, "
......@@ -1611,19 +1616,19 @@ case 34:
;
break;}
case 35:
#line 571 "asn1p_y.y"
#line 572 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
;
break;}
case 36:
#line 577 "asn1p_y.y"
#line 578 "asn1p_y.y"
{
return yyerror("Empty IMPORTS list");
;
break;}
case 37:
#line 583 "asn1p_y.y"
#line 584 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
......@@ -1631,14 +1636,14 @@ case 37:
;
break;}
case 38:
#line 588 "asn1p_y.y"
#line 589 "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 595 "asn1p_y.y"
#line 596 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-3].a_xports;
yyval.a_xports->from = yyvsp[-1].tv_str;
......@@ -1647,7 +1652,7 @@ case 39:
;
break;}
case 40:
#line 604 "asn1p_y.y"
#line 605 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
checkmem(yyval.a_xports);
......@@ -1655,14 +1660,14 @@ case 40:
;
break;}
case 41:
#line 609 "asn1p_y.y"
#line 610 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 42:
#line 616 "asn1p_y.y"
#line 617 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1671,7 +1676,7 @@ case 42:
;
break;}
case 43:
#line 622 "asn1p_y.y"
#line 623 "asn1p_y.y"
{ /* Completely equivalent to above */
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1680,7 +1685,7 @@ case 43:
;
break;}
case 44:
#line 628 "asn1p_y.y"
#line 629 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1689,19 +1694,19 @@ case 44:
;
break;}
case 45:
#line 637 "asn1p_y.y"
#line 638 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-1].a_xports;
;
break;}
case 46:
#line 640 "asn1p_y.y"
#line 641 "asn1p_y.y"
{
yyval.a_xports = 0;
;
break;}
case 47:
#line 643 "asn1p_y.y"
#line 644 "asn1p_y.y"
{
/* Empty EXPORTS clause effectively prohibits export. */
yyval.a_xports = asn1p_xports_new();
......@@ -1709,7 +1714,7 @@ case 47:
;
break;}
case 48:
#line 651 "asn1p_y.y"
#line 652 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
assert(yyval.a_xports);
......@@ -1717,14 +1722,14 @@ case 48:
;
break;}
case 49:
#line 656 "asn1p_y.y"
#line 657 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 50:
#line 663 "asn1p_y.y"
#line 664 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1733,7 +1738,7 @@ case 50:
;
break;}
case 51:
#line 669 "asn1p_y.y"
#line 670 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1742,7 +1747,7 @@ case 51:
;
break;}
case 52:
#line 675 "asn1p_y.y"
#line 676 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1751,7 +1756,7 @@ case 52:
;
break;}
case 53:
#line 685 "asn1p_y.y"
#line 686 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-4].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -1761,7 +1766,7 @@ case 53:
;
break;}
case 54:
#line 695 "asn1p_y.y"
#line 696 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1771,7 +1776,7 @@ case 54:
;
break;}
case 55:
#line 702 "asn1p_y.y"
#line 703 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1780,36 +1785,36 @@ case 55:
;
break;}
case 56:
#line 711 "asn1p_y.y"
#line 712 "asn1p_y.y"
{ ;
break;}
case 57:
#line 712 "asn1p_y.y"
#line 713 "asn1p_y.y"
{
;
break;}
case 58:
#line 723 "asn1p_y.y"
#line 724 "asn1p_y.y"
{
;
break;}
case 59:
#line 725 "asn1p_y.y"
#line 726 "asn1p_y.y"
{
;
break;}
case 60:
#line 730 "asn1p_y.y"
#line 731 "asn1p_y.y"
{
;
break;}
case 61:
#line 732 "asn1p_y.y"
#line 733 "asn1p_y.y"
{
;
break;}
case 62:
#line 748 "asn1p_y.y"
#line 749 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1820,7 +1825,7 @@ case 62:
;
break;}
case 63:
#line 756 "asn1p_y.y"
#line 757 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
......@@ -1829,7 +1834,7 @@ case 63:
;
break;}
case 64:
#line 762 "asn1p_y.y"
#line 763 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
......@@ -1838,7 +1843,7 @@ case 64:
;
break;}
case 65:
#line 778 "asn1p_y.y"
#line 779 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -1848,7 +1853,7 @@ case 65:
;
break;}
case 66:
#line 788 "asn1p_y.y"
#line 789 "asn1p_y.y"
{
int ret;
yyval.a_plist = asn1p_paramlist_new(yylineno);
......@@ -1860,7 +1865,7 @@ case 66:
;
break;}
case 67:
#line 797 "asn1p_y.y"
#line 798 "asn1p_y.y"
{
int ret;
yyval.a_plist = yyvsp[-2].a_plist;
......@@ -1871,14 +1876,14 @@ case 67:
;
break;}
case 68:
#line 808 "asn1p_y.y"
#line 809 "asn1p_y.y"
{
yyval.a_parg.governor = NULL;
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
case 69:
#line 812 "asn1p_y.y"
#line 813 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
......@@ -1888,7 +1893,7 @@ case 69:
;
break;}
case 70:
#line 819 "asn1p_y.y"
#line 820 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
......@@ -1898,7 +1903,7 @@ case 70:
;
break;}
case 71:
#line 826 "asn1p_y.y"
#line 827 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
......@@ -1909,7 +1914,7 @@ case 71:
;
break;}
case 72:
#line 837 "asn1p_y.y"
#line 838 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1917,20 +1922,20 @@ case 72:
;
break;}
case 73:
#line 842 "asn1p_y.y"
#line 843 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 74:
#line 849 "asn1p_y.y"
#line 850 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 75:
#line 852 "asn1p_y.y"
#line 853 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1940,15 +1945,15 @@ case 75:
;
break;}
case 76:
#line 876 "asn1p_y.y"
#line 877 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
break;}
case 77:
#line 877 "asn1p_y.y"
#line 878 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
break;}
case 78:
#line 880 "asn1p_y.y"
#line 881 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1956,14 +1961,14 @@ case 78:
;
break;}
case 79:
#line 885 "asn1p_y.y"
#line 886 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 80:
#line 892 "asn1p_y.y"
#line 893 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -1972,7 +1977,7 @@ case 80:
;
break;}
case 81:
#line 898 "asn1p_y.y"
#line 899 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1982,13 +1987,13 @@ case 81:
;
break;}
case 82:
#line 905 "asn1p_y.y"
#line 906 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 83:
#line 911 "asn1p_y.y"
#line 912 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -1996,14 +2001,14 @@ case 83:
;
break;}
case 84:
#line 916 "asn1p_y.y"
#line 917 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 85:
#line 923 "asn1p_y.y"
#line 924 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
......@@ -2011,13 +2016,13 @@ case 85:
;
break;}
case 86:
#line 928 "asn1p_y.y"
#line 929 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 87:
#line 934 "asn1p_y.y"
#line 935 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
checkmem(yyval.a_expr);
......@@ -2027,15 +2032,15 @@ case 87:
;
break;}
case 88:
#line 944 "asn1p_y.y"
#line 945 "asn1p_y.y"
{ yyval.a_int = 0; ;
break;}
case 89:
#line 945 "asn1p_y.y"
#line 946 "asn1p_y.y"
{ yyval.a_int = 1; ;
break;}
case 90:
#line 949 "asn1p_y.y"
#line 950 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2045,14 +2050,14 @@ case 90:
;
break;}
case 91:
#line 956 "asn1p_y.y"
#line 957 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 92:
#line 963 "asn1p_y.y"
#line 964 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2063,7 +2068,7 @@ case 92:
;
break;}
case 93:
#line 971 "asn1p_y.y"
#line 972 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
......@@ -2072,7 +2077,7 @@ case 93:
;
break;}
case 94:
#line 977 "asn1p_y.y"
#line 978 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
......@@ -2090,47 +2095,47 @@ case 94:
;
break;}
case 95:
#line 995 "asn1p_y.y"
#line 996 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
break;}
case 96:
#line 996 "asn1p_y.y"
#line 997 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[0].a_wsynt;
;
break;}
case 97:
#line 1003 "asn1p_y.y"
#line 1004 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
break;}
case 98:
#line 1005 "asn1p_y.y"
#line 1006 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
;
break;}
case 99:
#line 1011 "asn1p_y.y"
#line 1012 "asn1p_y.y"
{
yyval.a_wsynt = asn1p_wsyntx_new();
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 100:
#line 1015 "asn1p_y.y"
#line 1016 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 101:
#line 1022 "asn1p_y.y"
#line 1023 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
;
break;}
case 102:
#line 1025 "asn1p_y.y"
#line 1026 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2142,7 +2147,7 @@ case 102:
;
break;}
case 103:
#line 1037 "asn1p_y.y"
#line 1038 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2153,7 +2158,7 @@ case 103:
;
break;}
case 104:
#line 1045 "asn1p_y.y"
#line 1046 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2165,7 +2170,7 @@ case 104:
;
break;}
case 105:
#line 1054 "asn1p_y.y"
#line 1055 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2177,7 +2182,7 @@ case 105:
;
break;}
case 106:
#line 1066 "asn1p_y.y"
#line 1067 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyval.a_expr->tag = yyvsp[-2].a_tag;
......@@ -2199,13 +2204,13 @@ case 106:
;
break;}
case 107:
#line 1088 "asn1p_y.y"
#line 1089 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 108:
#line 1091 "asn1p_y.y"
#line 1092 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
......@@ -2214,7 +2219,7 @@ case 108:
;
break;}
case 109:
#line 1097 "asn1p_y.y"
#line 1098 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
......@@ -2223,7 +2228,7 @@ case 109:
;
break;}
case 110:
#line 1103 "asn1p_y.y"
#line 1104 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
......@@ -2232,7 +2237,7 @@ case 110:
;
break;}
case 111:
#line 1109 "asn1p_y.y"
#line 1110 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2245,7 +2250,7 @@ case 111:
;
break;}
case 112:
#line 1119 "asn1p_y.y"
#line 1120 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2258,7 +2263,7 @@ case 112:
;
break;}
case 113:
#line 1129 "asn1p_y.y"
#line 1130 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2267,7 +2272,7 @@ case 113:
;
break;}
case 114:
#line 1135 "asn1p_y.y"
#line 1136 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
......@@ -2281,7 +2286,7 @@ case 114:
;
break;}
case 115:
#line 1149 "asn1p_y.y"
#line 1150 "asn1p_y.y"
{
int ret;
yyval.a_expr = yyvsp[-1].a_expr;
......@@ -2298,7 +2303,7 @@ case 115:
;
break;}
case 116:
#line 1173 "asn1p_y.y"
#line 1174 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2308,7 +2313,7 @@ case 116:
;
break;}
case 117:
#line 1180 "asn1p_y.y"
#line 1181 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2318,7 +2323,7 @@ case 117:
;
break;}
case 118:
#line 1195 "asn1p_y.y"
#line 1196 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2329,7 +2334,7 @@ case 118:
;
break;}
case 119:
#line 1203 "asn1p_y.y"
#line 1204 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2342,7 +2347,7 @@ case 119:
;
break;}
case 120:
#line 1213 "asn1p_y.y"
#line 1214 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2355,7 +2360,7 @@ case 120:
;
break;}
case 121:
#line 1223 "asn1p_y.y"
#line 1224 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2368,7 +2373,7 @@ case 121:
;
break;}
case 122:
#line 1233 "asn1p_y.y"
#line 1234 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2379,7 +2384,7 @@ case 122:
;
break;}
case 123:
#line 1241 "asn1p_y.y"
#line 1242 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
......@@ -2401,7 +2406,7 @@ case 123:
;
break;}
case 124:
#line 1263 "asn1p_y.y"
#line 1264 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
......@@ -2412,7 +2417,7 @@ case 124:
;
break;}
case 125:
#line 1271 "asn1p_y.y"
#line 1272 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
......@@ -2422,21 +2427,21 @@ case 125:
;
break;}
case 128:
#line 1285 "asn1p_y.y"
#line 1286 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 129:
#line 1290 "asn1p_y.y"
#line 1291 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
case 130:
#line 1303 "asn1p_y.y"
#line 1304 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
......@@ -2446,7 +2451,7 @@ case 130:
;
break;}
case 131:
#line 1313 "asn1p_y.y"
#line 1314 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
......@@ -2456,11 +2461,11 @@ case 131:
;
break;}
case 132:
#line 1320 "asn1p_y.y"
#line 1321 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 133:
#line 1320 "asn1p_y.y"
#line 1321 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
......@@ -2468,7 +2473,7 @@ case 133:
;
break;}
case 134:
#line 1325 "asn1p_y.y"
#line 1326 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
......@@ -2476,7 +2481,7 @@ case 134:
;
break;}
case 135:
#line 1330 "asn1p_y.y"
#line 1331 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
......@@ -2484,7 +2489,7 @@ case 135:
;
break;}
case 136:
#line 1335 "asn1p_y.y"
#line 1336 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
......@@ -2492,40 +2497,40 @@ case 136:
;
break;}
case 137:
#line 1340 "asn1p_y.y"
#line 1341 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
case 138:
#line 1344 "asn1p_y.y"
#line 1345 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
case 139:
#line 1348 "asn1p_y.y"
#line 1349 "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 1352 "asn1p_y.y"
#line 1353 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 141:
#line 1355 "asn1p_y.y"
#line 1356 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 142:
#line 1361 "asn1p_y.y"
#line 1362 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2539,7 +2544,7 @@ case 142:
;
break;}
case 143:
#line 1372 "asn1p_y.y"
#line 1373 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2556,7 +2561,7 @@ case 143:
;
break;}
case 144:
#line 1389 "asn1p_y.y"
#line 1390 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
......@@ -2569,7 +2574,7 @@ case 144:
;
break;}
case 145:
#line 1399 "asn1p_y.y"
#line 1400 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
......@@ -2584,71 +2589,71 @@ case 145:
;
break;}
case 146:
#line 1414 "asn1p_y.y"
#line 1415 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
case 147:
#line 1415 "asn1p_y.y"
#line 1416 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
case 148:
#line 1416 "asn1p_y.y"
#line 1417 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
case 149:
#line 1417 "asn1p_y.y"
#line 1418 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 150:
#line 1418 "asn1p_y.y"
#line 1419 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
case 151:
#line 1419 "asn1p_y.y"
#line 1420 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
case 152:
#line 1420 "asn1p_y.y"
#line 1421 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
case 153:
#line 1421 "asn1p_y.y"
#line 1422 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
case 154:
#line 1422 "asn1p_y.y"
#line 1423 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
case 155:
#line 1423 "asn1p_y.y"
#line 1424 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
case 156:
#line 1424 "asn1p_y.y"
#line 1425 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
case 157:
#line 1425 "asn1p_y.y"
#line 1426 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
case 158:
#line 1426 "asn1p_y.y"
#line 1427 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 159:
#line 1433 "asn1p_y.y"
#line 1434 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
case 160:
#line 1434 "asn1p_y.y"
#line 1435 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
case 161:
#line 1435 "asn1p_y.y"
#line 1436 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
case 162:
#line 1439 "asn1p_y.y"
#line 1440 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2657,7 +2662,7 @@ case 162:
;
break;}
case 163:
#line 1445 "asn1p_y.y"
#line 1446 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
......@@ -2670,91 +2675,91 @@ case 163:
;
break;}
case 164:
#line 1458 "asn1p_y.y"
#line 1459 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
case 165:
#line 1459 "asn1p_y.y"
#line 1460 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
case 166:
#line 1463 "asn1p_y.y"
#line 1464 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
case 167:
#line 1467 "asn1p_y.y"
#line 1468 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
case 168:
#line 1468 "asn1p_y.y"
#line 1469 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
case 169:
#line 1469 "asn1p_y.y"
#line 1470 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
case 170:
#line 1470 "asn1p_y.y"
#line 1471 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
case 171:
#line 1471 "asn1p_y.y"
#line 1472 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
case 172:
#line 1475 "asn1p_y.y"
#line 1476 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
case 173:
#line 1476 "asn1p_y.y"
#line 1477 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
case 174:
#line 1477 "asn1p_y.y"
#line 1478 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
case 175:
#line 1478 "asn1p_y.y"
#line 1479 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
case 176:
#line 1482 "asn1p_y.y"
#line 1483 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
case 177:
#line 1483 "asn1p_y.y"
#line 1484 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
case 183:
#line 1495 "asn1p_y.y"
#line 1496 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
case 184:
#line 1496 "asn1p_y.y"
#line 1497 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 185:
#line 1502 "asn1p_y.y"
#line 1503 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
case 186:
#line 1505 "asn1p_y.y"
#line 1506 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
......@@ -2764,25 +2769,25 @@ case 186:
;
break;}
case 187:
#line 1515 "asn1p_y.y"
#line 1516 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
case 188:
#line 1518 "asn1p_y.y"
#line 1519 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 189:
#line 1524 "asn1p_y.y"
#line 1525 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 190:
#line 1527 "asn1p_y.y"
#line 1528 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2791,7 +2796,7 @@ case 190:
;
break;}
case 191:
#line 1533 "asn1p_y.y"
#line 1534 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2802,31 +2807,31 @@ case 191:
;
break;}
case 192:
#line 1544 "asn1p_y.y"
#line 1545 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 193:
#line 1547 "asn1p_y.y"
#line 1548 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 194:
#line 1550 "asn1p_y.y"
#line 1551 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 195:
#line 1553 "asn1p_y.y"
#line 1554 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 196:
#line 1559 "asn1p_y.y"
#line 1560 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2837,7 +2842,7 @@ case 196:
;
break;}
case 197:
#line 1567 "asn1p_y.y"
#line 1568 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2848,7 +2853,7 @@ case 197:
;
break;}
case 198:
#line 1575 "asn1p_y.y"
#line 1576 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2857,7 +2862,16 @@ case 198:
;
break;}
case 199:
#line 1581 "asn1p_y.y"
#line 1582 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
yyval.a_constr->type = ACT_EL_TYPE;
yyval.a_constr->containedSubtype = yyvsp[0].a_value;
;
break;}
case 200:
#line 1588 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2866,8 +2880,8 @@ case 199:
yyval.a_constr->range_stop = yyvsp[0].a_value;
;
break;}
case 200:
#line 1588 "asn1p_y.y"
case 201:
#line 1595 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2877,8 +2891,8 @@ case 200:
yyval.a_constr->range_start->type = ATV_MIN;
;
break;}
case 201:
#line 1596 "asn1p_y.y"
case 202:
#line 1603 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2888,8 +2902,8 @@ case 201:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
case 202:
#line 1604 "asn1p_y.y"
case 203:
#line 1611 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2900,77 +2914,77 @@ case 202:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
case 203:
#line 1613 "asn1p_y.y"
case 204:
#line 1620 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 204:
#line 1616 "asn1p_y.y"
case 205:
#line 1623 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 205:
#line 1622 "asn1p_y.y"
case 206:
#line 1629 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
case 206:
#line 1623 "asn1p_y.y"
case 207:
#line 1630 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
case 207:
#line 1624 "asn1p_y.y"
case 208:
#line 1631 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
case 208:
#line 1625 "asn1p_y.y"
case 209:
#line 1632 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
case 209:
#line 1629 "asn1p_y.y"
case 210:
#line 1636 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
case 210:
#line 1632 "asn1p_y.y"
case 211:
#line 1639 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
case 211:
#line 1638 "asn1p_y.y"
case 212:
#line 1645 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
case 212:
#line 1643 "asn1p_y.y"
case 213:
#line 1650 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
case 213:
#line 1648 "asn1p_y.y"
case 214:
#line 1655 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 214:
#line 1651 "asn1p_y.y"
case 215:
#line 1658 "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 215:
#line 1655 "asn1p_y.y"
case 216:
#line 1662 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2983,8 +2997,8 @@ case 215:
free(yyvsp[0].tv_str);
;
break;}
case 216:
#line 1666 "asn1p_y.y"
case 217:
#line 1676 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2997,34 +3011,34 @@ case 216:
free(yyvsp[0].tv_str);
;
break;}
case 217:
#line 1680 "asn1p_y.y"
case 218:
#line 1690 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
case 218:
#line 1686 "asn1p_y.y"
case 219:
#line 1696 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 219:
#line 1689 "asn1p_y.y"
case 220:
#line 1699 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 220:
#line 1695 "asn1p_y.y"
case 221:
#line 1705 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
yyval.a_constr->type = ACT_EL_EXT;
;
break;}
case 221:
#line 1700 "asn1p_y.y"
case 222:
#line 1710 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3033,46 +3047,46 @@ case 221:
yyval.a_constr->presence = yyvsp[0].a_pres;
;
break;}
case 222:
#line 1713 "asn1p_y.y"
case 223:
#line 1723 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
case 223:
#line 1714 "asn1p_y.y"
case 224:
#line 1724 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
case 224:
#line 1718 "asn1p_y.y"
case 225:
#line 1728 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
case 225:
#line 1721 "asn1p_y.y"
case 226:
#line 1731 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
case 226:
#line 1724 "asn1p_y.y"
case 227:
#line 1734 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
case 227:
#line 1730 "asn1p_y.y"
case 228:
#line 1740 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 228:
#line 1733 "asn1p_y.y"
case 229:
#line 1743 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 229:
#line 1742 "asn1p_y.y"
case 230:
#line 1752 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
......@@ -3086,14 +3100,14 @@ case 229:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
case 230:
#line 1757 "asn1p_y.y"
case 231:
#line 1767 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 231:
#line 1763 "asn1p_y.y"
case 232:
#line 1773 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3101,8 +3115,8 @@ case 231:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
case 232:
#line 1769 "asn1p_y.y"
case 233:
#line 1779 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -3112,8 +3126,8 @@ case 232:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
case 233:
#line 1783 "asn1p_y.y"
case 234:
#line 1793 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
......@@ -3126,8 +3140,8 @@ case 233:
free(yyvsp[0].tv_str);
;
break;}
case 234:
#line 1794 "asn1p_y.y"
case 235:
#line 1804 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
......@@ -3141,14 +3155,14 @@ case 234:
free(yyvsp[0].tv_str);
;
break;}
case 235:
#line 1810 "asn1p_y.y"
case 236:
#line 1820 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 236:
#line 1813 "asn1p_y.y"
case 237:
#line 1823 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
......@@ -3159,61 +3173,61 @@ case 236:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
case 237:
#line 1831 "asn1p_y.y"
case 238:
#line 1841 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
case 238:
#line 1835 "asn1p_y.y"
case 239:
#line 1845 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
case 239:
#line 1839 "asn1p_y.y"
case 240:
#line 1849 "asn1p_y.y"
{
yyval.a_marker.flags = EM_OPTIONAL;
yyval.a_marker.default_value = 0;
;
break;}
case 240:
#line 1843 "asn1p_y.y"
case 241:
#line 1853 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
case 241:
#line 1866 "asn1p_y.y"
case 242:
#line 1876 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
case 242:
#line 1870 "asn1p_y.y"
case 243:
#line 1880 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
case 243:
#line 1876 "asn1p_y.y"
case 244:
#line 1886 "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 244:
#line 1881 "asn1p_y.y"
case 245:
#line 1891 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 245:
#line 1888 "asn1p_y.y"
case 246:
#line 1898 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3222,8 +3236,8 @@ case 245:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
case 246:
#line 1895 "asn1p_y.y"
case 247:
#line 1905 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3233,8 +3247,8 @@ case 246:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 247:
#line 1903 "asn1p_y.y"
case 248:
#line 1913 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3244,8 +3258,8 @@ case 247:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 248:
#line 1911 "asn1p_y.y"
case 249:
#line 1921 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3254,8 +3268,8 @@ case 248:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
case 249:
#line 1918 "asn1p_y.y"
case 250:
#line 1928 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3265,103 +3279,103 @@ case 249:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
case 250:
#line 1929 "asn1p_y.y"
case 251:
#line 1939 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 251:
#line 1933 "asn1p_y.y"
case 252:
#line 1943 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 252:
#line 1964 "asn1p_y.y"
case 253:
#line 1974 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
case 253:
#line 1965 "asn1p_y.y"
case 254:
#line 1975 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
case 254:
#line 1969 "asn1p_y.y"
case 255:
#line 1979 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
;
break;}
case 255:
#line 1976 "asn1p_y.y"
case 256:
#line 1986 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-2].a_tag;
yyval.a_tag.tag_value = yyvsp[-1].a_int;
;
break;}
case 256:
#line 1982 "asn1p_y.y"
case 257:
#line 1992 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
break;}
case 257:
#line 1983 "asn1p_y.y"
case 258:
#line 1993 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
break;}
case 258:
#line 1984 "asn1p_y.y"
case 259:
#line 1994 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
break;}
case 259:
#line 1985 "asn1p_y.y"
case 260:
#line 1995 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
break;}
case 260:
#line 1989 "asn1p_y.y"
case 261:
#line 1999 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
break;}
case 261:
#line 1990 "asn1p_y.y"
case 262:
#line 2000 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
break;}
case 262:
#line 1991 "asn1p_y.y"
case 263:
#line 2001 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
break;}
case 263:
#line 1995 "asn1p_y.y"
case 264:
#line 2005 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 264:
#line 1999 "asn1p_y.y"
case 265:
#line 2009 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 265:
#line 2007 "asn1p_y.y"
case 266:
#line 2017 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 266:
#line 2014 "asn1p_y.y"
case 267:
#line 2024 "asn1p_y.y"
{ yyval.tv_str = 0; ;
break;}
case 267:
#line 2015 "asn1p_y.y"
case 268:
#line 2025 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 268:
#line 2020 "asn1p_y.y"
case 269:
#line 2030 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
......@@ -3589,7 +3603,7 @@ yyerrhandle:
}
return 1;
}
#line 2026 "asn1p_y.y"
#line 2036 "asn1p_y.y"
......
......@@ -282,7 +282,8 @@ static asn1p_value_t *
%type <a_constr> ComponentRelationConstraint
%type <a_constr> AtNotationList
%type <a_ref> AtNotationElement
%type <a_value> ConstraintValue
%type <a_value> SingleValue
%type <a_value> ContainedSubtype
%type <a_ctype> ConstraintSpec
%type <a_ctype> ConstraintRangeSpec
%type <a_wsynt> optWithSyntax
......@@ -1572,20 +1573,26 @@ ConstraintSubtypeElement:
ret = asn1p_constraint_insert($$, $2);
checkmem(ret == 0);
}
| ConstraintValue {
| SingleValue {
$$ = asn1p_constraint_new(yylineno);
checkmem($$);
$$->type = ACT_EL_VALUE;
$$->value = $1;
}
| ConstraintValue ConstraintRangeSpec ConstraintValue {
| ContainedSubtype {
$$ = asn1p_constraint_new(yylineno);
checkmem($$);
$$->type = ACT_EL_TYPE;
$$->containedSubtype = $1;
}
| SingleValue ConstraintRangeSpec SingleValue {
$$ = asn1p_constraint_new(yylineno);
checkmem($$);
$$->type = $2;
$$->range_start = $1;
$$->range_stop = $3;
}
| TOK_MIN ConstraintRangeSpec ConstraintValue {
| TOK_MIN ConstraintRangeSpec SingleValue {
$$ = asn1p_constraint_new(yylineno);
checkmem($$);
$$->type = $2;
......@@ -1593,7 +1600,7 @@ ConstraintSubtypeElement:
$$->range_stop = $3;
$$->range_start->type = ATV_MIN;
}
| ConstraintValue ConstraintRangeSpec TOK_MAX {
| SingleValue ConstraintRangeSpec TOK_MAX {
$$ = asn1p_constraint_new(yylineno);
checkmem($$);
$$->type = $2;
......@@ -1634,7 +1641,7 @@ ConstraintSpec:
}
;
ConstraintValue:
SingleValue:
TOK_FALSE {
$$ = asn1p_value_fromint(0);
checkmem($$);
......@@ -1663,7 +1670,10 @@ ConstraintValue:
checkmem($$);
free($1);
}
| TypeRefName {
;
ContainedSubtype:
TypeRefName {
asn1p_ref_t *ref;
int ret;
ref = asn1p_ref_new(yylineno);
......
......@@ -284,6 +284,9 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
printf("(");
switch(ct->type) {
case ACT_EL_TYPE:
asn1print_value(ct->value, flags);
break;
case ACT_EL_VALUE:
asn1print_value(ct->value, flags);
break;
......
......@@ -12,11 +12,15 @@ ModuleTestConstraint
BEGIN
-- external reference
Type1 ::= IA5String (SIZE(1..10,...))(FROM("a".."z"|"#"))
Type0 ::= IA5String (Type6)
Type1 ::= IA5String (SIZE(1..ten,...))(FROM("a".."z"|"#",...))
Type2 ::= IA5String (SIZE (MIN..4)|FROM ("abc"))
Type3 ::= BMPString (SIZE(1))
Type4 ::= INTEGER (1..MAX)
Type5 ::= BOOLEAN (TRUE|FALSE)
Type6 ::= IA5String (Type1)
ten INTEGER ::= 10
v1 Type1 ::= "#value wi
th ""double quotes"""
......
......@@ -3,7 +3,9 @@ ModuleTestConstraint { iso org(3) dod(6) internet(1) private(4) enterprise(1)
DEFINITIONS ::=
BEGIN
Type1 ::= IA5String (SIZE(1..10,...))(FROM("a".."z" | "#"))
Type0 ::= IA5String (((SIZE(1..10))(FROM("a".."z" | "#"))))
Type1 ::= IA5String (SIZE(1..10,...))(FROM("a".."z" | "#",...))
Type2 ::= IA5String (SIZE(MIN..4) | FROM("abc"))
......@@ -13,6 +15,10 @@ Type4 ::= INTEGER (1..MAX)
Type5 ::= BOOLEAN (TRUE | FALSE)
Type6 ::= IA5String ((SIZE(1..10))(FROM("a".."z" | "#")))
ten INTEGER ::= 10
v1 Type1 ::= "#value with ""double quotes"""
END
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment