Commit 1893ddfb authored by Lev Walkin's avatar Lev Walkin

parsing support for CONSTRAINED BY

parent 6ffb0141
......@@ -5,6 +5,7 @@
* More RFC variations supported in crfc2asn1.pl.
* Refined string values compatibility. (Test cases 77, 78).
* Support for ContainedSubtype constraints. (Test case 16).
* Parsing support for CONSTRAINED BY. (Test case 79).
0.9.12: 2005-Mar-10
......
......@@ -10,9 +10,9 @@ which is already completed. Also see #3.2.
2. MEDIUM:
2.1 Support for DEFAULT encoding and decoding, at least in INTEGER/ENUMERATED types.
2.2 Support for EXTERNAL, EMBEDDED-PDV and CHARACTER STRING types.
2.1 Support for EXTERNAL, EMBEDDED-PDV and CHARACTER STRING types.
Requires something from 1.2 (Information Object Classes).
3. MINOR:
3.1 Parsing of CONSTRAINED BY clauses
3.1 Support for DEFAULT encoding and decoding, at least in INTEGER/ENUMERATED types.
......@@ -77,6 +77,8 @@ asn1constraint_compatible(asn1p_expr_type_e expr_type,
default: break;
}
return 0;
case ACT_CT_CTDBY:
return 1;
case ACT_CA_SET:
case ACT_CA_CRC:
case ACT_CA_CSV:
......
......@@ -137,6 +137,8 @@ asn1p_constraint_type2str(enum asn1p_constraint_type_e type) {
return "SingleTypeConstraint";
case ACT_CT_WCOMPS:
return "MultipleTypeConstraints";
case ACT_CT_CTDBY:
return "UserDefinedConstraint";
case ACT_CA_SET:
return "SET";
case ACT_CA_CRC:
......
......@@ -25,6 +25,7 @@ typedef struct asn1p_constraint_s {
ACT_CT_FROM, /* FROM constraint type */
ACT_CT_WCOMP, /* WITH COMPONENT */
ACT_CT_WCOMPS, /* WITH COMPONENTS */
ACT_CT_CTDBY, /* CONSTRAINED BY */
/*
* Arrays of constraints.
*/
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -269,7 +269,7 @@ CHOICE return TOK_CHOICE;
CLASS return TOK_CLASS;
COMPONENT return TOK_COMPONENT;
COMPONENTS return TOK_COMPONENTS;
CONSRAINED return TOK_CONSTRAINED;
CONSTRAINED return TOK_CONSTRAINED;
CONTAINING return TOK_CONTAINING;
DEFAULT return TOK_DEFAULT;
DEFINED {
......
......@@ -204,11 +204,11 @@ typedef union {
#define YYFINAL 418
#define YYFINAL 423
#define YYFLAG -32768
#define YYNTBASE 116
#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 218)
#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 219)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
......@@ -271,64 +271,65 @@ static const short yyprhs[] = { 0,
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, 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
576, 580, 584, 588, 590, 592, 593, 599, 601, 604,
607, 611, 613, 615, 617, 619, 621, 623, 625, 627,
633, 635, 639, 641, 645, 646, 648, 650, 652, 654,
656, 658, 662, 667, 669, 673, 676, 680, 682, 686,
687, 689, 691, 694, 697, 701, 703, 707, 709, 714,
719, 721, 723, 725, 727, 728, 730, 733, 738, 739,
741, 743, 745, 746, 748, 750, 752, 754, 756, 757,
759
};
static const short yyrhs[] = { 117,
0, 118, 0, 117, 118, 0, 214, 119, 34, 123,
0, 118, 0, 117, 118, 0, 215, 119, 34, 123,
3, 21, 126, 39, 0, 0, 120, 0, 103, 121,
104, 0, 103, 104, 0, 122, 0, 121, 122, 0,
217, 0, 217, 105, 9, 106, 0, 9, 0, 0,
218, 0, 218, 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, 214, 119, 0, 134, 0, 133, 108, 134, 0,
214, 0, 214, 103, 104, 0, 217, 0, 42, 136,
46, 215, 119, 0, 134, 0, 133, 108, 134, 0,
215, 0, 215, 103, 104, 0, 218, 0, 42, 136,
107, 0, 42, 17, 107, 0, 42, 107, 0, 137,
0, 136, 108, 137, 0, 214, 0, 214, 103, 104,
0, 217, 0, 214, 139, 3, 103, 140, 104, 0,
0, 136, 108, 137, 0, 215, 0, 215, 103, 104,
0, 218, 0, 215, 139, 3, 103, 140, 104, 0,
165, 0, 175, 0, 0, 141, 0, 142, 0, 141,
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,
108, 142, 0, 102, 0, 186, 0, 215, 3, 210,
87, 0, 215, 3, 163, 0, 215, 3, 153, 0,
215, 103, 144, 104, 3, 163, 0, 145, 0, 144,
108, 145, 0, 215, 0, 215, 109, 218, 0, 215,
109, 215, 0, 175, 109, 218, 0, 147, 0, 146,
108, 147, 0, 163, 0, 218, 0, 0, 149, 0,
150, 0, 149, 108, 150, 0, 218, 163, 204, 0,
30, 68, 163, 0, 162, 0, 152, 0, 151, 108,
152, 0, 217, 163, 0, 162, 0, 28, 103, 155,
152, 0, 218, 163, 0, 162, 0, 28, 103, 155,
104, 157, 0, 0, 88, 0, 156, 0, 155, 108,
156, 0, 168, 203, 0, 168, 163, 154, 203, 0,
168, 168, 154, 203, 0, 0, 158, 0, 0, 95,
156, 0, 168, 204, 0, 168, 163, 154, 204, 0,
168, 168, 154, 204, 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, 208, 0, 209, 164, 182, 0, 177,
0, 102, 110, 209, 0, 210, 164, 182, 0, 177,
0, 27, 103, 151, 104, 0, 78, 103, 148, 104,
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,
0, 79, 103, 148, 104, 0, 78, 182, 68, 217,
210, 164, 0, 79, 182, 68, 217, 210, 164, 0,
18, 0, 18, 35, 25, 218, 0, 215, 103, 146,
104, 0, 165, 0, 56, 68, 165, 0, 11, 0,
11, 111, 214, 0, 215, 111, 214, 0, 11, 111,
217, 0, 215, 0, 215, 111, 166, 0, 167, 0,
11, 111, 215, 0, 216, 111, 215, 0, 11, 111,
218, 0, 216, 0, 216, 111, 166, 0, 167, 0,
166, 111, 167, 0, 169, 0, 169, 0, 13, 0,
14, 0, 217, 139, 3, 171, 0, 217, 109, 171,
14, 0, 218, 139, 3, 171, 0, 218, 109, 171,
0, 0, 103, 172, 174, 0, 63, 0, 45, 0,
86, 0, 5, 0, 7, 0, 6, 0, 208, 0,
173, 0, 217, 0, 214, 111, 217, 0, 4, 0,
86, 0, 5, 0, 7, 0, 6, 0, 209, 0,
173, 0, 218, 0, 215, 111, 218, 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, 205, 0, 23, 0, 48, 0, 49,
175, 0, 176, 206, 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,
......@@ -336,27 +337,27 @@ static const short yyrhs[] = { 117,
185, 106, 0, 105, 185, 106, 0, 184, 105, 185,
106, 0, 186, 0, 186, 108, 102, 0, 186, 108,
102, 108, 186, 0, 187, 0, 186, 179, 187, 0,
186, 180, 187, 0, 187, 181, 187, 0, 189, 105,
185, 106, 0, 105, 185, 106, 0, 190, 0, 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
186, 180, 187, 0, 187, 181, 187, 0, 190, 105,
185, 106, 0, 105, 185, 106, 0, 191, 0, 192,
0, 191, 189, 191, 0, 61, 189, 191, 0, 191,
189, 60, 0, 61, 189, 60, 0, 198, 0, 193,
0, 0, 31, 25, 103, 188, 174, 0, 101, 0,
101, 112, 0, 112, 101, 0, 112, 101, 112, 0,
80, 0, 46, 0, 45, 0, 86, 0, 209, 0,
6, 0, 218, 0, 215, 0, 95, 30, 103, 194,
104, 0, 195, 0, 194, 108, 195, 0, 102, 0,
218, 182, 196, 0, 0, 197, 0, 73, 0, 15,
0, 69, 0, 199, 0, 200, 0, 103, 215, 104,
0, 199, 103, 201, 104, 0, 202, 0, 201, 108,
202, 0, 113, 203, 0, 113, 111, 203, 0, 218,
0, 203, 111, 218, 0, 0, 205, 0, 69, 0,
33, 171, 0, 103, 104, 0, 103, 207, 104, 0,
208, 0, 207, 108, 208, 0, 218, 0, 218, 105,
209, 106, 0, 218, 105, 173, 106, 0, 209, 0,
102, 0, 9, 0, 10, 0, 0, 211, 0, 212,
214, 0, 114, 213, 9, 115, 0, 0, 89, 0,
19, 0, 75, 0, 0, 52, 0, 41, 0, 11,
0, 12, 0, 12, 0, 0, 218, 0, 8, 0
};
#endif
......@@ -377,19 +378,20 @@ static const short yyrline[] = { 0,
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
1356, 1361, 1373, 1389, 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, 1587,
1594, 1602, 1610, 1619, 1622, 1625, 1626, 1636, 1638, 1639,
1640, 1643, 1647, 1652, 1658, 1663, 1666, 1670, 1683, 1697,
1703, 1707, 1712, 1718, 1730, 1732, 1735, 1739, 1742, 1747,
1751, 1759, 1774, 1780, 1787, 1800, 1812, 1827, 1831, 1848,
1853, 1856, 1861, 1883, 1888, 1893, 1899, 1905, 1913, 1921,
1929, 1936, 1946, 1951, 1981, 1983, 1986, 1993, 1999, 2001,
2002, 2003, 2006, 2008, 2009, 2012, 2017, 2024, 2031, 2033,
2037
};
#endif
......@@ -432,13 +434,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","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
"@4","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
......@@ -463,13 +465,14 @@ 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, 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
187, 187, 187, 187, 187, 188, 187, 189, 189, 189,
189, 190, 190, 191, 191, 191, 191, 191, 192, 193,
194, 194, 195, 195, 196, 196, 197, 197, 197, 198,
198, 199, 200, 201, 201, 202, 202, 203, 203, 204,
204, 205, 205, 206, 206, 207, 207, 208, 208, 208,
208, 208, 209, 209, 210, 210, 211, 212, 213, 213,
213, 213, 214, 214, 214, 215, 215, 216, 217, 217,
218
};
static const short yyr2[] = { 0,
......@@ -493,17 +496,18 @@ static const short yyr2[] = { 0,
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, 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
3, 3, 3, 1, 1, 0, 5, 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,
264, 265, 1, 2, 5, 3, 0, 0, 6, 269,
266, 267, 1, 2, 5, 3, 0, 0, 6, 271,
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,
......@@ -511,287 +515,291 @@ 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, 253, 118, 266, 0, 146, 0, 0, 160, 153,
26, 255, 118, 268, 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, 257, 64, 63,
0, 254, 261, 0, 161, 155, 154, 151, 150, 0,
0, 35, 38, 0, 0, 0, 0, 259, 64, 63,
0, 256, 263, 0, 161, 155, 154, 151, 150, 0,
66, 0, 68, 0, 0, 0, 49, 51, 5, 41,
43, 0, 259, 260, 258, 0, 118, 266, 113, 0,
43, 0, 261, 262, 260, 0, 118, 268, 113, 0,
0, 183, 183, 62, 183, 116, 162, 149, 107, 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,
265, 264, 257, 119, 121, 0, 0, 0, 0, 56,
128, 129, 123, 124, 126, 120, 137, 139, 138, 253,
254, 135, 134, 136, 132, 130, 141, 140, 0, 142,
39, 0, 90, 255, 127, 0, 0, 0, 0, 0,
76, 0, 0, 184, 185, 76, 0, 106, 0, 163,
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
255, 255, 67, 71, 70, 69, 217, 0, 214, 213,
0, 212, 215, 0, 60, 0, 0, 0, 57, 58,
61, 192, 0, 198, 199, 205, 204, 230, 231, 216,
219, 218, 0, 0, 0, 0, 95, 0, 0, 242,
88, 88, 92, 241, 0, 258, 0, 103, 0, 83,
86, 255, 117, 0, 0, 0, 77, 78, 82, 255,
0, 189, 269, 0, 0, 269, 252, 244, 0, 246,
251, 248, 0, 72, 74, 75, 65, 0, 208, 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, 243, 89, 240, 240,
114, 0, 108, 0, 85, 0, 255, 109, 0, 240,
187, 0, 255, 270, 0, 110, 255, 245, 0, 0,
115, 255, 206, 209, 210, 203, 201, 0, 232, 197,
59, 193, 194, 195, 0, 202, 200, 0, 0, 234,
145, 0, 93, 94, 104, 105, 142, 84, 186, 81,
79, 80, 190, 0, 188, 0, 247, 0, 0, 73,
0, 211, 223, 0, 221, 183, 196, 0, 236, 238,
233, 0, 97, 0, 111, 112, 250, 249, 207, 220,
0, 225, 237, 0, 235, 0, 191, 222, 228, 229,
227, 224, 226, 239, 101, 0, 99, 102, 98, 100,
0, 0, 0
};
static const short yydefgoto[] = { 416,
static const short yydefgoto[] = { 421,
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, 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
70, 60, 100, 228, 229, 230, 61, 130, 131, 283,
284, 266, 267, 268, 259, 260, 119, 319, 192, 193,
314, 315, 406, 416, 417, 269, 285, 155, 156, 173,
174, 194, 195, 62, 186, 244, 187, 310, 157, 103,
159, 104, 301, 302, 304, 203, 204, 205, 271, 272,
232, 381, 291, 233, 234, 235, 236, 384, 385, 412,
413, 237, 238, 239, 359, 360, 389, 253, 254, 210,
279, 280, 240, 255, 122, 123, 146, 163, 241, 105,
333, 242
};
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 yypact[] = { 247,
-32768,-32768, 247,-32768, -74,-32768, 46, 59,-32768,-32768,
-32768,-32768, 49,-32768, -66, 221,-32768,-32768, 57, 55,
75, 83, 119, 104, 195, 221,-32768, 116,-32768,-32768,
-32768,-32768,-32768, 208,-32768,-32768, 427,-32768, 222, 24,
-32768,-32768,-32768, 86,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768, 209, 427,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 351, 656,-32768, 146,-32768, 189,-32768,
162,-32768,-32768, 32,-32768, -1,-32768, 167,-32768,-32768,
-32768, -8, 171,-32768, 194,-32768, 203, 223,-32768,-32768,
-32768,-32768,-32768, 249, 225,-32768,-32768,-32768, 731, 299,
-32768,-32768,-32768,-32768, 196, 305,-32768,-32768,-32768, 232,
205,-32768,-32768, 247, 232, 210, 213, 6,-32768,-32768,
504,-32768, 18, 232,-32768,-32768,-32768,-32768,-32768, -3,
-32768, 202, 204, 216, 267, 200,-32768,-32768, -74,-32768,
-32768, 285,-32768,-32768,-32768, 303, -42, 218, 288, 224,
257, -18, 68,-32768, 71,-32768,-32768, 226,-32768, 227,
-32768,-32768,-32768,-32768,-32768, 323, 731, 320, 232, 80,
-32768,-32768, 220,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 229, 228,
-32768, 61,-32768, 5,-32768, 219, 311, 26, 293, 233,
52, 215, 274,-32768, 238, 52, 276,-32768, 43,-32768,
8, 231,-32768,-32768,-32768,-32768,-32768, 321,-32768,-32768,
-2,-32768,-32768, 317,-32768, 247, 215, 244, 241,-32768,
193, 256, 248, -2,-32768,-32768,-32768, 252,-32768,-32768,
-32768,-32768, 285, 352, 320, 200, 262, 285, 200,-32768,
270, 270,-32768,-32768, 581,-32768, 320, 250, 66,-32768,
-32768, 231,-32768, 215, 291, 260, 253,-32768,-32768, 231,
261, 81, 320, 215, 265, 320,-32768,-32768, 124,-32768,
-32768, 266, 143,-32768,-32768,-32768,-32768, 263, 258, 271,
70, 273, 275, 272,-32768, 80,-32768,-32768,-32768,-32768,
215, 215,-32768, 215, 215, 279, 269,-32768,-32768, 376,
-32768,-32768, 301,-32768,-32768,-32768,-32768,-32768, 31, 31,
-32768, 207,-32768, 26,-32768, 278, 231,-32768, 52, 31,
-32768, 283, 231,-32768, 280,-32768, 231,-32768, 38, 207,
-32768, 8,-32768,-32768, 277,-32768,-32768, 42,-32768,-32768,
-32768,-32768,-32768,-32768, 282,-32768,-32768, 7, 163,-32768,
-32768, 287,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768, 284, 581,-32768, 581,-32768, 290, 297,-32768,
352,-32768,-32768, 164,-32768, 71,-32768, 320, 294,-32768,
-32768, 269,-32768, 215,-32768,-32768,-32768,-32768, 376,-32768,
42, 2, 294, 320,-32768, 173, 193,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768, 10,-32768,-32768,-32768,-32768,
393, 406,-32768
};
static const short yypgoto[] = {-32768,
-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
-32768, 404, 281,-32768,-32768, 395,-32768,-32768, 385,-32768,
-32768, 356,-32768,-32768,-32768, 339,-32768, 304,-32768,-32768,
312,-32768, 358,-32768,-32768, 125,-32768,-32768, 259,-32768,
82, 234,-32768, 100,-32768, 106,-32768, 179,-32768, 184,
-32768,-32768,-32768,-32768, 17, -189, -78, -139, -53,-32768,
206, -186, -122,-32768, -56,-32768, -185, 56, -43, -119,
-32768, 40,-32768,-32768,-32768, -150,-32768,-32768, -201, -163,
-101,-32768, 212,-32768, -264,-32768,-32768,-32768, 47,-32768,
-32768,-32768,-32768,-32768,-32768, 60, 63, -162,-32768,-32768,
-32768, 108, -126, -81,-32768,-32768,-32768,-32768, 28,-32768,
177, -7
};
#define YYLAST 817
#define YYLAST 825
static const short yytable[] = { 15,
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,
121, 158, 207, 120, 208, 15, 231, 252, 261, 188,
101, 101, 175, 415, 10, 10, 409, 171, 172, 117,
102, 102, 171, 172, 143, 294, 347, 5, 7, 65,
5, 10, 72, 10, 1, 2, 79, 249, 19, 10,
67, 357, 1, 2, 114, 10, 180, 181, 65, 10,
10, 180, 181, 10, 11, 132, 10, 11, 161, 10,
-266, 200, 326, 249, 64, 28, 79, 71, 124, 162,
410, 78, 335, 250, 411, 217, 63, 10, 180, 181,
144, 265, 281, 64, 201, 217, 202, 10, 180, 181,
1, 2, 16, 10, 145, 63, 1, 2, 289, 250,
166, 78, 72, 355, 167, 118, 115, 79, -240, 290,
218, 29, -240, 419, 219, 251, 165, 388, 118, 188,
175, 118, 188, 132, 219, 220, 133, 258, 190, 346,
68, 73, 231, 287, 261, 158, 365, 71, 112, 277,
221, 139, 78, 383, 277, 263, 278, 200, 160, 12,
200, 164, 17, 258, 378, 223, 363, 364, 30, 222,
214, 216, 176, 189, 247, 223, 31, 372, 248, 323,
206, 32, 202, 324, 224, 202, 415, 297, 298, 299,
300, 225, 226, 325, 227, 171, 172, 33, 332, 312,
262, 330, 317, 270, 133, 366, 215, 34, 270, 352,
353, 282, 354, 286, 177, 178, 179, 10, 180, 181,
1, 2, 281, 379, 10, 180, 181, 1, 2, 418,
217, 36, 10, 180, 181, 1, 2, 338, 37, 418,
407, 339, 20, 66, 395, 402, 396, 311, 190, 10,
21, 190, 1, 2, 182, 218, 341, 80, 370, 321,
342, 374, 108, 293, 158, 376, 158, 1, 2, 219,
220, 22, 183, 23, 111, 334, 391, 400, 334, 116,
392, 401, 24, 189, 125, 221, 189, 1, 2, 171,
172, 124, 160, 126, 217, 184, 10, 180, 181, 297,
298, 299, 300, 127, 222, 109, 110, 171, 172, 128,
223, 134, 185, 83, 84, 129, 135, 136, 138, 224,
168, 196, 169, 141, 367, 142, 262, 226, 170, 227,
-267, 270, 197, 219, 199, 212, 198, 10, 209, 211,
243, 282, 367, 256, 286, 257, 246, 264, 356, 245,
386, 273, 274, 276, 118, 288, 292, 295, 296, 189,
390, 303, 305, 82, 307, 309, 313, 318, 327, 322,
329, 83, 84, 328, 223, 343, 331, 189, 336, 344,
340, 345, 85, 38, 86, 348, 87, 350, 349, 361,
390, 358, 362, 369, 373, 375, 88, 387, 382, 393,
89, 394, 422, 386, 90, 397, 414, 91, 41, 42,
43, 160, 398, 160, 404, 423, 6, 18, 92, 45,
35, 81, 113, 93, 46, 94, 47, 95, 140, 191,
351, 137, 106, 380, 48, 213, 96, 97, 371, 368,
320, 316, 420, 49, 10, 50, 399, 1, 2, 275,
51, 98, 52, 53, 54, 306, 377, 408, 308, 38,
403, 405, 337, 99, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 39, 0, 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, 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,
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,
0, 0, 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, 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
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, 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,
82, 121, 153, 82, 155, 13, 170, 194, 198, 136,
64, 65, 135, 4, 8, 8, 15, 13, 14, 28,
64, 65, 13, 14, 19, 227, 291, 0, 103, 37,
3, 8, 40, 8, 11, 12, 44, 33, 105, 8,
17, 306, 11, 12, 46, 8, 9, 10, 56, 8,
8, 9, 10, 8, 9, 99, 8, 9, 41, 8,
103, 80, 264, 33, 37, 9, 74, 40, 111, 52,
69, 44, 274, 69, 73, 6, 37, 8, 9, 10,
75, 30, 209, 56, 103, 6, 105, 8, 9, 10,
11, 12, 34, 8, 89, 56, 11, 12, 101, 69,
104, 74, 110, 305, 108, 114, 108, 115, 104, 112,
31, 57, 108, 104, 45, 194, 124, 111, 114, 246,
243, 114, 249, 167, 45, 46, 99, 102, 136, 60,
107, 46, 296, 212, 324, 255, 322, 110, 107, 102,
61, 114, 115, 102, 102, 199, 104, 80, 121, 104,
80, 124, 104, 102, 340, 86, 319, 320, 84, 80,
168, 169, 135, 136, 104, 86, 84, 330, 108, 104,
103, 53, 105, 108, 95, 105, 4, 97, 98, 99,
100, 102, 103, 262, 105, 13, 14, 84, 108, 246,
198, 270, 249, 201, 167, 322, 169, 3, 206, 301,
302, 209, 304, 211, 5, 6, 7, 8, 9, 10,
11, 12, 339, 340, 8, 9, 10, 11, 12, 406,
6, 106, 8, 9, 10, 11, 12, 104, 21, 416,
394, 108, 12, 12, 374, 386, 376, 245, 246, 8,
20, 249, 11, 12, 45, 31, 104, 39, 327, 257,
108, 333, 107, 226, 374, 337, 376, 11, 12, 45,
46, 41, 63, 43, 103, 273, 104, 104, 276, 103,
108, 108, 52, 246, 81, 61, 249, 11, 12, 13,
14, 111, 255, 81, 6, 86, 8, 9, 10, 97,
98, 99, 100, 71, 80, 107, 108, 13, 14, 51,
86, 3, 103, 11, 12, 81, 111, 3, 104, 95,
109, 9, 109, 104, 322, 103, 324, 103, 103, 105,
103, 329, 35, 45, 68, 3, 103, 8, 103, 103,
111, 339, 340, 115, 342, 25, 109, 105, 60, 111,
348, 68, 105, 68, 114, 25, 30, 104, 108, 322,
358, 96, 105, 3, 103, 4, 95, 88, 68, 110,
108, 11, 12, 104, 86, 103, 106, 340, 104, 112,
105, 101, 22, 23, 24, 103, 26, 106, 104, 4,
388, 113, 82, 106, 102, 106, 36, 106, 112, 103,
40, 108, 0, 401, 44, 106, 404, 47, 48, 49,
50, 374, 106, 376, 111, 0, 3, 13, 58, 59,
26, 56, 74, 63, 64, 65, 66, 67, 115, 139,
296, 110, 65, 342, 74, 167, 76, 77, 329, 324,
252, 248, 416, 83, 8, 85, 381, 11, 12, 206,
90, 91, 92, 93, 94, 234, 339, 401, 243, 23,
388, 392, 276, 103, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 38, -1, -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, 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,
-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,
-1, -1, -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, -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
-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"
......@@ -2563,18 +2571,17 @@ case 143:
case 144:
#line 1390 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
checkmem(yyval.tv_opaque.buf);
yyval.tv_opaque.buf[0] = '{';
yyval.tv_opaque.buf[1] = ' ';
memcpy(yyval.tv_opaque.buf + 2, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
free(yyvsp[0].tv_opaque.buf);
;
break;}
case 145:
#line 1400 "asn1p_y.y"
#line 1399 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
......@@ -2589,71 +2596,71 @@ case 145:
;
break;}
case 146:
#line 1415 "asn1p_y.y"
#line 1414 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
case 147:
#line 1416 "asn1p_y.y"
#line 1415 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
case 148:
#line 1417 "asn1p_y.y"
#line 1416 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
case 149:
#line 1418 "asn1p_y.y"
#line 1417 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 150:
#line 1419 "asn1p_y.y"
#line 1418 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
case 151:
#line 1420 "asn1p_y.y"
#line 1419 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
case 152:
#line 1421 "asn1p_y.y"
#line 1420 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
case 153:
#line 1422 "asn1p_y.y"
#line 1421 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
case 154:
#line 1423 "asn1p_y.y"
#line 1422 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
case 155:
#line 1424 "asn1p_y.y"
#line 1423 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
case 156:
#line 1425 "asn1p_y.y"
#line 1424 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
case 157:
#line 1426 "asn1p_y.y"
#line 1425 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
case 158:
#line 1427 "asn1p_y.y"
#line 1426 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
case 159:
#line 1434 "asn1p_y.y"
#line 1433 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
case 160:
#line 1435 "asn1p_y.y"
#line 1434 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
case 161:
#line 1436 "asn1p_y.y"
#line 1435 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
case 162:
#line 1440 "asn1p_y.y"
#line 1439 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -2662,7 +2669,7 @@ case 162:
;
break;}
case 163:
#line 1446 "asn1p_y.y"
#line 1445 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
......@@ -2675,91 +2682,91 @@ case 163:
;
break;}
case 164:
#line 1459 "asn1p_y.y"
#line 1458 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
case 165:
#line 1460 "asn1p_y.y"
#line 1459 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
;
break;}
case 166:
#line 1464 "asn1p_y.y"
#line 1463 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
;
break;}
case 167:
#line 1468 "asn1p_y.y"
#line 1467 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
case 168:
#line 1469 "asn1p_y.y"
#line 1468 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
case 169:
#line 1470 "asn1p_y.y"
#line 1469 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
case 170:
#line 1471 "asn1p_y.y"
#line 1470 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
case 171:
#line 1472 "asn1p_y.y"
#line 1471 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
fprintf(stderr, "WARNING: T61String is not fully supported\n");
;
break;}
case 172:
#line 1476 "asn1p_y.y"
#line 1475 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
case 173:
#line 1477 "asn1p_y.y"
#line 1476 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
case 174:
#line 1478 "asn1p_y.y"
#line 1477 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
case 175:
#line 1479 "asn1p_y.y"
#line 1478 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
;
break;}
case 176:
#line 1483 "asn1p_y.y"
#line 1482 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
case 177:
#line 1484 "asn1p_y.y"
#line 1483 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
case 183:
#line 1496 "asn1p_y.y"
#line 1495 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
case 184:
#line 1497 "asn1p_y.y"
#line 1496 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 185:
#line 1503 "asn1p_y.y"
#line 1502 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
case 186:
#line 1506 "asn1p_y.y"
#line 1505 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
......@@ -2769,25 +2776,25 @@ case 186:
;
break;}
case 187:
#line 1516 "asn1p_y.y"
#line 1515 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
case 188:
#line 1519 "asn1p_y.y"
#line 1518 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 189:
#line 1525 "asn1p_y.y"
#line 1524 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 190:
#line 1528 "asn1p_y.y"
#line 1527 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2796,7 +2803,7 @@ case 190:
;
break;}
case 191:
#line 1534 "asn1p_y.y"
#line 1533 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -2807,31 +2814,31 @@ case 191:
;
break;}
case 192:
#line 1545 "asn1p_y.y"
#line 1544 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 193:
#line 1548 "asn1p_y.y"
#line 1547 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 194:
#line 1551 "asn1p_y.y"
#line 1550 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 195:
#line 1554 "asn1p_y.y"
#line 1553 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 196:
#line 1560 "asn1p_y.y"
#line 1559 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2842,7 +2849,7 @@ case 196:
;
break;}
case 197:
#line 1568 "asn1p_y.y"
#line 1567 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
......@@ -2853,7 +2860,7 @@ case 197:
;
break;}
case 198:
#line 1576 "asn1p_y.y"
#line 1575 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2862,7 +2869,7 @@ case 198:
;
break;}
case 199:
#line 1582 "asn1p_y.y"
#line 1581 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2871,7 +2878,7 @@ case 199:
;
break;}
case 200:
#line 1588 "asn1p_y.y"
#line 1587 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2881,7 +2888,7 @@ case 200:
;
break;}
case 201:
#line 1595 "asn1p_y.y"
#line 1594 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2892,7 +2899,7 @@ case 201:
;
break;}
case 202:
#line 1603 "asn1p_y.y"
#line 1602 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2903,7 +2910,7 @@ case 202:
;
break;}
case 203:
#line 1611 "asn1p_y.y"
#line 1610 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -2915,76 +2922,91 @@ case 203:
;
break;}
case 204:
#line 1620 "asn1p_y.y"
#line 1619 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 205:
#line 1623 "asn1p_y.y"
#line 1622 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 206:
#line 1629 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
#line 1626 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
case 207:
#line 1630 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
#line 1626 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
yyval.a_constr->type = ACT_CT_CTDBY;
yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_constr->value);
yyval.a_constr->value->type = ATV_UNPARSED;
;
break;}
case 208:
#line 1631 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
#line 1637 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
case 209:
#line 1632 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
#line 1638 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
case 210:
#line 1636 "asn1p_y.y"
#line 1639 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
case 211:
#line 1640 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
case 212:
#line 1644 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
case 211:
#line 1639 "asn1p_y.y"
case 213:
#line 1647 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
case 212:
#line 1645 "asn1p_y.y"
case 214:
#line 1653 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
case 213:
#line 1650 "asn1p_y.y"
case 215:
#line 1658 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
case 214:
#line 1655 "asn1p_y.y"
case 216:
#line 1663 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
case 215:
#line 1658 "asn1p_y.y"
case 217:
#line 1666 "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 216:
#line 1662 "asn1p_y.y"
case 218:
#line 1670 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -2997,8 +3019,8 @@ case 216:
free(yyvsp[0].tv_str);
;
break;}
case 217:
#line 1676 "asn1p_y.y"
case 219:
#line 1684 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
......@@ -3011,34 +3033,34 @@ case 217:
free(yyvsp[0].tv_str);
;
break;}
case 218:
#line 1690 "asn1p_y.y"
case 220:
#line 1698 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
case 219:
#line 1696 "asn1p_y.y"
case 221:
#line 1704 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 220:
#line 1699 "asn1p_y.y"
case 222:
#line 1707 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
case 221:
#line 1705 "asn1p_y.y"
case 223:
#line 1713 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
yyval.a_constr->type = ACT_EL_EXT;
;
break;}
case 222:
#line 1710 "asn1p_y.y"
case 224:
#line 1718 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3047,46 +3069,46 @@ case 222:
yyval.a_constr->presence = yyvsp[0].a_pres;
;
break;}
case 223:
#line 1723 "asn1p_y.y"
case 225:
#line 1731 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
case 224:
#line 1724 "asn1p_y.y"
case 226:
#line 1732 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
case 225:
#line 1728 "asn1p_y.y"
case 227:
#line 1736 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
case 226:
#line 1731 "asn1p_y.y"
case 228:
#line 1739 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
case 227:
#line 1734 "asn1p_y.y"
case 229:
#line 1742 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
case 228:
#line 1740 "asn1p_y.y"
case 230:
#line 1748 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 229:
#line 1743 "asn1p_y.y"
case 231:
#line 1751 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
case 230:
#line 1752 "asn1p_y.y"
case 232:
#line 1760 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
......@@ -3100,14 +3122,14 @@ case 230:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
case 231:
#line 1767 "asn1p_y.y"
case 233:
#line 1775 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
case 232:
#line 1773 "asn1p_y.y"
case 234:
#line 1781 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
......@@ -3115,8 +3137,8 @@ case 232:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
case 233:
#line 1779 "asn1p_y.y"
case 235:
#line 1787 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
......@@ -3126,8 +3148,8 @@ case 233:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
case 234:
#line 1793 "asn1p_y.y"
case 236:
#line 1801 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
......@@ -3140,8 +3162,8 @@ case 234:
free(yyvsp[0].tv_str);
;
break;}
case 235:
#line 1804 "asn1p_y.y"
case 237:
#line 1812 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
......@@ -3155,14 +3177,14 @@ case 235:
free(yyvsp[0].tv_str);
;
break;}
case 236:
#line 1820 "asn1p_y.y"
case 238:
#line 1828 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 237:
#line 1823 "asn1p_y.y"
case 239:
#line 1831 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
......@@ -3173,61 +3195,61 @@ case 237:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
case 238:
#line 1841 "asn1p_y.y"
case 240:
#line 1849 "asn1p_y.y"
{
yyval.a_marker.flags = EM_NOMARK;
yyval.a_marker.default_value = 0;
;
break;}
case 239:
#line 1845 "asn1p_y.y"
case 241:
#line 1853 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
case 240:
#line 1849 "asn1p_y.y"
case 242:
#line 1857 "asn1p_y.y"
{
yyval.a_marker.flags = EM_OPTIONAL;
yyval.a_marker.default_value = 0;
;
break;}
case 241:
#line 1853 "asn1p_y.y"
case 243:
#line 1861 "asn1p_y.y"
{
yyval.a_marker.flags = EM_DEFAULT;
yyval.a_marker.default_value = yyvsp[0].a_value;
;
break;}
case 242:
#line 1876 "asn1p_y.y"
case 244:
#line 1884 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
;
break;}
case 243:
#line 1880 "asn1p_y.y"
case 245:
#line 1888 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
case 244:
#line 1886 "asn1p_y.y"
case 246:
#line 1894 "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 245:
#line 1891 "asn1p_y.y"
case 247:
#line 1899 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
;
break;}
case 246:
#line 1898 "asn1p_y.y"
case 248:
#line 1906 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3236,8 +3258,8 @@ case 246:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
case 247:
#line 1905 "asn1p_y.y"
case 249:
#line 1913 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3247,8 +3269,8 @@ case 247:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 248:
#line 1913 "asn1p_y.y"
case 250:
#line 1921 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3258,8 +3280,8 @@ case 248:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
case 249:
#line 1921 "asn1p_y.y"
case 251:
#line 1929 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3268,8 +3290,8 @@ case 249:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
case 250:
#line 1928 "asn1p_y.y"
case 252:
#line 1936 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
......@@ -3279,103 +3301,103 @@ case 250:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
case 251:
#line 1939 "asn1p_y.y"
case 253:
#line 1947 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 252:
#line 1943 "asn1p_y.y"
case 254:
#line 1951 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
case 253:
#line 1974 "asn1p_y.y"
case 255:
#line 1982 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
case 254:
#line 1975 "asn1p_y.y"
case 256:
#line 1983 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
case 255:
#line 1979 "asn1p_y.y"
case 257:
#line 1987 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
;
break;}
case 256:
#line 1986 "asn1p_y.y"
case 258:
#line 1994 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-2].a_tag;
yyval.a_tag.tag_value = yyvsp[-1].a_int;
;
break;}
case 257:
#line 1992 "asn1p_y.y"
case 259:
#line 2000 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
break;}
case 258:
#line 1993 "asn1p_y.y"
case 260:
#line 2001 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
break;}
case 259:
#line 1994 "asn1p_y.y"
case 261:
#line 2002 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
break;}
case 260:
#line 1995 "asn1p_y.y"
case 262:
#line 2003 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
break;}
case 261:
#line 1999 "asn1p_y.y"
case 263:
#line 2007 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
break;}
case 262:
#line 2000 "asn1p_y.y"
case 264:
#line 2008 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
break;}
case 263:
#line 2001 "asn1p_y.y"
case 265:
#line 2009 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
break;}
case 264:
#line 2005 "asn1p_y.y"
case 266:
#line 2013 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 265:
#line 2009 "asn1p_y.y"
case 267:
#line 2017 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 266:
#line 2017 "asn1p_y.y"
case 268:
#line 2025 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 267:
#line 2024 "asn1p_y.y"
case 269:
#line 2032 "asn1p_y.y"
{ yyval.tv_str = 0; ;
break;}
case 268:
#line 2025 "asn1p_y.y"
case 270:
#line 2033 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
case 269:
#line 2030 "asn1p_y.y"
case 271:
#line 2038 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
......@@ -3603,7 +3625,7 @@ yyerrhandle:
}
return 1;
}
#line 2036 "asn1p_y.y"
#line 2044 "asn1p_y.y"
......
......@@ -1388,12 +1388,11 @@ DefinedValue:
Opaque:
TOK_opaque {
$$.len = $1.len + 2;
$$.len = $1.len + 1;
$$.buf = malloc($$.len + 1);
checkmem($$.buf);
$$.buf[0] = '{';
$$.buf[1] = ' ';
memcpy($$.buf + 2, $1.buf, $1.len);
memcpy($$.buf + 1, $1.buf, $1.len);
$$.buf[$$.len] = '\0';
free($1.buf);
}
......@@ -1623,6 +1622,15 @@ ConstraintSubtypeElement:
| WithComponents {
$$ = $1;
}
| TOK_CONSTRAINED TOK_BY '{'
{ asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
$$ = asn1p_constraint_new(yylineno);
checkmem($$);
$$->type = ACT_CT_CTDBY;
$$->value = asn1p_value_frombuf($5.buf, $5.len, 0);
checkmem($$->value);
$$->value->type = ATV_UNPARSED;
}
;
ConstraintRangeSpec:
......
......@@ -322,6 +322,11 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
case ACT_CT_WCOMP:
case ACT_CT_WCOMPS:
printf("???");
case ACT_CT_CTDBY:
printf("CONSTRAINED BY ");
assert(ct->value->type == ATV_UNPARSED);
fwrite(ct->value->value.string.buf,
1, ct->value->value.string.size, stdout);
break;
case ACT_CA_SET: symno++;
case ACT_CA_CRC: symno++;
......
......@@ -22,7 +22,7 @@ EXTENSION-ATTRIBUTE ::= CLASS {
} WITH SYNTAX {&Type IDENTIFIED BY &id}
terminal-type EXTENSION-ATTRIBUTE ::= { TerminalType IDENTIFIED BY 23}
terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
ExtensionAttribute ::= SEQUENCE {
extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE.&id ({ExtensionAttributeTable}),
......
-- OK: Everything is fine
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .79
ModuleTestConstrainedBy
{ iso org(3) dod(6) internet(1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 79 }
DEFINITIONS ::=
BEGIN
Type ::= SEQUENCE {
int INTEGER,
...
} (CONSTRAINED BY { -- nothing -- })
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