aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1parser
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2004-08-20 13:25:29 +0000
committerLev Walkin <vlm@lionet.info>2004-08-20 13:25:29 +0000
commitd2ea1de25fea2697105314cbc719347dc6517701 (patch)
tree82a5ec1d6c44c62721ac0b8a3c86896a448c3f66 /libasn1parser
parentcbf218f79d436530f83982dd5933ea03b38aace3 (diff)
proper support for SET OF and SEQUENCE OF constraints. managed to get it right without shift/reduce errors
Diffstat (limited to 'libasn1parser')
-rw-r--r--libasn1parser/asn1p_y.c1596
-rw-r--r--libasn1parser/asn1p_y.y73
2 files changed, 849 insertions, 820 deletions
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 9aa7e749..fe2d194b 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -205,11 +205,11 @@ typedef union {
-#define YYFINAL 381
+#define YYFINAL 385
#define YYFLAG -32768
#define YYNTBASE 115
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 210)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 212)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -261,125 +261,126 @@ static const short yyprhs[] = { 0,
173, 177, 179, 183, 187, 189, 193, 195, 197, 199,
203, 209, 210, 212, 214, 218, 221, 225, 230, 231,
233, 234, 241, 243, 246, 248, 250, 253, 255, 259,
- 261, 265, 269, 271, 273, 275, 280, 282, 286, 288,
- 292, 296, 298, 302, 304, 308, 310, 312, 314, 316,
- 321, 322, 326, 328, 330, 332, 334, 336, 338, 342,
- 344, 347, 349, 351, 353, 355, 358, 361, 363, 365,
- 368, 371, 373, 375, 377, 379, 382, 384, 387, 389,
+ 261, 263, 267, 271, 273, 275, 277, 282, 284, 288,
+ 290, 294, 298, 300, 304, 306, 310, 312, 314, 316,
+ 318, 323, 324, 328, 330, 332, 334, 336, 338, 340,
+ 344, 346, 349, 351, 353, 355, 357, 360, 363, 365,
+ 367, 370, 373, 375, 377, 379, 381, 384, 386, 389,
391, 393, 395, 397, 399, 401, 403, 405, 407, 409,
- 411, 413, 415, 420, 425, 430, 435, 440, 442, 447,
- 449, 451, 453, 455, 457, 458, 460, 465, 469, 474,
- 476, 480, 486, 488, 492, 496, 500, 505, 509, 511,
- 515, 519, 523, 527, 529, 531, 533, 536, 539, 543,
- 545, 547, 549, 551, 553, 555, 557, 563, 565, 569,
- 571, 575, 576, 578, 580, 582, 584, 586, 588, 592,
- 597, 599, 603, 606, 610, 612, 616, 617, 619, 621,
- 624, 626, 628, 629, 633, 636, 640, 642, 646, 648,
- 653, 658, 660, 662, 664, 666, 667, 669, 671, 674,
- 677, 679, 681, 683, 685, 687
+ 411, 413, 415, 417, 422, 427, 432, 437, 442, 444,
+ 449, 451, 453, 455, 457, 459, 460, 462, 464, 469,
+ 473, 478, 480, 484, 490, 492, 496, 500, 504, 509,
+ 513, 515, 519, 523, 527, 531, 533, 535, 537, 540,
+ 543, 547, 549, 551, 553, 555, 557, 559, 561, 567,
+ 569, 573, 575, 579, 580, 582, 584, 586, 588, 590,
+ 592, 596, 601, 603, 607, 610, 614, 616, 620, 621,
+ 623, 625, 628, 630, 632, 633, 637, 640, 644, 646,
+ 650, 652, 657, 662, 664, 666, 668, 670, 671, 673,
+ 675, 678, 681, 683, 685, 687, 689, 691
};
static const short yyrhs[] = { 116,
- 0, 117, 0, 116, 117, 0, 206, 118, 34, 122,
+ 0, 117, 0, 116, 117, 0, 208, 118, 34, 122,
3, 21, 125, 39, 0, 0, 119, 0, 104, 120,
105, 0, 104, 105, 0, 121, 0, 120, 121, 0,
- 208, 0, 208, 106, 9, 107, 0, 9, 0, 0,
+ 210, 0, 210, 106, 9, 107, 0, 9, 0, 0,
123, 0, 124, 0, 123, 124, 0, 41, 84, 0,
52, 84, 0, 20, 84, 0, 43, 53, 0, 12,
57, 0, 0, 126, 0, 127, 0, 126, 127, 0,
129, 0, 134, 0, 140, 0, 164, 0, 137, 0,
0, 38, 12, 128, 0, 172, 0, 54, 130, 108,
0, 54, 46, 0, 131, 0, 130, 131, 0, 132,
- 46, 206, 118, 0, 133, 0, 132, 109, 133, 0,
- 206, 0, 208, 0, 42, 135, 108, 0, 42, 17,
+ 46, 208, 118, 0, 133, 0, 132, 109, 133, 0,
+ 208, 0, 210, 0, 42, 135, 108, 0, 42, 17,
108, 0, 42, 108, 0, 136, 0, 135, 109, 136,
- 0, 206, 0, 208, 0, 206, 138, 3, 104, 139,
- 105, 0, 159, 0, 169, 0, 0, 179, 0, 206,
- 3, 204, 87, 0, 206, 3, 204, 156, 0, 206,
- 3, 146, 0, 206, 104, 141, 105, 3, 156, 0,
- 142, 0, 141, 109, 142, 0, 206, 0, 206, 110,
- 208, 0, 169, 110, 208, 0, 144, 0, 143, 109,
- 144, 0, 158, 0, 208, 0, 155, 0, 145, 109,
+ 0, 208, 0, 210, 0, 208, 138, 3, 104, 139,
+ 105, 0, 159, 0, 169, 0, 0, 181, 0, 208,
+ 3, 206, 87, 0, 208, 3, 206, 156, 0, 208,
+ 3, 146, 0, 208, 104, 141, 105, 3, 156, 0,
+ 142, 0, 141, 109, 142, 0, 208, 0, 208, 110,
+ 210, 0, 169, 110, 210, 0, 144, 0, 143, 109,
+ 144, 0, 158, 0, 210, 0, 155, 0, 145, 109,
155, 0, 28, 104, 148, 105, 150, 0, 0, 88,
- 0, 149, 0, 148, 109, 149, 0, 162, 196, 0,
- 162, 156, 147, 0, 162, 162, 196, 147, 0, 0,
+ 0, 149, 0, 148, 109, 149, 0, 162, 198, 0,
+ 162, 156, 147, 0, 162, 162, 198, 147, 0, 0,
151, 0, 0, 95, 82, 104, 152, 153, 105, 0,
- 154, 0, 153, 154, 0, 4, 0, 162, 0, 209,
- 156, 0, 157, 0, 158, 177, 196, 0, 102, 0,
- 102, 111, 167, 0, 102, 111, 203, 0, 171, 0,
- 172, 0, 173, 0, 206, 104, 143, 105, 0, 159,
- 0, 56, 68, 159, 0, 11, 0, 11, 112, 206,
- 0, 11, 112, 208, 0, 207, 0, 207, 112, 160,
- 0, 161, 0, 160, 112, 161, 0, 163, 0, 163,
- 0, 13, 0, 14, 0, 208, 138, 3, 165, 0,
- 0, 104, 166, 168, 0, 5, 0, 7, 0, 6,
- 0, 203, 0, 167, 0, 208, 0, 206, 112, 208,
- 0, 4, 0, 168, 4, 0, 24, 0, 63, 0,
- 76, 0, 170, 0, 67, 81, 0, 65, 51, 0,
- 77, 0, 44, 0, 36, 71, 0, 26, 81, 0,
- 91, 0, 47, 0, 58, 0, 40, 0, 22, 81,
- 0, 169, 0, 170, 200, 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, 27, 104, 145, 105, 0, 78,
- 104, 145, 105, 0, 79, 104, 145, 105, 0, 78,
- 177, 68, 158, 0, 79, 177, 68, 158, 0, 18,
- 0, 18, 35, 25, 208, 0, 99, 0, 100, 0,
- 97, 0, 98, 0, 96, 0, 0, 178, 0, 80,
- 106, 179, 107, 0, 106, 179, 107, 0, 178, 106,
- 179, 107, 0, 180, 0, 180, 109, 102, 0, 180,
- 109, 102, 109, 180, 0, 181, 0, 180, 174, 181,
- 0, 180, 175, 181, 0, 181, 176, 181, 0, 183,
- 106, 179, 107, 0, 106, 179, 107, 0, 184, 0,
- 184, 182, 184, 0, 61, 182, 184, 0, 184, 182,
- 60, 0, 61, 182, 60, 0, 190, 0, 185, 0,
- 101, 0, 101, 113, 0, 113, 101, 0, 113, 101,
- 113, 0, 80, 0, 46, 0, 203, 0, 208, 0,
- 6, 0, 45, 0, 86, 0, 95, 30, 104, 186,
- 105, 0, 187, 0, 186, 109, 187, 0, 102, 0,
- 208, 177, 188, 0, 0, 189, 0, 73, 0, 15,
- 0, 69, 0, 191, 0, 192, 0, 104, 206, 105,
- 0, 191, 104, 193, 105, 0, 194, 0, 193, 109,
- 194, 0, 114, 195, 0, 114, 112, 195, 0, 208,
- 0, 195, 112, 208, 0, 0, 197, 0, 69, 0,
- 33, 198, 0, 184, 0, 169, 0, 0, 104, 199,
- 168, 0, 104, 105, 0, 104, 201, 105, 0, 202,
- 0, 201, 109, 202, 0, 208, 0, 208, 106, 203,
- 107, 0, 208, 106, 167, 107, 0, 203, 0, 102,
- 0, 9, 0, 10, 0, 0, 205, 0, 103, 0,
- 103, 52, 0, 103, 41, 0, 11, 0, 12, 0,
- 12, 0, 8, 0, 208, 0, 208, 205, 0
+ 154, 0, 153, 154, 0, 4, 0, 162, 0, 211,
+ 156, 0, 157, 0, 158, 178, 198, 0, 173, 0,
+ 102, 0, 102, 111, 167, 0, 102, 111, 205, 0,
+ 171, 0, 172, 0, 174, 0, 208, 104, 143, 105,
+ 0, 159, 0, 56, 68, 159, 0, 11, 0, 11,
+ 112, 208, 0, 11, 112, 210, 0, 209, 0, 209,
+ 112, 160, 0, 161, 0, 160, 112, 161, 0, 163,
+ 0, 163, 0, 13, 0, 14, 0, 210, 138, 3,
+ 165, 0, 0, 104, 166, 168, 0, 5, 0, 7,
+ 0, 6, 0, 205, 0, 167, 0, 210, 0, 208,
+ 112, 210, 0, 4, 0, 168, 4, 0, 24, 0,
+ 63, 0, 76, 0, 170, 0, 67, 81, 0, 65,
+ 51, 0, 77, 0, 44, 0, 36, 71, 0, 26,
+ 81, 0, 91, 0, 47, 0, 58, 0, 40, 0,
+ 22, 81, 0, 169, 0, 170, 202, 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, 78, 178, 68, 156,
+ 0, 79, 178, 68, 156, 0, 27, 104, 145, 105,
+ 0, 78, 104, 145, 105, 0, 79, 104, 145, 105,
+ 0, 18, 0, 18, 35, 25, 210, 0, 99, 0,
+ 100, 0, 97, 0, 98, 0, 96, 0, 0, 179,
+ 0, 180, 0, 80, 106, 181, 107, 0, 106, 181,
+ 107, 0, 180, 106, 181, 107, 0, 182, 0, 182,
+ 109, 102, 0, 182, 109, 102, 109, 182, 0, 183,
+ 0, 182, 175, 183, 0, 182, 176, 183, 0, 183,
+ 177, 183, 0, 185, 106, 181, 107, 0, 106, 181,
+ 107, 0, 186, 0, 186, 184, 186, 0, 61, 184,
+ 186, 0, 186, 184, 60, 0, 61, 184, 60, 0,
+ 192, 0, 187, 0, 101, 0, 101, 113, 0, 113,
+ 101, 0, 113, 101, 113, 0, 80, 0, 46, 0,
+ 205, 0, 210, 0, 6, 0, 45, 0, 86, 0,
+ 95, 30, 104, 188, 105, 0, 189, 0, 188, 109,
+ 189, 0, 102, 0, 210, 178, 190, 0, 0, 191,
+ 0, 73, 0, 15, 0, 69, 0, 193, 0, 194,
+ 0, 104, 208, 105, 0, 193, 104, 195, 105, 0,
+ 196, 0, 195, 109, 196, 0, 114, 197, 0, 114,
+ 112, 197, 0, 210, 0, 197, 112, 210, 0, 0,
+ 199, 0, 69, 0, 33, 200, 0, 186, 0, 169,
+ 0, 0, 104, 201, 168, 0, 104, 105, 0, 104,
+ 203, 105, 0, 204, 0, 203, 109, 204, 0, 210,
+ 0, 210, 106, 205, 107, 0, 210, 106, 167, 107,
+ 0, 205, 0, 102, 0, 9, 0, 10, 0, 0,
+ 207, 0, 103, 0, 103, 52, 0, 103, 41, 0,
+ 11, 0, 12, 0, 12, 0, 8, 0, 210, 0,
+ 210, 207, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 296, 302, 308, 324, 349, 351, 354, 358, 363, 370,
- 378, 383, 387, 396, 398, 406, 410, 418, 422, 425,
- 428, 432, 452, 454, 462, 466, 498, 502, 511, 518,
- 531, 538, 540, 552, 565, 572, 577, 583, 589, 598,
- 604, 610, 617, 625, 629, 632, 639, 645, 651, 658,
- 667, 677, 685, 693, 695, 707, 719, 726, 742, 752,
- 762, 772, 777, 784, 794, 800, 806, 810, 822, 828,
- 834, 844, 846, 849, 857, 863, 872, 877, 894, 896,
- 901, 905, 910, 915, 921, 925, 950, 957, 962, 970,
- 979, 988, 999, 1003, 1009, 1017, 1041, 1048, 1062, 1071,
- 1081, 1091, 1099, 1120, 1129, 1138, 1139, 1141, 1148, 1160,
- 1170, 1172, 1177, 1181, 1185, 1189, 1192, 1197, 1209, 1225,
- 1236, 1250, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
- 1260, 1261, 1262, 1268, 1270, 1271, 1274, 1281, 1293, 1295,
- 1299, 1303, 1304, 1305, 1306, 1307, 1311, 1312, 1313, 1314,
- 1318, 1319, 1322, 1329, 1335, 1341, 1349, 1357, 1363, 1379,
- 1379, 1380, 1380, 1381, 1383, 1385, 1388, 1402, 1406, 1411,
- 1415, 1421, 1431, 1435, 1438, 1441, 1446, 1455, 1463, 1469,
- 1476, 1484, 1492, 1501, 1504, 1509, 1511, 1512, 1513, 1516,
- 1520, 1525, 1529, 1540, 1545, 1550, 1557, 1563, 1567, 1572,
- 1578, 1590, 1592, 1595, 1599, 1602, 1607, 1611, 1619, 1634,
- 1640, 1647, 1660, 1672, 1687, 1691, 1708, 1710, 1713, 1717,
- 1723, 1726, 1728, 1728, 1748, 1753, 1758, 1764, 1770, 1778,
- 1786, 1794, 1801, 1811, 1816, 1846, 1848, 1851, 1856, 1860,
- 1866, 1871, 1878, 1885, 1892, 1897
+ 298, 304, 310, 326, 351, 353, 356, 360, 365, 372,
+ 380, 385, 389, 398, 400, 408, 412, 420, 424, 427,
+ 430, 434, 454, 456, 464, 468, 500, 504, 513, 520,
+ 533, 540, 542, 554, 567, 574, 579, 585, 591, 600,
+ 606, 612, 619, 627, 631, 634, 641, 647, 653, 660,
+ 669, 679, 687, 695, 697, 709, 721, 728, 744, 754,
+ 764, 774, 779, 786, 796, 802, 808, 812, 824, 830,
+ 836, 846, 848, 851, 859, 865, 874, 879, 896, 898,
+ 903, 907, 912, 917, 923, 927, 952, 959, 964, 974,
+ 982, 991, 1000, 1011, 1015, 1021, 1029, 1053, 1060, 1074,
+ 1083, 1093, 1103, 1111, 1132, 1141, 1150, 1151, 1153, 1160,
+ 1172, 1182, 1184, 1189, 1193, 1197, 1201, 1204, 1209, 1221,
+ 1237, 1248, 1262, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
+ 1271, 1272, 1273, 1274, 1280, 1282, 1283, 1286, 1293, 1305,
+ 1307, 1311, 1315, 1316, 1317, 1318, 1319, 1323, 1324, 1325,
+ 1326, 1330, 1331, 1335, 1344, 1354, 1361, 1367, 1373, 1379,
+ 1395, 1395, 1396, 1396, 1397, 1399, 1401, 1406, 1410, 1419,
+ 1423, 1428, 1432, 1438, 1448, 1452, 1455, 1458, 1463, 1472,
+ 1480, 1486, 1493, 1501, 1509, 1518, 1521, 1526, 1528, 1529,
+ 1530, 1533, 1537, 1542, 1546, 1557, 1562, 1567, 1574, 1580,
+ 1584, 1589, 1595, 1607, 1609, 1612, 1616, 1619, 1624, 1628,
+ 1636, 1651, 1657, 1664, 1677, 1689, 1704, 1708, 1725, 1727,
+ 1730, 1734, 1740, 1743, 1745, 1745, 1765, 1770, 1775, 1781,
+ 1787, 1795, 1803, 1811, 1818, 1828, 1833, 1863, 1865, 1868,
+ 1873, 1877, 1883, 1888, 1895, 1902, 1909, 1914
};
#endif
@@ -416,17 +417,18 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ",
"ActualParameter","ConstructedDataTypeDefinition","ClassDeclaration","optUnique",
"ClassFieldList","ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxFormat",
"WithSyntaxFormatToken","DataTypeMember","ConstrainedTypeDeclaration","ExtensionAndException",
-"TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","InlineOrDefinedValue",
-"@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","ConstructedType","Union","Intersection","Except",
-"optConstraints","SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
-"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
-"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
-"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
-"ComponentIdList","optMarker","Marker","DefaultValue","@4","UniverationDefinition",
-"UniverationList","UniverationElement","SignedNumber","optTag","Tag","TypeRefName",
-"ObjectClassReference","Identifier","TaggedIdentifier", NULL
+"UnconstrainedTypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
+"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
+"InlineOrDefinedValue","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
+"BasicType","BasicString","ConstructedTypeConstrained","ConstructedType","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","DefaultValue","@4","UniverationDefinition","UniverationList",
+"UniverationElement","SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference",
+"Identifier","TaggedIdentifier", NULL
};
#endif
@@ -439,23 +441,23 @@ static const short yyr1[] = { 0,
137, 138, 138, 139, 139, 140, 140, 140, 140, 141,
141, 142, 142, 142, 143, 143, 144, 144, 145, 145,
146, 147, 147, 148, 148, 149, 149, 149, 150, 150,
- 152, 151, 153, 153, 154, 154, 155, 155, 156, 157,
- 157, 157, 158, 158, 158, 158, 158, 158, 159, 159,
- 159, 159, 159, 160, 160, 161, 162, 163, 163, 164,
- 166, 165, 165, 165, 165, 165, 165, 167, 167, 168,
- 168, 169, 169, 169, 169, 169, 169, 169, 169, 169,
- 169, 169, 169, 170, 170, 170, 171, 171, 172, 172,
+ 152, 151, 153, 153, 154, 154, 155, 155, 156, 156,
+ 157, 157, 157, 158, 158, 158, 158, 158, 158, 159,
+ 159, 159, 159, 159, 160, 160, 161, 162, 163, 163,
+ 164, 166, 165, 165, 165, 165, 165, 165, 167, 167,
+ 168, 168, 169, 169, 169, 169, 169, 169, 169, 169,
+ 169, 169, 169, 169, 170, 170, 170, 171, 171, 172,
172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
- 172, 172, 173, 173, 173, 173, 173, 173, 173, 174,
- 174, 175, 175, 176, 177, 177, 177, 178, 178, 179,
- 179, 179, 180, 180, 180, 180, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 182, 182, 182, 182, 183,
- 183, 184, 184, 184, 184, 184, 185, 186, 186, 187,
- 187, 188, 188, 189, 189, 189, 190, 190, 191, 192,
- 193, 193, 194, 194, 195, 195, 196, 196, 197, 197,
- 198, 198, 199, 198, 200, 200, 201, 201, 202, 202,
- 202, 202, 202, 203, 203, 204, 204, 205, 205, 205,
- 206, 206, 207, 208, 209, 209
+ 172, 172, 172, 173, 173, 174, 174, 174, 174, 174,
+ 175, 175, 176, 176, 177, 178, 178, 179, 179, 180,
+ 180, 181, 181, 181, 182, 182, 182, 182, 183, 183,
+ 183, 183, 183, 183, 183, 183, 183, 184, 184, 184,
+ 184, 185, 185, 186, 186, 186, 186, 186, 187, 188,
+ 188, 189, 189, 190, 190, 191, 191, 191, 192, 192,
+ 193, 194, 195, 195, 196, 196, 197, 197, 198, 198,
+ 199, 199, 200, 200, 201, 200, 202, 202, 203, 203,
+ 204, 204, 204, 204, 204, 205, 205, 206, 206, 207,
+ 207, 207, 208, 208, 209, 210, 211, 211
};
static const short yyr2[] = { 0,
@@ -468,304 +470,300 @@ static const short yyr2[] = { 0,
3, 1, 3, 3, 1, 3, 1, 1, 1, 3,
5, 0, 1, 1, 3, 2, 3, 4, 0, 1,
0, 6, 1, 2, 1, 1, 2, 1, 3, 1,
- 3, 3, 1, 1, 1, 4, 1, 3, 1, 3,
- 3, 1, 3, 1, 3, 1, 1, 1, 1, 4,
- 0, 3, 1, 1, 1, 1, 1, 1, 3, 1,
- 2, 1, 1, 1, 1, 2, 2, 1, 1, 2,
- 2, 1, 1, 1, 1, 2, 1, 2, 1, 1,
+ 1, 3, 3, 1, 1, 1, 4, 1, 3, 1,
+ 3, 3, 1, 3, 1, 3, 1, 1, 1, 1,
+ 4, 0, 3, 1, 1, 1, 1, 1, 1, 3,
+ 1, 2, 1, 1, 1, 1, 2, 2, 1, 1,
+ 2, 2, 1, 1, 1, 1, 2, 1, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 1, 4, 1,
- 1, 1, 1, 1, 0, 1, 4, 3, 4, 1,
- 3, 5, 1, 3, 3, 3, 4, 3, 1, 3,
- 3, 3, 3, 1, 1, 1, 2, 2, 3, 1,
- 1, 1, 1, 1, 1, 1, 5, 1, 3, 1,
- 3, 0, 1, 1, 1, 1, 1, 1, 3, 4,
- 1, 3, 2, 3, 1, 3, 0, 1, 1, 2,
- 1, 1, 0, 3, 2, 3, 1, 3, 1, 4,
- 4, 1, 1, 1, 1, 0, 1, 1, 2, 2,
- 1, 1, 1, 1, 1, 2
+ 1, 1, 1, 4, 4, 4, 4, 4, 1, 4,
+ 1, 1, 1, 1, 1, 0, 1, 1, 4, 3,
+ 4, 1, 3, 5, 1, 3, 3, 3, 4, 3,
+ 1, 3, 3, 3, 3, 1, 1, 1, 2, 2,
+ 3, 1, 1, 1, 1, 1, 1, 1, 5, 1,
+ 3, 1, 3, 0, 1, 1, 1, 1, 1, 1,
+ 3, 4, 1, 3, 2, 3, 1, 3, 0, 1,
+ 1, 2, 1, 1, 0, 3, 2, 3, 1, 3,
+ 1, 4, 4, 1, 1, 1, 1, 0, 1, 1,
+ 2, 2, 1, 1, 1, 1, 1, 2
};
static const short yydefact[] = { 0,
- 241, 242, 1, 2, 5, 3, 0, 0, 6, 244,
+ 243, 244, 1, 2, 5, 3, 0, 0, 6, 246,
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, 139, 0, 0,
- 140, 141, 142, 0, 143, 144, 152, 145, 146, 147,
- 148, 149, 150, 151, 0, 24, 25, 27, 28, 31,
+ 18, 21, 19, 0, 17, 12, 23, 140, 0, 0,
+ 141, 142, 143, 0, 144, 145, 153, 146, 147, 148,
+ 149, 150, 151, 152, 0, 24, 25, 27, 28, 31,
29, 30, 34, 0, 0, 32, 0, 46, 0, 47,
49, 50, 36, 0, 37, 0, 40, 42, 43, 4,
- 26, 236, 99, 243, 0, 122, 0, 0, 135, 129,
- 133, 134, 123, 0, 0, 124, 128, 132, 0, 0,
- 52, 53, 125, 102, 0, 33, 45, 44, 0, 35,
- 38, 0, 0, 0, 238, 58, 0, 237, 0, 136,
- 131, 130, 127, 126, 0, 60, 0, 62, 0, 0,
- 0, 48, 5, 41, 0, 240, 239, 99, 243, 158,
- 0, 0, 165, 165, 56, 57, 165, 97, 137, 125,
- 93, 94, 95, 0, 100, 101, 0, 0, 0, 0,
- 54, 108, 109, 103, 104, 106, 113, 115, 114, 234,
- 235, 111, 110, 117, 116, 0, 118, 39, 0, 74,
- 217, 107, 0, 0, 0, 0, 0, 0, 0, 166,
- 0, 0, 217, 0, 138, 0, 0, 61, 64, 63,
- 194, 195, 191, 0, 190, 196, 0, 0, 0, 0,
- 55, 170, 173, 0, 179, 185, 184, 207, 208, 192,
- 193, 0, 0, 0, 79, 0, 0, 219, 72, 217,
- 76, 218, 0, 90, 0, 69, 88, 245, 0, 98,
- 0, 0, 0, 0, 0, 0, 0, 89, 233, 225,
- 0, 227, 232, 229, 0, 65, 67, 68, 59, 186,
- 0, 0, 0, 0, 0, 51, 162, 163, 160, 161,
- 0, 0, 0, 164, 0, 0, 0, 0, 105, 120,
- 112, 119, 0, 71, 80, 75, 223, 222, 221, 220,
- 73, 77, 72, 159, 0, 153, 0, 246, 87, 0,
- 154, 168, 156, 0, 155, 157, 226, 0, 0, 96,
- 0, 187, 188, 183, 181, 0, 209, 178, 171, 174,
- 175, 176, 0, 182, 180, 0, 0, 211, 121, 0,
- 0, 78, 91, 92, 70, 167, 169, 228, 0, 0,
- 66, 189, 200, 0, 198, 165, 0, 177, 0, 213,
- 215, 210, 0, 81, 224, 231, 230, 197, 0, 202,
- 172, 214, 0, 212, 0, 199, 205, 206, 204, 201,
- 203, 216, 85, 0, 83, 86, 82, 84, 0, 0,
- 0
+ 26, 238, 100, 245, 0, 123, 0, 0, 136, 130,
+ 134, 135, 124, 0, 0, 125, 129, 133, 0, 0,
+ 52, 53, 126, 103, 0, 33, 45, 44, 0, 35,
+ 38, 0, 0, 0, 240, 58, 0, 239, 0, 137,
+ 132, 131, 128, 127, 0, 60, 0, 62, 0, 0,
+ 0, 48, 5, 41, 0, 242, 241, 100, 245, 159,
+ 0, 0, 166, 166, 56, 57, 166, 98, 138, 126,
+ 94, 95, 90, 96, 0, 101, 102, 0, 0, 0,
+ 0, 54, 109, 110, 104, 105, 107, 114, 116, 115,
+ 236, 237, 112, 111, 118, 117, 0, 119, 39, 0,
+ 74, 219, 108, 0, 0, 0, 0, 0, 0, 0,
+ 167, 168, 0, 0, 219, 0, 139, 0, 0, 61,
+ 64, 63, 196, 197, 193, 0, 192, 198, 0, 0,
+ 0, 0, 55, 172, 175, 0, 181, 187, 186, 209,
+ 210, 194, 195, 0, 0, 0, 79, 0, 0, 221,
+ 72, 219, 76, 220, 0, 91, 0, 69, 88, 247,
+ 0, 99, 0, 0, 0, 0, 0, 0, 0, 89,
+ 235, 227, 0, 229, 234, 231, 0, 0, 0, 65,
+ 67, 68, 59, 188, 0, 0, 0, 0, 0, 51,
+ 163, 164, 161, 162, 0, 0, 0, 165, 0, 0,
+ 0, 0, 106, 121, 113, 120, 0, 71, 80, 75,
+ 225, 224, 223, 222, 73, 77, 72, 160, 0, 156,
+ 0, 248, 87, 0, 157, 170, 154, 0, 158, 155,
+ 228, 0, 0, 97, 0, 189, 190, 185, 183, 0,
+ 211, 180, 173, 176, 177, 178, 0, 184, 182, 0,
+ 0, 213, 122, 0, 0, 78, 92, 93, 70, 169,
+ 171, 230, 0, 0, 66, 191, 202, 0, 200, 166,
+ 0, 179, 0, 215, 217, 212, 0, 81, 226, 233,
+ 232, 199, 0, 204, 174, 216, 0, 214, 0, 201,
+ 207, 208, 206, 203, 205, 218, 85, 0, 83, 86,
+ 82, 84, 0, 0, 0
};
-static const short yydefgoto[] = { 379,
+static const short yydefgoto[] = { 383,
3, 4, 8, 9, 13, 14, 25, 26, 27, 55,
56, 57, 106, 58, 74, 75, 76, 77, 59, 69,
- 70, 60, 100, 210, 61, 125, 126, 255, 256, 235,
- 116, 292, 179, 180, 284, 285, 365, 374, 375, 236,
- 146, 237, 147, 148, 164, 165, 181, 182, 62, 173,
- 223, 174, 281, 149, 150, 151, 152, 153, 272, 273,
- 275, 189, 190, 211, 212, 213, 262, 214, 215, 216,
- 344, 345, 370, 371, 217, 218, 219, 327, 328, 350,
- 231, 232, 290, 331, 195, 251, 252, 220, 117, 118,
- 154, 104, 221, 239
+ 70, 60, 100, 212, 61, 125, 126, 259, 260, 237,
+ 116, 296, 180, 181, 288, 289, 369, 378, 379, 238,
+ 146, 239, 147, 148, 165, 166, 182, 183, 62, 174,
+ 225, 175, 285, 149, 150, 151, 152, 153, 154, 276,
+ 277, 279, 190, 191, 192, 213, 214, 215, 266, 216,
+ 217, 218, 348, 349, 374, 375, 219, 220, 221, 331,
+ 332, 354, 233, 234, 294, 335, 197, 253, 254, 222,
+ 117, 118, 155, 104, 223, 241
};
-static const short yypact[] = { 41,
--32768,-32768, 41,-32768, -62,-32768, 10, 54,-32768,-32768,
--32768,-32768, 20,-32768, -20, 44,-32768,-32768, 95, 78,
- 72, 83, 45, 112, 187, 44,-32768, 94,-32768,-32768,
--32768,-32768,-32768, 189,-32768,-32768, 398,-32768, 223, 23,
--32768,-32768,-32768, 57,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 201, 398,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 194, 696,-32768, 140,-32768, 53,-32768,
--32768,-32768,-32768, 47,-32768, -25,-32768,-32768,-32768,-32768,
--32768, -8, 138,-32768, 173,-32768, 185, 196,-32768,-32768,
--32768,-32768,-32768, 209, 188,-32768,-32768,-32768, 713, 265,
--32768,-32768,-32768, 160, 271,-32768,-32768,-32768, 157,-32768,
--32768, 41, 157, 174, 108,-32768, 559,-32768, 157,-32768,
--32768,-32768,-32768,-32768, 90,-32768, 169, 171, 176, 137,
- 71,-32768, -62,-32768, 137,-32768,-32768, 59, 178, 248,
- 180, 218, 42, 60,-32768,-32768, -33,-32768,-32768, 183,
--32768,-32768,-32768, 190,-32768,-32768, 289, 713, 287, 287,
- 133,-32768,-32768, 193,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768, 203,-32768,-32768, 93,-32768,
- 482,-32768, 272, 9, 170, 200, 9, 133, 231, 202,
- 9, 232, 30, 52,-32768, 337, 636,-32768,-32768,-32768,
--32768,-32768,-32768, -69,-32768,-32768, 283, 41, 133, 211,
--32768, 124, 221, 212, -69,-32768,-32768, 216,-32768,-32768,
--32768, 137, 317, 287, 227, 137, 267,-32768, 235, 30,
--32768,-32768, 287, 213, 98,-32768,-32768, 224, 636,-32768,
- 133, 103, 219, 636, 133, 106, 636,-32768,-32768,-32768,
- 120,-32768,-32768, 222, 122,-32768,-32768,-32768,-32768, 220,
- 228, 84, 233, 226, 229,-32768,-32768,-32768,-32768,-32768,
- 236, 133, 133,-32768, 133, 133, 128, 225,-32768,-32768,
- 331,-32768, 258,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 235,-32768, 234,-32768, 9,-32768,-32768, 239,
--32768,-32768,-32768, 240,-32768,-32768,-32768, 14, 234,-32768,
- 337,-32768, 237,-32768,-32768, 19,-32768,-32768, 242,-32768,
--32768,-32768, 247,-32768,-32768, 7, 127,-32768,-32768, 253,
- 317,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 255, 259,
--32768,-32768,-32768, 142,-32768, -33, 133,-32768, 287, 256,
--32768,-32768, 225,-32768, 331,-32768,-32768,-32768, 19, 28,
- 165, 256, 287,-32768, 179,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 12,-32768,-32768,-32768,-32768, 341, 365,
--32768
+static const short yypact[] = { 62,
+-32768,-32768, 62,-32768, -36,-32768, 11, 56,-32768,-32768,
+-32768,-32768, 26,-32768, -13, 202,-32768,-32768, 87, 52,
+ 66, 99, 108, 101, 116, 202,-32768, 81,-32768,-32768,
+-32768,-32768,-32768, 149,-32768,-32768, 375,-32768, 185, 10,
+-32768,-32768,-32768, 58,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 163, 375,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 140, 673,-32768, 96,-32768, 86,-32768,
+-32768,-32768,-32768, 20,-32768, -4,-32768,-32768,-32768,-32768,
+-32768, -11, 98,-32768, 134,-32768, 137, 156,-32768,-32768,
+-32768,-32768,-32768, 187, 139,-32768,-32768,-32768, 690, 269,
+-32768,-32768,-32768, 165, 272,-32768,-32768,-32768, 218,-32768,
+-32768, 62, 218, 179, 94,-32768, 536,-32768, 218,-32768,
+-32768,-32768,-32768,-32768, -65,-32768, 175, 176, 183, 199,
+ 53,-32768, -36,-32768, 199,-32768,-32768, 70, 184, 255,
+ 192, 229, 61, 65,-32768,-32768, -27,-32768,-32768, 194,
+-32768,-32768,-32768,-32768, 195,-32768,-32768, 301, 690, 299,
+ 299, 215,-32768,-32768, 197,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 203,-32768,-32768, 63,
+-32768, 459,-32768, 286, 21, 235, 210, 21, 215, 250,
+-32768, 214, 21, 256, 15, 42,-32768, 314, 613,-32768,
+-32768,-32768,-32768,-32768,-32768, -12,-32768,-32768, 297, 62,
+ 215, 223,-32768, 142, 233, 225, -12,-32768,-32768, 230,
+-32768,-32768,-32768, 199, 329, 299, 240, 199, 226,-32768,
+ 251, 15,-32768,-32768, 299, 231, 91,-32768,-32768, 241,
+ 613,-32768, 215, 128, 236, 613, 215, 144, 613,-32768,
+-32768,-32768, 158,-32768,-32768, 239, 243, 244, 159,-32768,
+-32768,-32768,-32768, 238, 248, 77, 249, 252, 245,-32768,
+-32768,-32768,-32768,-32768, 253, 215, 215,-32768, 215, 215,
+ 89, 254,-32768,-32768, 355,-32768, 283,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 251,-32768, 247,-32768,
+ 21,-32768,-32768, 259,-32768,-32768,-32768, 260,-32768,-32768,
+-32768, 46, 247,-32768, 314,-32768, 258,-32768,-32768, 28,
+-32768,-32768, 265,-32768,-32768,-32768, 262,-32768,-32768, -1,
+ 160,-32768,-32768, 271, 329,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 275, 277,-32768,-32768,-32768, 169,-32768, -27,
+ 215,-32768, 299, 264,-32768,-32768, 254,-32768, 355,-32768,
+-32768,-32768, 28, 8, 182, 264, 299,-32768, 125,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 12,-32768,-32768,
+-32768,-32768, 385, 389,-32768
};
static const short yypgoto[] = {-32768,
--32768, 364, 241,-32768,-32768, 356,-32768,-32768, 344,-32768,
--32768, 316,-32768,-32768,-32768, 301,-32768, 263,-32768,-32768,
- 269,-32768, 314,-32768,-32768,-32768, 230,-32768, 69, 62,
--32768, 96,-32768, 156,-32768,-32768,-32768,-32768, 16, 86,
- -131,-32768, -193, -55,-32768, 172, -174, -94,-32768,-32768,
--32768, -162, 61, -53, -51,-32768, 89,-32768,-32768,-32768,
--32768, -142,-32768, -118, 50, -17, 184,-32768, -188,-32768,
--32768, 32,-32768,-32768,-32768,-32768,-32768,-32768, 55, 49,
- -121,-32768,-32768,-32768,-32768,-32768, 97, -123,-32768, 181,
- 1,-32768, -7,-32768
+-32768, 391, 263,-32768,-32768, 382,-32768,-32768, 374,-32768,
+-32768, 345,-32768,-32768,-32768, 328,-32768, 290,-32768,-32768,
+ 300,-32768, 346,-32768,-32768,-32768, 257,-32768, 95, -67,
+-32768, 115,-32768, 186,-32768,-32768,-32768,-32768, 37, 117,
+ -40,-32768, -188, -50,-32768, 196, -179, -91,-32768,-32768,
+-32768, -219, 84, -56, -52,-32768, 35,-32768,-32768,-32768,
+-32768,-32768, -142,-32768,-32768, -165, 71, -121, 204,-32768,
+ -141,-32768,-32768, 64,-32768,-32768,-32768,-32768,-32768,-32768,
+ 69, 75, -124,-32768,-32768,-32768,-32768,-32768, 118, -120,
+-32768, 191, 1,-32768, -7,-32768
};
-#define YYLAST 804
+#define YYLAST 781
static const short yytable[] = { 15,
- 5, 192, 257, 5, 193, 15, 230, 175, 101, 101,
- 102, 102, 103, 103, 10, 373, 10, 10, 11, 114,
- 112, 10, 170, 171, 162, 163, 10, 10, 11, 65,
- 10, 260, 72, 1, 2, 166, 79, 64, 289, 67,
- 71, 7, 367, 261, 78, 127, 186, 103, 65, 229,
- 303, 1, 2, 306, 10, 20, 64, 1, 2, 10,
- 170, 171, 227, 21, 10, 259, 79, 1, 2, 243,
- 253, 248, 188, 315, 78, 167, 168, 169, 10, 170,
- 171, 1, 2, 113, 22, 19, 23, 16, 325, 201,
- 265, 10, 170, 171, 115, 24, 368, 32, 228, 128,
- 369, 72, 73, 28, 127, 79, 103, 299, 293, 71,
- 234, 156, 133, 78, 12, 249, 377, 257, 349, 155,
- 343, 186, 300, 177, 17, 63, 304, 166, 202, 240,
- 68, 176, 333, 201, 29, 10, 170, 171, 201, 186,
- 10, 170, 171, 314, 63, 187, 339, 188, 136, 162,
- 163, 199, 200, 249, 110, 30, 250, 323, 128, 137,
- 108, 109, -241, 191, 10, 188, 31, 1, 2, 206,
- 119, 334, 202, 288, 172, 103, 238, 202, 203, 238,
- 83, 84, 373, 238, 253, 340, 254, 324, 258, 34,
- 376, 162, 163, 204, 157, 33, 82, 225, 158, 376,
- 36, 226, 296, 360, 83, 84, 297, 301, 264, 37,
- 305, 297, 205, 206, 297, 85, 282, 86, 206, 87,
- 267, 268, 269, 270, 307, 294, 310, 207, 308, 88,
- 311, 352, 271, 89, 66, 353, 208, 90, 209, 80,
- 91, 10, 170, 171, 1, 2, 358, 107, 242, 119,
- 359, 92, 246, 120, 320, 321, 93, 322, 94, 123,
- 95, 267, 268, 269, 270, 121, 122, 129, 124, 96,
- 97, 130, 201, 131, 10, 170, 171, 135, 159, 161,
- 160, -242, 183, 184, 98, 185, 194, 177, 85, 238,
- 86, 197, 87, 196, 10, 176, 233, 99, 244, 247,
- 254, 177, 88, 258, 222, 241, 89, 245, 346, 176,
- 90, 202, 263, 91, 224, 266, 274, 276, 351, 278,
- 280, 283, 291, 295, 92, 302, 115, 309, 313, 93,
- 317, 94, 312, 95, 329, 318, 316, 319, 326, 330,
- 380, 351, 96, 97, 10, 336, 337, 138, 139, 342,
- 347, 346, 206, 348, 140, 372, 354, 98, 85, 38,
- 86, 356, 87, 141, 381, 357, 6, 363, 18, 35,
- 287, 81, 88, 178, 111, 134, 89, 132, 105, 341,
- 90, 286, 335, 91, 41, 42, 43, 198, 332, 378,
- 366, 355, 142, 279, 92, 45, 361, 362, 277, 93,
- 46, 94, 47, 95, 338, 10, 0, 364, 1, 2,
- 48, 0, 96, 97, 143, 144, 0, 0, 298, 49,
- 38, 50, 0, 0, 0, 0, 51, 98, 52, 53,
- 54, 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, 0, 0, 51, 0, 52,
- 53, 54, 138, 139, 162, 163, 0, 0, 0, 140,
- 0, 0, 0, 85, 38, 86, 0, 87, 141, 0,
- 0, 0, 0, 0, 227, 0, 0, 88, 0, 0,
- 0, 89, 0, 0, 0, 90, 0, 0, 91, 41,
- 42, 43, 0, 0, 0, 0, 0, 142, 0, 92,
- 45, 0, 0, 0, 93, 46, 94, 47, 95, 0,
- 228, 0, 0, 0, 0, 48, 0, 96, 97, 143,
- 144, 0, 0, 0, 49, 0, 50, 0, 0, 138,
- 139, 51, 98, 52, 53, 54, 140, 0, 0, 0,
+ 5, 194, 232, 5, 195, 15, 10, 102, 102, 261,
+ 176, 103, 103, 101, 101, 377, 114, 10, 10, 11,
+ 1, 2, 371, 245, 163, 164, 67, 10, 10, 65,
+ 1, 2, 72, 10, 11, 10, 79, 64, 167, 158,
+ 71, 112, 127, 159, 78, 269, 103, 229, 65, 10,
+ 171, 172, 187, 10, 171, 172, 64, 168, 169, 170,
+ 10, 171, 172, 1, 2, 10, 79, 7, 1, 2,
+ 250, 63, 1, 2, 78, 255, 372, 304, 189, 337,
+ 373, 308, 203, 230, 10, 171, 172, 293, 264, 16,
+ 63, 115, 19, 343, 203, 28, 10, 171, 172, 128,
+ 265, 72, 127, 73, 113, 79, 103, 297, 29, 71,
+ 353, 157, 133, 78, 327, 12, 381, 68, 34, 156,
+ 244, 204, 236, 178, 319, 248, 261, 110, 377, 347,
+ 17, 177, 167, 204, 136, 242, 318, 163, 164, 329,
+ 187, 231, 82, 251, 187, 137, 252, 251, 328, 30,
+ 83, 84, 201, 202, 324, 325, 173, 326, 263, 128,
+ 32, 85, 208, 86, 188, 87, 189, 227, 193, 37,
+ 189, 228, 292, -243, 208, 88, 103, 240, 338, 89,
+ 240, 119, 31, 90, 33, 240, 91, 36, 256, 380,
+ 262, 255, 344, 108, 109, 300, 66, 92, 380, 301,
+ 303, 80, 93, 107, 94, 307, 95, 364, 310, 119,
+ 268, 163, 164, 20, 120, 96, 97, 121, 286, 124,
+ 203, 21, 10, 171, 172, 10, 122, 298, 1, 2,
+ 98, 203, 305, 10, 171, 172, 301, 123, 271, 272,
+ 273, 274, 22, 99, 23, 83, 84, 85, 309, 86,
+ 275, 87, 301, 24, 10, 171, 172, 1, 2, 204,
+ 205, 88, 311, 314, 356, 89, 312, 315, 357, 90,
+ 204, 129, 91, 362, 131, 206, 130, 363, 271, 272,
+ 273, 274, 135, 92, 160, 161, 162, -244, 93, 184,
+ 94, 178, 95, 240, 207, 185, 186, 196, 198, 177,
+ 208, 96, 97, 199, 256, 178, 10, 262, 224, 209,
+ 235, 208, 350, 177, 226, 243, 98, 246, 210, 247,
+ 211, 10, 355, 249, 138, 139, 267, 270, 278, 291,
+ 280, 140, 284, 282, 287, 85, 38, 86, 295, 87,
+ 141, 299, 306, 115, 313, 355, 188, 193, 317, 88,
+ 316, 322, 320, 89, 323, 350, 321, 90, 333, 376,
+ 91, 41, 42, 43, 334, 340, 341, 330, 352, 142,
+ 346, 92, 45, 351, 358, 367, 93, 46, 94, 47,
+ 95, 360, 10, 361, 384, 1, 2, 48, 385, 96,
+ 97, 257, 258, 6, 18, 179, 49, 38, 50, 35,
+ 81, 111, 134, 51, 98, 52, 53, 54, 132, 345,
+ 105, 336, 39, 290, 382, 200, 40, 339, 359, 283,
+ 281, 365, 41, 42, 43, 368, 370, 366, 44, 342,
+ 302, 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, 0, 0, 51, 0, 52, 53, 54, 138,
+ 139, 163, 164, 0, 0, 0, 140, 0, 0, 0,
85, 38, 86, 0, 87, 141, 0, 0, 0, 0,
- 0, 0, 0, 0, 88, 0, 0, 0, 89, 0,
+ 0, 229, 0, 0, 88, 0, 0, 0, 89, 0,
0, 0, 90, 0, 0, 91, 41, 42, 43, 0,
0, 0, 0, 0, 142, 0, 92, 45, 0, 0,
- 0, 93, 46, 94, 47, 95, 0, 0, 0, 0,
+ 0, 93, 46, 94, 47, 95, 0, 230, 0, 0,
0, 0, 48, 0, 96, 97, 143, 144, 0, 0,
- 0, 49, 0, 50, 0, 145, 138, 139, 51, 98,
+ 0, 49, 0, 50, 0, 0, 138, 139, 51, 98,
52, 53, 54, 140, 0, 0, 0, 85, 38, 86,
0, 87, 141, 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, 142, 0, 92, 45, 0, 0, 0, 93, 46,
- 94, 47, 95, 0, 0, 0, 83, 84, 0, 48,
- 0, 96, 97, 143, 144, 0, 0, 85, 49, 86,
- 50, 87, 0, 1, 2, 51, 98, 52, 53, 54,
- 0, 88, 0, 0, 85, 89, 86, 0, 87, 90,
- 0, 0, 91, 0, 0, 0, 0, 0, 88, 0,
- 0, 0, 89, 92, 0, 0, 90, 0, 93, 91,
- 94, 0, 95, 0, 0, 0, 0, 0, 0, 0,
- 92, 96, 97, 0, 0, 93, 0, 94, 0, 95,
- 0, 0, 0, 0, 0, 0, 98, 0, 96, 97,
+ 94, 47, 95, 0, 0, 0, 0, 0, 0, 48,
+ 0, 96, 97, 143, 144, 0, 0, 0, 49, 0,
+ 50, 0, 145, 138, 139, 51, 98, 52, 53, 54,
+ 140, 0, 0, 0, 85, 38, 86, 0, 87, 141,
+ 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, 142, 0,
+ 92, 45, 0, 0, 0, 93, 46, 94, 47, 95,
+ 0, 0, 0, 83, 84, 0, 48, 0, 96, 97,
+ 143, 144, 0, 0, 85, 49, 86, 50, 87, 0,
+ 1, 2, 51, 98, 52, 53, 54, 0, 88, 0,
+ 0, 85, 89, 86, 0, 87, 90, 0, 0, 91,
+ 0, 0, 0, 0, 0, 88, 0, 0, 0, 89,
+ 92, 0, 0, 90, 0, 93, 91, 94, 0, 95,
+ 0, 0, 0, 0, 0, 0, 0, 92, 96, 97,
+ 0, 0, 93, 0, 94, 0, 95, 0, 0, 0,
+ 0, 0, 0, 98, 0, 96, 97, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 98
+ 98
};
static const short yycheck[] = { 7,
- 0, 144, 196, 3, 147, 13, 181, 131, 64, 65,
- 64, 65, 64, 65, 8, 4, 8, 8, 9, 28,
- 46, 8, 9, 10, 13, 14, 8, 8, 9, 37,
- 8, 101, 40, 11, 12, 130, 44, 37, 227, 17,
- 40, 104, 15, 113, 44, 99, 80, 99, 56, 181,
- 244, 11, 12, 247, 8, 12, 56, 11, 12, 8,
- 9, 10, 33, 20, 8, 197, 74, 11, 12, 188,
- 194, 193, 106, 262, 74, 5, 6, 7, 8, 9,
- 10, 11, 12, 109, 41, 106, 43, 34, 277, 6,
- 209, 8, 9, 10, 103, 52, 69, 53, 69, 99,
- 73, 109, 46, 9, 158, 113, 158, 239, 230, 109,
- 102, 119, 112, 113, 105, 102, 105, 311, 112, 119,
- 102, 80, 241, 131, 105, 37, 245, 222, 45, 185,
- 108, 131, 295, 6, 57, 8, 9, 10, 6, 80,
- 8, 9, 10, 60, 56, 104, 309, 106, 41, 13,
- 14, 159, 160, 102, 108, 84, 105, 276, 158, 52,
- 108, 109, 104, 104, 8, 106, 84, 11, 12, 86,
- 112, 295, 45, 227, 104, 227, 184, 45, 46, 187,
- 11, 12, 4, 191, 308, 309, 194, 60, 196, 3,
- 365, 13, 14, 61, 105, 84, 3, 105, 109, 374,
- 107, 109, 105, 346, 11, 12, 109, 105, 208, 21,
- 105, 109, 80, 86, 109, 22, 224, 24, 86, 26,
- 97, 98, 99, 100, 105, 233, 105, 95, 109, 36,
- 109, 105, 109, 40, 12, 109, 104, 44, 106, 39,
- 47, 8, 9, 10, 11, 12, 105, 108, 187, 112,
- 109, 58, 191, 81, 272, 273, 63, 275, 65, 51,
- 67, 97, 98, 99, 100, 81, 71, 3, 81, 76,
- 77, 112, 6, 3, 8, 9, 10, 104, 110, 104,
- 110, 104, 35, 104, 91, 68, 104, 295, 22, 297,
- 24, 3, 26, 104, 8, 295, 25, 104, 68, 68,
- 308, 309, 36, 311, 112, 106, 40, 106, 316, 309,
- 44, 45, 30, 47, 112, 105, 96, 106, 326, 104,
- 4, 95, 88, 111, 58, 107, 103, 106, 101, 63,
- 105, 65, 113, 67, 4, 107, 104, 102, 114, 82,
- 0, 349, 76, 77, 8, 107, 107, 11, 12, 113,
- 109, 359, 86, 107, 18, 363, 104, 91, 22, 23,
- 24, 107, 26, 27, 0, 107, 3, 112, 13, 26,
- 104, 56, 36, 133, 74, 113, 40, 109, 65, 311,
- 44, 226, 297, 47, 48, 49, 50, 158, 293, 374,
- 359, 331, 56, 222, 58, 59, 347, 349, 215, 63,
- 64, 65, 66, 67, 308, 8, -1, 353, 11, 12,
- 74, -1, 76, 77, 78, 79, -1, -1, 238, 83,
- 23, 85, -1, -1, -1, -1, 90, 91, 92, 93,
- 94, -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, -1, -1, 90, -1, 92,
- 93, 94, 11, 12, 13, 14, -1, -1, -1, 18,
- -1, -1, -1, 22, 23, 24, -1, 26, 27, -1,
- -1, -1, -1, -1, 33, -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,
- 69, -1, -1, -1, -1, 74, -1, 76, 77, 78,
- 79, -1, -1, -1, 83, -1, 85, -1, -1, 11,
- 12, 90, 91, 92, 93, 94, 18, -1, -1, -1,
+ 0, 144, 182, 3, 147, 13, 8, 64, 65, 198,
+ 131, 64, 65, 64, 65, 4, 28, 8, 8, 9,
+ 11, 12, 15, 189, 13, 14, 17, 8, 8, 37,
+ 11, 12, 40, 8, 9, 8, 44, 37, 130, 105,
+ 40, 46, 99, 109, 44, 211, 99, 33, 56, 8,
+ 9, 10, 80, 8, 9, 10, 56, 5, 6, 7,
+ 8, 9, 10, 11, 12, 8, 74, 104, 11, 12,
+ 195, 37, 11, 12, 74, 196, 69, 243, 106, 299,
+ 73, 247, 6, 69, 8, 9, 10, 229, 101, 34,
+ 56, 103, 106, 313, 6, 9, 8, 9, 10, 99,
+ 113, 109, 159, 46, 109, 113, 159, 232, 57, 109,
+ 112, 119, 112, 113, 280, 105, 105, 108, 3, 119,
+ 188, 45, 102, 131, 266, 193, 315, 108, 4, 102,
+ 105, 131, 224, 45, 41, 186, 60, 13, 14, 281,
+ 80, 182, 3, 102, 80, 52, 105, 102, 60, 84,
+ 11, 12, 160, 161, 276, 277, 104, 279, 199, 159,
+ 53, 22, 86, 24, 104, 26, 106, 105, 104, 21,
+ 106, 109, 229, 104, 86, 36, 229, 185, 299, 40,
+ 188, 112, 84, 44, 84, 193, 47, 107, 196, 369,
+ 198, 312, 313, 108, 109, 105, 12, 58, 378, 109,
+ 241, 39, 63, 108, 65, 246, 67, 350, 249, 112,
+ 210, 13, 14, 12, 81, 76, 77, 81, 226, 81,
+ 6, 20, 8, 9, 10, 8, 71, 235, 11, 12,
+ 91, 6, 105, 8, 9, 10, 109, 51, 97, 98,
+ 99, 100, 41, 104, 43, 11, 12, 22, 105, 24,
+ 109, 26, 109, 52, 8, 9, 10, 11, 12, 45,
+ 46, 36, 105, 105, 105, 40, 109, 109, 109, 44,
+ 45, 3, 47, 105, 3, 61, 112, 109, 97, 98,
+ 99, 100, 104, 58, 110, 110, 104, 104, 63, 35,
+ 65, 299, 67, 301, 80, 104, 68, 104, 104, 299,
+ 86, 76, 77, 3, 312, 313, 8, 315, 112, 95,
+ 25, 86, 320, 313, 112, 106, 91, 68, 104, 106,
+ 106, 8, 330, 68, 11, 12, 30, 105, 96, 104,
+ 106, 18, 4, 104, 95, 22, 23, 24, 88, 26,
+ 27, 111, 107, 103, 106, 353, 104, 104, 101, 36,
+ 113, 107, 104, 40, 102, 363, 105, 44, 4, 367,
+ 47, 48, 49, 50, 82, 107, 107, 114, 107, 56,
+ 113, 58, 59, 109, 104, 112, 63, 64, 65, 66,
+ 67, 107, 8, 107, 0, 11, 12, 74, 0, 76,
+ 77, 78, 79, 3, 13, 133, 83, 23, 85, 26,
+ 56, 74, 113, 90, 91, 92, 93, 94, 109, 315,
+ 65, 297, 38, 228, 378, 159, 42, 301, 335, 224,
+ 217, 351, 48, 49, 50, 357, 363, 353, 54, 312,
+ 240, -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, -1, -1, 90, -1, 92, 93, 94, 11,
+ 12, 13, 14, -1, -1, -1, 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, 33, -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, 63, 64, 65, 66, 67, -1, 69, -1, -1,
-1, -1, 74, -1, 76, 77, 78, 79, -1, -1,
- -1, 83, -1, 85, -1, 87, 11, 12, 90, 91,
+ -1, 83, -1, 85, -1, -1, 11, 12, 90, 91,
92, 93, 94, 18, -1, -1, -1, 22, 23, 24,
-1, 26, 27, -1, -1, -1, -1, -1, -1, -1,
-1, 36, -1, -1, -1, 40, -1, -1, -1, 44,
-1, -1, 47, 48, 49, 50, -1, -1, -1, -1,
-1, 56, -1, 58, 59, -1, -1, -1, 63, 64,
- 65, 66, 67, -1, -1, -1, 11, 12, -1, 74,
- -1, 76, 77, 78, 79, -1, -1, 22, 83, 24,
- 85, 26, -1, 11, 12, 90, 91, 92, 93, 94,
- -1, 36, -1, -1, 22, 40, 24, -1, 26, 44,
- -1, -1, 47, -1, -1, -1, -1, -1, 36, -1,
- -1, -1, 40, 58, -1, -1, 44, -1, 63, 47,
- 65, -1, 67, -1, -1, -1, -1, -1, -1, -1,
- 58, 76, 77, -1, -1, 63, -1, 65, -1, 67,
- -1, -1, -1, -1, -1, -1, 91, -1, 76, 77,
+ 65, 66, 67, -1, -1, -1, -1, -1, -1, 74,
+ -1, 76, 77, 78, 79, -1, -1, -1, 83, -1,
+ 85, -1, 87, 11, 12, 90, 91, 92, 93, 94,
+ 18, -1, -1, -1, 22, 23, 24, -1, 26, 27,
+ -1, -1, -1, -1, -1, -1, -1, -1, 36, -1,
+ -1, -1, 40, -1, -1, -1, 44, -1, -1, 47,
+ 48, 49, 50, -1, -1, -1, -1, -1, 56, -1,
+ 58, 59, -1, -1, -1, 63, 64, 65, 66, 67,
+ -1, -1, -1, 11, 12, -1, 74, -1, 76, 77,
+ 78, 79, -1, -1, 22, 83, 24, 85, 26, -1,
+ 11, 12, 90, 91, 92, 93, 94, -1, 36, -1,
+ -1, 22, 40, 24, -1, 26, 44, -1, -1, 47,
+ -1, -1, -1, -1, -1, 36, -1, -1, -1, 40,
+ 58, -1, -1, 44, -1, 63, 47, 65, -1, 67,
+ -1, -1, -1, -1, -1, -1, -1, 58, 76, 77,
+ -1, -1, 63, -1, 65, -1, 67, -1, -1, -1,
+ -1, -1, -1, 91, -1, 76, 77, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 91
+ 91
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/bison.simple"
@@ -1311,13 +1309,13 @@ yyreduce:
switch (yyn) {
case 1:
-#line 297 "asn1p_y.y"
+#line 299 "asn1p_y.y"
{
*(void **)param = yyvsp[0].a_grammar;
;
break;}
case 2:
-#line 303 "asn1p_y.y"
+#line 305 "asn1p_y.y"
{
yyval.a_grammar = asn1p_new();
checkmem(yyval.a_grammar);
@@ -1325,14 +1323,14 @@ case 2:
;
break;}
case 3:
-#line 308 "asn1p_y.y"
+#line 310 "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 329 "asn1p_y.y"
+#line 331 "asn1p_y.y"
{
if(yyvsp[-1].a_module) {
@@ -1349,27 +1347,27 @@ case 4:
;
break;}
case 5:
-#line 350 "asn1p_y.y"
+#line 352 "asn1p_y.y"
{ yyval.a_oid = 0; ;
break;}
case 6:
-#line 351 "asn1p_y.y"
+#line 353 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
break;}
case 7:
-#line 355 "asn1p_y.y"
+#line 357 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
;
break;}
case 8:
-#line 358 "asn1p_y.y"
+#line 360 "asn1p_y.y"
{
yyval.a_oid = 0;
;
break;}
case 9:
-#line 364 "asn1p_y.y"
+#line 366 "asn1p_y.y"
{
yyval.a_oid = asn1p_oid_new();
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1378,7 +1376,7 @@ case 9:
;
break;}
case 10:
-#line 370 "asn1p_y.y"
+#line 372 "asn1p_y.y"
{
yyval.a_oid = yyvsp[-1].a_oid;
asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1387,74 +1385,74 @@ case 10:
;
break;}
case 11:
-#line 379 "asn1p_y.y"
+#line 381 "asn1p_y.y"
{ /* iso */
yyval.a_oid_arc.name = yyvsp[0].tv_str;
yyval.a_oid_arc.number = -1;
;
break;}
case 12:
-#line 383 "asn1p_y.y"
+#line 385 "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 387 "asn1p_y.y"
+#line 389 "asn1p_y.y"
{ /* 1 */
yyval.a_oid_arc.name = 0;
yyval.a_oid_arc.number = yyvsp[0].a_int;
;
break;}
case 14:
-#line 397 "asn1p_y.y"
+#line 399 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
break;}
case 15:
-#line 398 "asn1p_y.y"
+#line 400 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 16:
-#line 407 "asn1p_y.y"
+#line 409 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[0].a_module_flags;
;
break;}
case 17:
-#line 410 "asn1p_y.y"
+#line 412 "asn1p_y.y"
{
yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
;
break;}
case 18:
-#line 419 "asn1p_y.y"
+#line 421 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXPLICIT_TAGS;
;
break;}
case 19:
-#line 422 "asn1p_y.y"
+#line 424 "asn1p_y.y"
{
yyval.a_module_flags = MSF_IMPLICIT_TAGS;
;
break;}
case 20:
-#line 425 "asn1p_y.y"
+#line 427 "asn1p_y.y"
{
yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
;
break;}
case 21:
-#line 428 "asn1p_y.y"
+#line 430 "asn1p_y.y"
{
yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
;
break;}
case 22:
-#line 432 "asn1p_y.y"
+#line 434 "asn1p_y.y"
{
/* X.680Amd1 specifies TAG and XER */
if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1472,23 +1470,23 @@ case 22:
;
break;}
case 23:
-#line 453 "asn1p_y.y"
+#line 455 "asn1p_y.y"
{ yyval.a_module = 0; ;
break;}
case 24:
-#line 454 "asn1p_y.y"
+#line 456 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 25:
-#line 463 "asn1p_y.y"
+#line 465 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 26:
-#line 466 "asn1p_y.y"
+#line 468 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
@@ -1518,13 +1516,13 @@ case 26:
;
break;}
case 27:
-#line 499 "asn1p_y.y"
+#line 501 "asn1p_y.y"
{
yyval.a_module = yyvsp[0].a_module;
;
break;}
case 28:
-#line 502 "asn1p_y.y"
+#line 504 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1536,7 +1534,7 @@ case 28:
;
break;}
case 29:
-#line 511 "asn1p_y.y"
+#line 513 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1546,7 +1544,7 @@ case 29:
;
break;}
case 30:
-#line 518 "asn1p_y.y"
+#line 520 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1556,7 +1554,7 @@ case 30:
;
break;}
case 31:
-#line 531 "asn1p_y.y"
+#line 533 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1566,11 +1564,11 @@ case 31:
;
break;}
case 32:
-#line 539 "asn1p_y.y"
+#line 541 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
break;}
case 33:
-#line 540 "asn1p_y.y"
+#line 542 "asn1p_y.y"
{
fprintf(stderr,
"WARNING: ENCODING-CONTROL %s "
@@ -1581,7 +1579,7 @@ case 33:
;
break;}
case 34:
-#line 552 "asn1p_y.y"
+#line 554 "asn1p_y.y"
{
return yyerror(
"Attempt to redefine a standard basic type, "
@@ -1590,19 +1588,19 @@ case 34:
;
break;}
case 35:
-#line 566 "asn1p_y.y"
+#line 568 "asn1p_y.y"
{
yyval.a_module = yyvsp[-1].a_module;
;
break;}
case 36:
-#line 572 "asn1p_y.y"
+#line 574 "asn1p_y.y"
{
return yyerror("Empty IMPORTS list");
;
break;}
case 37:
-#line 578 "asn1p_y.y"
+#line 580 "asn1p_y.y"
{
yyval.a_module = asn1p_module_new();
checkmem(yyval.a_module);
@@ -1610,14 +1608,14 @@ case 37:
;
break;}
case 38:
-#line 583 "asn1p_y.y"
+#line 585 "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 590 "asn1p_y.y"
+#line 592 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-3].a_xports;
yyval.a_xports->from = yyvsp[-1].tv_str;
@@ -1626,7 +1624,7 @@ case 39:
;
break;}
case 40:
-#line 599 "asn1p_y.y"
+#line 601 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
checkmem(yyval.a_xports);
@@ -1634,14 +1632,14 @@ case 40:
;
break;}
case 41:
-#line 604 "asn1p_y.y"
+#line 606 "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 611 "asn1p_y.y"
+#line 613 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1650,7 +1648,7 @@ case 42:
;
break;}
case 43:
-#line 617 "asn1p_y.y"
+#line 619 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1659,19 +1657,19 @@ case 43:
;
break;}
case 44:
-#line 626 "asn1p_y.y"
+#line 628 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-1].a_xports;
;
break;}
case 45:
-#line 629 "asn1p_y.y"
+#line 631 "asn1p_y.y"
{
yyval.a_xports = 0;
;
break;}
case 46:
-#line 632 "asn1p_y.y"
+#line 634 "asn1p_y.y"
{
/* Empty EXPORTS clause effectively prohibits export. */
yyval.a_xports = asn1p_xports_new();
@@ -1679,7 +1677,7 @@ case 46:
;
break;}
case 47:
-#line 640 "asn1p_y.y"
+#line 642 "asn1p_y.y"
{
yyval.a_xports = asn1p_xports_new();
assert(yyval.a_xports);
@@ -1687,14 +1685,14 @@ case 47:
;
break;}
case 48:
-#line 645 "asn1p_y.y"
+#line 647 "asn1p_y.y"
{
yyval.a_xports = yyvsp[-2].a_xports;
TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
;
break;}
case 49:
-#line 652 "asn1p_y.y"
+#line 654 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1703,7 +1701,7 @@ case 49:
;
break;}
case 50:
-#line 658 "asn1p_y.y"
+#line 660 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1712,7 +1710,7 @@ case 50:
;
break;}
case 51:
-#line 668 "asn1p_y.y"
+#line 670 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-4].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1722,7 +1720,7 @@ case 51:
;
break;}
case 52:
-#line 678 "asn1p_y.y"
+#line 680 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1732,7 +1730,7 @@ case 52:
;
break;}
case 53:
-#line 685 "asn1p_y.y"
+#line 687 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1741,16 +1739,16 @@ case 53:
;
break;}
case 54:
-#line 694 "asn1p_y.y"
+#line 696 "asn1p_y.y"
{ ;
break;}
case 55:
-#line 695 "asn1p_y.y"
+#line 697 "asn1p_y.y"
{
;
break;}
case 56:
-#line 711 "asn1p_y.y"
+#line 713 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1761,7 +1759,7 @@ case 56:
;
break;}
case 57:
-#line 719 "asn1p_y.y"
+#line 721 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -1771,7 +1769,7 @@ case 57:
;
break;}
case 58:
-#line 726 "asn1p_y.y"
+#line 728 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1780,7 +1778,7 @@ case 58:
;
break;}
case 59:
-#line 743 "asn1p_y.y"
+#line 745 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -1790,7 +1788,7 @@ case 59:
;
break;}
case 60:
-#line 753 "asn1p_y.y"
+#line 755 "asn1p_y.y"
{
int ret;
yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1802,7 +1800,7 @@ case 60:
;
break;}
case 61:
-#line 762 "asn1p_y.y"
+#line 764 "asn1p_y.y"
{
int ret;
yyval.a_plist = yyvsp[-2].a_plist;
@@ -1813,14 +1811,14 @@ case 61:
;
break;}
case 62:
-#line 773 "asn1p_y.y"
+#line 775 "asn1p_y.y"
{
yyval.a_parg.governor = NULL;
yyval.a_parg.argument = yyvsp[0].tv_str;
;
break;}
case 63:
-#line 777 "asn1p_y.y"
+#line 779 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1830,7 +1828,7 @@ case 63:
;
break;}
case 64:
-#line 784 "asn1p_y.y"
+#line 786 "asn1p_y.y"
{
int ret;
yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1841,7 +1839,7 @@ case 64:
;
break;}
case 65:
-#line 795 "asn1p_y.y"
+#line 797 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1849,20 +1847,20 @@ case 65:
;
break;}
case 66:
-#line 800 "asn1p_y.y"
+#line 802 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
case 67:
-#line 807 "asn1p_y.y"
+#line 809 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 68:
-#line 810 "asn1p_y.y"
+#line 812 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1872,7 +1870,7 @@ case 68:
;
break;}
case 69:
-#line 823 "asn1p_y.y"
+#line 825 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1880,14 +1878,14 @@ case 69:
;
break;}
case 70:
-#line 828 "asn1p_y.y"
+#line 830 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
case 71:
-#line 835 "asn1p_y.y"
+#line 837 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
checkmem(yyval.a_expr);
@@ -1897,15 +1895,15 @@ case 71:
;
break;}
case 72:
-#line 845 "asn1p_y.y"
+#line 847 "asn1p_y.y"
{ yyval.a_int = 0; ;
break;}
case 73:
-#line 846 "asn1p_y.y"
+#line 848 "asn1p_y.y"
{ yyval.a_int = 1; ;
break;}
case 74:
-#line 850 "asn1p_y.y"
+#line 852 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1915,14 +1913,14 @@ case 74:
;
break;}
case 75:
-#line 857 "asn1p_y.y"
+#line 859 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
case 76:
-#line 864 "asn1p_y.y"
+#line 866 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -1933,7 +1931,7 @@ case 76:
;
break;}
case 77:
-#line 872 "asn1p_y.y"
+#line 874 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
yyval.a_expr->Identifier = yyvsp[-2].a_refcomp.name;
@@ -1941,7 +1939,7 @@ case 77:
;
break;}
case 78:
-#line 877 "asn1p_y.y"
+#line 879 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(yylineno);
@@ -1959,47 +1957,47 @@ case 78:
;
break;}
case 79:
-#line 895 "asn1p_y.y"
+#line 897 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
break;}
case 80:
-#line 896 "asn1p_y.y"
+#line 898 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[0].a_wsynt;
;
break;}
case 81:
-#line 903 "asn1p_y.y"
+#line 905 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
break;}
case 82:
-#line 905 "asn1p_y.y"
+#line 907 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
;
break;}
case 83:
-#line 911 "asn1p_y.y"
+#line 913 "asn1p_y.y"
{
yyval.a_wsynt = asn1p_wsyntx_new();
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 84:
-#line 915 "asn1p_y.y"
+#line 917 "asn1p_y.y"
{
yyval.a_wsynt = yyvsp[-1].a_wsynt;
TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
;
break;}
case 85:
-#line 922 "asn1p_y.y"
+#line 924 "asn1p_y.y"
{
yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
;
break;}
case 86:
-#line 925 "asn1p_y.y"
+#line 927 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2011,7 +2009,7 @@ case 86:
;
break;}
case 87:
-#line 951 "asn1p_y.y"
+#line 953 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
assert(yyval.a_expr->Identifier == 0);
@@ -2020,21 +2018,34 @@ case 87:
;
break;}
case 88:
-#line 957 "asn1p_y.y"
+#line 959 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
case 89:
-#line 963 "asn1p_y.y"
+#line 965 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
- yyval.a_expr->constraints = yyvsp[-1].a_constr;
+ if(yyval.a_expr->constraints) {
+ assert(!yyvsp[-1].a_constr);
+ } else {
+ yyval.a_expr->constraints = yyvsp[-1].a_constr;
+ }
yyval.a_expr->marker = yyvsp[0].a_marker;
;
break;}
case 90:
-#line 971 "asn1p_y.y"
+#line 974 "asn1p_y.y"
+{
+ /* This type includes constraints on its own */
+ yyval.a_expr = yyvsp[0].a_expr;
+ checkmem(yyval.a_expr);
+ assert(yyval.a_expr->meta_type);
+ ;
+ break;}
+case 91:
+#line 983 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -2044,8 +2055,8 @@ case 90:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 91:
-#line 979 "asn1p_y.y"
+case 92:
+#line 991 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -2056,8 +2067,8 @@ case 91:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 92:
-#line 988 "asn1p_y.y"
+case 93:
+#line 1000 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -2068,14 +2079,14 @@ case 92:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 93:
-#line 1000 "asn1p_y.y"
+case 94:
+#line 1012 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
;
break;}
-case 94:
-#line 1003 "asn1p_y.y"
+case 95:
+#line 1015 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2083,16 +2094,16 @@ case 94:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 95:
-#line 1009 "asn1p_y.y"
+case 96:
+#line 1021 "asn1p_y.y"
{
yyval.a_expr = yyvsp[0].a_expr;
checkmem(yyval.a_expr);
assert(yyval.a_expr->meta_type);
;
break;}
-case 96:
-#line 1017 "asn1p_y.y"
+case 97:
+#line 1029 "asn1p_y.y"
{
int ret;
yyval.a_expr = yyvsp[-1].a_expr;
@@ -2108,8 +2119,8 @@ case 96:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 97:
-#line 1041 "asn1p_y.y"
+case 98:
+#line 1053 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2118,8 +2129,8 @@ case 97:
yyval.a_expr->meta_type = AMT_TYPEREF;
;
break;}
-case 98:
-#line 1048 "asn1p_y.y"
+case 99:
+#line 1060 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(yylineno);
checkmem(yyval.a_expr);
@@ -2128,8 +2139,8 @@ case 98:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 99:
-#line 1063 "asn1p_y.y"
+case 100:
+#line 1075 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2139,8 +2150,8 @@ case 99:
free(yyvsp[0].tv_str);
;
break;}
-case 100:
-#line 1071 "asn1p_y.y"
+case 101:
+#line 1083 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2152,8 +2163,8 @@ case 100:
free(yyvsp[-2].tv_str);
;
break;}
-case 101:
-#line 1081 "asn1p_y.y"
+case 102:
+#line 1093 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2165,8 +2176,8 @@ case 101:
free(yyvsp[-2].tv_str);
;
break;}
-case 102:
-#line 1091 "asn1p_y.y"
+case 103:
+#line 1103 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2176,8 +2187,8 @@ case 102:
checkmem(ret == 0);
;
break;}
-case 103:
-#line 1099 "asn1p_y.y"
+case 104:
+#line 1111 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[0].a_ref;
@@ -2198,8 +2209,8 @@ case 103:
}
;
break;}
-case 104:
-#line 1121 "asn1p_y.y"
+case 105:
+#line 1133 "asn1p_y.y"
{
int ret;
yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2209,8 +2220,8 @@ case 104:
checkmem(ret == 0);
;
break;}
-case 105:
-#line 1129 "asn1p_y.y"
+case 106:
+#line 1141 "asn1p_y.y"
{
int ret;
yyval.a_ref = yyvsp[-2].a_ref;
@@ -2219,22 +2230,22 @@ case 105:
checkmem(ret == 0);
;
break;}
-case 108:
-#line 1143 "asn1p_y.y"
+case 109:
+#line 1155 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_AmpUppercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
-case 109:
-#line 1148 "asn1p_y.y"
+case 110:
+#line 1160 "asn1p_y.y"
{
yyval.a_refcomp.lex_type = RLT_Amplowercase;
yyval.a_refcomp.name = yyvsp[0].tv_str;
;
break;}
-case 110:
-#line 1161 "asn1p_y.y"
+case 111:
+#line 1173 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
assert(yyval.a_expr->Identifier == NULL);
@@ -2243,53 +2254,53 @@ case 110:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 111:
-#line 1171 "asn1p_y.y"
+case 112:
+#line 1183 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
-case 112:
-#line 1172 "asn1p_y.y"
+case 113:
+#line 1184 "asn1p_y.y"
{
yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_UNPARSED;
;
break;}
-case 113:
-#line 1177 "asn1p_y.y"
+case 114:
+#line 1189 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
checkmem(yyval.a_value);
;
break;}
-case 114:
-#line 1181 "asn1p_y.y"
+case 115:
+#line 1193 "asn1p_y.y"
{
yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
checkmem(yyval.a_value);
;
break;}
-case 115:
-#line 1185 "asn1p_y.y"
+case 116:
+#line 1197 "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 116:
-#line 1189 "asn1p_y.y"
+case 117:
+#line 1201 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 117:
-#line 1192 "asn1p_y.y"
+case 118:
+#line 1204 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 118:
-#line 1198 "asn1p_y.y"
+case 119:
+#line 1210 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2302,8 +2313,8 @@ case 118:
free(yyvsp[0].tv_str);
;
break;}
-case 119:
-#line 1209 "asn1p_y.y"
+case 120:
+#line 1221 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2319,8 +2330,8 @@ case 119:
free(yyvsp[0].tv_str);
;
break;}
-case 120:
-#line 1226 "asn1p_y.y"
+case 121:
+#line 1238 "asn1p_y.y"
{
yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2332,8 +2343,8 @@ case 120:
free(yyvsp[0].tv_opaque.buf);
;
break;}
-case 121:
-#line 1236 "asn1p_y.y"
+case 122:
+#line 1248 "asn1p_y.y"
{
int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
char *p = malloc(newsize + 1);
@@ -2347,68 +2358,68 @@ case 121:
yyval.tv_opaque.len = newsize;
;
break;}
-case 122:
-#line 1251 "asn1p_y.y"
+case 123:
+#line 1263 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
break;}
-case 123:
-#line 1252 "asn1p_y.y"
+case 124:
+#line 1264 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
break;}
-case 124:
-#line 1253 "asn1p_y.y"
+case 125:
+#line 1265 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
break;}
-case 125:
-#line 1254 "asn1p_y.y"
+case 126:
+#line 1266 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
break;}
-case 126:
-#line 1255 "asn1p_y.y"
+case 127:
+#line 1267 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
break;}
-case 127:
-#line 1256 "asn1p_y.y"
+case 128:
+#line 1268 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
break;}
-case 128:
-#line 1257 "asn1p_y.y"
+case 129:
+#line 1269 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
break;}
-case 129:
-#line 1258 "asn1p_y.y"
+case 130:
+#line 1270 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
break;}
-case 130:
-#line 1259 "asn1p_y.y"
+case 131:
+#line 1271 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
break;}
-case 131:
-#line 1260 "asn1p_y.y"
+case 132:
+#line 1272 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
break;}
-case 132:
-#line 1261 "asn1p_y.y"
+case 133:
+#line 1273 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
break;}
-case 133:
-#line 1262 "asn1p_y.y"
+case 134:
+#line 1274 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
break;}
-case 134:
-#line 1269 "asn1p_y.y"
+case 135:
+#line 1281 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
break;}
-case 135:
-#line 1270 "asn1p_y.y"
+case 136:
+#line 1282 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
break;}
-case 136:
-#line 1271 "asn1p_y.y"
+case 137:
+#line 1283 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
break;}
-case 137:
-#line 1275 "asn1p_y.y"
+case 138:
+#line 1287 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -2416,8 +2427,8 @@ case 137:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 138:
-#line 1281 "asn1p_y.y"
+case 139:
+#line 1293 "asn1p_y.y"
{
if(yyvsp[0].a_expr) {
yyval.a_expr = yyvsp[0].a_expr;
@@ -2429,125 +2440,125 @@ case 138:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 139:
-#line 1294 "asn1p_y.y"
+case 140:
+#line 1306 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
break;}
-case 140:
-#line 1295 "asn1p_y.y"
+case 141:
+#line 1307 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GeneralString;
return yyerror("GeneralString is not supported");
;
break;}
-case 141:
-#line 1299 "asn1p_y.y"
+case 142:
+#line 1311 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_GraphicString;
return yyerror("GraphicString is not supported");
;
break;}
-case 142:
-#line 1303 "asn1p_y.y"
+case 143:
+#line 1315 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
break;}
-case 143:
-#line 1304 "asn1p_y.y"
+case 144:
+#line 1316 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
break;}
-case 144:
-#line 1305 "asn1p_y.y"
+case 145:
+#line 1317 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
break;}
-case 145:
-#line 1306 "asn1p_y.y"
+case 146:
+#line 1318 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
break;}
-case 146:
-#line 1307 "asn1p_y.y"
+case 147:
+#line 1319 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_T61String;
return yyerror("T61String not implemented yet");
;
break;}
-case 147:
-#line 1311 "asn1p_y.y"
+case 148:
+#line 1323 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
break;}
-case 148:
-#line 1312 "asn1p_y.y"
+case 149:
+#line 1324 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
break;}
-case 149:
-#line 1313 "asn1p_y.y"
+case 150:
+#line 1325 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
break;}
-case 150:
-#line 1314 "asn1p_y.y"
+case 151:
+#line 1326 "asn1p_y.y"
{
yyval.a_type = ASN_STRING_VideotexString;
return yyerror("VideotexString is no longer supported");
;
break;}
-case 151:
-#line 1318 "asn1p_y.y"
+case 152:
+#line 1330 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
break;}
-case 152:
-#line 1319 "asn1p_y.y"
+case 153:
+#line 1331 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
break;}
-case 153:
-#line 1323 "asn1p_y.y"
+case 154:
+#line 1336 "asn1p_y.y"
{
- yyval.a_expr = yyvsp[-1].a_expr;
- assert(yyval.a_expr->expr_type == A1TC_INVALID);
- yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
+ yyval.a_expr = asn1p_expr_new(asn1p_lineno);
+ checkmem(yyval.a_expr);
+ yyval.a_expr->constraints = yyvsp[-2].a_constr;
+ yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
yyval.a_expr->meta_type = AMT_TYPE;
+ TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
-case 154:
-#line 1329 "asn1p_y.y"
+case 155:
+#line 1344 "asn1p_y.y"
{
- yyval.a_expr = yyvsp[-1].a_expr;
- assert(yyval.a_expr->expr_type == A1TC_INVALID);
- yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
+ yyval.a_expr = asn1p_expr_new(asn1p_lineno);
+ checkmem(yyval.a_expr);
+ yyval.a_expr->constraints = yyvsp[-2].a_constr;
+ yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
yyval.a_expr->meta_type = AMT_TYPE;
+ TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
-case 155:
-#line 1335 "asn1p_y.y"
+case 156:
+#line 1355 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
assert(yyval.a_expr->expr_type == A1TC_INVALID);
- yyval.a_expr->expr_type = ASN_CONSTR_SET;
+ yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 156:
-#line 1341 "asn1p_y.y"
+case 157:
+#line 1361 "asn1p_y.y"
{
- yyval.a_expr = asn1p_expr_new(asn1p_lineno);
- checkmem(yyval.a_expr);
- yyval.a_expr->constraints = yyvsp[-2].a_constr;
- yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
+ yyval.a_expr = yyvsp[-1].a_expr;
+ assert(yyval.a_expr->expr_type == A1TC_INVALID);
+ yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
yyval.a_expr->meta_type = AMT_TYPE;
- TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
-case 157:
-#line 1349 "asn1p_y.y"
+case 158:
+#line 1367 "asn1p_y.y"
{
- yyval.a_expr = asn1p_expr_new(asn1p_lineno);
- checkmem(yyval.a_expr);
- yyval.a_expr->constraints = yyvsp[-2].a_constr;
- yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
+ yyval.a_expr = yyvsp[-1].a_expr;
+ assert(yyval.a_expr->expr_type == A1TC_INVALID);
+ yyval.a_expr->expr_type = ASN_CONSTR_SET;
yyval.a_expr->meta_type = AMT_TYPE;
- TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
-case 158:
-#line 1357 "asn1p_y.y"
+case 159:
+#line 1373 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -2555,8 +2566,8 @@ case 158:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 159:
-#line 1363 "asn1p_y.y"
+case 160:
+#line 1379 "asn1p_y.y"
{
int ret;
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
@@ -2569,51 +2580,52 @@ case 159:
yyval.a_expr->meta_type = AMT_TYPE;
;
break;}
-case 165:
-#line 1384 "asn1p_y.y"
+case 166:
+#line 1400 "asn1p_y.y"
{ yyval.a_constr = 0; ;
break;}
-case 166:
-#line 1385 "asn1p_y.y"
+case 167:
+#line 1401 "asn1p_y.y"
+{
+ yyval.a_constr = yyvsp[0].a_constr;
+ ;
+ break;}
+case 168:
+#line 1407 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
;
break;}
-case 167:
-#line 1388 "asn1p_y.y"
+case 169:
+#line 1410 "asn1p_y.y"
{
/*
* This is a special case, for compatibility purposes.
* It goes without parentheses.
*/
- int ret;
- yyval.a_constr = asn1p_constraint_new(yylineno);
- checkmem(yyval.a_constr);
- yyval.a_constr->type = ACT_CT_SIZE;
- ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
- checkmem(ret == 0);
+ CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
;
break;}
-case 168:
-#line 1403 "asn1p_y.y"
+case 170:
+#line 1420 "asn1p_y.y"
{
yyval.a_constr = yyvsp[-1].a_constr;
;
break;}
-case 169:
-#line 1406 "asn1p_y.y"
+case 171:
+#line 1423 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
-case 170:
-#line 1412 "asn1p_y.y"
+case 172:
+#line 1429 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 171:
-#line 1415 "asn1p_y.y"
+case 173:
+#line 1432 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2621,8 +2633,8 @@ case 171:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
-case 172:
-#line 1421 "asn1p_y.y"
+case 174:
+#line 1438 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2632,32 +2644,32 @@ case 172:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
;
break;}
-case 173:
-#line 1432 "asn1p_y.y"
+case 175:
+#line 1449 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 174:
-#line 1435 "asn1p_y.y"
+case 176:
+#line 1452 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 175:
-#line 1438 "asn1p_y.y"
+case 177:
+#line 1455 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 176:
-#line 1441 "asn1p_y.y"
+case 178:
+#line 1458 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 177:
-#line 1447 "asn1p_y.y"
+case 179:
+#line 1464 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2667,8 +2679,8 @@ case 177:
checkmem(ret == 0);
;
break;}
-case 178:
-#line 1455 "asn1p_y.y"
+case 180:
+#line 1472 "asn1p_y.y"
{
int ret;
yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2678,8 +2690,8 @@ case 178:
checkmem(ret == 0);
;
break;}
-case 179:
-#line 1463 "asn1p_y.y"
+case 181:
+#line 1480 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2687,8 +2699,8 @@ case 179:
yyval.a_constr->value = yyvsp[0].a_value;
;
break;}
-case 180:
-#line 1469 "asn1p_y.y"
+case 182:
+#line 1486 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2697,8 +2709,8 @@ case 180:
yyval.a_constr->range_stop = yyvsp[0].a_value;
;
break;}
-case 181:
-#line 1476 "asn1p_y.y"
+case 183:
+#line 1493 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2708,8 +2720,8 @@ case 181:
yyval.a_constr->range_start->type = ATV_MIN;
;
break;}
-case 182:
-#line 1484 "asn1p_y.y"
+case 184:
+#line 1501 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2719,8 +2731,8 @@ case 182:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
-case 183:
-#line 1492 "asn1p_y.y"
+case 185:
+#line 1509 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2731,54 +2743,54 @@ case 183:
yyval.a_constr->range_stop->type = ATV_MAX;
;
break;}
-case 184:
-#line 1501 "asn1p_y.y"
+case 186:
+#line 1518 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 185:
-#line 1504 "asn1p_y.y"
+case 187:
+#line 1521 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 186:
-#line 1510 "asn1p_y.y"
+case 188:
+#line 1527 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
break;}
-case 187:
-#line 1511 "asn1p_y.y"
+case 189:
+#line 1528 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
break;}
-case 188:
-#line 1512 "asn1p_y.y"
+case 190:
+#line 1529 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
break;}
-case 189:
-#line 1513 "asn1p_y.y"
+case 191:
+#line 1530 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
break;}
-case 190:
-#line 1517 "asn1p_y.y"
+case 192:
+#line 1534 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_SIZE;
;
break;}
-case 191:
-#line 1520 "asn1p_y.y"
+case 193:
+#line 1537 "asn1p_y.y"
{
yyval.a_ctype = ACT_CT_FROM;
;
break;}
-case 192:
-#line 1526 "asn1p_y.y"
+case 194:
+#line 1543 "asn1p_y.y"
{
yyval.a_value = yyvsp[0].a_value;
;
break;}
-case 193:
-#line 1529 "asn1p_y.y"
+case 195:
+#line 1546 "asn1p_y.y"
{
asn1p_ref_t *ref;
int ret;
@@ -2791,57 +2803,57 @@ case 193:
free(yyvsp[0].tv_str);
;
break;}
-case 194:
-#line 1540 "asn1p_y.y"
+case 196:
+#line 1557 "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 195:
-#line 1545 "asn1p_y.y"
+case 197:
+#line 1562 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(0);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_FALSE;
;
break;}
-case 196:
-#line 1550 "asn1p_y.y"
+case 198:
+#line 1567 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(1);
checkmem(yyval.a_value);
yyval.a_value->type = ATV_TRUE;
;
break;}
-case 197:
-#line 1558 "asn1p_y.y"
+case 199:
+#line 1575 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
;
break;}
-case 198:
-#line 1564 "asn1p_y.y"
+case 200:
+#line 1581 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 199:
-#line 1567 "asn1p_y.y"
+case 201:
+#line 1584 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
;
break;}
-case 200:
-#line 1573 "asn1p_y.y"
+case 202:
+#line 1590 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
yyval.a_constr->type = ACT_EL_EXT;
;
break;}
-case 201:
-#line 1578 "asn1p_y.y"
+case 203:
+#line 1595 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2850,46 +2862,46 @@ case 201:
yyval.a_constr->presence = yyvsp[0].a_pres;
;
break;}
-case 202:
-#line 1591 "asn1p_y.y"
+case 204:
+#line 1608 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
break;}
-case 203:
-#line 1592 "asn1p_y.y"
+case 205:
+#line 1609 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
break;}
-case 204:
-#line 1596 "asn1p_y.y"
+case 206:
+#line 1613 "asn1p_y.y"
{
yyval.a_pres = ACPRES_PRESENT;
;
break;}
-case 205:
-#line 1599 "asn1p_y.y"
+case 207:
+#line 1616 "asn1p_y.y"
{
yyval.a_pres = ACPRES_ABSENT;
;
break;}
-case 206:
-#line 1602 "asn1p_y.y"
+case 208:
+#line 1619 "asn1p_y.y"
{
yyval.a_pres = ACPRES_OPTIONAL;
;
break;}
-case 207:
-#line 1608 "asn1p_y.y"
+case 209:
+#line 1625 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 208:
-#line 1611 "asn1p_y.y"
+case 210:
+#line 1628 "asn1p_y.y"
{
yyval.a_constr = yyvsp[0].a_constr;
;
break;}
-case 209:
-#line 1620 "asn1p_y.y"
+case 211:
+#line 1637 "asn1p_y.y"
{
asn1p_ref_t *ref = asn1p_ref_new(yylineno);
asn1p_constraint_t *ct;
@@ -2903,14 +2915,14 @@ case 209:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
;
break;}
-case 210:
-#line 1635 "asn1p_y.y"
+case 212:
+#line 1652 "asn1p_y.y"
{
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
;
break;}
-case 211:
-#line 1641 "asn1p_y.y"
+case 213:
+#line 1658 "asn1p_y.y"
{
yyval.a_constr = asn1p_constraint_new(yylineno);
checkmem(yyval.a_constr);
@@ -2918,8 +2930,8 @@ case 211:
yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
;
break;}
-case 212:
-#line 1647 "asn1p_y.y"
+case 214:
+#line 1664 "asn1p_y.y"
{
asn1p_constraint_t *ct;
ct = asn1p_constraint_new(yylineno);
@@ -2929,8 +2941,8 @@ case 212:
CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
;
break;}
-case 213:
-#line 1661 "asn1p_y.y"
+case 215:
+#line 1678 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
int ret;
@@ -2943,8 +2955,8 @@ case 213:
free(yyvsp[0].tv_str);
;
break;}
-case 214:
-#line 1672 "asn1p_y.y"
+case 216:
+#line 1689 "asn1p_y.y"
{
char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
int ret;
@@ -2958,14 +2970,14 @@ case 214:
free(yyvsp[0].tv_str);
;
break;}
-case 215:
-#line 1688 "asn1p_y.y"
+case 217:
+#line 1705 "asn1p_y.y"
{
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 216:
-#line 1691 "asn1p_y.y"
+case 218:
+#line 1708 "asn1p_y.y"
{
int l1 = strlen(yyvsp[-2].tv_str);
int l3 = strlen(yyvsp[0].tv_str);
@@ -2976,76 +2988,76 @@ case 216:
yyval.tv_str[l1 + 1 + l3] = '\0';
;
break;}
-case 217:
-#line 1709 "asn1p_y.y"
+case 219:
+#line 1726 "asn1p_y.y"
{ yyval.a_marker = EM_NOMARK; ;
break;}
-case 218:
-#line 1710 "asn1p_y.y"
+case 220:
+#line 1727 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
break;}
-case 219:
-#line 1714 "asn1p_y.y"
+case 221:
+#line 1731 "asn1p_y.y"
{
yyval.a_marker = EM_OPTIONAL;
;
break;}
-case 220:
-#line 1717 "asn1p_y.y"
+case 222:
+#line 1734 "asn1p_y.y"
{
yyval.a_marker = EM_DEFAULT;
/* FIXME: store DefaultValue somewhere */
;
break;}
-case 221:
-#line 1724 "asn1p_y.y"
+case 223:
+#line 1741 "asn1p_y.y"
{
;
break;}
-case 222:
-#line 1726 "asn1p_y.y"
+case 224:
+#line 1743 "asn1p_y.y"
{
;
break;}
-case 223:
-#line 1728 "asn1p_y.y"
+case 225:
+#line 1745 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
break;}
-case 224:
-#line 1728 "asn1p_y.y"
+case 226:
+#line 1745 "asn1p_y.y"
{
;
break;}
-case 225:
-#line 1749 "asn1p_y.y"
+case 227:
+#line 1766 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
;
break;}
-case 226:
-#line 1753 "asn1p_y.y"
+case 228:
+#line 1770 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-1].a_expr;
;
break;}
-case 227:
-#line 1759 "asn1p_y.y"
+case 229:
+#line 1776 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
-case 228:
-#line 1764 "asn1p_y.y"
+case 230:
+#line 1781 "asn1p_y.y"
{
yyval.a_expr = yyvsp[-2].a_expr;
TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
;
break;}
-case 229:
-#line 1771 "asn1p_y.y"
+case 231:
+#line 1788 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -3054,8 +3066,8 @@ case 229:
yyval.a_expr->Identifier = yyvsp[0].tv_str;
;
break;}
-case 230:
-#line 1778 "asn1p_y.y"
+case 232:
+#line 1795 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -3065,8 +3077,8 @@ case 230:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
-case 231:
-#line 1786 "asn1p_y.y"
+case 233:
+#line 1803 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -3076,8 +3088,8 @@ case 231:
yyval.a_expr->value = yyvsp[-1].a_value;
;
break;}
-case 232:
-#line 1794 "asn1p_y.y"
+case 234:
+#line 1811 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -3086,8 +3098,8 @@ case 232:
yyval.a_expr->value = yyvsp[0].a_value;
;
break;}
-case 233:
-#line 1801 "asn1p_y.y"
+case 235:
+#line 1818 "asn1p_y.y"
{
yyval.a_expr = asn1p_expr_new(asn1p_lineno);
checkmem(yyval.a_expr);
@@ -3097,86 +3109,86 @@ case 233:
yyval.a_expr->meta_type = AMT_VALUE;
;
break;}
-case 234:
-#line 1812 "asn1p_y.y"
+case 236:
+#line 1829 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
-case 235:
-#line 1816 "asn1p_y.y"
+case 237:
+#line 1833 "asn1p_y.y"
{
yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
checkmem(yyval.a_value);
;
break;}
-case 236:
-#line 1847 "asn1p_y.y"
+case 238:
+#line 1864 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
break;}
-case 237:
-#line 1848 "asn1p_y.y"
+case 239:
+#line 1865 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
break;}
-case 238:
-#line 1852 "asn1p_y.y"
+case 240:
+#line 1869 "asn1p_y.y"
{
yyval.a_tag = yyvsp[0].a_tag;
yyval.a_tag.tag_mode = TM_DEFAULT;
;
break;}
-case 239:
-#line 1856 "asn1p_y.y"
+case 241:
+#line 1873 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = TM_IMPLICIT;
;
break;}
-case 240:
-#line 1860 "asn1p_y.y"
+case 242:
+#line 1877 "asn1p_y.y"
{
yyval.a_tag = yyvsp[-1].a_tag;
yyval.a_tag.tag_mode = TM_EXPLICIT;
;
break;}
-case 241:
-#line 1867 "asn1p_y.y"
+case 243:
+#line 1884 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 242:
-#line 1871 "asn1p_y.y"
+case 244:
+#line 1888 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 243:
-#line 1879 "asn1p_y.y"
+case 245:
+#line 1896 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 244:
-#line 1886 "asn1p_y.y"
+case 246:
+#line 1903 "asn1p_y.y"
{
checkmem(yyvsp[0].tv_str);
yyval.tv_str = yyvsp[0].tv_str;
;
break;}
-case 245:
-#line 1893 "asn1p_y.y"
+case 247:
+#line 1910 "asn1p_y.y"
{
memset(&yyval.tv_nametag, 0, sizeof(yyval.tv_nametag));
yyval.tv_nametag.name = yyvsp[0].tv_str;
;
break;}
-case 246:
-#line 1897 "asn1p_y.y"
+case 248:
+#line 1914 "asn1p_y.y"
{
yyval.tv_nametag.name = yyvsp[-1].tv_str;
yyval.tv_nametag.tag = yyvsp[0].a_tag;
@@ -3404,7 +3416,7 @@ yyerrhandle:
}
return 1;
}
-#line 1904 "asn1p_y.y"
+#line 1921 "asn1p_y.y"
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 452086f5..a77b5fd6 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -220,7 +220,7 @@ static asn1p_value_t *
%type <a_expr> ExportsElement
%type <a_expr> DataTypeMember
%type <a_expr> ExtensionAndException
-%type <a_expr> TypeDeclaration
+%type <a_expr> UnconstrainedTypeDeclaration
%type <a_ref> ComplexTypeReference
%type <a_ref> ComplexTypeReferenceAmpList
%type <a_refcomp> ComplexTypeReferenceElement
@@ -239,6 +239,7 @@ static asn1p_value_t *
%type <a_value> DefinedValue
%type <a_value> SignedNumber
%type <a_expr> ConstructedType
+%type <a_expr> ConstructedTypeConstrained
%type <a_expr> ConstructedDataTypeDefinition
//%type <a_expr> optUniverationDefinition
%type <a_expr> UniverationDefinition
@@ -265,6 +266,7 @@ static asn1p_value_t *
%type <a_tag> Tag /* [UNIVERSAL 0] IMPLICIT */
%type <a_tag> optTag /* [UNIVERSAL 0] IMPLICIT */
%type <a_constr> optConstraints
+%type <a_constr> Constraints
%type <a_constr> SetOfConstraints
%type <a_constr> ElementSetSpecs /* 1..2,...,3 */
%type <a_constr> ElementSetSpec /* 1..2,...,3 */
@@ -804,7 +806,7 @@ ActualParameterList:
;
ActualParameter:
- TypeDeclaration {
+ UnconstrainedTypeDeclaration {
$$ = $1;
}
| Identifier {
@@ -960,11 +962,21 @@ DataTypeMember:
;
ConstrainedTypeDeclaration:
- TypeDeclaration optConstraints optMarker {
+ UnconstrainedTypeDeclaration optConstraints optMarker {
$$ = $1;
- $$->constraints = $2;
+ if($$->constraints) {
+ assert(!$2);
+ } else {
+ $$->constraints = $2;
+ }
$$->marker = $3;
}
+ | ConstructedTypeConstrained {
+ /* This type includes constraints on its own */
+ $$ = $1;
+ checkmem($$);
+ assert($$->meta_type);
+ }
;
ExtensionAndException:
@@ -996,7 +1008,7 @@ ExtensionAndException:
}
;
-TypeDeclaration:
+UnconstrainedTypeDeclaration:
BasicType {
$$ = $1;
}
@@ -1319,6 +1331,26 @@ BasicString:
| TOK_ObjectDescriptor { $$ = ASN_STRING_ObjectDescriptor; }
;
+
+ConstructedTypeConstrained:
+ TOK_SEQUENCE optConstraints TOK_OF ConstrainedTypeDeclaration {
+ $$ = asn1p_expr_new(asn1p_lineno);
+ checkmem($$);
+ $$->constraints = $2;
+ $$->expr_type = ASN_CONSTR_SEQUENCE_OF;
+ $$->meta_type = AMT_TYPE;
+ TQ_ADD(&($$->members), $4, next);
+ }
+ | TOK_SET optConstraints TOK_OF ConstrainedTypeDeclaration {
+ $$ = asn1p_expr_new(asn1p_lineno);
+ checkmem($$);
+ $$->constraints = $2;
+ $$->expr_type = ASN_CONSTR_SET_OF;
+ $$->meta_type = AMT_TYPE;
+ TQ_ADD(&($$->members), $4, next);
+ }
+ ;
+
ConstructedType:
TOK_CHOICE '{' ConstructedDataTypeDefinition '}' {
$$ = $3;
@@ -1338,22 +1370,6 @@ ConstructedType:
$$->expr_type = ASN_CONSTR_SET;
$$->meta_type = AMT_TYPE;
}
- | TOK_SEQUENCE optConstraints TOK_OF TypeDeclaration {
- $$ = asn1p_expr_new(asn1p_lineno);
- checkmem($$);
- $$->constraints = $2;
- $$->expr_type = ASN_CONSTR_SEQUENCE_OF;
- $$->meta_type = AMT_TYPE;
- TQ_ADD(&($$->members), $4, next);
- }
- | TOK_SET optConstraints TOK_OF TypeDeclaration {
- $$ = asn1p_expr_new(asn1p_lineno);
- checkmem($$);
- $$->constraints = $2;
- $$->expr_type = ASN_CONSTR_SET_OF;
- $$->meta_type = AMT_TYPE;
- TQ_ADD(&($$->members), $4, next);
- }
| TOK_ANY {
$$ = asn1p_expr_new(asn1p_lineno);
checkmem($$);
@@ -1382,7 +1398,13 @@ Except: TOK_EXCEPT;
optConstraints:
{ $$ = 0; }
- | SetOfConstraints {
+ | Constraints {
+ $$ = $1;
+ }
+ ;
+
+Constraints:
+ SetOfConstraints {
CONSTRAINT_INSERT($$, ACT_CA_SET, $1, 0);
}
| TOK_SIZE '(' ElementSetSpecs ')' {
@@ -1390,12 +1412,7 @@ optConstraints:
* This is a special case, for compatibility purposes.
* It goes without parentheses.
*/
- int ret;
- $$ = asn1p_constraint_new(yylineno);
- checkmem($$);
- $$->type = ACT_CT_SIZE;
- ret = asn1p_constraint_insert($$, $3);
- checkmem(ret == 0);
+ CONSTRAINT_INSERT($$, ACT_CT_SIZE, $3, 0);
}
;