diff --git a/ChangeLog b/ChangeLog index afa2f8f0..31e8c5fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,5 @@ -0.9.13: 2005-Mar-24 +0.9.13: 2005-Mar-28 * Added extra const qualifiers into the support code. * More RFC variations supported in crfc2asn1.pl. @@ -8,6 +8,7 @@ * Parsing support for CONSTRAINED BY. (Test case 79). * Support for CharsDefn (Quadruple and Tuple, most used in ASN1-CHARACTER-MODULE) (Test case 80). + * Pretty-printing support for WITH COMPONENT[S]. (Test case 82). 0.9.12: 2005-Mar-10 diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c index a5cc4a8a..ae4e31a4 100644 --- a/libasn1parser/asn1p_y.c +++ b/libasn1parser/asn1p_y.c @@ -206,7 +206,7 @@ typedef union { -#define YYFINAL 429 +#define YYFINAL 431 #define YYFLAG -32768 #define YYNTBASE 118 @@ -275,12 +275,12 @@ static const short yyprhs[] = { 0, 534, 539, 541, 545, 551, 553, 557, 561, 565, 569, 574, 578, 580, 582, 586, 590, 594, 598, 600, 602, 603, 609, 611, 614, 617, 621, 623, 625, 627, 629, - 631, 633, 635, 637, 643, 645, 649, 651, 655, 656, - 658, 660, 662, 664, 666, 668, 672, 677, 679, 683, - 686, 690, 692, 696, 697, 699, 701, 704, 707, 711, - 713, 717, 719, 724, 729, 731, 733, 735, 737, 738, - 740, 743, 748, 749, 751, 753, 755, 756, 758, 760, - 762, 764, 766, 767, 769 + 631, 633, 635, 637, 641, 647, 649, 653, 655, 659, + 660, 662, 664, 666, 668, 670, 672, 676, 681, 683, + 687, 690, 694, 696, 700, 701, 703, 705, 708, 711, + 715, 717, 721, 723, 728, 733, 735, 737, 739, 741, + 742, 744, 747, 752, 753, 755, 757, 759, 760, 762, + 764, 766, 768, 770, 771, 773 }; static const short yyrhs[] = { 119, @@ -347,20 +347,21 @@ static const short yyrhs[] = { 119, 0, 0, 33, 27, 105, 191, 177, 0, 103, 0, 103, 114, 0, 114, 103, 0, 114, 103, 114, 0, 82, 0, 48, 0, 47, 0, 88, 0, 212, 0, - 176, 0, 221, 0, 218, 0, 97, 32, 105, 197, - 106, 0, 198, 0, 197, 110, 198, 0, 104, 0, - 221, 185, 199, 0, 0, 200, 0, 75, 0, 17, - 0, 71, 0, 202, 0, 203, 0, 105, 218, 106, - 0, 202, 105, 204, 106, 0, 205, 0, 204, 110, - 205, 0, 115, 206, 0, 115, 113, 206, 0, 221, - 0, 206, 113, 221, 0, 0, 208, 0, 71, 0, - 35, 173, 0, 105, 106, 0, 105, 210, 106, 0, - 211, 0, 210, 110, 211, 0, 221, 0, 221, 107, - 212, 108, 0, 221, 107, 175, 108, 0, 212, 0, - 104, 0, 9, 0, 12, 0, 0, 214, 0, 215, - 217, 0, 116, 216, 9, 117, 0, 0, 91, 0, - 21, 0, 77, 0, 0, 54, 0, 43, 0, 13, - 0, 14, 0, 14, 0, 0, 221, 0, 8, 0 + 176, 0, 221, 0, 218, 0, 97, 31, 187, 0, + 97, 32, 105, 197, 106, 0, 198, 0, 197, 110, + 198, 0, 104, 0, 221, 185, 199, 0, 0, 200, + 0, 75, 0, 17, 0, 71, 0, 202, 0, 203, + 0, 105, 218, 106, 0, 202, 105, 204, 106, 0, + 205, 0, 204, 110, 205, 0, 115, 206, 0, 115, + 113, 206, 0, 221, 0, 206, 113, 221, 0, 0, + 208, 0, 71, 0, 35, 173, 0, 105, 106, 0, + 105, 210, 106, 0, 211, 0, 210, 110, 211, 0, + 221, 0, 221, 107, 212, 108, 0, 221, 107, 175, + 108, 0, 212, 0, 104, 0, 9, 0, 12, 0, + 0, 214, 0, 215, 217, 0, 116, 216, 9, 117, + 0, 0, 91, 0, 21, 0, 77, 0, 0, 54, + 0, 43, 0, 13, 0, 14, 0, 14, 0, 0, + 221, 0, 8, 0 }; #endif @@ -389,12 +390,12 @@ static const short yyrline[] = { 0, 1564, 1569, 1573, 1579, 1589, 1593, 1596, 1599, 1602, 1607, 1616, 1624, 1630, 1636, 1643, 1651, 1659, 1668, 1671, 1674, 1675, 1685, 1687, 1688, 1689, 1692, 1696, 1701, 1707, 1712, - 1715, 1718, 1731, 1745, 1751, 1755, 1760, 1766, 1778, 1780, - 1783, 1787, 1790, 1795, 1799, 1807, 1822, 1828, 1835, 1848, - 1860, 1875, 1879, 1896, 1901, 1904, 1909, 1931, 1936, 1941, - 1947, 1953, 1961, 1969, 1977, 1984, 1994, 1999, 2029, 2031, - 2034, 2041, 2047, 2049, 2050, 2051, 2054, 2056, 2057, 2060, - 2065, 2072, 2079, 2081, 2085 + 1715, 1718, 1731, 1745, 1749, 1754, 1758, 1763, 1770, 1783, + 1785, 1788, 1792, 1795, 1800, 1804, 1812, 1827, 1833, 1840, + 1853, 1865, 1880, 1884, 1901, 1906, 1909, 1914, 1936, 1941, + 1946, 1952, 1958, 1966, 1974, 1982, 1989, 1999, 2004, 2034, + 2036, 2039, 2046, 2052, 2054, 2055, 2056, 2059, 2061, 2062, + 2065, 2070, 2077, 2084, 2086, 2090 }; #endif @@ -438,12 +439,12 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ", "BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection", "Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs", "ElementSetSpec","ConstraintSubtypeElement","@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 +"SingleValue","ContainedSubtype","InnerTypeConstraint","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 @@ -470,12 +471,12 @@ static const short yyr1[] = { 0, 187, 188, 188, 188, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 191, 190, 192, 192, 192, 192, 193, 193, 194, 194, 194, - 194, 194, 195, 196, 197, 197, 198, 198, 199, 199, - 200, 200, 200, 201, 201, 202, 203, 204, 204, 205, - 205, 206, 206, 207, 207, 208, 208, 209, 209, 210, - 210, 211, 211, 211, 211, 211, 212, 212, 213, 213, - 214, 215, 216, 216, 216, 216, 217, 217, 217, 218, - 218, 219, 220, 220, 221 + 194, 194, 195, 196, 196, 197, 197, 198, 198, 199, + 199, 200, 200, 200, 201, 201, 202, 203, 204, 204, + 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, + 210, 210, 211, 211, 211, 211, 211, 212, 212, 213, + 213, 214, 215, 216, 216, 216, 216, 217, 217, 217, + 218, 218, 219, 220, 220, 221 }; static const short yyr2[] = { 0, @@ -501,16 +502,16 @@ static const short yyr2[] = { 0, 4, 1, 3, 5, 1, 3, 3, 3, 3, 4, 3, 1, 1, 3, 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 + 1, 1, 1, 3, 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, - 270, 271, 1, 2, 5, 3, 0, 0, 6, 275, + 271, 272, 1, 2, 5, 3, 0, 0, 6, 276, 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, 167, 0, 0, @@ -518,180 +519,181 @@ static const short yydefact[] = { 0, 176, 177, 178, 179, 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, 259, 118, 272, 0, 149, 0, 0, 163, 156, + 26, 260, 118, 273, 0, 149, 0, 0, 163, 156, 160, 162, 150, 0, 0, 151, 155, 159, 0, 0, 54, 55, 152, 161, 122, 0, 33, 46, 45, 0, - 0, 35, 38, 0, 0, 0, 0, 263, 64, 63, - 0, 260, 267, 0, 164, 158, 157, 154, 153, 0, + 0, 35, 38, 0, 0, 0, 0, 264, 64, 63, + 0, 261, 268, 0, 164, 158, 157, 154, 153, 0, 66, 0, 68, 0, 0, 0, 49, 51, 5, 41, - 43, 0, 265, 266, 264, 0, 118, 272, 113, 0, + 43, 0, 266, 267, 265, 0, 118, 273, 113, 0, 0, 186, 186, 62, 186, 116, 165, 152, 107, 0, - 269, 268, 261, 119, 121, 0, 0, 0, 0, 56, - 128, 129, 123, 124, 126, 120, 137, 144, 138, 257, - 145, 146, 258, 135, 134, 136, 132, 130, 141, 139, - 140, 0, 142, 39, 0, 90, 259, 127, 0, 0, + 270, 269, 262, 119, 121, 0, 0, 0, 0, 56, + 128, 129, 123, 124, 126, 120, 137, 144, 138, 258, + 145, 146, 259, 135, 134, 136, 132, 130, 141, 139, + 140, 0, 142, 39, 0, 90, 260, 127, 0, 0, 0, 0, 0, 76, 0, 0, 187, 188, 76, 0, - 106, 0, 166, 259, 259, 67, 71, 70, 69, 0, + 106, 0, 166, 260, 260, 67, 71, 70, 69, 0, 0, 218, 217, 0, 216, 219, 0, 60, 0, 0, 0, 57, 58, 221, 61, 195, 0, 202, 203, 209, - 208, 234, 235, 220, 223, 222, 0, 0, 0, 0, - 95, 0, 0, 246, 88, 88, 92, 245, 0, 262, - 0, 103, 0, 83, 86, 259, 117, 0, 0, 0, - 77, 78, 82, 259, 0, 192, 273, 0, 0, 273, - 256, 248, 0, 250, 255, 252, 0, 72, 74, 75, - 65, 0, 0, 212, 0, 0, 0, 0, 0, 53, - 0, 183, 184, 181, 182, 0, 0, 185, 0, 0, - 0, 0, 125, 147, 133, 143, 131, 0, 87, 96, - 91, 247, 89, 244, 244, 114, 0, 108, 0, 85, - 0, 259, 109, 0, 244, 190, 0, 259, 274, 0, - 110, 259, 249, 0, 0, 115, 259, 196, 210, 213, - 214, 207, 205, 0, 236, 201, 59, 197, 198, 199, - 0, 206, 204, 0, 0, 238, 148, 0, 93, 94, - 104, 105, 142, 84, 189, 81, 79, 80, 193, 0, - 191, 0, 251, 0, 0, 73, 0, 215, 227, 0, - 225, 186, 200, 0, 240, 242, 237, 0, 97, 0, - 111, 112, 254, 253, 211, 224, 0, 229, 241, 0, - 239, 0, 194, 226, 232, 233, 231, 228, 230, 243, - 101, 0, 99, 102, 98, 100, 0, 0, 0 + 208, 235, 236, 220, 223, 222, 0, 0, 0, 0, + 95, 0, 0, 247, 88, 88, 92, 246, 0, 263, + 0, 103, 0, 83, 86, 260, 117, 0, 0, 0, + 77, 78, 82, 260, 0, 192, 274, 0, 0, 274, + 257, 249, 0, 251, 256, 253, 0, 72, 74, 75, + 65, 0, 0, 212, 0, 0, 0, 0, 0, 0, + 53, 0, 183, 184, 181, 182, 0, 0, 185, 0, + 0, 0, 0, 125, 147, 133, 143, 131, 0, 87, + 96, 91, 248, 89, 245, 245, 114, 0, 108, 0, + 85, 0, 260, 109, 0, 245, 190, 0, 260, 275, + 0, 110, 260, 250, 0, 0, 115, 260, 196, 210, + 213, 214, 207, 205, 224, 0, 237, 201, 59, 197, + 198, 199, 0, 206, 204, 0, 0, 239, 148, 0, + 93, 94, 104, 105, 142, 84, 189, 81, 79, 80, + 193, 0, 191, 0, 252, 0, 0, 73, 0, 215, + 228, 0, 226, 186, 200, 0, 241, 243, 238, 0, + 97, 0, 111, 112, 255, 254, 211, 225, 0, 230, + 242, 0, 240, 0, 194, 227, 233, 234, 232, 229, + 231, 244, 101, 0, 99, 102, 98, 100, 0, 0, + 0 }; -static const short yydefgoto[] = { 427, +static const short yydefgoto[] = { 429, 3, 4, 8, 9, 13, 14, 25, 26, 27, 55, 56, 57, 107, 58, 74, 75, 76, 77, 59, 69, 70, 60, 100, 231, 232, 233, 61, 130, 131, 287, - 288, 270, 271, 272, 263, 264, 119, 324, 195, 196, - 319, 320, 412, 422, 423, 273, 289, 155, 156, 173, - 174, 197, 198, 62, 188, 248, 189, 234, 315, 157, - 103, 159, 104, 306, 307, 309, 206, 207, 208, 275, - 276, 236, 387, 296, 237, 238, 239, 240, 390, 391, - 418, 419, 241, 242, 243, 365, 366, 395, 257, 258, + 288, 270, 271, 272, 263, 264, 119, 325, 195, 196, + 320, 321, 414, 424, 425, 273, 289, 155, 156, 173, + 174, 197, 198, 62, 188, 248, 189, 234, 316, 157, + 103, 159, 104, 307, 308, 310, 206, 207, 208, 275, + 276, 236, 389, 296, 237, 238, 239, 240, 392, 393, + 420, 421, 241, 242, 243, 367, 368, 397, 257, 258, 213, 283, 284, 244, 259, 122, 123, 146, 163, 245, - 105, 338, 246 + 105, 339, 246 }; -static const short yypact[] = { 131, --32768,-32768, 131,-32768, -60,-32768, 15, 25,-32768,-32768, --32768,-32768, 27,-32768, -1, 141,-32768,-32768, 88, 79, - 62, 71, 65, 89, 188, 141,-32768, 101,-32768,-32768, --32768,-32768,-32768, 200,-32768,-32768, 517,-32768, 215, 38, --32768,-32768,-32768, 61,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 190, 517,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 355, 746,-32768, 146,-32768, 72,-32768, - 152,-32768,-32768, 34,-32768, -10,-32768, 156,-32768,-32768, --32768, -3, 158,-32768, 182,-32768, 189, 216,-32768,-32768, --32768,-32768,-32768, 242, 213,-32768,-32768,-32768, 821, 294, --32768,-32768,-32768,-32768, 185, 296,-32768,-32768,-32768, 145, - 194,-32768,-32768, 131, 145, 196, 198, 5,-32768,-32768, - 594,-32768, 64, 145,-32768,-32768,-32768,-32768,-32768, -66, --32768, 193, 195, 202, 235, 159,-32768,-32768, -60,-32768, --32768, 237,-32768,-32768,-32768, 299, -11, 204, 273, 206, - 243, -27, -12,-32768, -6,-32768,-32768, 207,-32768, 209, --32768,-32768,-32768,-32768,-32768, 302, 821, 309, 145, 268, --32768,-32768, 205,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +static const short yypact[] = { 166, +-32768,-32768, 166,-32768, -69,-32768, 32, 14,-32768,-32768, +-32768,-32768, 60,-32768, -62, 132,-32768,-32768, 55, 42, + -13, 58, 65, 64, 125, 132,-32768, 96,-32768,-32768, +-32768,-32768,-32768, 135,-32768,-32768, 507,-32768, 158, 9, +-32768,-32768,-32768, 38,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 122, 507,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 357, 736,-32768, 100,-32768, 80,-32768, + 146,-32768,-32768, 34,-32768, -17,-32768, 147,-32768,-32768, +-32768, -4, 140,-32768, 178,-32768, 184, 159,-32768,-32768, +-32768,-32768,-32768, 215, 188,-32768,-32768,-32768, 811, 269, +-32768,-32768,-32768,-32768, 170, 282,-32768,-32768,-32768, 168, + 180,-32768,-32768, 166, 168, 182, 186, 8,-32768,-32768, + 584,-32768, 44, 168,-32768,-32768,-32768,-32768,-32768, -10, +-32768, 189, 191, 198, 225, 465,-32768,-32768, -69,-32768, +-32768, 204,-32768,-32768,-32768, 280, -8, 199, 256, 200, + 238, -25, -24,-32768, -44,-32768,-32768, 205,-32768, 206, +-32768,-32768,-32768,-32768,-32768, 309, 811, 305, 168, 202, +-32768,-32768, 201,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 208, 212,-32768, -19,-32768, 6,-32768, 211, 292, - 42, 254, 217, 7, 453, 255,-32768, 219, 7, 260, --32768, 50,-32768, 12, 218,-32768,-32768,-32768,-32768, 234, - 306,-32768,-32768, -4,-32768,-32768, 303,-32768, 131, 453, - 230, 229,-32768,-32768, 184, 244, 238, -4,-32768,-32768, --32768, 236,-32768,-32768,-32768,-32768, 237, 342, 309, 159, - 251, 237, 159,-32768, 259, 259,-32768,-32768, 671,-32768, - 309, 239, 83,-32768,-32768, 218,-32768, 453, 283, 246, - 245,-32768,-32768, 218, 252, 126, 309, 453, 248, 309, --32768,-32768, 102,-32768,-32768, 256, 110,-32768,-32768,-32768, --32768, 465, 257, 250, 263, 168, 262, 253, 266,-32768, - 268,-32768,-32768,-32768,-32768, 465, 465,-32768, 465, 453, - 282, 261,-32768,-32768, 367,-32768,-32768, 293,-32768,-32768, --32768,-32768,-32768, 8, 8,-32768, 225,-32768, 42,-32768, - 270, 218,-32768, 7, 8,-32768, 278, 218,-32768, 276, --32768, 218,-32768, 56, 225,-32768, 12,-32768,-32768,-32768, - 271,-32768,-32768, 46,-32768,-32768,-32768,-32768,-32768,-32768, - 280,-32768,-32768, 1, 111,-32768,-32768, 281,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 279, 671, --32768, 671,-32768, 284, 286,-32768, 342,-32768,-32768, 134, --32768, -6,-32768, 309, 277,-32768,-32768, 261,-32768, 453, --32768,-32768,-32768,-32768, 367,-32768, 46, 17, 277, 309, --32768, 183, 184,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 13,-32768,-32768,-32768,-32768, 391, 395,-32768 +-32768, 207, 208,-32768, 50,-32768, 39,-32768, 209, 290, + 12, 217, 211, 7, 268, 252,-32768, 218, 7, 254, +-32768, 53,-32768, 5, 213,-32768,-32768,-32768,-32768, 229, + 303,-32768,-32768, -1,-32768,-32768, 216,-32768, 166, 268, + 226, 224,-32768,-32768, 156, 237, 230, -1,-32768,-32768, +-32768, 231,-32768,-32768,-32768,-32768, 204, 336, 305, 465, + 245, 204, 465,-32768, 253, 253,-32768,-32768, 661,-32768, + 305, 233, 81,-32768,-32768, 213,-32768, 268, 276, 241, + 242,-32768,-32768, 213, 243, 68, 305, 268, 247, 305, +-32768,-32768, 82,-32768,-32768, 248, 89,-32768,-32768,-32768, +-32768, 455, 249, 244, 258, 286, 250, 259, 257, 260, +-32768, 202,-32768,-32768,-32768,-32768, 455, 455,-32768, 455, + 268, 448, 251,-32768,-32768, 363,-32768,-32768, 285,-32768, +-32768,-32768,-32768,-32768, 0, 0,-32768, 214,-32768, 12, +-32768, 264, 213,-32768, 7, 0,-32768, 272, 213,-32768, + 270,-32768, 213,-32768, 67, 214,-32768, 5,-32768,-32768, +-32768, 263,-32768,-32768, 218, 19,-32768,-32768,-32768,-32768, +-32768,-32768, 271,-32768,-32768, 6, 119,-32768,-32768, 275, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 274, 661,-32768, 661,-32768, 278, 279,-32768, 336,-32768, +-32768, 127,-32768, -44,-32768, 305, 277,-32768,-32768, 251, +-32768, 268,-32768,-32768,-32768,-32768, 363,-32768, 19, 17, + 277, 305,-32768, 149, 156,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 28,-32768,-32768,-32768,-32768, 388, 391, +-32768 }; static const short yypgoto[] = {-32768, --32768, 396, 269,-32768,-32768, 389,-32768,-32768, 383,-32768, --32768, 354,-32768,-32768,-32768, 337,-32768, 297,-32768,-32768, - 304,-32768, 348,-32768,-32768, 116,-32768,-32768, 258,-32768, - 80, 210,-32768, 84,-32768, 97,-32768, 172,-32768, 177, --32768,-32768,-32768,-32768, 10, -187, -74, -192, -53,-32768, - 191, -190, -122,-32768, -169,-32768, -256, -118, 43, -33, - -120,-32768, 48,-32768,-32768,-32768, -151,-32768,-32768, -205, - -165, -96,-32768, 197,-32768, -213,-32768,-32768,-32768, 29, --32768,-32768,-32768,-32768,-32768,-32768, 39, 45, -121,-32768, --32768,-32768, 99, -126, -79,-32768,-32768,-32768,-32768, 16, --32768, 161, -7 +-32768, 389, 255,-32768,-32768, 380,-32768,-32768, 370,-32768, +-32768, 341,-32768,-32768,-32768, 327,-32768, 289,-32768,-32768, + 300,-32768, 346,-32768,-32768, 110,-32768,-32768, 246,-32768, + 66, 210,-32768, 85,-32768, 86,-32768, 165,-32768, 163, +-32768,-32768,-32768,-32768, 3, -189, -73, -186, -54,-32768, + 181, -190, -114,-32768, -47,-32768, -251, -118, 40, -40, + -120,-32768, 33,-32768,-32768,-32768, -150,-32768, 133, -164, + -166, -201,-32768, 193,-32768, -218,-32768,-32768,-32768, 23, +-32768,-32768,-32768,-32768,-32768,-32768, 37, 43, -152,-32768, +-32768,-32768, 93, -128, -80,-32768,-32768,-32768,-32768, 16, +-32768, 154, -7 }; -#define YYLAST 917 +#define YYLAST 907 static const short yytable[] = { 15, - 158, 210, 121, 211, 235, 15, 256, 120, 10, 191, - 101, 101, 175, 265, 10, 5, 421, 190, 5, 10, - 171, 172, 10, 11, 299, 143, 117, 171, 172, 65, - 102, 102, 72, 415, 10, 11, 79, 114, 269, 166, - 253, 10, 253, 167, 7, 10, 1, 2, 65, 10, - 1, 2, 64, 10, 203, 71, 67, 10, 180, 78, - 16, 183, 331, 10, 180, 132, 79, 183, 10, 203, - 371, 64, 340, 1, 2, 203, 254, 204, 254, 205, - 317, 144, 353, 322, 63, 285, 251, 416, 384, 78, - 252, 417, 209, -270, 205, 145, 28, 363, 294, 115, - 205, 124, 72, 63, 361, 19, 161, 79, 73, 295, - 262, -244, 118, 394, 133, -244, 165, 162, 425, 32, - 12, 118, 255, 191, 175, 71, 191, 118, 193, 139, - 78, 190, 17, 132, 190, 235, 160, 29, 158, 164, - 291, 265, 112, 1, 2, 262, 68, 30, 267, 389, - 176, 192, 10, 281, 20, 282, 31, 1, 2, 281, - 217, 219, 21, 177, 178, 179, 10, 180, 181, 182, - 183, 1, 2, 178, 33, 10, 180, 181, 182, 183, - 109, 110, 133, 22, 218, 23, 421, 401, 328, 402, - 34, 330, 329, 266, 24, 348, 274, 171, 172, 335, - 372, 274, 369, 370, 286, 184, 290, 343, 36, 358, - 359, 344, 360, 378, 222, 346, 397, 285, 385, 347, - 398, 424, 37, 185, 302, 303, 304, 305, 66, 352, - 80, 424, 10, 180, 413, 337, 183, 1, 2, 406, - 408, 316, 193, 407, 298, 193, 186, 1, 2, 171, - 172, 171, 172, 326, 108, 226, 111, 376, 380, 158, - 116, 158, 382, 187, 125, 192, 83, 84, 192, 339, - 124, 126, 339, 178, 160, 10, 180, 181, 182, 183, - 1, 2, 302, 303, 304, 305, 220, 178, 127, 10, - 180, 181, 182, 183, 128, 129, 134, 135, 136, 138, - 221, 141, 142, 168, 215, 169, 170, 199, -271, 200, - 201, 212, 202, 214, 222, 223, 10, 247, 261, 373, - 249, 266, 250, 268, 277, 278, 274, 260, 222, 280, - 224, 292, 293, 118, 297, 300, 286, 373, 301, 290, - 312, 308, 192, 362, 310, 314, 392, 318, 323, 225, - 327, 333, 332, 341, 334, 226, 396, 82, 355, 336, - 192, 349, 345, 350, 227, 351, 354, 83, 84, 226, - 367, 228, 229, 356, 230, 364, 368, 375, 85, 38, - 86, 379, 87, 381, 388, 399, 396, 393, 400, 410, - 428, 403, 88, 404, 429, 160, 89, 160, 6, 392, - 90, 18, 420, 91, 41, 42, 43, 194, 35, 81, - 113, 140, 106, 137, 92, 45, 357, 377, 279, 93, - 46, 94, 47, 95, 216, 374, 386, 325, 321, 405, - 48, 426, 96, 97, 311, 414, 411, 313, 409, 49, - 342, 50, 383, 0, 0, 0, 51, 98, 52, 53, - 54, 0, 0, 0, 0, 0, 0, 0, 178, 99, - 10, 180, 181, 182, 183, 1, 2, 0, 0, 0, - 178, 220, 10, 180, 181, 182, 183, 1, 2, 0, - 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 221, 0, 222, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 222, 223, 0, 0, 224, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 224, 0, 1, - 2, 0, 0, 0, 225, 0, 0, 0, 0, 0, - 226, 38, 0, 0, 0, 0, 225, 0, 0, 227, - 0, 0, 226, 0, 0, 0, 39, 229, 0, 230, - 40, 227, 0, 0, 0, 0, 41, 42, 43, 229, - 0, 230, 44, 0, 0, 0, 0, 45, 0, 0, + 158, 121, 210, 235, 211, 15, 256, 191, 120, 101, + 101, 265, 10, 10, 10, 5, 10, 190, 5, 10, + 175, 1, 2, 102, 102, 117, 10, 67, 143, 65, + 114, 423, 72, 417, 253, 7, 79, 203, 269, 10, + 11, 10, 171, 172, 19, 10, 1, 2, 65, 16, + 1, 2, 64, 171, 172, 71, 203, 203, 132, 78, + 10, 180, 205, 28, 183, 300, 79, 10, 11, 63, + 254, 64, 30, 253, 10, 180, 373, 354, 183, 204, + 209, 205, 205, 285, 144, 73, 161, 418, 63, 78, + 349, 419, 115, 365, 386, 166, -271, 162, 145, 167, + 29, 294, 72, 332, 124, 360, 361, 79, 362, 254, + 262, 118, 295, 341, 133, 262, 165, 68, 396, 32, + 118, 191, 391, 255, 191, 71, 132, 34, 193, 139, + 78, 190, 175, 427, 190, 235, 160, 12, 158, 164, + 265, 291, 112, 31, -245, 20, 363, 267, -245, 33, + 176, 192, 423, 21, 118, 251, 281, 37, 282, 252, + 217, 219, 80, 171, 172, 17, 303, 304, 305, 306, + 281, 66, 371, 372, 22, 10, 23, 338, 1, 2, + 1, 2, 133, 380, 218, 24, 329, 344, 109, 110, + 330, 345, 331, 266, 347, 403, 274, 404, 348, 374, + 336, 274, 318, 36, 286, 323, 290, 178, 108, 10, + 180, 181, 182, 183, 1, 2, 285, 387, 171, 172, + 220, 10, 180, 426, 399, 183, 1, 2, 400, 83, + 84, 127, 408, 426, 221, 415, 409, 1, 2, 171, + 172, 317, 193, 410, 299, 193, 297, 298, 222, 223, + 111, 116, 124, 327, 303, 304, 305, 306, 382, 378, + 125, 158, 384, 158, 224, 192, 126, 128, 192, 340, + 129, 134, 340, 178, 160, 10, 180, 181, 182, 183, + 1, 2, 135, 225, 136, 138, 220, 141, 199, 226, + 142, 178, 200, 10, 180, 181, 182, 183, 227, 168, + 221, 169, 170, -272, 201, 228, 229, 202, 230, 212, + 214, 215, 10, 247, 222, 223, 261, 268, 250, 249, + 375, 277, 266, 280, 278, 260, 292, 274, 118, 293, + 224, 301, 222, 302, 309, 313, 311, 286, 375, 315, + 290, 319, 324, 192, 328, 333, 334, 353, 394, 225, + 337, 335, 342, 350, 346, 226, 205, 351, 398, 82, + 352, 192, 357, 356, 227, 366, 369, 358, 370, 83, + 84, 377, 229, 226, 230, 381, 390, 383, 395, 401, + 85, 38, 86, 402, 87, 405, 406, 430, 398, 412, + 431, 6, 18, 194, 88, 35, 81, 160, 89, 160, + 113, 394, 90, 140, 422, 91, 41, 42, 43, 137, + 106, 359, 216, 388, 322, 376, 92, 45, 279, 379, + 326, 93, 46, 94, 47, 95, 428, 314, 407, 355, + 312, 416, 48, 343, 96, 97, 413, 385, 411, 0, + 0, 49, 0, 50, 0, 0, 0, 0, 51, 98, + 52, 53, 54, 178, 0, 10, 180, 181, 182, 183, + 178, 99, 10, 180, 181, 182, 183, 1, 2, 177, + 178, 179, 10, 180, 181, 182, 183, 1, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, + 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, + 0, 222, 223, 0, 0, 0, 0, 0, 0, 364, + 0, 184, 0, 0, 10, 0, 0, 224, 0, 1, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 185, + 0, 38, 0, 0, 0, 226, 225, 0, 0, 0, + 0, 0, 226, 0, 0, 0, 39, 0, 0, 0, + 40, 227, 186, 0, 0, 0, 41, 42, 43, 229, + 0, 230, 44, 0, 0, 0, 0, 45, 0, 187, 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, @@ -729,64 +731,63 @@ static const short yytable[] = { 15, }; static const short yycheck[] = { 7, - 121, 153, 82, 155, 170, 13, 197, 82, 8, 136, - 64, 65, 135, 201, 8, 0, 4, 136, 3, 8, - 15, 16, 8, 9, 230, 21, 30, 15, 16, 37, - 64, 65, 40, 17, 8, 9, 44, 48, 32, 106, - 35, 8, 35, 110, 105, 8, 13, 14, 56, 8, - 13, 14, 37, 8, 82, 40, 19, 8, 9, 44, - 36, 12, 268, 8, 9, 99, 74, 12, 8, 82, - 327, 56, 278, 13, 14, 82, 71, 105, 71, 107, - 250, 77, 296, 253, 37, 212, 106, 71, 345, 74, - 110, 75, 105, 105, 107, 91, 9, 311, 103, 110, - 107, 113, 110, 56, 310, 107, 43, 115, 48, 114, - 104, 106, 116, 113, 99, 110, 124, 54, 106, 55, - 106, 116, 197, 250, 247, 110, 253, 116, 136, 114, - 115, 250, 106, 167, 253, 301, 121, 59, 259, 124, - 215, 329, 109, 13, 14, 104, 109, 86, 202, 104, - 135, 136, 8, 104, 14, 106, 86, 13, 14, 104, - 168, 169, 22, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 6, 86, 8, 9, 10, 11, 12, - 109, 110, 167, 43, 169, 45, 4, 380, 106, 382, - 3, 266, 110, 201, 54, 292, 204, 15, 16, 274, - 327, 209, 324, 325, 212, 47, 214, 106, 108, 306, - 307, 110, 309, 335, 47, 106, 106, 344, 345, 110, - 110, 412, 23, 65, 99, 100, 101, 102, 14, 62, - 41, 422, 8, 9, 400, 110, 12, 13, 14, 106, - 392, 249, 250, 110, 229, 253, 88, 13, 14, 15, - 16, 15, 16, 261, 109, 88, 105, 332, 338, 380, - 105, 382, 342, 105, 83, 250, 13, 14, 253, 277, - 113, 83, 280, 6, 259, 8, 9, 10, 11, 12, - 13, 14, 99, 100, 101, 102, 19, 6, 73, 8, - 9, 10, 11, 12, 53, 83, 3, 113, 3, 106, - 33, 106, 105, 111, 3, 111, 105, 9, 105, 37, - 105, 105, 70, 105, 47, 48, 8, 113, 27, 327, - 113, 329, 111, 107, 70, 107, 334, 117, 47, 70, - 63, 98, 27, 116, 32, 106, 344, 345, 110, 347, - 105, 98, 327, 62, 107, 4, 354, 97, 90, 82, - 112, 106, 70, 106, 110, 88, 364, 3, 106, 108, - 345, 105, 107, 114, 97, 103, 105, 13, 14, 88, - 4, 104, 105, 108, 107, 115, 84, 108, 24, 25, - 26, 104, 28, 108, 114, 105, 394, 108, 110, 113, - 0, 108, 38, 108, 0, 380, 42, 382, 3, 407, - 46, 13, 410, 49, 50, 51, 52, 139, 26, 56, - 74, 115, 65, 110, 60, 61, 301, 334, 209, 65, - 66, 67, 68, 69, 167, 329, 347, 256, 252, 387, - 76, 422, 78, 79, 238, 407, 398, 247, 394, 85, - 280, 87, 344, -1, -1, -1, 92, 93, 94, 95, - 96, -1, -1, -1, -1, -1, -1, -1, 6, 105, - 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, - 6, 19, 8, 9, 10, 11, 12, 13, 14, -1, - -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, -1, 47, - 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 47, 48, -1, -1, 63, -1, -1, -1, -1, - -1, -1, -1, -1, 8, -1, -1, 63, -1, 13, - 14, -1, -1, -1, 82, -1, -1, -1, -1, -1, - 88, 25, -1, -1, -1, -1, 82, -1, -1, 97, - -1, -1, 88, -1, -1, -1, 40, 105, -1, 107, - 44, 97, -1, -1, -1, -1, 50, 51, 52, 105, - -1, 107, 56, -1, -1, -1, -1, 61, -1, -1, + 121, 82, 153, 170, 155, 13, 197, 136, 82, 64, + 65, 201, 8, 8, 8, 0, 8, 136, 3, 8, + 135, 13, 14, 64, 65, 30, 8, 19, 21, 37, + 48, 4, 40, 17, 35, 105, 44, 82, 32, 8, + 9, 8, 15, 16, 107, 8, 13, 14, 56, 36, + 13, 14, 37, 15, 16, 40, 82, 82, 99, 44, + 8, 9, 107, 9, 12, 230, 74, 8, 9, 37, + 71, 56, 86, 35, 8, 9, 328, 296, 12, 105, + 105, 107, 107, 212, 77, 48, 43, 71, 56, 74, + 292, 75, 110, 312, 346, 106, 105, 54, 91, 110, + 59, 103, 110, 268, 113, 307, 308, 115, 310, 71, + 104, 116, 114, 278, 99, 104, 124, 109, 113, 55, + 116, 250, 104, 197, 253, 110, 167, 3, 136, 114, + 115, 250, 247, 106, 253, 302, 121, 106, 259, 124, + 330, 215, 109, 86, 106, 14, 311, 202, 110, 86, + 135, 136, 4, 22, 116, 106, 104, 23, 106, 110, + 168, 169, 41, 15, 16, 106, 99, 100, 101, 102, + 104, 14, 325, 326, 43, 8, 45, 110, 13, 14, + 13, 14, 167, 336, 169, 54, 106, 106, 109, 110, + 110, 110, 266, 201, 106, 382, 204, 384, 110, 328, + 274, 209, 250, 108, 212, 253, 214, 6, 109, 8, + 9, 10, 11, 12, 13, 14, 345, 346, 15, 16, + 19, 8, 9, 414, 106, 12, 13, 14, 110, 13, + 14, 73, 106, 424, 33, 402, 110, 13, 14, 15, + 16, 249, 250, 394, 229, 253, 31, 32, 47, 48, + 105, 105, 113, 261, 99, 100, 101, 102, 339, 333, + 83, 382, 343, 384, 63, 250, 83, 53, 253, 277, + 83, 3, 280, 6, 259, 8, 9, 10, 11, 12, + 13, 14, 113, 82, 3, 106, 19, 106, 9, 88, + 105, 6, 37, 8, 9, 10, 11, 12, 97, 111, + 33, 111, 105, 105, 105, 104, 105, 70, 107, 105, + 105, 3, 8, 113, 47, 48, 27, 107, 111, 113, + 328, 70, 330, 70, 107, 117, 98, 335, 116, 27, + 63, 106, 47, 110, 98, 105, 107, 345, 346, 4, + 348, 97, 90, 328, 112, 70, 106, 62, 356, 82, + 108, 110, 106, 105, 107, 88, 107, 114, 366, 3, + 103, 346, 106, 105, 97, 115, 4, 108, 84, 13, + 14, 108, 105, 88, 107, 104, 114, 108, 108, 105, + 24, 25, 26, 110, 28, 108, 108, 0, 396, 113, + 0, 3, 13, 139, 38, 26, 56, 382, 42, 384, + 74, 409, 46, 115, 412, 49, 50, 51, 52, 110, + 65, 302, 167, 348, 252, 330, 60, 61, 209, 335, + 256, 65, 66, 67, 68, 69, 424, 247, 389, 297, + 238, 409, 76, 280, 78, 79, 400, 345, 396, -1, + -1, 85, -1, 87, -1, -1, -1, -1, 92, 93, + 94, 95, 96, 6, -1, 8, 9, 10, 11, 12, + 6, 105, 8, 9, 10, 11, 12, 13, 14, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, + -1, 47, 48, -1, -1, -1, -1, -1, -1, 62, + -1, 47, -1, -1, 8, -1, -1, 63, -1, 13, + 14, -1, -1, -1, -1, -1, -1, -1, -1, 65, + -1, 25, -1, -1, -1, 88, 82, -1, -1, -1, + -1, -1, 88, -1, -1, -1, 40, -1, -1, -1, + 44, 97, 88, -1, -1, -1, 50, 51, 52, 105, + -1, 107, 56, -1, -1, -1, -1, 61, -1, 105, -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, 87, -1, -1, 13, 14, 92, -1, @@ -3084,79 +3085,87 @@ case 223: case 224: #line 1746 "asn1p_y.y" { - CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); + CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0); ; break;} case 225: -#line 1752 "asn1p_y.y" +#line 1749 "asn1p_y.y" { - yyval.a_constr = yyvsp[0].a_constr; + CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); ; break;} case 226: #line 1755 "asn1p_y.y" { - CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); + yyval.a_constr = yyvsp[0].a_constr; ; break;} case 227: -#line 1761 "asn1p_y.y" +#line 1758 "asn1p_y.y" +{ + CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); + ; + break;} +case 228: +#line 1764 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); yyval.a_constr->type = ACT_EL_EXT; + yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0); ; break;} -case 228: -#line 1766 "asn1p_y.y" +case 229: +#line 1770 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); yyval.a_constr->type = ACT_EL_VALUE; yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0); yyval.a_constr->presence = yyvsp[0].a_pres; + if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr); ; break;} -case 229: -#line 1779 "asn1p_y.y" +case 230: +#line 1784 "asn1p_y.y" { yyval.a_pres = ACPRES_DEFAULT; ; break;} -case 230: -#line 1780 "asn1p_y.y" +case 231: +#line 1785 "asn1p_y.y" { yyval.a_pres = yyvsp[0].a_pres; ; break;} -case 231: -#line 1784 "asn1p_y.y" +case 232: +#line 1789 "asn1p_y.y" { yyval.a_pres = ACPRES_PRESENT; ; break;} -case 232: -#line 1787 "asn1p_y.y" +case 233: +#line 1792 "asn1p_y.y" { yyval.a_pres = ACPRES_ABSENT; ; break;} -case 233: -#line 1790 "asn1p_y.y" +case 234: +#line 1795 "asn1p_y.y" { yyval.a_pres = ACPRES_OPTIONAL; ; break;} -case 234: -#line 1796 "asn1p_y.y" -{ - yyval.a_constr = yyvsp[0].a_constr; - ; - break;} case 235: -#line 1799 "asn1p_y.y" +#line 1801 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; ; break;} case 236: -#line 1808 "asn1p_y.y" +#line 1804 "asn1p_y.y" +{ + yyval.a_constr = yyvsp[0].a_constr; + ; + break;} +case 237: +#line 1813 "asn1p_y.y" { asn1p_ref_t *ref = asn1p_ref_new(yylineno); asn1p_constraint_t *ct; @@ -3170,14 +3179,14 @@ case 236: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0); ; break;} -case 237: -#line 1823 "asn1p_y.y" +case 238: +#line 1828 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr); ; break;} -case 238: -#line 1829 "asn1p_y.y" +case 239: +#line 1834 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3185,8 +3194,8 @@ case 238: yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0); ; break;} -case 239: -#line 1835 "asn1p_y.y" +case 240: +#line 1840 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3196,8 +3205,8 @@ case 239: CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct); ; break;} -case 240: -#line 1849 "asn1p_y.y" +case 241: +#line 1854 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 2); int ret; @@ -3210,8 +3219,8 @@ case 240: free(yyvsp[0].tv_str); ; break;} -case 241: -#line 1860 "asn1p_y.y" +case 242: +#line 1865 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 3); int ret; @@ -3225,14 +3234,14 @@ case 241: free(yyvsp[0].tv_str); ; break;} -case 242: -#line 1876 "asn1p_y.y" +case 243: +#line 1881 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 243: -#line 1879 "asn1p_y.y" +case 244: +#line 1884 "asn1p_y.y" { int l1 = strlen(yyvsp[-2].tv_str); int l3 = strlen(yyvsp[0].tv_str); @@ -3243,61 +3252,61 @@ case 243: yyval.tv_str[l1 + 1 + l3] = '\0'; ; break;} -case 244: -#line 1897 "asn1p_y.y" +case 245: +#line 1902 "asn1p_y.y" { yyval.a_marker.flags = EM_NOMARK; yyval.a_marker.default_value = 0; ; break;} -case 245: -#line 1901 "asn1p_y.y" +case 246: +#line 1906 "asn1p_y.y" { yyval.a_marker = yyvsp[0].a_marker; ; break;} -case 246: -#line 1905 "asn1p_y.y" +case 247: +#line 1910 "asn1p_y.y" { yyval.a_marker.flags = EM_OPTIONAL; yyval.a_marker.default_value = 0; ; break;} -case 247: -#line 1909 "asn1p_y.y" +case 248: +#line 1914 "asn1p_y.y" { yyval.a_marker.flags = EM_DEFAULT; yyval.a_marker.default_value = yyvsp[0].a_value; ; break;} -case 248: -#line 1932 "asn1p_y.y" +case 249: +#line 1937 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); ; break;} -case 249: -#line 1936 "asn1p_y.y" -{ - yyval.a_expr = yyvsp[-1].a_expr; - ; - break;} case 250: -#line 1942 "asn1p_y.y" +#line 1941 "asn1p_y.y" { - yyval.a_expr = asn1p_expr_new(yylineno); - checkmem(yyval.a_expr); - asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); + yyval.a_expr = yyvsp[-1].a_expr; ; break;} case 251: #line 1947 "asn1p_y.y" { - yyval.a_expr = yyvsp[-2].a_expr; + yyval.a_expr = asn1p_expr_new(yylineno); + checkmem(yyval.a_expr); asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); ; break;} case 252: -#line 1954 "asn1p_y.y" +#line 1952 "asn1p_y.y" +{ + yyval.a_expr = yyvsp[-2].a_expr; + asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); + ; + break;} +case 253: +#line 1959 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3306,19 +3315,8 @@ case 252: yyval.a_expr->Identifier = yyvsp[0].tv_str; ; break;} -case 253: -#line 1961 "asn1p_y.y" -{ - yyval.a_expr = asn1p_expr_new(yylineno); - checkmem(yyval.a_expr); - yyval.a_expr->expr_type = A1TC_UNIVERVAL; - yyval.a_expr->meta_type = AMT_VALUE; - yyval.a_expr->Identifier = yyvsp[-3].tv_str; - yyval.a_expr->value = yyvsp[-1].a_value; - ; - break;} case 254: -#line 1969 "asn1p_y.y" +#line 1966 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3329,7 +3327,18 @@ case 254: ; break;} case 255: -#line 1977 "asn1p_y.y" +#line 1974 "asn1p_y.y" +{ + yyval.a_expr = asn1p_expr_new(yylineno); + checkmem(yyval.a_expr); + yyval.a_expr->expr_type = A1TC_UNIVERVAL; + yyval.a_expr->meta_type = AMT_VALUE; + yyval.a_expr->Identifier = yyvsp[-3].tv_str; + yyval.a_expr->value = yyvsp[-1].a_value; + ; + break;} +case 256: +#line 1982 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3338,8 +3347,8 @@ case 255: yyval.a_expr->value = yyvsp[0].a_value; ; break;} -case 256: -#line 1984 "asn1p_y.y" +case 257: +#line 1989 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3349,103 +3358,103 @@ case 256: yyval.a_expr->meta_type = AMT_VALUE; ; break;} -case 257: -#line 1995 "asn1p_y.y" -{ - yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); - checkmem(yyval.a_value); - ; - break;} case 258: -#line 1999 "asn1p_y.y" +#line 2000 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); ; break;} case 259: -#line 2030 "asn1p_y.y" -{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ; +#line 2004 "asn1p_y.y" +{ + yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); + checkmem(yyval.a_value); + ; break;} case 260: -#line 2031 "asn1p_y.y" -{ yyval.a_tag = yyvsp[0].a_tag; ; +#line 2035 "asn1p_y.y" +{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ; break;} case 261: -#line 2035 "asn1p_y.y" +#line 2036 "asn1p_y.y" +{ yyval.a_tag = yyvsp[0].a_tag; ; + break;} +case 262: +#line 2040 "asn1p_y.y" { yyval.a_tag = yyvsp[-1].a_tag; yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode; ; break;} -case 262: -#line 2042 "asn1p_y.y" +case 263: +#line 2047 "asn1p_y.y" { yyval.a_tag = yyvsp[-2].a_tag; yyval.a_tag.tag_value = yyvsp[-1].a_int; ; break;} -case 263: -#line 2048 "asn1p_y.y" +case 264: +#line 2053 "asn1p_y.y" { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ; break;} -case 264: -#line 2049 "asn1p_y.y" +case 265: +#line 2054 "asn1p_y.y" { yyval.a_tag.tag_class = TC_UNIVERSAL; ; break;} -case 265: -#line 2050 "asn1p_y.y" +case 266: +#line 2055 "asn1p_y.y" { yyval.a_tag.tag_class = TC_APPLICATION; ; break;} -case 266: -#line 2051 "asn1p_y.y" +case 267: +#line 2056 "asn1p_y.y" { yyval.a_tag.tag_class = TC_PRIVATE; ; break;} -case 267: -#line 2055 "asn1p_y.y" +case 268: +#line 2060 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_DEFAULT; ; break;} -case 268: -#line 2056 "asn1p_y.y" +case 269: +#line 2061 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_IMPLICIT; ; break;} -case 269: -#line 2057 "asn1p_y.y" +case 270: +#line 2062 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_EXPLICIT; ; break;} -case 270: -#line 2061 "asn1p_y.y" -{ - checkmem(yyvsp[0].tv_str); - yyval.tv_str = yyvsp[0].tv_str; - ; - break;} case 271: -#line 2065 "asn1p_y.y" +#line 2066 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 272: -#line 2073 "asn1p_y.y" +#line 2070 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; ; break;} case 273: -#line 2080 "asn1p_y.y" -{ yyval.tv_str = 0; ; +#line 2078 "asn1p_y.y" +{ + checkmem(yyvsp[0].tv_str); + yyval.tv_str = yyvsp[0].tv_str; + ; break;} case 274: -#line 2081 "asn1p_y.y" +#line 2085 "asn1p_y.y" +{ yyval.tv_str = 0; ; + break;} +case 275: +#line 2086 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; ; break;} -case 275: -#line 2086 "asn1p_y.y" +case 276: +#line 2091 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; @@ -3673,7 +3682,7 @@ yyerrhandle: } return 1; } -#line 2092 "asn1p_y.y" +#line 2097 "asn1p_y.y" diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y index 815423da..a4842e25 100644 --- a/libasn1parser/asn1p_y.y +++ b/libasn1parser/asn1p_y.y @@ -278,7 +278,7 @@ static asn1p_value_t * %type ConstraintSubtypeElement /* 1..2 */ %type SimpleTableConstraint %type TableConstraint -%type WithComponents +%type InnerTypeConstraint %type WithComponentsList %type WithComponentsElement %type ComponentRelationConstraint @@ -1668,7 +1668,7 @@ ConstraintSubtypeElement: | TableConstraint { $$ = $1; } - | WithComponents { + | InnerTypeConstraint { $$ = $1; } | TOK_CONSTRAINED TOK_BY '{' @@ -1742,8 +1742,11 @@ ContainedSubtype: } ; -WithComponents: - TOK_WITH TOK_COMPONENTS '{' WithComponentsList '}' { +InnerTypeConstraint: + TOK_WITH TOK_COMPONENT SetOfConstraints { + CONSTRAINT_INSERT($$, ACT_CT_WCOMP, $3, 0); + } + | TOK_WITH TOK_COMPONENTS '{' WithComponentsList '}' { CONSTRAINT_INSERT($$, ACT_CT_WCOMPS, $4, 0); } ; @@ -1762,6 +1765,7 @@ WithComponentsElement: $$ = asn1p_constraint_new(yylineno); checkmem($$); $$->type = ACT_EL_EXT; + $$->value = asn1p_value_frombuf("...", 3, 0); } | Identifier optConstraints optPresenceConstraint { $$ = asn1p_constraint_new(yylineno); @@ -1769,6 +1773,7 @@ WithComponentsElement: $$->type = ACT_EL_VALUE; $$->value = asn1p_value_frombuf($1, strlen($1), 0); $$->presence = $3; + if($2) asn1p_constraint_insert($$, $2); } ; diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c index addfd9cc..fc0e7b35 100644 --- a/libasn1print/asn1print.c +++ b/libasn1print/asn1print.c @@ -333,10 +333,36 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) { printf(")"); break; case ACT_CT_WCOMP: - printf("WITH COMPONENT ???"); + assert(ct->el_count != 0); + assert(ct->el_count == 1); + printf("WITH COMPONENT ("); + asn1print_constraint(ct->elements[0], flags); + printf(")"); break; - case ACT_CT_WCOMPS: - printf("WITH COMPONENTS { ??? }"); + case ACT_CT_WCOMPS: { + unsigned int i; + printf("WITH COMPONENTS { "); + for(i = 0; i < ct->el_count; i++) { + asn1p_constraint_t *cel = ct->elements[i]; + if(i) printf(", "); + fwrite(cel->value->value.string.buf, + 1, cel->value->value.string.size, + stdout); + if(cel->el_count) { + assert(cel->el_count == 1); + printf(" "); + asn1print_constraint(cel->elements[0], + flags); + } + switch(cel->presence) { + case ACPRES_DEFAULT: break; + case ACPRES_PRESENT: printf(" PRESENT"); break; + case ACPRES_ABSENT: printf(" ABSENT"); break; + case ACPRES_OPTIONAL: printf(" OPTIONAL");break; + } + } + printf(" }"); + } break; case ACT_CT_CTDBY: printf("CONSTRAINED BY ");