diff options
-rw-r--r-- | libasn1parser/asn1p_module.h | 8 | ||||
-rw-r--r-- | libasn1parser/asn1p_y.c | 2212 | ||||
-rw-r--r-- | libasn1parser/asn1p_y.h | 2 | ||||
-rw-r--r-- | libasn1parser/asn1p_y.y | 134 | ||||
-rw-r--r-- | tests/49-real-life-OK.asn1 | 2 | ||||
-rw-r--r-- | tests/49-real-life-OK.asn1.-E | 2 |
6 files changed, 1197 insertions, 1163 deletions
diff --git a/libasn1parser/asn1p_module.h b/libasn1parser/asn1p_module.h index 5e7ce15d..ad9eab04 100644 --- a/libasn1parser/asn1p_module.h +++ b/libasn1parser/asn1p_module.h @@ -51,14 +51,14 @@ typedef struct asn1p_module_s { asn1p_module_flags_e module_flags; /* AUTOMATIC TAGS? */ /* - * List of everything that this module IMPORTS. + * List of everything that this module EXPORTS. */ - TQ_HEAD(struct asn1p_xports_s) imports; + TQ_HEAD(struct asn1p_xports_s) exports; /* - * List of everything that this module EXPORTS. + * List of everything that this module IMPORTS. */ - TQ_HEAD(struct asn1p_xports_s) exports; + TQ_HEAD(struct asn1p_xports_s) imports; /* * List of everything that this module defines itself. diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c index ba23ed2e..d1105a53 100644 --- a/libasn1parser/asn1p_y.c +++ b/libasn1parser/asn1p_y.c @@ -336,6 +336,19 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); } \ } while(0) +#ifdef AL_IMPORT +#error AL_IMPORT DEFINED ELSEWHERE! +#endif +#define AL_IMPORT(to,where,from,field) do { \ + if(!(from)) break; \ + while(TQ_FIRST(&((from)->where))) { \ + TQ_ADD(&((to)->where), \ + TQ_REMOVE(&((from)->where), field), \ + field); \ + } \ + assert(TQ_FIRST(&((from)->where)) == 0); \ + } while(0) + /* Enabling traces. */ @@ -352,7 +365,7 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); #endif #ifndef YYSTYPE -#line 72 "asn1p_y.y" +#line 85 "asn1p_y.y" typedef union { asn1p_t *a_grammar; asn1p_module_flags_e a_module_flags; @@ -388,7 +401,7 @@ typedef union { } tv_nametag; } yystype; /* Line 193 of /usr/local/share/bison/yacc.c. */ -#line 392 "asn1p_y.c" +#line 405 "asn1p_y.c" # define YYSTYPE yystype # define YYSTYPE_IS_TRIVIAL 1 #endif @@ -409,7 +422,7 @@ typedef struct yyltype /* Line 213 of /usr/local/share/bison/yacc.c. */ -#line 413 "asn1p_y.c" +#line 426 "asn1p_y.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE @@ -507,16 +520,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 7 -#define YYLAST 803 +#define YYLAST 816 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 121 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 109 +#define YYNNTS 112 /* YYNRULES -- Number of rules. */ -#define YYNRULES 293 +#define YYNRULES 296 /* YYNRULES -- Number of states. */ -#define YYNSTATES 450 +#define YYNSTATES 453 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -574,157 +587,158 @@ static const unsigned short yyprhs[] = { 0, 0, 3, 5, 7, 10, 19, 20, 22, 26, 29, 31, 34, 36, 41, 43, 44, 46, 48, 51, - 54, 57, 60, 63, 66, 67, 69, 71, 74, 76, - 78, 80, 82, 84, 85, 89, 91, 95, 98, 100, - 103, 104, 106, 111, 113, 117, 119, 123, 125, 129, - 133, 136, 138, 142, 144, 148, 150, 154, 159, 161, - 163, 168, 172, 176, 183, 190, 192, 196, 198, 202, - 206, 210, 214, 216, 220, 222, 224, 226, 228, 229, - 231, 233, 237, 241, 244, 248, 250, 252, 256, 259, - 261, 263, 269, 270, 272, 274, 278, 281, 286, 290, - 294, 298, 302, 306, 307, 309, 310, 317, 319, 322, - 324, 326, 328, 332, 334, 338, 342, 346, 347, 350, - 352, 357, 362, 367, 374, 381, 383, 388, 392, 394, - 398, 402, 406, 408, 412, 414, 418, 420, 422, 424, - 426, 430, 434, 436, 441, 443, 445, 449, 450, 454, - 456, 458, 460, 462, 464, 466, 468, 470, 474, 476, - 478, 480, 482, 485, 487, 489, 491, 493, 496, 499, - 501, 503, 506, 509, 511, 513, 515, 517, 519, 522, - 524, 527, 529, 531, 533, 535, 537, 539, 541, 543, + 54, 57, 60, 63, 66, 67, 69, 73, 75, 78, + 80, 82, 84, 85, 89, 91, 92, 94, 98, 101, + 103, 106, 107, 109, 114, 116, 120, 122, 126, 128, + 129, 131, 135, 139, 142, 144, 148, 150, 154, 156, + 160, 165, 167, 169, 174, 178, 182, 189, 196, 198, + 202, 204, 208, 212, 216, 220, 222, 226, 228, 230, + 232, 234, 235, 237, 239, 243, 247, 250, 254, 256, + 258, 262, 265, 267, 269, 275, 276, 278, 280, 284, + 287, 292, 296, 300, 304, 308, 312, 313, 315, 316, + 323, 325, 328, 330, 332, 334, 338, 340, 344, 348, + 352, 353, 356, 358, 363, 368, 373, 380, 387, 389, + 394, 398, 400, 404, 408, 412, 414, 418, 420, 424, + 426, 428, 430, 432, 436, 440, 442, 447, 449, 451, + 455, 456, 460, 462, 464, 466, 468, 470, 472, 474, + 476, 480, 482, 484, 486, 488, 491, 493, 495, 497, + 499, 502, 505, 507, 509, 512, 515, 517, 519, 521, + 523, 525, 528, 530, 533, 535, 537, 539, 541, 543, 545, 547, 549, 551, 553, 555, 557, 559, 561, 563, - 565, 566, 568, 570, 575, 579, 584, 586, 588, 592, - 598, 600, 604, 608, 612, 616, 621, 625, 627, 629, - 633, 637, 641, 645, 647, 649, 650, 656, 658, 661, - 664, 668, 670, 672, 674, 676, 678, 680, 682, 684, - 688, 694, 696, 700, 702, 706, 707, 709, 711, 713, - 715, 717, 719, 723, 728, 730, 734, 737, 741, 743, - 747, 748, 750, 752, 755, 758, 762, 764, 768, 770, - 775, 780, 782, 784, 786, 788, 790, 792, 793, 795, - 798, 803, 804, 806, 808, 810, 811, 813, 815, 817, - 819, 821, 822, 824 + 565, 567, 569, 571, 572, 574, 576, 581, 585, 590, + 592, 594, 598, 604, 606, 610, 614, 618, 622, 627, + 631, 633, 635, 639, 643, 647, 651, 653, 655, 656, + 662, 664, 667, 670, 674, 676, 678, 680, 682, 684, + 686, 688, 690, 694, 700, 702, 706, 708, 712, 713, + 715, 717, 719, 721, 723, 725, 729, 734, 736, 740, + 743, 747, 749, 753, 754, 756, 758, 761, 764, 768, + 770, 774, 776, 781, 786, 788, 790, 792, 794, 796, + 798, 799, 801, 804, 809, 810, 812, 814, 816, 817, + 819, 821, 823, 825, 827, 828, 830 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short yyrhs[] = { 122, 0, -1, 123, -1, 124, -1, 123, 124, -1, - 226, 125, 39, 129, 3, 26, 132, 44, -1, -1, + 229, 125, 39, 129, 3, 26, 132, 44, -1, -1, 126, -1, 108, 127, 109, -1, 108, 109, -1, 128, - -1, 127, 128, -1, 229, -1, 229, 110, 10, 111, + -1, 127, 128, -1, 232, -1, 232, 110, 10, 111, -1, 10, -1, -1, 130, -1, 131, -1, 130, 131, -1, 46, 89, -1, 57, 89, -1, 25, 89, -1, - 48, 58, -1, 16, 62, -1, -1, 133, -1, 134, - -1, 133, 134, -1, 136, -1, 142, -1, 148, -1, - 178, -1, 146, -1, -1, 43, 16, 135, -1, 188, - -1, 59, 137, 112, -1, 59, 51, -1, 139, -1, - 137, 139, -1, -1, 126, -1, 140, 51, 226, 138, - -1, 141, -1, 140, 113, 141, -1, 226, -1, 226, - 108, 109, -1, 229, -1, 47, 143, 112, -1, 47, - 22, 112, -1, 47, 112, -1, 144, -1, 143, 113, - 144, -1, 226, -1, 226, 108, 109, -1, 229, -1, - 108, 195, 109, -1, 226, 147, 3, 145, -1, 187, - -1, 172, -1, 172, 108, 151, 109, -1, 226, 3, - 168, -1, 226, 3, 158, -1, 226, 108, 149, 109, - 3, 168, -1, 226, 108, 149, 109, 3, 158, -1, - 150, -1, 149, 113, 150, -1, 226, -1, 226, 114, - 229, -1, 226, 114, 226, -1, 185, 114, 229, -1, - 185, 114, 226, -1, 152, -1, 151, 113, 152, -1, - 168, -1, 181, -1, 229, -1, 145, -1, -1, 154, - -1, 155, -1, 154, 113, 155, -1, 229, 168, 214, - -1, 168, 214, -1, 35, 73, 168, -1, 167, -1, - 157, -1, 156, 113, 157, -1, 229, 168, -1, 167, - -1, 168, -1, 33, 108, 160, 109, 162, -1, -1, - 93, -1, 161, -1, 160, 113, 161, -1, 17, 214, - -1, 18, 168, 159, 214, -1, 18, 176, 214, -1, - 18, 177, 214, -1, 17, 176, 214, -1, 17, 168, - 214, -1, 17, 177, 214, -1, -1, 163, -1, -1, - 100, 87, 108, 164, 165, 109, -1, 166, -1, 165, - 166, -1, 4, -1, 19, -1, 175, -1, 115, 165, - 116, -1, 107, -1, 107, 117, 182, -1, 107, 117, - 219, -1, 221, 170, 192, -1, -1, 169, 171, -1, - 147, -1, 32, 108, 156, 109, -1, 83, 108, 153, - 109, -1, 84, 108, 153, 109, -1, 83, 192, 73, - 228, 221, 170, -1, 84, 192, 73, 228, 221, 170, - -1, 23, -1, 23, 40, 30, 229, -1, 61, 73, - 172, -1, 15, -1, 15, 118, 226, -1, 227, 118, - 226, -1, 15, 118, 229, -1, 227, -1, 227, 118, - 173, -1, 174, -1, 173, 118, 174, -1, 175, -1, - 17, -1, 18, -1, 17, -1, 176, 118, 17, -1, - 176, 118, 18, -1, 16, -1, 229, 147, 3, 179, - -1, 181, -1, 182, -1, 229, 114, 179, -1, -1, - 108, 180, 184, -1, 68, -1, 50, -1, 91, -1, - 6, -1, 8, -1, 183, -1, 219, -1, 229, -1, - 226, 118, 229, -1, 7, -1, 13, -1, 14, -1, - 5, -1, 184, 5, -1, 29, -1, 68, -1, 81, - -1, 186, -1, 72, 86, -1, 70, 56, -1, 82, - -1, 49, -1, 41, 76, -1, 31, 86, -1, 96, - -1, 52, -1, 188, -1, 63, -1, 45, -1, 27, - 86, -1, 185, -1, 186, 216, -1, 28, -1, 53, - -1, 54, -1, 55, -1, 64, -1, 69, -1, 79, - -1, 88, -1, 90, -1, 95, -1, 97, -1, 98, - -1, 99, -1, 71, -1, 104, -1, 105, -1, 102, - -1, 103, -1, 101, -1, -1, 193, -1, 194, -1, - 85, 110, 195, 111, -1, 110, 195, 111, -1, 194, - 110, 195, 111, -1, 107, -1, 196, -1, 196, 113, - 107, -1, 196, 113, 107, 113, 196, -1, 197, -1, - 22, 101, 197, -1, 196, 189, 197, -1, 196, 190, - 197, -1, 197, 191, 197, -1, 200, 110, 195, 111, - -1, 110, 195, 111, -1, 201, -1, 202, -1, 201, - 199, 201, -1, 66, 199, 201, -1, 201, 199, 65, - -1, 66, 199, 65, -1, 208, -1, 203, -1, -1, - 36, 30, 108, 198, 184, -1, 106, -1, 106, 119, - -1, 119, 106, -1, 119, 106, 119, -1, 85, -1, - 51, -1, 50, -1, 91, -1, 220, -1, 183, -1, - 229, -1, 226, -1, 100, 34, 194, -1, 100, 35, - 108, 204, 109, -1, 205, -1, 204, 113, 205, -1, - 107, -1, 229, 192, 206, -1, -1, 207, -1, 78, - -1, 20, -1, 74, -1, 209, -1, 210, -1, 108, - 226, 109, -1, 209, 108, 211, 109, -1, 212, -1, - 211, 113, 212, -1, 120, 213, -1, 120, 118, 213, - -1, 229, -1, 213, 118, 229, -1, -1, 215, -1, - 74, -1, 38, 179, -1, 108, 109, -1, 108, 217, - 109, -1, 218, -1, 217, 113, 218, -1, 229, -1, - 229, 110, 219, 111, -1, 229, 110, 182, 111, -1, - 219, -1, 107, -1, 10, -1, 11, -1, 219, -1, - 12, -1, -1, 222, -1, 223, 225, -1, 115, 224, - 10, 116, -1, -1, 94, -1, 24, -1, 80, -1, - -1, 57, -1, 46, -1, 15, -1, 16, -1, 16, - -1, -1, 229, -1, 9, -1 + 48, 58, -1, 16, 62, -1, -1, 133, -1, 144, + 137, 134, -1, 135, -1, 134, 135, -1, 151, -1, + 181, -1, 149, -1, -1, 43, 16, 136, -1, 191, + -1, -1, 138, -1, 59, 139, 112, -1, 59, 51, + -1, 141, -1, 139, 141, -1, -1, 126, -1, 142, + 51, 229, 140, -1, 143, -1, 142, 113, 143, -1, + 229, -1, 229, 108, 109, -1, 232, -1, -1, 145, + -1, 47, 146, 112, -1, 47, 22, 112, -1, 47, + 112, -1, 147, -1, 146, 113, 147, -1, 229, -1, + 229, 108, 109, -1, 232, -1, 108, 198, 109, -1, + 229, 150, 3, 148, -1, 190, -1, 175, -1, 175, + 108, 154, 109, -1, 229, 3, 171, -1, 229, 3, + 161, -1, 229, 108, 152, 109, 3, 171, -1, 229, + 108, 152, 109, 3, 161, -1, 153, -1, 152, 113, + 153, -1, 229, -1, 229, 114, 232, -1, 229, 114, + 229, -1, 188, 114, 232, -1, 188, 114, 229, -1, + 155, -1, 154, 113, 155, -1, 171, -1, 184, -1, + 232, -1, 148, -1, -1, 157, -1, 158, -1, 157, + 113, 158, -1, 232, 171, 217, -1, 171, 217, -1, + 35, 73, 171, -1, 170, -1, 160, -1, 159, 113, + 160, -1, 232, 171, -1, 170, -1, 171, -1, 33, + 108, 163, 109, 165, -1, -1, 93, -1, 164, -1, + 163, 113, 164, -1, 17, 217, -1, 18, 171, 162, + 217, -1, 18, 179, 217, -1, 18, 180, 217, -1, + 17, 179, 217, -1, 17, 171, 217, -1, 17, 180, + 217, -1, -1, 166, -1, -1, 100, 87, 108, 167, + 168, 109, -1, 169, -1, 168, 169, -1, 4, -1, + 19, -1, 178, -1, 115, 168, 116, -1, 107, -1, + 107, 117, 185, -1, 107, 117, 222, -1, 224, 173, + 195, -1, -1, 172, 174, -1, 150, -1, 32, 108, + 159, 109, -1, 83, 108, 156, 109, -1, 84, 108, + 156, 109, -1, 83, 195, 73, 231, 224, 173, -1, + 84, 195, 73, 231, 224, 173, -1, 23, -1, 23, + 40, 30, 232, -1, 61, 73, 175, -1, 15, -1, + 15, 118, 229, -1, 230, 118, 229, -1, 15, 118, + 232, -1, 230, -1, 230, 118, 176, -1, 177, -1, + 176, 118, 177, -1, 178, -1, 17, -1, 18, -1, + 17, -1, 179, 118, 17, -1, 179, 118, 18, -1, + 16, -1, 232, 150, 3, 182, -1, 184, -1, 185, + -1, 232, 114, 182, -1, -1, 108, 183, 187, -1, + 68, -1, 50, -1, 91, -1, 6, -1, 8, -1, + 186, -1, 222, -1, 232, -1, 229, 118, 232, -1, + 7, -1, 13, -1, 14, -1, 5, -1, 187, 5, + -1, 29, -1, 68, -1, 81, -1, 189, -1, 72, + 86, -1, 70, 56, -1, 82, -1, 49, -1, 41, + 76, -1, 31, 86, -1, 96, -1, 52, -1, 191, + -1, 63, -1, 45, -1, 27, 86, -1, 188, -1, + 189, 219, -1, 28, -1, 53, -1, 54, -1, 55, + -1, 64, -1, 69, -1, 79, -1, 88, -1, 90, + -1, 95, -1, 97, -1, 98, -1, 99, -1, 71, + -1, 104, -1, 105, -1, 102, -1, 103, -1, 101, + -1, -1, 196, -1, 197, -1, 85, 110, 198, 111, + -1, 110, 198, 111, -1, 197, 110, 198, 111, -1, + 107, -1, 199, -1, 199, 113, 107, -1, 199, 113, + 107, 113, 199, -1, 200, -1, 22, 101, 200, -1, + 199, 192, 200, -1, 199, 193, 200, -1, 200, 194, + 200, -1, 203, 110, 198, 111, -1, 110, 198, 111, + -1, 204, -1, 205, -1, 204, 202, 204, -1, 66, + 202, 204, -1, 204, 202, 65, -1, 66, 202, 65, + -1, 211, -1, 206, -1, -1, 36, 30, 108, 201, + 187, -1, 106, -1, 106, 119, -1, 119, 106, -1, + 119, 106, 119, -1, 85, -1, 51, -1, 50, -1, + 91, -1, 223, -1, 186, -1, 232, -1, 229, -1, + 100, 34, 197, -1, 100, 35, 108, 207, 109, -1, + 208, -1, 207, 113, 208, -1, 107, -1, 232, 195, + 209, -1, -1, 210, -1, 78, -1, 20, -1, 74, + -1, 212, -1, 213, -1, 108, 229, 109, -1, 212, + 108, 214, 109, -1, 215, -1, 214, 113, 215, -1, + 120, 216, -1, 120, 118, 216, -1, 232, -1, 216, + 118, 232, -1, -1, 218, -1, 74, -1, 38, 182, + -1, 108, 109, -1, 108, 220, 109, -1, 221, -1, + 220, 113, 221, -1, 232, -1, 232, 110, 222, 111, + -1, 232, 110, 185, 111, -1, 222, -1, 107, -1, + 10, -1, 11, -1, 222, -1, 12, -1, -1, 225, + -1, 226, 228, -1, 115, 227, 10, 116, -1, -1, + 94, -1, 24, -1, 80, -1, -1, 57, -1, 46, + -1, 15, -1, 16, -1, 16, -1, -1, 232, -1, + 9, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { - 0, 326, 326, 332, 338, 354, 379, 381, 384, 388, - 393, 400, 408, 413, 417, 426, 428, 436, 440, 448, - 452, 455, 458, 462, 482, 484, 492, 496, 528, 532, - 541, 548, 561, 569, 568, 582, 594, 605, 610, 616, - 622, 624, 627, 638, 644, 650, 657, 663, 671, 675, - 678, 685, 691, 697, 704, 710, 719, 721, 731, 745, - 755, 771, 781, 797, 803, 810, 820, 830, 835, 842, - 849, 857, 867, 873, 879, 883, 891, 902, 924, 926, - 928, 934, 940, 948, 954, 961, 966, 972, 978, 984, - 987, 993, 1003, 1005, 1008, 1016, 1023, 1036, 1047, 1057, - 1068, 1078, 1089, 1100, 1102, 1109, 1107, 1116, 1121, 1127, - 1132, 1135, 1139, 1144, 1153, 1162, 1173, 1195, 1202, 1221, - 1225, 1231, 1237, 1243, 1253, 1263, 1269, 1280, 1294, 1303, - 1313, 1323, 1333, 1341, 1362, 1371, 1380, 1382, 1389, 1396, - 1402, 1406, 1412, 1432, 1442, 1444, 1445, 1452, 1452, 1457, - 1464, 1470, 1475, 1479, 1483, 1486, 1491, 1503, 1520, 1525, - 1530, 1563, 1573, 1587, 1589, 1590, 1591, 1592, 1593, 1594, - 1595, 1596, 1597, 1598, 1599, 1600, 1606, 1608, 1609, 1612, - 1619, 1631, 1633, 1637, 1641, 1642, 1643, 1644, 1645, 1649, - 1650, 1651, 1652, 1656, 1657, 1664, 1664, 1665, 1665, 1666, - 1668, 1670, 1675, 1679, 1688, 1692, 1697, 1702, 1705, 1711, - 1721, 1725, 1728, 1731, 1734, 1739, 1748, 1756, 1762, 1768, - 1775, 1783, 1791, 1800, 1803, 1807, 1806, 1817, 1819, 1820, - 1821, 1824, 1828, 1833, 1839, 1844, 1845, 1846, 1859, 1873, - 1877, 1882, 1886, 1891, 1898, 1911, 1913, 1916, 1920, 1923, - 1928, 1932, 1940, 1955, 1961, 1968, 1981, 1993, 2008, 2012, - 2029, 2034, 2037, 2042, 2064, 2069, 2074, 2080, 2086, 2094, - 2102, 2110, 2117, 2127, 2132, 2138, 2140, 2170, 2172, 2175, - 2182, 2188, 2190, 2191, 2192, 2195, 2197, 2198, 2201, 2206, - 2213, 2220, 2222, 2227 + 0, 342, 342, 348, 354, 370, 395, 397, 400, 404, + 409, 416, 424, 429, 433, 442, 444, 452, 456, 464, + 468, 471, 474, 478, 498, 500, 508, 517, 521, 536, + 544, 557, 565, 564, 578, 590, 592, 594, 605, 610, + 616, 622, 624, 627, 638, 644, 650, 657, 663, 672, + 674, 685, 689, 692, 699, 705, 711, 718, 724, 733, + 735, 745, 759, 769, 785, 795, 811, 817, 824, 834, + 844, 849, 856, 863, 871, 881, 887, 893, 897, 905, + 916, 938, 940, 942, 948, 954, 962, 968, 975, 980, + 986, 992, 998, 1001, 1007, 1017, 1019, 1022, 1030, 1037, + 1050, 1061, 1071, 1082, 1092, 1103, 1114, 1116, 1123, 1121, + 1130, 1135, 1141, 1146, 1149, 1153, 1158, 1167, 1176, 1187, + 1209, 1216, 1235, 1239, 1245, 1251, 1257, 1267, 1277, 1283, + 1294, 1308, 1317, 1327, 1337, 1347, 1355, 1376, 1385, 1394, + 1396, 1403, 1410, 1416, 1420, 1426, 1446, 1456, 1458, 1459, + 1466, 1466, 1471, 1478, 1484, 1489, 1493, 1497, 1500, 1505, + 1517, 1534, 1539, 1544, 1577, 1587, 1601, 1603, 1604, 1605, + 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1620, + 1622, 1623, 1626, 1633, 1645, 1647, 1651, 1655, 1656, 1657, + 1658, 1659, 1663, 1664, 1665, 1666, 1670, 1671, 1678, 1678, + 1679, 1679, 1680, 1682, 1684, 1689, 1693, 1702, 1706, 1711, + 1716, 1719, 1725, 1735, 1739, 1742, 1745, 1748, 1753, 1762, + 1770, 1776, 1782, 1789, 1797, 1805, 1814, 1817, 1821, 1820, + 1831, 1833, 1834, 1835, 1838, 1842, 1847, 1853, 1858, 1859, + 1860, 1873, 1887, 1891, 1896, 1900, 1905, 1912, 1925, 1927, + 1930, 1934, 1937, 1942, 1946, 1954, 1969, 1975, 1982, 1995, + 2007, 2022, 2026, 2043, 2048, 2051, 2056, 2078, 2083, 2088, + 2094, 2100, 2108, 2116, 2124, 2131, 2141, 2146, 2152, 2154, + 2184, 2186, 2189, 2196, 2202, 2204, 2205, 2206, 2209, 2211, + 2212, 2215, 2220, 2227, 2234, 2236, 2241 }; #endif @@ -761,29 +775,29 @@ static const char *const yytname[] = "TOK_EXCEPT", "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION", "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'", "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept", - "ParsedGrammar", "ModuleList", "ModuleSpecification", + "ParsedGrammar", "ModuleList", "ModuleDefinition", "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody", - "ObjectIdentifierElement", "optModuleSpecificationFlags", - "ModuleSpecificationFlags", "ModuleSpecificationFlag", - "optModuleSpecificationBody", "ModuleSpecificationBody", - "ModuleSpecificationElement", "@1", "ImportsDefinition", - "ImportsBundleSet", "AssignedIdentifier", "ImportsBundle", - "ImportsList", "ImportsElement", "ExportsDefinition", "ExportsBody", - "ExportsElement", "ValueSet", "ValueSetTypeAssignment", "DefinedType", - "DataTypeReference", "ParameterArgumentList", "ParameterArgumentName", - "ActualParameterList", "ActualParameter", "optComponentTypeLists", - "ComponentTypeLists", "ComponentType", "AlternativeTypeLists", - "AlternativeType", "ObjectClass", "optUnique", "FieldSpec", - "ClassField", "optWithSyntax", "WithSyntax", "@2", "WithSyntaxList", - "WithSyntaxToken", "ExtensionAndException", "Type", - "NSTD_IndirectMarker", "TypeDeclaration", "TypeDeclarationSet", - "ComplexTypeReference", "ComplexTypeReferenceAmpList", - "ComplexTypeReferenceElement", "PrimitiveFieldReference", "FieldName", - "DefinedObjectClass", "ValueDefinition", "Value", "@3", "SimpleValue", - "DefinedValue", "RestrictedCharacterStringValue", "Opaque", - "BasicTypeId", "BasicTypeId_UniverationCompatible", "BasicType", - "BasicString", "Union", "Intersection", "Except", "optConstraints", - "Constraints", "SetOfConstraints", "ElementSetSpecs", "ElementSetSpec", + "ObjectIdentifierElement", "optModuleDefinitionFlags", + "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody", + "ModuleBody", "AssignmentList", "Assignment", "@1", "optImports", + "ImportsDefinition", "ImportsBundleSet", "AssignedIdentifier", + "ImportsBundle", "ImportsList", "ImportsElement", "optExports", + "ExportsDefinition", "ExportsBody", "ExportsElement", "ValueSet", + "ValueSetTypeAssignment", "DefinedType", "DataTypeReference", + "ParameterArgumentList", "ParameterArgumentName", "ActualParameterList", + "ActualParameter", "optComponentTypeLists", "ComponentTypeLists", + "ComponentType", "AlternativeTypeLists", "AlternativeType", + "ObjectClass", "optUnique", "FieldSpec", "ClassField", "optWithSyntax", + "WithSyntax", "@2", "WithSyntaxList", "WithSyntaxToken", + "ExtensionAndException", "Type", "NSTD_IndirectMarker", + "TypeDeclaration", "TypeDeclarationSet", "ComplexTypeReference", + "ComplexTypeReferenceAmpList", "ComplexTypeReferenceElement", + "PrimitiveFieldReference", "FieldName", "DefinedObjectClass", + "ValueDefinition", "Value", "@3", "SimpleValue", "DefinedValue", + "RestrictedCharacterStringValue", "Opaque", "BasicTypeId", + "BasicTypeId_UniverationCompatible", "BasicType", "BasicString", + "Union", "Intersection", "Except", "optConstraints", "Constraints", + "SetOfConstraints", "ElementSetSpecs", "ElementSetSpec", "ConstraintSubtypeElement", "@4", "ConstraintRangeSpec", "ConstraintSpec", "SingleValue", "ContainedSubtype", "InnerTypeConstraint", "WithComponentsList", "WithComponentsElement", @@ -823,34 +837,34 @@ static const unsigned char yyr1[] = { 0, 121, 122, 123, 123, 124, 125, 125, 126, 126, 127, 127, 128, 128, 128, 129, 129, 130, 130, 131, - 131, 131, 131, 131, 132, 132, 133, 133, 134, 134, - 134, 134, 134, 135, 134, 134, 136, 136, 137, 137, - 138, 138, 139, 140, 140, 141, 141, 141, 142, 142, - 142, 143, 143, 144, 144, 144, 145, 146, 147, 147, - 147, 148, 148, 148, 148, 149, 149, 150, 150, 150, - 150, 150, 151, 151, 152, 152, 152, 152, 153, 153, - 154, 154, 155, 155, 155, 155, 156, 156, 157, 157, - 157, 158, 159, 159, 160, 160, 161, 161, 161, 161, - 161, 161, 161, 162, 162, 164, 163, 165, 165, 166, - 166, 166, 166, 167, 167, 167, 168, 169, 170, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 172, 172, - 172, 172, 172, 172, 173, 173, 174, 175, 175, 176, - 176, 176, 177, 178, 179, 179, 179, 180, 179, 179, - 181, 181, 181, 181, 181, 181, 182, 182, 183, 183, - 183, 184, 184, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 186, 186, 186, 187, - 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 189, 189, 190, 190, 191, - 192, 192, 193, 193, 194, 194, 195, 195, 195, 195, - 196, 196, 196, 196, 196, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 198, 197, 199, 199, 199, - 199, 200, 200, 201, 201, 201, 201, 201, 202, 203, - 203, 204, 204, 205, 205, 206, 206, 207, 207, 207, - 208, 208, 209, 210, 211, 211, 212, 212, 213, 213, - 214, 214, 215, 215, 216, 216, 217, 217, 218, 218, - 218, 218, 218, 219, 219, 220, 220, 221, 221, 222, - 223, 224, 224, 224, 224, 225, 225, 225, 226, 226, - 227, 228, 228, 229 + 131, 131, 131, 131, 132, 132, 133, 134, 134, 135, + 135, 135, 136, 135, 135, 137, 137, 138, 138, 139, + 139, 140, 140, 141, 142, 142, 143, 143, 143, 144, + 144, 145, 145, 145, 146, 146, 147, 147, 147, 148, + 149, 150, 150, 150, 151, 151, 151, 151, 152, 152, + 153, 153, 153, 153, 153, 154, 154, 155, 155, 155, + 155, 156, 156, 157, 157, 158, 158, 158, 158, 159, + 159, 160, 160, 160, 161, 162, 162, 163, 163, 164, + 164, 164, 164, 164, 164, 164, 165, 165, 167, 166, + 168, 168, 169, 169, 169, 169, 170, 170, 170, 171, + 172, 173, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 175, 175, 175, 175, 175, 175, 176, 176, 177, + 178, 178, 179, 179, 179, 180, 181, 182, 182, 182, + 183, 182, 182, 184, 184, 184, 184, 184, 184, 185, + 185, 186, 186, 186, 187, 187, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 189, + 189, 189, 190, 190, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, + 193, 193, 194, 195, 195, 196, 196, 197, 197, 198, + 198, 198, 198, 199, 199, 199, 199, 199, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 201, 200, + 202, 202, 202, 202, 203, 203, 204, 204, 204, 204, + 204, 205, 206, 206, 207, 207, 208, 208, 209, 209, + 210, 210, 210, 211, 211, 212, 213, 214, 214, 215, + 215, 216, 216, 217, 217, 218, 218, 219, 219, 220, + 220, 221, 221, 221, 221, 221, 222, 222, 223, 223, + 224, 224, 225, 226, 227, 227, 227, 227, 228, 228, + 228, 229, 229, 230, 231, 231, 232 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -858,34 +872,34 @@ static const unsigned char yyr2[] = { 0, 2, 1, 1, 2, 8, 0, 1, 3, 2, 1, 2, 1, 4, 1, 0, 1, 1, 2, 2, - 2, 2, 2, 2, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 0, 3, 1, 3, 2, 1, 2, - 0, 1, 4, 1, 3, 1, 3, 1, 3, 3, - 2, 1, 3, 1, 3, 1, 3, 4, 1, 1, - 4, 3, 3, 6, 6, 1, 3, 1, 3, 3, - 3, 3, 1, 3, 1, 1, 1, 1, 0, 1, - 1, 3, 3, 2, 3, 1, 1, 3, 2, 1, - 1, 5, 0, 1, 1, 3, 2, 4, 3, 3, - 3, 3, 3, 0, 1, 0, 6, 1, 2, 1, - 1, 1, 3, 1, 3, 3, 3, 0, 2, 1, - 4, 4, 4, 6, 6, 1, 4, 3, 1, 3, - 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, - 3, 3, 1, 4, 1, 1, 3, 0, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, - 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 0, 1, 3, 1, 2, 1, + 1, 1, 0, 3, 1, 0, 1, 3, 2, 1, + 2, 0, 1, 4, 1, 3, 1, 3, 1, 0, + 1, 3, 3, 2, 1, 3, 1, 3, 1, 3, + 4, 1, 1, 4, 3, 3, 6, 6, 1, 3, + 1, 3, 3, 3, 3, 1, 3, 1, 1, 1, + 1, 0, 1, 1, 3, 3, 2, 3, 1, 1, + 3, 2, 1, 1, 5, 0, 1, 1, 3, 2, + 4, 3, 3, 3, 3, 3, 0, 1, 0, 6, + 1, 2, 1, 1, 1, 3, 1, 3, 3, 3, + 0, 2, 1, 4, 4, 4, 6, 6, 1, 4, + 3, 1, 3, 3, 3, 1, 3, 1, 3, 1, + 1, 1, 1, 3, 3, 1, 4, 1, 1, 3, + 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, + 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, + 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 4, 3, 4, 1, 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, 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, 1, 1, 0, 1, 2, - 4, 0, 1, 1, 1, 0, 1, 1, 1, 1, - 1, 0, 1, 1 + 1, 1, 1, 0, 1, 1, 4, 3, 4, 1, + 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, 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, 1, 1, + 0, 1, 2, 4, 0, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 0, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -893,361 +907,368 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned short yydefact[] = { - 0, 288, 289, 0, 2, 3, 6, 1, 4, 0, - 0, 7, 293, 14, 9, 0, 10, 12, 15, 8, + 0, 291, 292, 0, 2, 3, 6, 1, 4, 0, + 0, 7, 296, 14, 9, 0, 10, 12, 15, 8, 11, 0, 0, 0, 0, 0, 0, 0, 16, 17, - 0, 23, 21, 19, 22, 20, 0, 18, 13, 24, - 181, 0, 0, 182, 183, 184, 0, 185, 186, 194, - 187, 188, 189, 190, 191, 192, 193, 0, 25, 26, - 28, 29, 32, 30, 31, 35, 0, 0, 33, 0, - 50, 0, 51, 53, 55, 37, 0, 38, 0, 43, - 45, 47, 5, 27, 277, 128, 290, 0, 163, 0, - 0, 177, 170, 174, 176, 164, 0, 0, 165, 169, - 173, 0, 0, 59, 179, 166, 58, 175, 132, 0, - 34, 49, 48, 0, 0, 36, 39, 0, 0, 0, - 0, 281, 62, 61, 117, 278, 285, 0, 178, 172, - 171, 168, 167, 0, 65, 0, 166, 67, 0, 277, - 0, 180, 0, 0, 52, 54, 40, 44, 46, 0, - 283, 284, 282, 0, 0, 200, 287, 286, 279, 129, - 131, 0, 0, 0, 0, 0, 57, 152, 158, 153, - 273, 274, 159, 160, 150, 151, 77, 0, 72, 74, - 75, 154, 155, 76, 272, 264, 0, 266, 271, 268, - 137, 138, 133, 134, 136, 130, 149, 147, 143, 144, - 145, 0, 156, 41, 42, 277, 277, 0, 94, 0, - 125, 0, 0, 200, 200, 119, 118, 0, 0, 116, - 201, 202, 277, 66, 71, 70, 69, 68, 276, 0, - 0, 233, 232, 0, 231, 234, 0, 206, 0, 0, - 236, 0, 207, 210, 0, 217, 218, 224, 223, 250, - 251, 275, 235, 238, 237, 60, 277, 265, 0, 0, - 0, 0, 0, 0, 142, 139, 0, 262, 260, 260, - 260, 96, 261, 92, 260, 260, 103, 0, 280, 0, - 277, 0, 277, 0, 277, 0, 0, 0, 0, 64, - 63, 0, 0, 227, 0, 0, 0, 0, 0, 0, - 56, 197, 198, 195, 196, 0, 0, 0, 199, 0, - 0, 0, 0, 73, 267, 0, 0, 156, 135, 161, - 148, 157, 146, 263, 101, 0, 100, 102, 93, 260, - 98, 99, 0, 91, 104, 95, 0, 113, 0, 86, - 89, 90, 277, 127, 0, 0, 79, 80, 85, 260, - 277, 291, 0, 291, 0, 204, 0, 211, 225, 228, - 229, 222, 220, 239, 0, 252, 216, 208, 212, 213, - 214, 0, 221, 219, 0, 0, 254, 270, 269, 162, - 140, 141, 97, 0, 126, 0, 120, 277, 88, 277, - 121, 277, 83, 260, 277, 292, 122, 277, 203, 205, - 0, 230, 243, 0, 241, 200, 0, 215, 0, 256, - 258, 253, 0, 105, 114, 115, 87, 84, 81, 82, - 117, 117, 226, 240, 0, 245, 209, 257, 0, 255, - 0, 123, 124, 242, 248, 249, 247, 244, 246, 259, - 109, 110, 0, 0, 107, 111, 0, 106, 108, 112 + 0, 23, 21, 19, 22, 20, 0, 18, 13, 49, + 0, 0, 25, 35, 50, 0, 53, 0, 54, 56, + 58, 5, 0, 0, 36, 52, 51, 0, 0, 38, + 0, 39, 0, 44, 46, 48, 184, 0, 185, 186, + 187, 188, 189, 197, 190, 191, 192, 193, 194, 195, + 196, 26, 27, 31, 29, 30, 34, 0, 0, 55, + 57, 37, 40, 0, 0, 0, 32, 28, 280, 131, + 293, 0, 166, 0, 0, 180, 173, 177, 179, 167, + 0, 0, 168, 172, 176, 0, 0, 62, 182, 169, + 61, 178, 135, 0, 41, 45, 47, 33, 0, 284, + 65, 64, 120, 281, 288, 0, 181, 175, 174, 171, + 170, 0, 68, 0, 169, 70, 0, 280, 0, 183, + 0, 0, 42, 43, 0, 286, 287, 285, 0, 0, + 203, 290, 289, 282, 132, 134, 0, 0, 0, 0, + 0, 60, 155, 161, 156, 276, 277, 162, 163, 153, + 154, 80, 0, 75, 77, 78, 157, 158, 79, 275, + 267, 0, 269, 274, 271, 140, 141, 136, 137, 139, + 133, 152, 150, 146, 147, 148, 0, 159, 280, 280, + 0, 97, 0, 128, 0, 0, 203, 203, 122, 121, + 0, 0, 119, 204, 205, 280, 69, 74, 73, 72, + 71, 279, 0, 0, 236, 235, 0, 234, 237, 0, + 209, 0, 0, 239, 0, 210, 213, 0, 220, 221, + 227, 226, 253, 254, 278, 238, 241, 240, 63, 280, + 268, 0, 0, 0, 0, 0, 0, 145, 142, 0, + 265, 263, 263, 263, 99, 264, 95, 263, 263, 106, + 0, 283, 0, 280, 0, 280, 0, 280, 0, 0, + 0, 0, 67, 66, 0, 0, 230, 0, 0, 0, + 0, 0, 0, 59, 200, 201, 198, 199, 0, 0, + 0, 202, 0, 0, 0, 0, 76, 270, 0, 0, + 159, 138, 164, 151, 160, 149, 266, 104, 0, 103, + 105, 96, 263, 101, 102, 0, 94, 107, 98, 0, + 116, 0, 89, 92, 93, 280, 130, 0, 0, 82, + 83, 88, 263, 280, 294, 0, 294, 0, 207, 0, + 214, 228, 231, 232, 225, 223, 242, 0, 255, 219, + 211, 215, 216, 217, 0, 224, 222, 0, 0, 257, + 273, 272, 165, 143, 144, 100, 0, 129, 0, 123, + 280, 91, 280, 124, 280, 86, 263, 280, 295, 125, + 280, 206, 208, 0, 233, 246, 0, 244, 203, 0, + 218, 0, 259, 261, 256, 0, 108, 117, 118, 90, + 87, 84, 85, 120, 120, 229, 243, 0, 248, 212, + 260, 0, 258, 0, 126, 127, 245, 251, 252, 250, + 247, 249, 262, 112, 113, 0, 0, 110, 114, 0, + 109, 111, 115 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { -1, 3, 4, 5, 10, 11, 15, 16, 27, 28, - 29, 57, 58, 59, 110, 60, 76, 204, 77, 78, - 79, 61, 71, 72, 176, 62, 102, 63, 133, 134, - 177, 178, 345, 346, 347, 338, 339, 122, 329, 207, - 208, 333, 334, 430, 443, 444, 348, 349, 154, 155, - 216, 103, 192, 193, 445, 269, 270, 64, 198, 261, - 199, 200, 240, 320, 104, 105, 106, 107, 306, 307, - 309, 219, 220, 221, 241, 242, 243, 400, 295, 244, - 245, 246, 247, 403, 404, 437, 438, 248, 249, 250, - 375, 376, 409, 271, 272, 141, 186, 187, 251, 252, - 124, 125, 126, 153, 158, 253, 108, 394, 254 + 29, 41, 42, 81, 82, 127, 53, 54, 60, 153, + 61, 62, 63, 43, 44, 47, 48, 181, 83, 116, + 84, 141, 142, 182, 183, 348, 349, 350, 341, 342, + 130, 332, 210, 211, 336, 337, 433, 446, 447, 351, + 352, 159, 160, 219, 117, 197, 198, 448, 272, 273, + 85, 203, 264, 204, 205, 243, 323, 118, 119, 120, + 121, 309, 310, 312, 222, 223, 224, 244, 245, 246, + 403, 298, 247, 248, 249, 250, 406, 407, 440, 441, + 251, 252, 253, 378, 379, 412, 274, 275, 149, 191, + 192, 254, 255, 132, 133, 134, 158, 163, 256, 122, + 397, 257 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -291 +#define YYPACT_NINF -357 static const short yypact[] = { - 159, -291, -291, 40, 159, -291, -39, -291, -291, 5, - 47, -291, -291, -291, -291, 17, -291, -22, 252, -291, - -291, 85, 84, 51, 59, 109, 87, 190, 252, -291, - 94, -291, -291, -291, -291, -291, 194, -291, -291, 475, - -291, 256, 76, -291, -291, -291, 180, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, 230, 475, -291, - -291, -291, -291, -291, -291, -291, 332, 628, -291, 168, - -291, 132, -291, 174, -291, -291, 16, -291, -23, -291, - 182, -291, -291, -291, 1, 177, -291, 221, -291, 225, - 242, -291, -291, -291, -291, -291, 265, 237, -291, -291, - -291, 704, 340, 248, -291, 249, -291, -291, 240, 359, - -291, -291, -291, 155, 255, -291, -291, 159, 155, 257, - 259, 26, -291, -291, -291, -291, 8, 155, -291, -291, - -291, -291, -291, -6, -291, 254, -291, 258, 261, 193, - 71, -291, 323, 202, -291, -291, -39, -291, -291, 271, - -291, -291, -291, 360, 552, -50, -291, -291, -291, -291, - -291, 368, 704, 155, 155, 212, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, 78, -291, -291, - -291, -291, -291, -291, -291, -291, 133, -291, -291, 264, - -291, -291, 262, -291, -291, -291, -291, -291, -291, -291, - -291, 270, 269, -291, -291, 77, 27, 142, -291, 263, - 335, 281, 317, 156, 184, -291, -291, 282, 212, -291, - -291, 283, 1, -291, -291, -291, -291, -291, -291, 290, - 364, -291, -291, -49, -291, -291, 291, -291, 159, 212, - -291, 288, 211, 297, 296, -49, -291, -291, -291, 299, - -291, -291, -291, -291, -291, -291, 193, -291, 91, 321, - 311, 403, 400, 202, -291, -291, 202, -291, -27, 25, - -27, -291, -291, 319, 25, -27, 310, 271, -291, 386, - 37, 318, 70, 344, 70, 345, 212, 312, 212, -291, - -291, 450, 313, 305, 320, 226, 315, 324, 325, 322, - -291, -291, -291, -291, -291, 329, 450, 450, -291, 450, - 212, 460, 330, -291, -291, 326, 327, -291, -291, -291, - 430, -291, -291, -291, -291, 328, -291, -291, -291, -27, - -291, -291, 362, -291, -291, -291, 400, 334, 147, -291, - -291, -291, 337, -291, 380, 346, 343, -291, -291, -27, - 337, 400, 349, 400, 365, -291, 366, -291, -291, -291, - 356, -291, -291, 283, 10, -291, -291, 367, -291, -291, - -291, 370, -291, -291, -5, 152, -291, -291, -291, -291, - -291, -291, -291, 371, -291, 321, -291, 37, -291, 337, - -291, 4, -291, -27, 337, -291, -291, 337, -291, -291, - 403, -291, -291, 172, -291, -50, 432, -291, 400, 369, - -291, -291, 330, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 430, -291, 10, 9, 247, 369, 400, -291, - 54, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 54, 57, -291, -291, 34, -291, -291, -291 + 83, -357, -357, 18, 83, -357, -80, -357, -357, 64, + 3, -357, -357, -357, -357, 74, -357, 2, 266, -357, + -357, 139, 100, 88, 90, 148, 142, 230, 266, -357, + 135, -357, -357, -357, -357, -357, 242, -357, -357, 127, + 53, 233, -357, 238, -357, 177, -357, 80, -357, 199, + -357, -357, 173, 256, -357, -357, -357, 213, 206, -357, + 55, -357, 8, -357, 211, -357, -357, 308, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, 256, -357, -357, -357, -357, -357, 345, 641, -357, + -357, -357, -357, 83, 213, 217, -357, -357, -23, 222, + -357, 257, -357, 271, 276, -357, -357, -357, -357, -357, + 303, 281, -357, -357, -357, 717, 359, 261, -357, 262, + -357, -357, 253, 372, -80, -357, -357, -357, 269, 6, + -357, -357, -357, -357, 134, 213, -357, -357, -357, -357, + -357, 89, -357, 264, -357, 273, 272, 95, 69, -357, + 277, 205, -357, -357, 300, -357, -357, -357, 373, 565, + -61, -357, -357, -357, -357, -357, 381, 717, 213, 213, + 445, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, 92, -357, -357, -357, -357, -357, -357, -357, + -357, 114, -357, -357, 278, -357, -357, 274, -357, -357, + -357, -357, -357, -357, -357, -357, 275, 282, 72, 40, + 117, -357, 279, 351, 293, 330, 87, 99, -357, -357, + 294, 445, -357, -357, 295, -23, -357, -357, -357, -357, + -357, -357, 305, 377, -357, -357, -79, -357, -357, 287, + -357, 83, 445, -357, 301, 229, 310, 302, -79, -357, + -357, -357, 312, -357, -357, -357, -357, -357, -357, 95, + -357, 27, 270, 311, 414, 412, 205, -357, -357, 205, + -357, 116, 126, 116, -357, -357, 332, 126, 116, 323, + 300, -357, 398, 41, 334, 4, 356, 4, 357, 445, + 320, 445, -357, -357, 491, 324, 315, 331, 225, 326, + 337, 329, 328, -357, -357, -357, -357, -357, 339, 491, + 491, -357, 491, 445, 291, 327, -357, -357, 338, 340, + -357, -357, -357, 443, -357, -357, -357, -357, 346, -357, + -357, -357, 116, -357, -357, 363, -357, -357, -357, 412, + 347, 138, -357, -357, -357, 348, -357, 389, 360, 352, + -357, -357, 116, 348, 412, 362, 412, 355, -357, 369, + -357, -357, -357, 349, -357, -357, 295, 51, -357, -357, + 370, -357, -357, -357, 371, -357, -357, 10, 145, -357, + -357, -357, -357, -357, -357, -357, 376, -357, 270, -357, + 41, -357, 348, -357, 46, -357, 116, 348, -357, -357, + 348, -357, -357, 414, -357, -357, 174, -357, -61, 463, + -357, 412, 368, -357, -357, 327, -357, -357, -357, -357, + -357, -357, -357, -357, -357, 443, -357, 51, 130, 234, + 368, 412, -357, 28, -357, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, 28, 48, -357, -357, 16, + -357, -357, -357 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - -291, -291, -291, 474, -291, 339, -291, 473, -291, -291, - 461, -291, -291, 434, -291, -291, -291, -291, 417, -291, - 376, -291, -291, 382, 358, -291, -46, -291, -291, 342, - -291, 241, 215, -291, 111, -291, 118, 284, -291, -291, - 231, -291, -291, -291, 65, -290, -275, -83, -291, -67, - -291, 228, -291, 251, -133, 306, 307, -291, 33, -291, - -132, -249, -131, 114, -33, -17, -291, -3, -291, -291, - -291, -211, -291, 219, -129, 113, -77, -291, 275, -291, - -247, -291, -291, -291, 97, -291, -291, -291, -291, -291, - -291, 112, 119, -252, -291, -291, -291, 268, -98, -291, - -92, -291, -291, -291, -291, 20, -291, 178, -9 + -357, -357, -357, 483, -357, 364, -357, 474, -357, -357, + 462, -357, -357, -357, 410, -357, -357, -357, -357, -357, + 432, -357, 399, -357, -357, -357, 437, 366, -357, -62, + -357, -357, 341, -357, 250, 210, -357, 121, -357, 120, + 292, -357, -357, 236, -357, -357, -357, 73, -356, -272, + -84, -357, -58, -357, 235, -357, 258, -146, 313, 314, + -357, -21, -357, -124, -255, -122, 122, -38, -1, -357, + 34, -357, -357, -357, -214, -357, 221, -25, 115, -69, + -357, 280, -357, -207, -357, -357, -357, 104, -357, -357, + -357, -357, -357, -357, 111, 123, -256, -357, -357, -357, + 283, -139, -357, -138, -357, -357, -357, -357, 1, -357, + 176, -9 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, parse error. */ -#define YYTABLE_NINF -261 +#define YYTABLE_NINF -264 static const short yytable[] = { - 17, 123, 283, 285, 12, 340, 17, 180, 181, 194, - 315, 266, 181, 12, 12, 13, 324, 326, 327, 12, - 6, 109, 330, 331, 6, 12, 12, 13, 117, 434, - 67, 1, 2, 74, 120, 217, 65, 81, 440, 344, - 7, 182, 188, 264, 265, 182, 12, 267, 362, 67, - 150, 190, 191, 441, 156, 65, 179, 293, 440, 66, - 218, 440, 73, 266, 373, 157, 80, 81, 135, 9, - 294, 190, 191, 441, 190, 191, 441, 382, 66, 12, - 12, 170, 171, 435, 136, 12, 18, 436, 21, 287, - 118, 1, 2, 264, 265, 30, 80, 392, 69, 267, - 12, 170, 171, 161, 74, 344, 151, 162, 215, 81, - 299, 337, 340, 408, 14, 266, 121, 402, 160, 121, - 152, 137, 268, 273, 180, 181, 19, 194, 115, 135, - 183, 189, 181, 73, 202, 181, 414, 146, 80, 290, - 32, 419, 121, 325, 337, 136, 31, 159, 33, 442, - 449, 267, 121, 448, 225, 227, 448, 354, 182, 356, - 188, 316, 195, 201, 12, 182, 447, 34, 182, 442, - 1, 2, 442, 179, 1, 2, 35, 337, 184, -78, - 185, 371, 137, 224, 226, 121, -260, 255, 70, 12, - -260, 256, 121, 36, 425, 1, 2, 341, 184, 167, - 168, 169, 12, 170, 171, 38, 172, 173, 167, 168, - 169, 12, 170, 171, 357, 172, 173, 1, 2, 168, - 39, 12, 170, 171, 228, 172, 173, 1, 2, 368, - 369, 75, 370, 168, 229, 12, 170, 171, 228, 172, - 173, 217, 257, 174, 112, 113, 258, 183, 230, 189, - 317, 276, 174, 321, 202, 277, 386, 202, 298, 388, - 387, 411, 231, 232, 282, 412, 218, 393, 22, 217, - 196, 342, 68, 350, 82, 350, 231, 23, 233, 201, - 111, 423, 114, 201, 175, 424, 201, 415, 205, 206, - 119, 361, 284, 175, 218, 127, 322, 234, 24, 323, - 25, 165, 420, 235, 341, 421, 417, 128, 121, 26, - 197, 129, 236, 301, 302, 303, 304, 235, 130, 237, - 238, 131, 239, 132, 305, 296, 297, 384, 190, 191, - 12, 170, 171, 85, 86, 84, 1, 2, 1, 2, - 190, 191, 395, 138, 395, 380, 381, 85, 86, 301, - 302, 303, 304, 431, 432, 405, 139, 140, 142, 87, - 40, 88, 143, 89, 145, 410, 148, 149, 163, 165, - 209, 222, 164, 90, 259, 279, 317, 91, 342, 278, - 260, 92, 350, 263, 93, 43, 44, 45, 262, 280, - 281, 291, 286, 288, 292, 94, 47, 300, 308, 410, - 95, 48, 96, 49, 97, 201, 310, 312, 319, 12, - 332, 50, 328, 98, 99, 405, 336, 351, 353, 439, - 51, 358, 52, 355, 359, 218, 360, 53, 100, 54, - 55, 56, 364, 366, 365, 379, 367, 377, 378, 168, - 101, 12, 170, 171, 228, 172, 173, 1, 2, 383, - 374, 385, 121, 389, 229, 390, 391, 168, 396, 12, - 170, 171, 228, 172, 173, 1, 2, 168, 230, 12, - 170, 171, 228, 172, 173, 401, 398, 399, 8, 413, - 406, 407, 231, 232, 12, 203, 230, 428, 20, 37, - 1, 2, 83, 116, 147, 144, 166, 313, 233, 352, - 231, 232, 418, 40, 223, 416, 289, 446, 335, 343, - 231, 318, 274, 275, 422, 363, 233, 234, 41, 426, - 311, 433, 42, 235, 429, 372, 314, 427, 43, 44, - 45, 397, 236, 0, 46, 234, 0, 0, 0, 47, - 238, 235, 239, 0, 48, 0, 49, 0, 0, 0, - 236, 235, 0, 0, 50, 0, 0, 0, 238, 0, - 239, 0, 0, 51, 0, 52, 0, 85, 86, 0, - 53, 0, 54, 55, 56, 210, 0, 0, 0, 87, - 40, 88, 0, 89, 211, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, - 0, 92, 0, 0, 93, 43, 44, 45, 0, 0, - 0, 0, 0, 212, 0, 94, 47, 0, 0, 0, - 95, 48, 96, 49, 97, 0, 0, 0, 0, 0, - 0, 50, 0, 98, 99, 213, 214, 0, 0, 0, - 51, 0, 52, 85, 86, 0, 0, 53, 100, 54, - 55, 56, 0, 0, 0, 87, 40, 88, 0, 89, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, - 93, 43, 44, 45, 0, 0, 0, 0, 0, 0, - 0, 94, 47, 0, 0, 0, 95, 48, 96, 49, - 97, 0, 0, 0, 0, 0, 0, 50, 0, 98, - 99, 0, 0, 0, 0, 0, 51, 0, 52, 1, - 2, 0, 0, 53, 100, 54, 55, 56, 0, 0, - 0, 87, 40, 88, 0, 89, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 0, 91, - 0, 0, 0, 92, 0, 0, 93, 43, 44, 45, - 0, 0, 0, 0, 0, 0, 0, 94, 47, 0, - 0, 0, 95, 48, 96, 49, 97, 0, 0, 0, - 0, 0, 0, 50, 0, 98, 99, 0, 0, 0, - 0, 0, 51, 0, 52, 0, 0, 0, 0, 53, - 100, 54, 55, 56 + 17, 6, 286, 288, 199, 6, 17, 318, 187, 193, + 128, 343, 187, 12, 131, 327, 329, 330, 7, 12, + 443, 333, 334, 185, 220, 186, 123, 296, 9, 186, + 155, 50, 443, 195, 196, 444, 12, 175, 176, 347, + 297, 49, 18, 65, 88, 195, 196, 444, 50, 221, + 12, 65, 443, 64, 87, 12, 267, 268, 49, 93, + 12, 64, 12, 184, 12, 195, 196, 444, 1, 2, + 1, 2, 88, 12, 13, 45, 385, 143, 12, 175, + 176, 347, 87, 12, 13, 65, 156, 86, 267, 268, + 451, 365, 129, 451, 124, 64, 395, 218, 1, 2, + 157, 172, 173, 174, 12, 175, 176, 376, 177, 178, + 269, 340, 21, -81, 144, 86, 145, 199, 343, 129, + 187, 94, 193, 319, 271, 276, 165, 187, 411, 143, + 187, 445, 452, 417, 189, 185, 164, 186, 188, 194, + 422, 293, 207, 445, 186, 179, 270, 186, 340, 30, + 437, 200, 206, 340, 269, 129, 129, 450, 405, 228, + 230, 129, 31, 445, 269, 46, 144, 91, 145, 227, + 229, -24, 220, 14, 40, 184, 189, 32, 190, 33, + 161, -263, 12, 19, 220, -263, 180, 129, 1, 2, + 270, 162, 56, 57, 428, 285, 290, 221, 166, 344, + 270, 258, 167, 170, 438, 259, 34, 287, 439, 221, + 129, 172, 173, 174, 12, 175, 176, 302, 177, 178, + 1, 2, 12, 260, 59, 360, 279, 261, 1, 2, + 280, 35, 173, 36, 12, 175, 176, 231, 177, 178, + 371, 372, 301, 373, 328, 325, 38, 389, 326, 418, + 188, 390, 194, 320, 414, 179, 324, 207, 415, 423, + 207, 391, 424, 206, 357, 12, 359, 206, 39, 396, + 206, 1, 2, 201, 345, 234, 353, 51, 353, 12, + 175, 176, 22, 426, 66, 1, 2, 427, 374, 55, + 364, 23, 1, 2, 195, 196, 180, 52, 173, 67, + 12, 175, 176, 231, 177, 178, 344, 58, 420, 68, + 69, 70, 24, 202, 25, 90, 238, 208, 209, 95, + 71, 299, 300, 26, 96, 72, 126, 73, 195, 196, + 387, 304, 305, 306, 307, 74, 304, 305, 306, 307, + 135, 234, 308, 136, 75, 398, 76, 398, 98, 99, + 100, 77, 138, 78, 79, 80, 375, 137, 408, 139, + 99, 100, 146, 383, 384, 434, 435, 140, 413, 147, + 148, 150, 101, 66, 102, 151, 103, 154, 168, 320, + 170, 345, 238, 212, 225, 353, 104, 169, 262, 206, + 105, 282, 263, 265, 106, 281, 266, 107, 68, 69, + 70, 283, 413, 284, 289, 291, 294, 295, 108, 71, + 303, 311, 313, 109, 72, 110, 73, 111, 408, 322, + 315, 12, 442, 335, 74, 331, 112, 113, 339, 354, + 356, 358, 361, 75, 362, 76, 221, 363, 368, 369, + 77, 114, 78, 79, 80, 367, 370, 377, 382, 380, + 386, 381, 173, 115, 12, 175, 176, 231, 177, 178, + 1, 2, 392, 129, 388, 394, 401, 232, 404, 393, + 173, 399, 12, 175, 176, 231, 177, 178, 1, 2, + 402, 233, 410, 409, 416, 232, 431, 8, 152, 20, + 37, 97, 92, 125, 89, 234, 235, 355, 173, 233, + 12, 175, 176, 231, 177, 178, 1, 2, 226, 316, + 419, 236, 171, 234, 235, 421, 338, 292, 449, 346, + 366, 321, 277, 278, 429, 425, 432, 233, 314, 236, + 237, 436, 400, 0, 430, 0, 238, 0, 0, 0, + 0, 234, 235, 0, 317, 239, 0, 0, 237, 0, + 0, 0, 240, 241, 238, 242, 0, 236, 0, 0, + 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, + 0, 241, 0, 242, 0, 0, 237, 0, 0, 0, + 99, 100, 238, 0, 0, 0, 0, 0, 213, 0, + 0, 239, 101, 66, 102, 0, 103, 214, 0, 241, + 0, 242, 0, 0, 0, 0, 104, 0, 0, 0, + 105, 0, 0, 0, 106, 0, 0, 107, 68, 69, + 70, 0, 0, 0, 0, 0, 215, 0, 108, 71, + 0, 0, 0, 109, 72, 110, 73, 111, 0, 0, + 0, 0, 0, 0, 74, 0, 112, 113, 216, 217, + 0, 0, 0, 75, 0, 76, 99, 100, 0, 0, + 77, 114, 78, 79, 80, 0, 0, 0, 101, 66, + 102, 0, 103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, + 106, 0, 0, 107, 68, 69, 70, 0, 0, 0, + 0, 0, 0, 0, 108, 71, 0, 0, 0, 109, + 72, 110, 73, 111, 0, 0, 0, 0, 0, 0, + 74, 0, 112, 113, 0, 0, 0, 0, 0, 75, + 0, 76, 1, 2, 0, 0, 77, 114, 78, 79, + 80, 0, 0, 0, 101, 66, 102, 0, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, + 0, 0, 105, 0, 0, 0, 106, 0, 0, 107, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 108, 71, 0, 0, 0, 109, 72, 110, 73, 111, + 0, 0, 0, 0, 0, 0, 74, 0, 112, 113, + 0, 0, 0, 0, 0, 75, 0, 76, 0, 0, + 0, 0, 77, 114, 78, 79, 80 }; static const short yycheck[] = { - 9, 84, 213, 214, 9, 280, 15, 139, 139, 142, - 259, 38, 143, 9, 9, 10, 268, 269, 270, 9, - 0, 67, 274, 275, 4, 9, 9, 10, 51, 20, - 39, 15, 16, 42, 33, 85, 39, 46, 4, 35, - 0, 139, 140, 16, 17, 143, 9, 74, 295, 58, - 24, 17, 18, 19, 46, 58, 139, 106, 4, 39, - 110, 4, 42, 38, 311, 57, 46, 76, 101, 108, - 119, 17, 18, 19, 17, 18, 19, 329, 58, 9, - 9, 10, 11, 74, 101, 9, 39, 78, 110, 218, - 113, 15, 16, 16, 17, 10, 76, 349, 22, 74, - 9, 10, 11, 109, 113, 35, 80, 113, 154, 118, - 239, 107, 387, 118, 109, 38, 115, 107, 127, 115, - 94, 101, 205, 206, 256, 256, 109, 260, 112, 162, - 139, 140, 263, 113, 143, 266, 385, 117, 118, 222, - 89, 393, 115, 118, 107, 162, 62, 127, 89, 115, - 116, 74, 115, 443, 163, 164, 446, 286, 256, 288, - 258, 259, 142, 143, 9, 263, 109, 58, 266, 115, - 15, 16, 115, 256, 15, 16, 89, 107, 107, 109, - 109, 310, 162, 163, 164, 115, 109, 109, 112, 9, - 113, 113, 115, 3, 405, 15, 16, 280, 107, 6, - 7, 8, 9, 10, 11, 111, 13, 14, 6, 7, - 8, 9, 10, 11, 291, 13, 14, 15, 16, 7, - 26, 9, 10, 11, 12, 13, 14, 15, 16, 306, - 307, 51, 309, 7, 22, 9, 10, 11, 12, 13, - 14, 85, 109, 50, 112, 113, 113, 256, 36, 258, - 259, 109, 50, 262, 263, 113, 109, 266, 238, 342, - 113, 109, 50, 51, 108, 113, 110, 350, 16, 85, - 68, 280, 16, 282, 44, 284, 50, 25, 66, 259, - 112, 109, 108, 263, 91, 113, 266, 385, 17, 18, - 108, 65, 108, 91, 110, 118, 263, 85, 46, 266, - 48, 108, 394, 91, 387, 397, 389, 86, 115, 57, - 108, 86, 100, 102, 103, 104, 105, 91, 76, 107, - 108, 56, 110, 86, 113, 34, 35, 336, 17, 18, - 9, 10, 11, 15, 16, 3, 15, 16, 15, 16, - 17, 18, 351, 3, 353, 17, 18, 15, 16, 102, - 103, 104, 105, 420, 421, 364, 108, 108, 118, 27, - 28, 29, 3, 31, 109, 374, 109, 108, 114, 108, - 10, 3, 114, 41, 110, 40, 385, 45, 387, 116, - 118, 49, 391, 114, 52, 53, 54, 55, 118, 108, - 73, 101, 110, 110, 30, 63, 64, 109, 101, 408, - 68, 69, 70, 71, 72, 385, 110, 108, 5, 9, - 100, 79, 93, 81, 82, 424, 30, 73, 73, 428, - 88, 108, 90, 111, 119, 110, 106, 95, 96, 97, - 98, 99, 108, 111, 109, 5, 107, 111, 111, 7, - 108, 9, 10, 11, 12, 13, 14, 15, 16, 87, - 120, 117, 115, 73, 22, 109, 113, 7, 109, 9, - 10, 11, 12, 13, 14, 15, 16, 7, 36, 9, - 10, 11, 12, 13, 14, 119, 111, 111, 4, 108, - 113, 111, 50, 51, 9, 146, 36, 118, 15, 28, - 15, 16, 58, 76, 118, 113, 138, 256, 66, 284, - 50, 51, 391, 28, 162, 387, 222, 442, 277, 281, - 50, 260, 206, 206, 400, 296, 66, 85, 43, 406, - 245, 424, 47, 91, 412, 65, 258, 408, 53, 54, - 55, 353, 100, -1, 59, 85, -1, -1, -1, 64, - 108, 91, 110, -1, 69, -1, 71, -1, -1, -1, - 100, 91, -1, -1, 79, -1, -1, -1, 108, -1, - 110, -1, -1, 88, -1, 90, -1, 15, 16, -1, - 95, -1, 97, 98, 99, 23, -1, -1, -1, 27, - 28, 29, -1, 31, 32, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, - -1, 49, -1, -1, 52, 53, 54, 55, -1, -1, - -1, -1, -1, 61, -1, 63, 64, -1, -1, -1, - 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, - -1, 79, -1, 81, 82, 83, 84, -1, -1, -1, - 88, -1, 90, 15, 16, -1, -1, 95, 96, 97, - 98, 99, -1, -1, -1, 27, 28, 29, -1, 31, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, -1, 45, -1, -1, -1, 49, -1, -1, - 52, 53, 54, 55, -1, -1, -1, -1, -1, -1, - -1, 63, 64, -1, -1, -1, 68, 69, 70, 71, - 72, -1, -1, -1, -1, -1, -1, 79, -1, 81, - 82, -1, -1, -1, -1, -1, 88, -1, 90, 15, - 16, -1, -1, 95, 96, 97, 98, 99, -1, -1, - -1, 27, 28, 29, -1, 31, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, -1, 45, - -1, -1, -1, 49, -1, -1, 52, 53, 54, 55, - -1, -1, -1, -1, -1, -1, -1, 63, 64, -1, - -1, -1, 68, 69, 70, 71, 72, -1, -1, -1, - -1, -1, -1, 79, -1, 81, 82, -1, -1, -1, - -1, -1, 88, -1, 90, -1, -1, -1, -1, 95, - 96, 97, 98, 99 + 9, 0, 216, 217, 150, 4, 15, 262, 147, 148, + 33, 283, 151, 9, 98, 271, 272, 273, 0, 9, + 4, 277, 278, 147, 85, 147, 88, 106, 108, 151, + 24, 40, 4, 17, 18, 19, 9, 10, 11, 35, + 119, 40, 39, 52, 53, 17, 18, 19, 57, 110, + 9, 60, 4, 52, 53, 9, 16, 17, 57, 51, + 9, 60, 9, 147, 9, 17, 18, 19, 15, 16, + 15, 16, 81, 9, 10, 22, 332, 115, 9, 10, + 11, 35, 81, 9, 10, 94, 80, 53, 16, 17, + 446, 298, 115, 449, 93, 94, 352, 159, 15, 16, + 94, 6, 7, 8, 9, 10, 11, 314, 13, 14, + 38, 107, 110, 109, 115, 81, 115, 263, 390, 115, + 259, 113, 261, 262, 208, 209, 135, 266, 118, 167, + 269, 115, 116, 388, 107, 259, 135, 259, 147, 148, + 396, 225, 151, 115, 266, 50, 74, 269, 107, 10, + 20, 150, 151, 107, 38, 115, 115, 109, 107, 168, + 169, 115, 62, 115, 38, 112, 167, 112, 167, 168, + 169, 44, 85, 109, 47, 259, 107, 89, 109, 89, + 46, 109, 9, 109, 85, 113, 91, 115, 15, 16, + 74, 57, 112, 113, 408, 108, 221, 110, 109, 283, + 74, 109, 113, 108, 74, 113, 58, 108, 78, 110, + 115, 6, 7, 8, 9, 10, 11, 242, 13, 14, + 15, 16, 9, 109, 51, 294, 109, 113, 15, 16, + 113, 89, 7, 3, 9, 10, 11, 12, 13, 14, + 309, 310, 241, 312, 118, 266, 111, 109, 269, 388, + 259, 113, 261, 262, 109, 50, 265, 266, 113, 397, + 269, 345, 400, 262, 289, 9, 291, 266, 26, 353, + 269, 15, 16, 68, 283, 50, 285, 44, 287, 9, + 10, 11, 16, 109, 28, 15, 16, 113, 313, 112, + 65, 25, 15, 16, 17, 18, 91, 59, 7, 43, + 9, 10, 11, 12, 13, 14, 390, 108, 392, 53, + 54, 55, 46, 108, 48, 109, 91, 17, 18, 108, + 64, 34, 35, 57, 16, 69, 109, 71, 17, 18, + 339, 102, 103, 104, 105, 79, 102, 103, 104, 105, + 118, 50, 113, 86, 88, 354, 90, 356, 3, 15, + 16, 95, 76, 97, 98, 99, 65, 86, 367, 56, + 15, 16, 3, 17, 18, 423, 424, 86, 377, 108, + 108, 118, 27, 28, 29, 3, 31, 108, 114, 388, + 108, 390, 91, 10, 3, 394, 41, 114, 110, 388, + 45, 40, 118, 118, 49, 116, 114, 52, 53, 54, + 55, 108, 411, 73, 110, 110, 101, 30, 63, 64, + 109, 101, 110, 68, 69, 70, 71, 72, 427, 5, + 108, 9, 431, 100, 79, 93, 81, 82, 30, 73, + 73, 111, 108, 88, 119, 90, 110, 106, 109, 111, + 95, 96, 97, 98, 99, 108, 107, 120, 5, 111, + 87, 111, 7, 108, 9, 10, 11, 12, 13, 14, + 15, 16, 73, 115, 117, 113, 111, 22, 119, 109, + 7, 109, 9, 10, 11, 12, 13, 14, 15, 16, + 111, 36, 111, 113, 108, 22, 118, 4, 124, 15, + 28, 81, 60, 94, 57, 50, 51, 287, 7, 36, + 9, 10, 11, 12, 13, 14, 15, 16, 167, 259, + 390, 66, 146, 50, 51, 394, 280, 225, 445, 284, + 299, 263, 209, 209, 409, 403, 415, 36, 248, 66, + 85, 427, 356, -1, 411, -1, 91, -1, -1, -1, + -1, 50, 51, -1, 261, 100, -1, -1, 85, -1, + -1, -1, 107, 108, 91, 110, -1, 66, -1, -1, + -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, + -1, 108, -1, 110, -1, -1, 85, -1, -1, -1, + 15, 16, 91, -1, -1, -1, -1, -1, 23, -1, + -1, 100, 27, 28, 29, -1, 31, 32, -1, 108, + -1, 110, -1, -1, -1, -1, 41, -1, -1, -1, + 45, -1, -1, -1, 49, -1, -1, 52, 53, 54, + 55, -1, -1, -1, -1, -1, 61, -1, 63, 64, + -1, -1, -1, 68, 69, 70, 71, 72, -1, -1, + -1, -1, -1, -1, 79, -1, 81, 82, 83, 84, + -1, -1, -1, 88, -1, 90, 15, 16, -1, -1, + 95, 96, 97, 98, 99, -1, -1, -1, 27, 28, + 29, -1, 31, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 41, -1, -1, -1, 45, -1, -1, -1, + 49, -1, -1, 52, 53, 54, 55, -1, -1, -1, + -1, -1, -1, -1, 63, 64, -1, -1, -1, 68, + 69, 70, 71, 72, -1, -1, -1, -1, -1, -1, + 79, -1, 81, 82, -1, -1, -1, -1, -1, 88, + -1, 90, 15, 16, -1, -1, 95, 96, 97, 98, + 99, -1, -1, -1, 27, 28, 29, -1, 31, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + -1, -1, 45, -1, -1, -1, 49, -1, -1, 52, + 53, 54, 55, -1, -1, -1, -1, -1, -1, -1, + 63, 64, -1, -1, -1, 68, 69, 70, 71, 72, + -1, -1, -1, -1, -1, -1, 79, -1, 81, 82, + -1, -1, -1, -1, -1, 88, -1, 90, -1, -1, + -1, -1, 95, 96, 97, 98, 99 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 15, 16, 122, 123, 124, 226, 0, 124, 108, - 125, 126, 9, 10, 109, 127, 128, 229, 39, 109, + 0, 15, 16, 122, 123, 124, 229, 0, 124, 108, + 125, 126, 9, 10, 109, 127, 128, 232, 39, 109, 128, 110, 16, 25, 46, 48, 57, 129, 130, 131, 10, 62, 89, 89, 58, 89, 3, 131, 111, 26, - 28, 43, 47, 53, 54, 55, 59, 64, 69, 71, - 79, 88, 90, 95, 97, 98, 99, 132, 133, 134, - 136, 142, 146, 148, 178, 188, 226, 229, 16, 22, - 112, 143, 144, 226, 229, 51, 137, 139, 140, 141, - 226, 229, 44, 134, 3, 15, 16, 27, 29, 31, - 41, 45, 49, 52, 63, 68, 70, 72, 81, 82, - 96, 108, 147, 172, 185, 186, 187, 188, 227, 147, - 135, 112, 112, 113, 108, 112, 139, 51, 113, 108, - 33, 115, 158, 168, 221, 222, 223, 118, 86, 86, - 76, 56, 86, 149, 150, 185, 186, 226, 3, 108, - 108, 216, 118, 3, 144, 109, 226, 141, 109, 108, - 24, 80, 94, 224, 169, 170, 46, 57, 225, 226, - 229, 109, 113, 114, 114, 108, 145, 6, 7, 8, - 10, 11, 13, 14, 50, 91, 145, 151, 152, 168, - 181, 183, 219, 229, 107, 109, 217, 218, 219, 229, - 17, 18, 173, 174, 175, 226, 68, 108, 179, 181, - 182, 226, 229, 126, 138, 17, 18, 160, 161, 10, - 23, 32, 61, 83, 84, 147, 171, 85, 110, 192, - 193, 194, 3, 150, 226, 229, 226, 229, 12, 22, - 36, 50, 51, 66, 85, 91, 100, 107, 108, 110, - 183, 195, 196, 197, 200, 201, 202, 203, 208, 209, - 210, 219, 220, 226, 229, 109, 113, 109, 113, 110, - 118, 180, 118, 114, 16, 17, 38, 74, 168, 176, - 177, 214, 215, 168, 176, 177, 109, 113, 116, 40, - 108, 73, 108, 192, 108, 192, 110, 195, 110, 158, - 168, 101, 30, 106, 119, 199, 34, 35, 226, 195, - 109, 102, 103, 104, 105, 113, 189, 190, 101, 191, - 110, 199, 108, 152, 218, 182, 219, 229, 174, 5, - 184, 229, 179, 179, 214, 118, 214, 214, 93, 159, - 214, 214, 100, 162, 163, 161, 30, 107, 156, 157, - 167, 168, 229, 172, 35, 153, 154, 155, 167, 168, - 229, 73, 153, 73, 195, 111, 195, 197, 108, 119, - 106, 65, 201, 194, 108, 109, 111, 107, 197, 197, - 197, 195, 65, 201, 120, 211, 212, 111, 111, 5, - 17, 18, 214, 87, 229, 117, 109, 113, 168, 73, - 109, 113, 214, 168, 228, 229, 109, 228, 111, 111, - 198, 119, 107, 204, 205, 229, 113, 111, 118, 213, - 229, 109, 113, 108, 182, 219, 157, 168, 155, 214, - 221, 221, 184, 109, 113, 192, 196, 213, 118, 212, - 164, 170, 170, 205, 20, 74, 78, 206, 207, 229, - 4, 19, 115, 165, 166, 175, 165, 109, 166, 116 + 47, 132, 133, 144, 145, 22, 112, 146, 147, 229, + 232, 44, 59, 137, 138, 112, 112, 113, 108, 51, + 139, 141, 142, 143, 229, 232, 28, 43, 53, 54, + 55, 64, 69, 71, 79, 88, 90, 95, 97, 98, + 99, 134, 135, 149, 151, 181, 191, 229, 232, 147, + 109, 112, 141, 51, 113, 108, 16, 135, 3, 15, + 16, 27, 29, 31, 41, 45, 49, 52, 63, 68, + 70, 72, 81, 82, 96, 108, 150, 175, 188, 189, + 190, 191, 230, 150, 229, 143, 109, 136, 33, 115, + 161, 171, 224, 225, 226, 118, 86, 86, 76, 56, + 86, 152, 153, 188, 189, 229, 3, 108, 108, 219, + 118, 3, 126, 140, 108, 24, 80, 94, 227, 172, + 173, 46, 57, 228, 229, 232, 109, 113, 114, 114, + 108, 148, 6, 7, 8, 10, 11, 13, 14, 50, + 91, 148, 154, 155, 171, 184, 186, 222, 232, 107, + 109, 220, 221, 222, 232, 17, 18, 176, 177, 178, + 229, 68, 108, 182, 184, 185, 229, 232, 17, 18, + 163, 164, 10, 23, 32, 61, 83, 84, 150, 174, + 85, 110, 195, 196, 197, 3, 153, 229, 232, 229, + 232, 12, 22, 36, 50, 51, 66, 85, 91, 100, + 107, 108, 110, 186, 198, 199, 200, 203, 204, 205, + 206, 211, 212, 213, 222, 223, 229, 232, 109, 113, + 109, 113, 110, 118, 183, 118, 114, 16, 17, 38, + 74, 171, 179, 180, 217, 218, 171, 179, 180, 109, + 113, 116, 40, 108, 73, 108, 195, 108, 195, 110, + 198, 110, 161, 171, 101, 30, 106, 119, 202, 34, + 35, 229, 198, 109, 102, 103, 104, 105, 113, 192, + 193, 101, 194, 110, 202, 108, 155, 221, 185, 222, + 232, 177, 5, 187, 232, 182, 182, 217, 118, 217, + 217, 93, 162, 217, 217, 100, 165, 166, 164, 30, + 107, 159, 160, 170, 171, 232, 175, 35, 156, 157, + 158, 170, 171, 232, 73, 156, 73, 198, 111, 198, + 200, 108, 119, 106, 65, 204, 197, 108, 109, 111, + 107, 200, 200, 200, 198, 65, 204, 120, 214, 215, + 111, 111, 5, 17, 18, 217, 87, 232, 117, 109, + 113, 171, 73, 109, 113, 217, 171, 231, 232, 109, + 231, 111, 111, 201, 119, 107, 207, 208, 232, 113, + 111, 118, 216, 232, 109, 113, 108, 185, 222, 160, + 171, 158, 217, 224, 224, 187, 109, 113, 195, 199, + 216, 118, 215, 167, 173, 173, 208, 20, 74, 78, + 209, 210, 232, 4, 19, 115, 168, 169, 178, 168, + 109, 169, 116 }; #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) @@ -1798,14 +1819,14 @@ yyreduce: switch (yyn) { case 2: -#line 327 "asn1p_y.y" +#line 343 "asn1p_y.y" { *(void **)param = yyvsp[0].a_grammar; } break; case 3: -#line 333 "asn1p_y.y" +#line 349 "asn1p_y.y" { yyval.a_grammar = asn1p_new(); checkmem(yyval.a_grammar); @@ -1814,7 +1835,7 @@ yyreduce: break; case 4: -#line 338 "asn1p_y.y" +#line 354 "asn1p_y.y" { yyval.a_grammar = yyvsp[-1].a_grammar; TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next); @@ -1822,7 +1843,7 @@ yyreduce: break; case 5: -#line 359 "asn1p_y.y" +#line 375 "asn1p_y.y" { if(yyvsp[-1].a_module) { @@ -1840,31 +1861,31 @@ yyreduce: break; case 6: -#line 380 "asn1p_y.y" +#line 396 "asn1p_y.y" { yyval.a_oid = 0; } break; case 7: -#line 381 "asn1p_y.y" +#line 397 "asn1p_y.y" { yyval.a_oid = yyvsp[0].a_oid; } break; case 8: -#line 385 "asn1p_y.y" +#line 401 "asn1p_y.y" { yyval.a_oid = yyvsp[-1].a_oid; } break; case 9: -#line 388 "asn1p_y.y" +#line 404 "asn1p_y.y" { yyval.a_oid = 0; } break; case 10: -#line 394 "asn1p_y.y" +#line 410 "asn1p_y.y" { yyval.a_oid = asn1p_oid_new(); asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc); @@ -1874,7 +1895,7 @@ yyreduce: break; case 11: -#line 400 "asn1p_y.y" +#line 416 "asn1p_y.y" { yyval.a_oid = yyvsp[-1].a_oid; asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc); @@ -1884,7 +1905,7 @@ yyreduce: break; case 12: -#line 409 "asn1p_y.y" +#line 425 "asn1p_y.y" { /* iso */ yyval.a_oid_arc.name = yyvsp[0].tv_str; yyval.a_oid_arc.number = -1; @@ -1892,7 +1913,7 @@ yyreduce: break; case 13: -#line 413 "asn1p_y.y" +#line 429 "asn1p_y.y" { /* iso(1) */ yyval.a_oid_arc.name = yyvsp[-3].tv_str; yyval.a_oid_arc.number = yyvsp[-1].a_int; @@ -1900,7 +1921,7 @@ yyreduce: break; case 14: -#line 417 "asn1p_y.y" +#line 433 "asn1p_y.y" { /* 1 */ yyval.a_oid_arc.name = 0; yyval.a_oid_arc.number = yyvsp[0].a_int; @@ -1908,61 +1929,61 @@ yyreduce: break; case 15: -#line 427 "asn1p_y.y" +#line 443 "asn1p_y.y" { yyval.a_module_flags = MSF_NOFLAGS; } break; case 16: -#line 428 "asn1p_y.y" +#line 444 "asn1p_y.y" { yyval.a_module_flags = yyvsp[0].a_module_flags; } break; case 17: -#line 437 "asn1p_y.y" +#line 453 "asn1p_y.y" { yyval.a_module_flags = yyvsp[0].a_module_flags; } break; case 18: -#line 440 "asn1p_y.y" +#line 456 "asn1p_y.y" { yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags; } break; case 19: -#line 449 "asn1p_y.y" +#line 465 "asn1p_y.y" { yyval.a_module_flags = MSF_EXPLICIT_TAGS; } break; case 20: -#line 452 "asn1p_y.y" +#line 468 "asn1p_y.y" { yyval.a_module_flags = MSF_IMPLICIT_TAGS; } break; case 21: -#line 455 "asn1p_y.y" +#line 471 "asn1p_y.y" { yyval.a_module_flags = MSF_AUTOMATIC_TAGS; } break; case 22: -#line 458 "asn1p_y.y" +#line 474 "asn1p_y.y" { yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED; } break; case 23: -#line 462 "asn1p_y.y" +#line 478 "asn1p_y.y" { /* X.680Amd1 specifies TAG and XER */ if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) { @@ -1981,77 +2002,49 @@ yyreduce: break; case 24: -#line 483 "asn1p_y.y" +#line 499 "asn1p_y.y" { yyval.a_module = 0; } break; case 25: -#line 484 "asn1p_y.y" +#line 500 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; } break; case 26: -#line 493 "asn1p_y.y" +#line 509 "asn1p_y.y" { - yyval.a_module = yyvsp[0].a_module; + yyval.a_module = asn1p_module_new(); + AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next); + AL_IMPORT(yyval.a_module, imports, yyvsp[-1].a_module, xp_next); + AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next); } break; case 27: -#line 496 "asn1p_y.y" - { - yyval.a_module = yyvsp[-1].a_module; - - /* Behave well when one of them is skipped. */ - if(!(yyvsp[-1].a_module)) { - if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module; - break; - } - -#ifdef MY_IMPORT -#error MY_IMPORT DEFINED ELSEWHERE! -#endif -#define MY_IMPORT(foo,field) do { \ - while(TQ_FIRST(&(yyvsp[0].a_module->foo))) { \ - TQ_ADD(&(yyval.a_module->foo), \ - TQ_REMOVE(&(yyvsp[0].a_module->foo), field), \ - field); \ - } \ - assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0); \ - } while(0) - - MY_IMPORT(imports, xp_next); - MY_IMPORT(exports, xp_next); - MY_IMPORT(members, next); -#undef MY_IMPORT - - } - break; - - case 28: -#line 529 "asn1p_y.y" +#line 518 "asn1p_y.y" { yyval.a_module = yyvsp[0].a_module; } break; - case 29: -#line 532 "asn1p_y.y" + case 28: +#line 521 "asn1p_y.y" { - yyval.a_module = asn1p_module_new(); - checkmem(yyval.a_module); - if(yyvsp[0].a_xports) { - TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next); + if(yyvsp[-1].a_module) { + yyval.a_module = yyvsp[-1].a_module; } else { - /* "EXPORTS ALL;" ? */ + yyval.a_module = yyvsp[0].a_module; + break; } + AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next); } break; - case 30: -#line 541 "asn1p_y.y" + case 29: +#line 537 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -2061,8 +2054,8 @@ yyreduce: } break; - case 31: -#line 548 "asn1p_y.y" + case 30: +#line 544 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -2072,8 +2065,8 @@ yyreduce: } break; - case 32: -#line 561 "asn1p_y.y" + case 31: +#line 557 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); checkmem(yyval.a_module); @@ -2083,13 +2076,13 @@ yyreduce: } break; - case 33: -#line 569 "asn1p_y.y" + case 32: +#line 565 "asn1p_y.y" { asn1p_lexer_hack_push_encoding_control(); } break; - case 34: -#line 570 "asn1p_y.y" + case 33: +#line 566 "asn1p_y.y" { fprintf(stderr, "WARNING: ENCODING-CONTROL %s " @@ -2100,8 +2093,8 @@ yyreduce: } break; - case 35: -#line 582 "asn1p_y.y" + case 34: +#line 578 "asn1p_y.y" { return yyerror( "Attempt to redefine a standard basic string type, " @@ -2109,7 +2102,12 @@ yyreduce: } break; - case 36: + case 35: +#line 591 "asn1p_y.y" + { yyval.a_module = 0; } + break; + + case 37: #line 595 "asn1p_y.y" { if(!saved_aid && 0) @@ -2120,14 +2118,14 @@ yyreduce: } break; - case 37: + case 38: #line 605 "asn1p_y.y" { return yyerror("Empty IMPORTS list"); } break; - case 38: + case 39: #line 611 "asn1p_y.y" { yyval.a_module = asn1p_module_new(); @@ -2136,7 +2134,7 @@ yyreduce: } break; - case 39: + case 40: #line 616 "asn1p_y.y" { yyval.a_module = yyvsp[-1].a_module; @@ -2144,17 +2142,17 @@ yyreduce: } break; - case 40: + case 41: #line 623 "asn1p_y.y" { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); } break; - case 41: + case 42: #line 624 "asn1p_y.y" { yyval.a_aid.oid = yyvsp[0].a_oid; } break; - case 42: + case 43: #line 628 "asn1p_y.y" { yyval.a_xports = yyvsp[-3].a_xports; @@ -2166,7 +2164,7 @@ yyreduce: } break; - case 43: + case 44: #line 639 "asn1p_y.y" { yyval.a_xports = asn1p_xports_new(); @@ -2175,7 +2173,7 @@ yyreduce: } break; - case 44: + case 45: #line 644 "asn1p_y.y" { yyval.a_xports = yyvsp[-2].a_xports; @@ -2183,7 +2181,7 @@ yyreduce: } break; - case 45: + case 46: #line 651 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); @@ -2193,7 +2191,7 @@ yyreduce: } break; - case 46: + case 47: #line 657 "asn1p_y.y" { /* Completely equivalent to above */ yyval.a_expr = asn1p_expr_new(yylineno); @@ -2203,7 +2201,7 @@ yyreduce: } break; - case 47: + case 48: #line 663 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); @@ -2213,22 +2211,40 @@ yyreduce: } break; - case 48: -#line 672 "asn1p_y.y" + case 49: +#line 673 "asn1p_y.y" + { yyval.a_module = 0; } + break; + + case 50: +#line 674 "asn1p_y.y" + { + yyval.a_module = asn1p_module_new(); + checkmem(yyval.a_module); + if(yyvsp[0].a_xports) { + TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next); + } else { + /* "EXPORTS ALL;" */ + } + } + break; + + case 51: +#line 686 "asn1p_y.y" { yyval.a_xports = yyvsp[-1].a_xports; } break; - case 49: -#line 675 "asn1p_y.y" + case 52: +#line 689 "asn1p_y.y" { yyval.a_xports = 0; } break; - case 50: -#line 678 "asn1p_y.y" + case 53: +#line 692 "asn1p_y.y" { /* Empty EXPORTS clause effectively prohibits export. */ yyval.a_xports = asn1p_xports_new(); @@ -2236,8 +2252,8 @@ yyreduce: } break; - case 51: -#line 686 "asn1p_y.y" + case 54: +#line 700 "asn1p_y.y" { yyval.a_xports = asn1p_xports_new(); assert(yyval.a_xports); @@ -2245,16 +2261,16 @@ yyreduce: } break; - case 52: -#line 691 "asn1p_y.y" + case 55: +#line 705 "asn1p_y.y" { yyval.a_xports = yyvsp[-2].a_xports; TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next); } break; - case 53: -#line 698 "asn1p_y.y" + case 56: +#line 712 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2263,8 +2279,8 @@ yyreduce: } break; - case 54: -#line 704 "asn1p_y.y" + case 57: +#line 718 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2273,8 +2289,8 @@ yyreduce: } break; - case 55: -#line 710 "asn1p_y.y" + case 58: +#line 724 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2283,13 +2299,13 @@ yyreduce: } break; - case 56: -#line 719 "asn1p_y.y" + case 59: +#line 733 "asn1p_y.y" { yyval.a_constr = yyvsp[-1].a_constr; } break; - case 57: -#line 722 "asn1p_y.y" + case 60: +#line 736 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -2299,15 +2315,15 @@ yyreduce: } break; - case 58: -#line 732 "asn1p_y.y" + case 61: +#line 746 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; } break; - case 59: -#line 745 "asn1p_y.y" + case 62: +#line 759 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2317,8 +2333,8 @@ yyreduce: } break; - case 60: -#line 755 "asn1p_y.y" + case 63: +#line 769 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2329,8 +2345,8 @@ yyreduce: } break; - case 61: -#line 775 "asn1p_y.y" + case 64: +#line 789 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2339,8 +2355,8 @@ yyreduce: } break; - case 62: -#line 781 "asn1p_y.y" + case 65: +#line 795 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2349,8 +2365,8 @@ yyreduce: } break; - case 63: -#line 797 "asn1p_y.y" + case 66: +#line 811 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-5].tv_str; @@ -2358,8 +2374,8 @@ yyreduce: } break; - case 64: -#line 803 "asn1p_y.y" + case 67: +#line 817 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->Identifier = yyvsp[-5].tv_str; @@ -2367,8 +2383,8 @@ yyreduce: } break; - case 65: -#line 811 "asn1p_y.y" + case 68: +#line 825 "asn1p_y.y" { int ret; yyval.a_plist = asn1p_paramlist_new(yylineno); @@ -2380,8 +2396,8 @@ yyreduce: } break; - case 66: -#line 820 "asn1p_y.y" + case 69: +#line 834 "asn1p_y.y" { int ret; yyval.a_plist = yyvsp[-2].a_plist; @@ -2392,16 +2408,16 @@ yyreduce: } break; - case 67: -#line 831 "asn1p_y.y" + case 70: +#line 845 "asn1p_y.y" { yyval.a_parg.governor = NULL; yyval.a_parg.argument = yyvsp[0].tv_str; } break; - case 68: -#line 835 "asn1p_y.y" + case 71: +#line 849 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -2411,8 +2427,8 @@ yyreduce: } break; - case 69: -#line 842 "asn1p_y.y" + case 72: +#line 856 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -2422,8 +2438,8 @@ yyreduce: } break; - case 70: -#line 849 "asn1p_y.y" + case 73: +#line 863 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -2434,8 +2450,8 @@ yyreduce: } break; - case 71: -#line 857 "asn1p_y.y" + case 74: +#line 871 "asn1p_y.y" { int ret; yyval.a_parg.governor = asn1p_ref_new(yylineno); @@ -2446,8 +2462,8 @@ yyreduce: } break; - case 72: -#line 868 "asn1p_y.y" + case 75: +#line 882 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2455,23 +2471,23 @@ yyreduce: } break; - case 73: -#line 873 "asn1p_y.y" + case 76: +#line 887 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); } break; - case 74: -#line 880 "asn1p_y.y" + case 77: +#line 894 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; } break; - case 75: -#line 883 "asn1p_y.y" + case 78: +#line 897 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2482,8 +2498,8 @@ yyreduce: } break; - case 76: -#line 891 "asn1p_y.y" + case 79: +#line 905 "asn1p_y.y" { asn1p_ref_t *ref; yyval.a_expr = asn1p_expr_new(yylineno); @@ -2497,8 +2513,8 @@ yyreduce: } break; - case 77: -#line 902 "asn1p_y.y" + case 80: +#line 916 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->expr_type = A1TC_VALUESET; @@ -2507,18 +2523,18 @@ yyreduce: } break; - case 78: -#line 925 "asn1p_y.y" + case 81: +#line 939 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); } break; - case 79: -#line 926 "asn1p_y.y" + case 82: +#line 940 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; } break; - case 80: -#line 929 "asn1p_y.y" + case 83: +#line 943 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2526,16 +2542,16 @@ yyreduce: } break; - case 81: -#line 934 "asn1p_y.y" + case 84: +#line 948 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); } break; - case 82: -#line 941 "asn1p_y.y" + case 85: +#line 955 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -2545,8 +2561,8 @@ yyreduce: } break; - case 83: -#line 948 "asn1p_y.y" + case 86: +#line 962 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags; @@ -2555,8 +2571,8 @@ yyreduce: } break; - case 84: -#line 954 "asn1p_y.y" + case 87: +#line 968 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2566,15 +2582,15 @@ yyreduce: } break; - case 85: -#line 961 "asn1p_y.y" + case 88: +#line 975 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; } break; - case 86: -#line 967 "asn1p_y.y" + case 89: +#line 981 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2582,16 +2598,16 @@ yyreduce: } break; - case 87: -#line 972 "asn1p_y.y" + case 90: +#line 986 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); } break; - case 88: -#line 979 "asn1p_y.y" + case 91: +#line 993 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; assert(yyval.a_expr->Identifier == 0); @@ -2599,23 +2615,23 @@ yyreduce: } break; - case 89: -#line 984 "asn1p_y.y" + case 92: +#line 998 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; } break; - case 90: -#line 987 "asn1p_y.y" + case 93: +#line 1001 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; _fixup_anonymous_identifier(yyval.a_expr); } break; - case 91: -#line 994 "asn1p_y.y" + case 94: +#line 1008 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; checkmem(yyval.a_expr); @@ -2625,18 +2641,18 @@ yyreduce: } break; - case 92: -#line 1004 "asn1p_y.y" + case 95: +#line 1018 "asn1p_y.y" { yyval.a_int = 0; } break; - case 93: -#line 1005 "asn1p_y.y" + case 96: +#line 1019 "asn1p_y.y" { yyval.a_int = 1; } break; - case 94: -#line 1009 "asn1p_y.y" + case 97: +#line 1023 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2646,16 +2662,16 @@ yyreduce: } break; - case 95: -#line 1016 "asn1p_y.y" + case 98: +#line 1030 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); } break; - case 96: -#line 1026 "asn1p_y.y" + case 99: +#line 1040 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2666,8 +2682,8 @@ yyreduce: } break; - case 97: -#line 1036 "asn1p_y.y" + case 100: +#line 1050 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-3].tv_str; @@ -2679,8 +2695,8 @@ yyreduce: } break; - case 98: -#line 1047 "asn1p_y.y" + case 101: +#line 1061 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2691,8 +2707,8 @@ yyreduce: } break; - case 99: -#line 1057 "asn1p_y.y" + case 102: +#line 1071 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2704,8 +2720,8 @@ yyreduce: } break; - case 100: -#line 1068 "asn1p_y.y" + case 103: +#line 1082 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); yyval.a_expr->Identifier = yyvsp[-2].tv_str; @@ -2716,8 +2732,8 @@ yyreduce: } break; - case 101: -#line 1078 "asn1p_y.y" + case 104: +#line 1092 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2729,8 +2745,8 @@ yyreduce: } break; - case 102: -#line 1089 "asn1p_y.y" + case 105: +#line 1103 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2742,78 +2758,78 @@ yyreduce: } break; - case 103: -#line 1101 "asn1p_y.y" + case 106: +#line 1115 "asn1p_y.y" { yyval.a_wsynt = 0; } break; - case 104: -#line 1102 "asn1p_y.y" + case 107: +#line 1116 "asn1p_y.y" { yyval.a_wsynt = yyvsp[0].a_wsynt; } break; - case 105: -#line 1109 "asn1p_y.y" + case 108: +#line 1123 "asn1p_y.y" { asn1p_lexer_hack_enable_with_syntax(); } break; - case 106: -#line 1111 "asn1p_y.y" + case 109: +#line 1125 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; } break; - case 107: -#line 1117 "asn1p_y.y" + case 110: +#line 1131 "asn1p_y.y" { yyval.a_wsynt = asn1p_wsyntx_new(); TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); } break; - case 108: -#line 1121 "asn1p_y.y" + case 111: +#line 1135 "asn1p_y.y" { yyval.a_wsynt = yyvsp[-1].a_wsynt; TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next); } break; - case 109: -#line 1128 "asn1p_y.y" + case 112: +#line 1142 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0); yyval.a_wchunk->type = WC_WHITESPACE; } break; - case 110: -#line 1132 "asn1p_y.y" + case 113: +#line 1146 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0); } break; - case 111: -#line 1135 "asn1p_y.y" + case 114: +#line 1149 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0); yyval.a_wchunk->type = WC_FIELD; } break; - case 112: -#line 1139 "asn1p_y.y" + case 115: +#line 1153 "asn1p_y.y" { yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt); } break; - case 113: -#line 1145 "asn1p_y.y" + case 116: +#line 1159 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2824,8 +2840,8 @@ yyreduce: } break; - case 114: -#line 1153 "asn1p_y.y" + case 117: +#line 1167 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2837,8 +2853,8 @@ yyreduce: } break; - case 115: -#line 1162 "asn1p_y.y" + case 118: +#line 1176 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2850,8 +2866,8 @@ yyreduce: } break; - case 116: -#line 1174 "asn1p_y.y" + case 119: +#line 1188 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; yyval.a_expr->tag = yyvsp[-2].a_tag; @@ -2873,16 +2889,16 @@ yyreduce: } break; - case 117: -#line 1196 "asn1p_y.y" + case 120: +#line 1210 "asn1p_y.y" { yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0; asn1p_as_pointer = 0; } break; - case 118: -#line 1203 "asn1p_y.y" + case 121: +#line 1217 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; yyval.a_expr->marker.flags |= yyvsp[-1].a_int; @@ -2901,15 +2917,15 @@ yyreduce: } break; - case 119: -#line 1222 "asn1p_y.y" + case 122: +#line 1236 "asn1p_y.y" { yyval.a_expr = yyvsp[0].a_expr; } break; - case 120: -#line 1225 "asn1p_y.y" + case 123: +#line 1239 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2918,8 +2934,8 @@ yyreduce: } break; - case 121: -#line 1231 "asn1p_y.y" + case 124: +#line 1245 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2928,8 +2944,8 @@ yyreduce: } break; - case 122: -#line 1237 "asn1p_y.y" + case 125: +#line 1251 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; assert(yyval.a_expr->expr_type == A1TC_INVALID); @@ -2938,8 +2954,8 @@ yyreduce: } break; - case 123: -#line 1243 "asn1p_y.y" + case 126: +#line 1257 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2952,8 +2968,8 @@ yyreduce: } break; - case 124: -#line 1253 "asn1p_y.y" + case 127: +#line 1267 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2966,8 +2982,8 @@ yyreduce: } break; - case 125: -#line 1263 "asn1p_y.y" + case 128: +#line 1277 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -2976,8 +2992,8 @@ yyreduce: } break; - case 126: -#line 1269 "asn1p_y.y" + case 129: +#line 1283 "asn1p_y.y" { int ret; yyval.a_expr = asn1p_expr_new(yylineno); @@ -2991,8 +3007,8 @@ yyreduce: } break; - case 127: -#line 1280 "asn1p_y.y" + case 130: +#line 1294 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3002,8 +3018,8 @@ yyreduce: } break; - case 128: -#line 1295 "asn1p_y.y" + case 131: +#line 1309 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -3014,8 +3030,8 @@ yyreduce: } break; - case 129: -#line 1303 "asn1p_y.y" + case 132: +#line 1317 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -3028,8 +3044,8 @@ yyreduce: } break; - case 130: -#line 1313 "asn1p_y.y" + case 133: +#line 1327 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -3042,8 +3058,8 @@ yyreduce: } break; - case 131: -#line 1323 "asn1p_y.y" + case 134: +#line 1337 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -3056,8 +3072,8 @@ yyreduce: } break; - case 132: -#line 1333 "asn1p_y.y" + case 135: +#line 1347 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -3068,8 +3084,8 @@ yyreduce: } break; - case 133: -#line 1341 "asn1p_y.y" + case 136: +#line 1355 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[0].a_ref; @@ -3091,8 +3107,8 @@ yyreduce: } break; - case 134: -#line 1363 "asn1p_y.y" + case 137: +#line 1377 "asn1p_y.y" { int ret; yyval.a_ref = asn1p_ref_new(yylineno); @@ -3103,8 +3119,8 @@ yyreduce: } break; - case 135: -#line 1371 "asn1p_y.y" + case 138: +#line 1385 "asn1p_y.y" { int ret; yyval.a_ref = yyvsp[-2].a_ref; @@ -3114,56 +3130,56 @@ yyreduce: } break; - case 137: -#line 1384 "asn1p_y.y" + case 140: +#line 1398 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_AmpUppercase; yyval.a_refcomp.name = yyvsp[0].tv_str; } break; - case 138: -#line 1389 "asn1p_y.y" + case 141: +#line 1403 "asn1p_y.y" { yyval.a_refcomp.lex_type = RLT_Amplowercase; yyval.a_refcomp.name = yyvsp[0].tv_str; } break; - case 139: -#line 1398 "asn1p_y.y" + case 142: +#line 1412 "asn1p_y.y" { yyval.a_ref = asn1p_ref_new(yylineno); asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase); } break; - case 140: -#line 1402 "asn1p_y.y" + case 143: +#line 1416 "asn1p_y.y" { yyval.a_ref = yyval.a_ref; asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase); } break; - case 141: -#line 1406 "asn1p_y.y" + case 144: +#line 1420 "asn1p_y.y" { yyval.a_ref = yyval.a_ref; asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase); } break; - case 142: -#line 1413 "asn1p_y.y" + case 145: +#line 1427 "asn1p_y.y" { yyval.a_ref = asn1p_ref_new(yylineno); asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS); } break; - case 143: -#line 1433 "asn1p_y.y" + case 146: +#line 1447 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; assert(yyval.a_expr->Identifier == NULL); @@ -3173,8 +3189,8 @@ yyreduce: } break; - case 146: -#line 1445 "asn1p_y.y" + case 149: +#line 1459 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -3184,13 +3200,13 @@ yyreduce: } break; - case 147: -#line 1452 "asn1p_y.y" + case 150: +#line 1466 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); } break; - case 148: -#line 1452 "asn1p_y.y" + case 151: +#line 1466 "asn1p_y.y" { yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0); checkmem(yyval.a_value); @@ -3198,8 +3214,8 @@ yyreduce: } break; - case 149: -#line 1457 "asn1p_y.y" + case 152: +#line 1471 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -3207,8 +3223,8 @@ yyreduce: } break; - case 150: -#line 1465 "asn1p_y.y" + case 153: +#line 1479 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -3216,8 +3232,8 @@ yyreduce: } break; - case 151: -#line 1470 "asn1p_y.y" + case 154: +#line 1484 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -3225,38 +3241,38 @@ yyreduce: } break; - case 152: -#line 1475 "asn1p_y.y" + case 155: +#line 1489 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B'); checkmem(yyval.a_value); } break; - case 153: -#line 1479 "asn1p_y.y" + case 156: +#line 1493 "asn1p_y.y" { yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H'); checkmem(yyval.a_value); } break; - case 154: -#line 1483 "asn1p_y.y" + case 157: +#line 1497 "asn1p_y.y" { yyval.a_value = yyval.a_value; } break; - case 155: -#line 1486 "asn1p_y.y" + case 158: +#line 1500 "asn1p_y.y" { yyval.a_value = yyvsp[0].a_value; } break; - case 156: -#line 1492 "asn1p_y.y" + case 159: +#line 1506 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3270,8 +3286,8 @@ yyreduce: } break; - case 157: -#line 1503 "asn1p_y.y" + case 160: +#line 1517 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3288,16 +3304,16 @@ yyreduce: } break; - case 158: -#line 1521 "asn1p_y.y" + case 161: +#line 1535 "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 159: -#line 1525 "asn1p_y.y" + case 162: +#line 1539 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); @@ -3305,8 +3321,8 @@ yyreduce: } break; - case 160: -#line 1530 "asn1p_y.y" + case 163: +#line 1544 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); @@ -3314,8 +3330,8 @@ yyreduce: } break; - case 161: -#line 1564 "asn1p_y.y" + case 164: +#line 1578 "asn1p_y.y" { yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1; yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1); @@ -3327,8 +3343,8 @@ yyreduce: } break; - case 162: -#line 1573 "asn1p_y.y" + case 165: +#line 1587 "asn1p_y.y" { int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len; char *p = malloc(newsize + 1); @@ -3343,88 +3359,88 @@ yyreduce: } break; - case 163: -#line 1588 "asn1p_y.y" + case 166: +#line 1602 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BOOLEAN; } break; - case 164: -#line 1589 "asn1p_y.y" + case 167: +#line 1603 "asn1p_y.y" { yyval.a_type = ASN_BASIC_NULL; } break; - case 165: -#line 1590 "asn1p_y.y" + case 168: +#line 1604 "asn1p_y.y" { yyval.a_type = ASN_BASIC_REAL; } break; - case 166: -#line 1591 "asn1p_y.y" + case 169: +#line 1605 "asn1p_y.y" { yyval.a_type = yyvsp[0].a_type; } break; - case 167: -#line 1592 "asn1p_y.y" + case 170: +#line 1606 "asn1p_y.y" { yyval.a_type = ASN_BASIC_OCTET_STRING; } break; - case 168: -#line 1593 "asn1p_y.y" + case 171: +#line 1607 "asn1p_y.y" { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; } break; - case 169: -#line 1594 "asn1p_y.y" + case 172: +#line 1608 "asn1p_y.y" { yyval.a_type = ASN_BASIC_RELATIVE_OID; } break; - case 170: -#line 1595 "asn1p_y.y" + case 173: +#line 1609 "asn1p_y.y" { yyval.a_type = ASN_BASIC_EXTERNAL; } break; - case 171: -#line 1596 "asn1p_y.y" + case 174: +#line 1610 "asn1p_y.y" { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; } break; - case 172: -#line 1597 "asn1p_y.y" + case 175: +#line 1611 "asn1p_y.y" { yyval.a_type = ASN_BASIC_CHARACTER_STRING; } break; - case 173: -#line 1598 "asn1p_y.y" + case 176: +#line 1612 "asn1p_y.y" { yyval.a_type = ASN_BASIC_UTCTime; } break; - case 174: -#line 1599 "asn1p_y.y" + case 177: +#line 1613 "asn1p_y.y" { yyval.a_type = ASN_BASIC_GeneralizedTime; } break; - case 175: -#line 1600 "asn1p_y.y" + case 178: +#line 1614 "asn1p_y.y" { yyval.a_type = yyvsp[0].a_type; } break; - case 176: -#line 1607 "asn1p_y.y" + case 179: +#line 1621 "asn1p_y.y" { yyval.a_type = ASN_BASIC_INTEGER; } break; - case 177: -#line 1608 "asn1p_y.y" + case 180: +#line 1622 "asn1p_y.y" { yyval.a_type = ASN_BASIC_ENUMERATED; } break; - case 178: -#line 1609 "asn1p_y.y" + case 181: +#line 1623 "asn1p_y.y" { yyval.a_type = ASN_BASIC_BIT_STRING; } break; - case 179: -#line 1613 "asn1p_y.y" + case 182: +#line 1627 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -3433,8 +3449,8 @@ yyreduce: } break; - case 180: -#line 1619 "asn1p_y.y" + case 183: +#line 1633 "asn1p_y.y" { if(yyvsp[0].a_expr) { yyval.a_expr = yyvsp[0].a_expr; @@ -3447,109 +3463,109 @@ yyreduce: } break; - case 181: -#line 1632 "asn1p_y.y" + case 184: +#line 1646 "asn1p_y.y" { yyval.a_type = ASN_STRING_BMPString; } break; - case 182: -#line 1633 "asn1p_y.y" + case 185: +#line 1647 "asn1p_y.y" { yyval.a_type = ASN_STRING_GeneralString; fprintf(stderr, "WARNING: GeneralString is not fully supported\n"); } break; - case 183: -#line 1637 "asn1p_y.y" + case 186: +#line 1651 "asn1p_y.y" { yyval.a_type = ASN_STRING_GraphicString; fprintf(stderr, "WARNING: GraphicString is not fully supported\n"); } break; - case 184: -#line 1641 "asn1p_y.y" + case 187: +#line 1655 "asn1p_y.y" { yyval.a_type = ASN_STRING_IA5String; } break; - case 185: -#line 1642 "asn1p_y.y" + case 188: +#line 1656 "asn1p_y.y" { yyval.a_type = ASN_STRING_ISO646String; } break; - case 186: -#line 1643 "asn1p_y.y" + case 189: +#line 1657 "asn1p_y.y" { yyval.a_type = ASN_STRING_NumericString; } break; - case 187: -#line 1644 "asn1p_y.y" + case 190: +#line 1658 "asn1p_y.y" { yyval.a_type = ASN_STRING_PrintableString; } break; - case 188: -#line 1645 "asn1p_y.y" + case 191: +#line 1659 "asn1p_y.y" { yyval.a_type = ASN_STRING_T61String; fprintf(stderr, "WARNING: T61String is not fully supported\n"); } break; - case 189: -#line 1649 "asn1p_y.y" + case 192: +#line 1663 "asn1p_y.y" { yyval.a_type = ASN_STRING_TeletexString; } break; - case 190: -#line 1650 "asn1p_y.y" + case 193: +#line 1664 "asn1p_y.y" { yyval.a_type = ASN_STRING_UniversalString; } break; - case 191: -#line 1651 "asn1p_y.y" + case 194: +#line 1665 "asn1p_y.y" { yyval.a_type = ASN_STRING_UTF8String; } break; - case 192: -#line 1652 "asn1p_y.y" + case 195: +#line 1666 "asn1p_y.y" { yyval.a_type = ASN_STRING_VideotexString; fprintf(stderr, "WARNING: VideotexString is not fully supported\n"); } break; - case 193: -#line 1656 "asn1p_y.y" + case 196: +#line 1670 "asn1p_y.y" { yyval.a_type = ASN_STRING_VisibleString; } break; - case 194: -#line 1657 "asn1p_y.y" + case 197: +#line 1671 "asn1p_y.y" { yyval.a_type = ASN_STRING_ObjectDescriptor; } break; - case 200: -#line 1669 "asn1p_y.y" + case 203: +#line 1683 "asn1p_y.y" { yyval.a_constr = 0; } break; - case 201: -#line 1670 "asn1p_y.y" + case 204: +#line 1684 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 202: -#line 1676 "asn1p_y.y" + case 205: +#line 1690 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0); } break; - case 203: -#line 1679 "asn1p_y.y" + case 206: +#line 1693 "asn1p_y.y" { /* * This is a special case, for compatibility purposes. @@ -3559,37 +3575,37 @@ yyreduce: } break; - case 204: -#line 1689 "asn1p_y.y" + case 207: +#line 1703 "asn1p_y.y" { yyval.a_constr = yyvsp[-1].a_constr; } break; - case 205: -#line 1692 "asn1p_y.y" + case 208: +#line 1706 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr); } break; - case 206: -#line 1698 "asn1p_y.y" + case 209: +#line 1712 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); yyval.a_constr->type = ACT_EL_EXT; } break; - case 207: -#line 1702 "asn1p_y.y" + case 210: +#line 1716 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 208: -#line 1705 "asn1p_y.y" + case 211: +#line 1719 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3598,8 +3614,8 @@ yyreduce: } break; - case 209: -#line 1711 "asn1p_y.y" + case 212: +#line 1725 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3610,43 +3626,43 @@ yyreduce: } break; - case 210: -#line 1722 "asn1p_y.y" + case 213: +#line 1736 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 211: -#line 1725 "asn1p_y.y" + case 214: +#line 1739 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0); } break; - case 212: -#line 1728 "asn1p_y.y" + case 215: +#line 1742 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr); } break; - case 213: -#line 1731 "asn1p_y.y" + case 216: +#line 1745 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr); } break; - case 214: -#line 1734 "asn1p_y.y" + case 217: +#line 1748 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr); } break; - case 215: -#line 1740 "asn1p_y.y" + case 218: +#line 1754 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -3657,8 +3673,8 @@ yyreduce: } break; - case 216: -#line 1748 "asn1p_y.y" + case 219: +#line 1762 "asn1p_y.y" { int ret; yyval.a_constr = asn1p_constraint_new(yylineno); @@ -3669,8 +3685,8 @@ yyreduce: } break; - case 217: -#line 1756 "asn1p_y.y" + case 220: +#line 1770 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3679,8 +3695,8 @@ yyreduce: } break; - case 218: -#line 1762 "asn1p_y.y" + case 221: +#line 1776 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3689,8 +3705,8 @@ yyreduce: } break; - case 219: -#line 1768 "asn1p_y.y" + case 222: +#line 1782 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3700,8 +3716,8 @@ yyreduce: } break; - case 220: -#line 1775 "asn1p_y.y" + case 223: +#line 1789 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3712,8 +3728,8 @@ yyreduce: } break; - case 221: -#line 1783 "asn1p_y.y" + case 224: +#line 1797 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3724,8 +3740,8 @@ yyreduce: } break; - case 222: -#line 1791 "asn1p_y.y" + case 225: +#line 1805 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3737,27 +3753,27 @@ yyreduce: } break; - case 223: -#line 1800 "asn1p_y.y" + case 226: +#line 1814 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 224: -#line 1803 "asn1p_y.y" + case 227: +#line 1817 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 225: -#line 1807 "asn1p_y.y" + case 228: +#line 1821 "asn1p_y.y" { asn1p_lexer_hack_push_opaque_state(); } break; - case 226: -#line 1807 "asn1p_y.y" + case 229: +#line 1821 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3768,42 +3784,42 @@ yyreduce: } break; - case 227: -#line 1818 "asn1p_y.y" + case 230: +#line 1832 "asn1p_y.y" { yyval.a_ctype = ACT_EL_RANGE; } break; - case 228: -#line 1819 "asn1p_y.y" + case 231: +#line 1833 "asn1p_y.y" { yyval.a_ctype = ACT_EL_RLRANGE; } break; - case 229: -#line 1820 "asn1p_y.y" + case 232: +#line 1834 "asn1p_y.y" { yyval.a_ctype = ACT_EL_LLRANGE; } break; - case 230: -#line 1821 "asn1p_y.y" + case 233: +#line 1835 "asn1p_y.y" { yyval.a_ctype = ACT_EL_ULRANGE; } break; - case 231: -#line 1825 "asn1p_y.y" + case 234: +#line 1839 "asn1p_y.y" { yyval.a_ctype = ACT_CT_SIZE; } break; - case 232: -#line 1828 "asn1p_y.y" + case 235: +#line 1842 "asn1p_y.y" { yyval.a_ctype = ACT_CT_FROM; } break; - case 233: -#line 1834 "asn1p_y.y" + case 236: +#line 1848 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(0); checkmem(yyval.a_value); @@ -3811,8 +3827,8 @@ yyreduce: } break; - case 234: -#line 1839 "asn1p_y.y" + case 237: +#line 1853 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(1); checkmem(yyval.a_value); @@ -3820,8 +3836,8 @@ yyreduce: } break; - case 237: -#line 1846 "asn1p_y.y" + case 240: +#line 1860 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3835,8 +3851,8 @@ yyreduce: } break; - case 238: -#line 1860 "asn1p_y.y" + case 241: +#line 1874 "asn1p_y.y" { asn1p_ref_t *ref; int ret; @@ -3850,36 +3866,36 @@ yyreduce: } break; - case 239: -#line 1874 "asn1p_y.y" + case 242: +#line 1888 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0); } break; - case 240: -#line 1877 "asn1p_y.y" + case 243: +#line 1891 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0); } break; - case 241: -#line 1883 "asn1p_y.y" + case 244: +#line 1897 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 242: -#line 1886 "asn1p_y.y" + case 245: +#line 1900 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr); } break; - case 243: -#line 1892 "asn1p_y.y" + case 246: +#line 1906 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3888,8 +3904,8 @@ yyreduce: } break; - case 244: -#line 1898 "asn1p_y.y" + case 247: +#line 1912 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3900,53 +3916,53 @@ yyreduce: } break; - case 245: -#line 1912 "asn1p_y.y" + case 248: +#line 1926 "asn1p_y.y" { yyval.a_pres = ACPRES_DEFAULT; } break; - case 246: -#line 1913 "asn1p_y.y" + case 249: +#line 1927 "asn1p_y.y" { yyval.a_pres = yyvsp[0].a_pres; } break; - case 247: -#line 1917 "asn1p_y.y" + case 250: +#line 1931 "asn1p_y.y" { yyval.a_pres = ACPRES_PRESENT; } break; - case 248: -#line 1920 "asn1p_y.y" + case 251: +#line 1934 "asn1p_y.y" { yyval.a_pres = ACPRES_ABSENT; } break; - case 249: -#line 1923 "asn1p_y.y" + case 252: +#line 1937 "asn1p_y.y" { yyval.a_pres = ACPRES_OPTIONAL; } break; - case 250: -#line 1929 "asn1p_y.y" + case 253: +#line 1943 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 251: -#line 1932 "asn1p_y.y" + case 254: +#line 1946 "asn1p_y.y" { yyval.a_constr = yyvsp[0].a_constr; } break; - case 252: -#line 1941 "asn1p_y.y" + case 255: +#line 1955 "asn1p_y.y" { asn1p_ref_t *ref = asn1p_ref_new(yylineno); asn1p_constraint_t *ct; @@ -3961,15 +3977,15 @@ yyreduce: } break; - case 253: -#line 1956 "asn1p_y.y" + case 256: +#line 1970 "asn1p_y.y" { CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr); } break; - case 254: -#line 1962 "asn1p_y.y" + case 257: +#line 1976 "asn1p_y.y" { yyval.a_constr = asn1p_constraint_new(yylineno); checkmem(yyval.a_constr); @@ -3978,8 +3994,8 @@ yyreduce: } break; - case 255: -#line 1968 "asn1p_y.y" + case 258: +#line 1982 "asn1p_y.y" { asn1p_constraint_t *ct; ct = asn1p_constraint_new(yylineno); @@ -3990,8 +4006,8 @@ yyreduce: } break; - case 256: -#line 1982 "asn1p_y.y" + case 259: +#line 1996 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 2); int ret; @@ -4005,8 +4021,8 @@ yyreduce: } break; - case 257: -#line 1993 "asn1p_y.y" + case 260: +#line 2007 "asn1p_y.y" { char *p = malloc(strlen(yyvsp[0].tv_str) + 3); int ret; @@ -4021,15 +4037,15 @@ yyreduce: } break; - case 258: -#line 2009 "asn1p_y.y" + case 261: +#line 2023 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; } break; - case 259: -#line 2012 "asn1p_y.y" + case 262: +#line 2026 "asn1p_y.y" { int l1 = strlen(yyvsp[-2].tv_str); int l3 = strlen(yyvsp[0].tv_str); @@ -4041,52 +4057,52 @@ yyreduce: } break; - case 260: -#line 2030 "asn1p_y.y" + case 263: +#line 2044 "asn1p_y.y" { yyval.a_marker.flags = EM_NOMARK; yyval.a_marker.default_value = 0; } break; - case 261: -#line 2034 "asn1p_y.y" + case 264: +#line 2048 "asn1p_y.y" { yyval.a_marker = yyvsp[0].a_marker; } break; - case 262: -#line 2038 "asn1p_y.y" + case 265: +#line 2052 "asn1p_y.y" { yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT; yyval.a_marker.default_value = 0; } break; - case 263: -#line 2042 "asn1p_y.y" + case 266: +#line 2056 "asn1p_y.y" { yyval.a_marker.flags = EM_DEFAULT; yyval.a_marker.default_value = yyvsp[0].a_value; } break; - case 264: -#line 2065 "asn1p_y.y" + case 267: +#line 2079 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); } break; - case 265: -#line 2069 "asn1p_y.y" + case 268: +#line 2083 "asn1p_y.y" { yyval.a_expr = yyvsp[-1].a_expr; } break; - case 266: -#line 2075 "asn1p_y.y" + case 269: +#line 2089 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -4094,16 +4110,16 @@ yyreduce: } break; - case 267: -#line 2080 "asn1p_y.y" + case 270: +#line 2094 "asn1p_y.y" { yyval.a_expr = yyvsp[-2].a_expr; asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr); } break; - case 268: -#line 2087 "asn1p_y.y" + case 271: +#line 2101 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -4113,8 +4129,8 @@ yyreduce: } break; - case 269: -#line 2094 "asn1p_y.y" + case 272: +#line 2108 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -4125,8 +4141,8 @@ yyreduce: } break; - case 270: -#line 2102 "asn1p_y.y" + case 273: +#line 2116 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -4137,8 +4153,8 @@ yyreduce: } break; - case 271: -#line 2110 "asn1p_y.y" + case 274: +#line 2124 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -4148,8 +4164,8 @@ yyreduce: } break; - case 272: -#line 2117 "asn1p_y.y" + case 275: +#line 2131 "asn1p_y.y" { yyval.a_expr = asn1p_expr_new(yylineno); checkmem(yyval.a_expr); @@ -4160,129 +4176,129 @@ yyreduce: } break; - case 273: -#line 2128 "asn1p_y.y" + case 276: +#line 2142 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); } break; - case 274: -#line 2132 "asn1p_y.y" + case 277: +#line 2146 "asn1p_y.y" { yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int); checkmem(yyval.a_value); } break; - case 276: -#line 2140 "asn1p_y.y" + case 279: +#line 2154 "asn1p_y.y" { yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl); checkmem(yyval.a_value); } break; - case 277: -#line 2171 "asn1p_y.y" + case 280: +#line 2185 "asn1p_y.y" { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); } break; - case 278: -#line 2172 "asn1p_y.y" + case 281: +#line 2186 "asn1p_y.y" { yyval.a_tag = yyvsp[0].a_tag; } break; - case 279: -#line 2176 "asn1p_y.y" + case 282: +#line 2190 "asn1p_y.y" { yyval.a_tag = yyvsp[-1].a_tag; yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode; } break; - case 280: -#line 2183 "asn1p_y.y" + case 283: +#line 2197 "asn1p_y.y" { yyval.a_tag = yyvsp[-2].a_tag; yyval.a_tag.tag_value = yyvsp[-1].a_int; } break; - case 281: -#line 2189 "asn1p_y.y" + case 284: +#line 2203 "asn1p_y.y" { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; } break; - case 282: -#line 2190 "asn1p_y.y" + case 285: +#line 2204 "asn1p_y.y" { yyval.a_tag.tag_class = TC_UNIVERSAL; } break; - case 283: -#line 2191 "asn1p_y.y" + case 286: +#line 2205 "asn1p_y.y" { yyval.a_tag.tag_class = TC_APPLICATION; } break; - case 284: -#line 2192 "asn1p_y.y" + case 287: +#line 2206 "asn1p_y.y" { yyval.a_tag.tag_class = TC_PRIVATE; } break; - case 285: -#line 2196 "asn1p_y.y" + case 288: +#line 2210 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_DEFAULT; } break; - case 286: -#line 2197 "asn1p_y.y" + case 289: +#line 2211 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_IMPLICIT; } break; - case 287: -#line 2198 "asn1p_y.y" + case 290: +#line 2212 "asn1p_y.y" { yyval.a_tag.tag_mode = TM_EXPLICIT; } break; - case 288: -#line 2202 "asn1p_y.y" + case 291: +#line 2216 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; } break; - case 289: -#line 2206 "asn1p_y.y" + case 292: +#line 2220 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; } break; - case 290: -#line 2214 "asn1p_y.y" + case 293: +#line 2228 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; } break; - case 291: -#line 2221 "asn1p_y.y" + case 294: +#line 2235 "asn1p_y.y" { yyval.tv_str = 0; } break; - case 292: -#line 2222 "asn1p_y.y" + case 295: +#line 2236 "asn1p_y.y" { yyval.tv_str = yyvsp[0].tv_str; } break; - case 293: -#line 2228 "asn1p_y.y" + case 296: +#line 2242 "asn1p_y.y" { checkmem(yyvsp[0].tv_str); yyval.tv_str = yyvsp[0].tv_str; @@ -4293,7 +4309,7 @@ yyreduce: } /* Line 1016 of /usr/local/share/bison/yacc.c. */ -#line 4297 "asn1p_y.c" +#line 4313 "asn1p_y.c" yyvsp -= yylen; yyssp -= yylen; @@ -4512,7 +4528,7 @@ yyreturn: } -#line 2234 "asn1p_y.y" +#line 2248 "asn1p_y.y" diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h index 3874ede4..19de3346 100644 --- a/libasn1parser/asn1p_y.h +++ b/libasn1parser/asn1p_y.h @@ -245,7 +245,7 @@ #ifndef YYSTYPE -#line 72 "asn1p_y.y" +#line 85 "asn1p_y.y" typedef union { asn1p_t *a_grammar; asn1p_module_flags_e a_module_flags; diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y index eacab98b..b252a731 100644 --- a/libasn1parser/asn1p_y.y +++ b/libasn1parser/asn1p_y.y @@ -61,6 +61,19 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); } \ } while(0) +#ifdef AL_IMPORT +#error AL_IMPORT DEFINED ELSEWHERE! +#endif +#define AL_IMPORT(to,where,from,field) do { \ + if(!(from)) break; \ + while(TQ_FIRST(&((from)->where))) { \ + TQ_ADD(&((to)->where), \ + TQ_REMOVE(&((from)->where), field), \ + field); \ + } \ + assert(TQ_FIRST(&((from)->where)) == 0); \ + } while(0) + %} @@ -223,13 +236,16 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr); * Types defined herein. */ %type <a_grammar> ModuleList -%type <a_module> ModuleSpecification -%type <a_module> ModuleSpecificationBody -%type <a_module> ModuleSpecificationElement -%type <a_module> optModuleSpecificationBody /* Optional */ -%type <a_module_flags> optModuleSpecificationFlags -%type <a_module_flags> ModuleSpecificationFlags /* Set of FL */ -%type <a_module_flags> ModuleSpecificationFlag /* Single FL */ +%type <a_module> ModuleDefinition +%type <a_module> ModuleBody +%type <a_module> AssignmentList +%type <a_module> Assignment +%type <a_module> optModuleBody /* Optional */ +%type <a_module_flags> optModuleDefinitionFlags +%type <a_module_flags> ModuleDefinitionFlags /* Set of FL */ +%type <a_module_flags> ModuleDefinitionFlag /* Single FL */ +%type <a_module> optImports +%type <a_module> optExports %type <a_module> ImportsDefinition %type <a_module> ImportsBundleSet %type <a_xports> ImportsBundle @@ -330,12 +346,12 @@ ParsedGrammar: ; ModuleList: - ModuleSpecification { + ModuleDefinition { $$ = asn1p_new(); checkmem($$); TQ_ADD(&($$->modules), $1, mod_next); } - | ModuleList ModuleSpecification { + | ModuleList ModuleDefinition { $$ = $1; TQ_ADD(&($$->modules), $2, mod_next); } @@ -351,11 +367,11 @@ ModuleList: * === EOF === */ -ModuleSpecification: +ModuleDefinition: TypeRefName optObjectIdentifier TOK_DEFINITIONS - optModuleSpecificationFlags + optModuleDefinitionFlags TOK_PPEQ TOK_BEGIN - optModuleSpecificationBody + optModuleBody TOK_END { if($7) { @@ -423,9 +439,9 @@ ObjectIdentifierElement: /* * Optional module flags. */ -optModuleSpecificationFlags: +optModuleDefinitionFlags: { $$ = MSF_NOFLAGS; } - | ModuleSpecificationFlags { + | ModuleDefinitionFlags { $$ = $1; } ; @@ -433,11 +449,11 @@ optModuleSpecificationFlags: /* * Module flags. */ -ModuleSpecificationFlags: - ModuleSpecificationFlag { +ModuleDefinitionFlags: + ModuleDefinitionFlag { $$ = $1; } - | ModuleSpecificationFlags ModuleSpecificationFlag { + | ModuleDefinitionFlags ModuleDefinitionFlag { $$ = $1 | $2; } ; @@ -445,7 +461,7 @@ ModuleSpecificationFlags: /* * Single module flag. */ -ModuleSpecificationFlag: +ModuleDefinitionFlag: TOK_EXPLICIT TOK_TAGS { $$ = MSF_EXPLICIT_TAGS; } @@ -479,9 +495,9 @@ ModuleSpecificationFlag: /* * Optional module body. */ -optModuleSpecificationBody: +optModuleBody: { $$ = 0; } - | ModuleSpecificationBody { + | ModuleBody { $$ = $1; } ; @@ -489,56 +505,36 @@ optModuleSpecificationBody: /* * ASN.1 Module body. */ -ModuleSpecificationBody: - ModuleSpecificationElement { - $$ = $1; +ModuleBody: + optExports optImports AssignmentList { + $$ = asn1p_module_new(); + AL_IMPORT($$, exports, $1, xp_next); + AL_IMPORT($$, imports, $2, xp_next); + AL_IMPORT($$, members, $3, next); } - | ModuleSpecificationBody ModuleSpecificationElement { - $$ = $1; + ; - /* Behave well when one of them is skipped. */ - if(!($1)) { - if($2) $$ = $2; +AssignmentList: + Assignment { + $$ = $1; + } + | AssignmentList Assignment { + if($1) { + $$ = $1; + } else { + $$ = $2; break; } - -#ifdef MY_IMPORT -#error MY_IMPORT DEFINED ELSEWHERE! -#endif -#define MY_IMPORT(foo,field) do { \ - while(TQ_FIRST(&($2->foo))) { \ - TQ_ADD(&($$->foo), \ - TQ_REMOVE(&($2->foo), field), \ - field); \ - } \ - assert(TQ_FIRST(&($2->foo)) == 0); \ - } while(0) - - MY_IMPORT(imports, xp_next); - MY_IMPORT(exports, xp_next); - MY_IMPORT(members, next); -#undef MY_IMPORT - + AL_IMPORT($$, members, $2, next); } ; + /* * One of the elements of ASN.1 module specification. */ -ModuleSpecificationElement: - ImportsDefinition { - $$ = $1; - } - | ExportsDefinition { - $$ = asn1p_module_new(); - checkmem($$); - if($1) { - TQ_ADD(&($$->exports), $1, xp_next); - } else { - /* "EXPORTS ALL;" ? */ - } - } - | DataTypeReference { +Assignment: + DataTypeReference { $$ = asn1p_module_new(); checkmem($$); assert($1->expr_type != A1TC_INVALID); @@ -591,6 +587,10 @@ ModuleSpecificationElement: * IMPORTS Type1, value FROM Module { iso standard(0) } ; * === EOF === */ +optImports: + { $$ = 0; } + | ImportsDefinition; + ImportsDefinition: TOK_IMPORTS ImportsBundleSet ';' { if(!saved_aid && 0) @@ -668,6 +668,20 @@ ImportsElement: } ; + +optExports: + { $$ = 0; } + | ExportsDefinition { + $$ = asn1p_module_new(); + checkmem($$); + if($1) { + TQ_ADD(&($$->exports), $1, xp_next); + } else { + /* "EXPORTS ALL;" */ + } + } + ; + ExportsDefinition: TOK_EXPORTS ExportsBody ';' { $$ = $2; diff --git a/tests/49-real-life-OK.asn1 b/tests/49-real-life-OK.asn1 index ef633fcb..aeba3b06 100644 --- a/tests/49-real-life-OK.asn1 +++ b/tests/49-real-life-OK.asn1 @@ -19,4 +19,6 @@ BEGIN IMPORTS TypeB FROM ModuleB TypeC FROM ModuleC ; + Z ::= INTEGER -- Can't specify only EXPORTS & IMPOTS + END diff --git a/tests/49-real-life-OK.asn1.-E b/tests/49-real-life-OK.asn1.-E index 71677687..018bc6bd 100644 --- a/tests/49-real-life-OK.asn1.-E +++ b/tests/49-real-life-OK.asn1.-E @@ -3,4 +3,6 @@ ModuleSetChoiceExtensibility { iso org(3) dod(6) internet(1) private(4) DEFINITIONS ::= BEGIN +Z ::= INTEGER + END |