empty IMPORTS section is allowed


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1249 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 1123367..709611c 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -523,16 +523,16 @@
 
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  7
-#define YYLAST   840
+#define YYLAST   824
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  121
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  119
+#define YYNNTS  120
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  304
+#define YYNRULES  306
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  464
+#define YYNSTATES  465
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -592,160 +592,160 @@
       28,    31,    33,    36,    38,    43,    45,    46,    48,    50,
       53,    56,    59,    62,    65,    68,    69,    71,    75,    77,
       80,    82,    84,    86,    87,    91,    93,    94,    96,   100,
-     103,   105,   108,   109,   111,   116,   118,   122,   124,   128,
-     130,   131,   133,   137,   141,   144,   146,   150,   152,   156,
-     158,   162,   167,   169,   171,   176,   180,   184,   191,   198,
-     200,   204,   206,   210,   214,   218,   222,   224,   228,   230,
-     232,   234,   236,   237,   239,   241,   245,   249,   252,   256,
-     258,   260,   264,   267,   269,   271,   277,   278,   280,   282,
-     286,   289,   294,   298,   302,   306,   310,   314,   315,   317,
-     318,   325,   327,   330,   332,   334,   336,   340,   342,   346,
-     350,   354,   355,   358,   360,   365,   370,   375,   382,   389,
-     391,   396,   400,   402,   406,   410,   414,   416,   420,   422,
-     426,   428,   430,   432,   434,   438,   442,   444,   449,   451,
-     453,   457,   458,   462,   464,   466,   468,   470,   472,   474,
-     476,   478,   482,   484,   486,   488,   490,   493,   495,   497,
-     499,   501,   504,   507,   509,   511,   514,   517,   519,   521,
-     523,   525,   527,   530,   532,   535,   537,   539,   541,   543,
-     545,   547,   549,   551,   553,   555,   557,   559,   561,   563,
-     565,   567,   569,   571,   572,   574,   576,   580,   582,   587,
-     591,   596,   598,   600,   604,   610,   612,   616,   618,   622,
-     624,   628,   630,   634,   639,   643,   645,   647,   651,   655,
-     659,   663,   665,   667,   669,   671,   673,   675,   677,   679,
-     681,   685,   691,   693,   697,   699,   703,   704,   706,   708,
-     710,   712,   714,   716,   718,   719,   725,   728,   730,   733,
-     736,   740,   742,   744,   748,   753,   755,   759,   762,   766,
-     768,   772,   773,   775,   777,   780,   783,   787,   789,   793,
-     795,   800,   805,   807,   809,   811,   813,   815,   817,   818,
-     820,   823,   828,   829,   831,   833,   835,   836,   838,   840,
-     842,   844,   846,   847,   849
+     103,   104,   106,   108,   111,   112,   114,   119,   121,   125,
+     127,   131,   133,   134,   136,   140,   144,   147,   149,   153,
+     155,   159,   161,   165,   170,   172,   174,   179,   183,   187,
+     194,   201,   203,   207,   209,   213,   217,   221,   225,   227,
+     231,   233,   235,   237,   239,   240,   242,   244,   248,   252,
+     255,   259,   261,   263,   267,   270,   272,   274,   280,   281,
+     283,   285,   289,   292,   297,   301,   305,   309,   313,   317,
+     318,   320,   321,   328,   330,   333,   335,   337,   339,   343,
+     345,   349,   353,   357,   358,   361,   363,   368,   373,   378,
+     385,   392,   394,   399,   403,   405,   409,   413,   417,   419,
+     423,   425,   429,   431,   433,   435,   437,   441,   445,   447,
+     452,   454,   456,   460,   461,   465,   467,   469,   471,   473,
+     475,   477,   479,   481,   485,   487,   489,   491,   493,   496,
+     498,   500,   502,   504,   507,   510,   512,   514,   517,   520,
+     522,   524,   526,   528,   530,   533,   535,   538,   540,   542,
+     544,   546,   548,   550,   552,   554,   556,   558,   560,   562,
+     564,   566,   568,   570,   572,   574,   575,   577,   579,   583,
+     585,   590,   594,   599,   601,   603,   607,   613,   615,   619,
+     621,   625,   627,   631,   633,   637,   642,   646,   648,   650,
+     654,   658,   662,   666,   668,   670,   672,   674,   676,   678,
+     680,   682,   684,   688,   694,   696,   700,   702,   706,   707,
+     709,   711,   713,   715,   717,   719,   721,   722,   728,   731,
+     733,   736,   739,   743,   745,   747,   751,   756,   758,   762,
+     765,   769,   771,   775,   776,   778,   780,   783,   786,   790,
+     792,   796,   798,   803,   808,   810,   812,   814,   816,   818,
+     820,   821,   823,   826,   831,   832,   834,   836,   838,   839,
+     841,   843,   845,   847,   849,   850,   852
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
      122,     0,    -1,   123,    -1,   124,    -1,   123,   124,    -1,
-      -1,   236,   125,   126,    39,   130,     3,    26,   133,    44,
+      -1,   237,   125,   126,    39,   130,     3,    26,   133,    44,
       -1,    -1,   127,    -1,   108,   128,   109,    -1,   108,   109,
-      -1,   129,    -1,   128,   129,    -1,   239,    -1,   239,   110,
+      -1,   129,    -1,   128,   129,    -1,   240,    -1,   240,   110,
       10,   111,    -1,    10,    -1,    -1,   131,    -1,   132,    -1,
      131,   132,    -1,    46,    89,    -1,    57,    89,    -1,    25,
       89,    -1,    48,    58,    -1,    16,    62,    -1,    -1,   134,
-      -1,   145,   138,   135,    -1,   136,    -1,   135,   136,    -1,
-     152,    -1,   182,    -1,   150,    -1,    -1,    43,    16,   137,
-      -1,   192,    -1,    -1,   139,    -1,    59,   140,   112,    -1,
-      59,    51,    -1,   142,    -1,   140,   142,    -1,    -1,   127,
-      -1,   143,    51,   236,   141,    -1,   144,    -1,   143,   113,
-     144,    -1,   236,    -1,   236,   108,   109,    -1,   239,    -1,
-      -1,   146,    -1,    47,   147,   112,    -1,    47,    22,   112,
-      -1,    47,   112,    -1,   148,    -1,   147,   113,   148,    -1,
-     236,    -1,   236,   108,   109,    -1,   239,    -1,   108,   199,
-     109,    -1,   236,   151,     3,   149,    -1,   191,    -1,   176,
-      -1,   176,   108,   155,   109,    -1,   236,     3,   172,    -1,
-     236,     3,   162,    -1,   236,   108,   153,   109,     3,   172,
-      -1,   236,   108,   153,   109,     3,   162,    -1,   154,    -1,
-     153,   113,   154,    -1,   236,    -1,   236,   114,   239,    -1,
-     236,   114,   236,    -1,   189,   114,   239,    -1,   189,   114,
-     236,    -1,   156,    -1,   155,   113,   156,    -1,   172,    -1,
-     185,    -1,   239,    -1,   149,    -1,    -1,   158,    -1,   159,
-      -1,   158,   113,   159,    -1,   239,   172,   224,    -1,   172,
-     224,    -1,    35,    73,   172,    -1,   171,    -1,   161,    -1,
-     160,   113,   161,    -1,   239,   172,    -1,   171,    -1,   172,
-      -1,    33,   108,   164,   109,   166,    -1,    -1,    93,    -1,
-     165,    -1,   164,   113,   165,    -1,    17,   224,    -1,    18,
-     172,   163,   224,    -1,    18,   180,   224,    -1,    18,   181,
-     224,    -1,    17,   180,   224,    -1,    17,   172,   224,    -1,
-      17,   181,   224,    -1,    -1,   167,    -1,    -1,   100,    87,
-     108,   168,   169,   109,    -1,   170,    -1,   169,   170,    -1,
-       4,    -1,    19,    -1,   179,    -1,   115,   169,   116,    -1,
-     107,    -1,   107,   117,   186,    -1,   107,   117,   229,    -1,
-     231,   174,   195,    -1,    -1,   173,   175,    -1,   151,    -1,
-      32,   108,   160,   109,    -1,    83,   108,   157,   109,    -1,
-      84,   108,   157,   109,    -1,    83,   195,    73,   238,   231,
-     174,    -1,    84,   195,    73,   238,   231,   174,    -1,    23,
-      -1,    23,    40,    30,   239,    -1,    61,    73,   176,    -1,
-      15,    -1,    15,   118,   236,    -1,   237,   118,   236,    -1,
-      15,   118,   239,    -1,   237,    -1,   237,   118,   177,    -1,
-     178,    -1,   177,   118,   178,    -1,   179,    -1,    17,    -1,
-      18,    -1,    17,    -1,   180,   118,    17,    -1,   180,   118,
-      18,    -1,    16,    -1,   239,   151,     3,   183,    -1,   185,
-      -1,   186,    -1,   239,   114,   183,    -1,    -1,   108,   184,
-     188,    -1,    68,    -1,    50,    -1,    91,    -1,     6,    -1,
-       8,    -1,   187,    -1,   229,    -1,   239,    -1,   236,   118,
-     239,    -1,     7,    -1,    13,    -1,    14,    -1,     5,    -1,
-     188,     5,    -1,    29,    -1,    68,    -1,    81,    -1,   190,
-      -1,    72,    86,    -1,    70,    56,    -1,    82,    -1,    49,
-      -1,    41,    76,    -1,    31,    86,    -1,    96,    -1,    52,
-      -1,   192,    -1,    63,    -1,    45,    -1,    27,    86,    -1,
-     189,    -1,   190,   226,    -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,    -1,   196,    -1,   197,    -1,   110,   213,   111,    -1,
-     198,    -1,    85,   110,   199,   111,    -1,   110,   199,   111,
-      -1,   198,   110,   199,   111,    -1,   107,    -1,   200,    -1,
-     200,   113,   107,    -1,   200,   113,   107,   113,   200,    -1,
-     201,    -1,    22,   101,   204,    -1,   202,    -1,   201,   193,
-     202,    -1,   203,    -1,   202,   194,   203,    -1,   204,    -1,
-     204,   101,   204,    -1,   205,   110,   199,   111,    -1,   110,
-     199,   111,    -1,   206,    -1,   207,    -1,   206,   217,   206,
-      -1,    66,   217,   206,    -1,   206,   217,    65,    -1,    66,
-     217,    65,    -1,   208,    -1,    85,    -1,    51,    -1,    50,
-      -1,    91,    -1,   230,    -1,   187,    -1,   239,    -1,   236,
-      -1,   100,    34,   198,    -1,   100,    35,   108,   209,   109,
-      -1,   210,    -1,   209,   113,   210,    -1,   107,    -1,   239,
-     195,   211,    -1,    -1,   212,    -1,    78,    -1,    20,    -1,
-      74,    -1,   214,    -1,   218,    -1,   216,    -1,    -1,    36,
-      30,   108,   215,   188,    -1,    37,   172,    -1,   106,    -1,
-     106,   119,    -1,   119,   106,    -1,   119,   106,   119,    -1,
-     219,    -1,   220,    -1,   108,   236,   109,    -1,   219,   108,
-     221,   109,    -1,   222,    -1,   221,   113,   222,    -1,   120,
-     223,    -1,   120,   118,   223,    -1,   239,    -1,   223,   118,
-     239,    -1,    -1,   225,    -1,    74,    -1,    38,   183,    -1,
-     108,   109,    -1,   108,   227,   109,    -1,   228,    -1,   227,
-     113,   228,    -1,   239,    -1,   239,   110,   229,   111,    -1,
-     239,   110,   186,   111,    -1,   229,    -1,   107,    -1,    10,
-      -1,    11,    -1,   229,    -1,    12,    -1,    -1,   232,    -1,
-     233,   235,    -1,   115,   234,    10,   116,    -1,    -1,    94,
-      -1,    24,    -1,    80,    -1,    -1,    57,    -1,    46,    -1,
-      15,    -1,    16,    -1,    16,    -1,    -1,   239,    -1,     9,
-      -1
+      -1,   146,   138,   135,    -1,   136,    -1,   135,   136,    -1,
+     153,    -1,   183,    -1,   151,    -1,    -1,    43,    16,   137,
+      -1,   193,    -1,    -1,   139,    -1,    59,   140,   112,    -1,
+      59,    51,    -1,    -1,   141,    -1,   143,    -1,   141,   143,
+      -1,    -1,   127,    -1,   144,    51,   237,   142,    -1,   145,
+      -1,   144,   113,   145,    -1,   237,    -1,   237,   108,   109,
+      -1,   240,    -1,    -1,   147,    -1,    47,   148,   112,    -1,
+      47,    22,   112,    -1,    47,   112,    -1,   149,    -1,   148,
+     113,   149,    -1,   237,    -1,   237,   108,   109,    -1,   240,
+      -1,   108,   200,   109,    -1,   237,   152,     3,   150,    -1,
+     192,    -1,   177,    -1,   177,   108,   156,   109,    -1,   237,
+       3,   173,    -1,   237,     3,   163,    -1,   237,   108,   154,
+     109,     3,   173,    -1,   237,   108,   154,   109,     3,   163,
+      -1,   155,    -1,   154,   113,   155,    -1,   237,    -1,   237,
+     114,   240,    -1,   237,   114,   237,    -1,   190,   114,   240,
+      -1,   190,   114,   237,    -1,   157,    -1,   156,   113,   157,
+      -1,   173,    -1,   186,    -1,   240,    -1,   150,    -1,    -1,
+     159,    -1,   160,    -1,   159,   113,   160,    -1,   240,   173,
+     225,    -1,   173,   225,    -1,    35,    73,   173,    -1,   172,
+      -1,   162,    -1,   161,   113,   162,    -1,   240,   173,    -1,
+     172,    -1,   173,    -1,    33,   108,   165,   109,   167,    -1,
+      -1,    93,    -1,   166,    -1,   165,   113,   166,    -1,    17,
+     225,    -1,    18,   173,   164,   225,    -1,    18,   181,   225,
+      -1,    18,   182,   225,    -1,    17,   181,   225,    -1,    17,
+     173,   225,    -1,    17,   182,   225,    -1,    -1,   168,    -1,
+      -1,   100,    87,   108,   169,   170,   109,    -1,   171,    -1,
+     170,   171,    -1,     4,    -1,    19,    -1,   180,    -1,   115,
+     170,   116,    -1,   107,    -1,   107,   117,   187,    -1,   107,
+     117,   230,    -1,   232,   175,   196,    -1,    -1,   174,   176,
+      -1,   152,    -1,    32,   108,   161,   109,    -1,    83,   108,
+     158,   109,    -1,    84,   108,   158,   109,    -1,    83,   196,
+      73,   239,   232,   175,    -1,    84,   196,    73,   239,   232,
+     175,    -1,    23,    -1,    23,    40,    30,   240,    -1,    61,
+      73,   177,    -1,    15,    -1,    15,   118,   237,    -1,   238,
+     118,   237,    -1,    15,   118,   240,    -1,   238,    -1,   238,
+     118,   178,    -1,   179,    -1,   178,   118,   179,    -1,   180,
+      -1,    17,    -1,    18,    -1,    17,    -1,   181,   118,    17,
+      -1,   181,   118,    18,    -1,    16,    -1,   240,   152,     3,
+     184,    -1,   186,    -1,   187,    -1,   240,   114,   184,    -1,
+      -1,   108,   185,   189,    -1,    68,    -1,    50,    -1,    91,
+      -1,     6,    -1,     8,    -1,   188,    -1,   230,    -1,   240,
+      -1,   237,   118,   240,    -1,     7,    -1,    13,    -1,    14,
+      -1,     5,    -1,   189,     5,    -1,    29,    -1,    68,    -1,
+      81,    -1,   191,    -1,    72,    86,    -1,    70,    56,    -1,
+      82,    -1,    49,    -1,    41,    76,    -1,    31,    86,    -1,
+      96,    -1,    52,    -1,   193,    -1,    63,    -1,    45,    -1,
+      27,    86,    -1,   190,    -1,   191,   227,    -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,    -1,   197,    -1,   198,    -1,   110,
+     214,   111,    -1,   199,    -1,    85,   110,   200,   111,    -1,
+     110,   200,   111,    -1,   199,   110,   200,   111,    -1,   107,
+      -1,   201,    -1,   201,   113,   107,    -1,   201,   113,   107,
+     113,   201,    -1,   202,    -1,    22,   101,   205,    -1,   203,
+      -1,   202,   194,   203,    -1,   204,    -1,   203,   195,   204,
+      -1,   205,    -1,   205,   101,   205,    -1,   206,   110,   200,
+     111,    -1,   110,   200,   111,    -1,   207,    -1,   208,    -1,
+     207,   218,   207,    -1,    66,   218,   207,    -1,   207,   218,
+      65,    -1,    66,   218,    65,    -1,   209,    -1,    85,    -1,
+      51,    -1,    50,    -1,    91,    -1,   231,    -1,   188,    -1,
+     240,    -1,   237,    -1,   100,    34,   199,    -1,   100,    35,
+     108,   210,   109,    -1,   211,    -1,   210,   113,   211,    -1,
+     107,    -1,   240,   196,   212,    -1,    -1,   213,    -1,    78,
+      -1,    20,    -1,    74,    -1,   215,    -1,   219,    -1,   217,
+      -1,    -1,    36,    30,   108,   216,   189,    -1,    37,   173,
+      -1,   106,    -1,   106,   119,    -1,   119,   106,    -1,   119,
+     106,   119,    -1,   220,    -1,   221,    -1,   108,   237,   109,
+      -1,   220,   108,   222,   109,    -1,   223,    -1,   222,   113,
+     223,    -1,   120,   224,    -1,   120,   118,   224,    -1,   240,
+      -1,   224,   118,   240,    -1,    -1,   226,    -1,    74,    -1,
+      38,   184,    -1,   108,   109,    -1,   108,   228,   109,    -1,
+     229,    -1,   228,   113,   229,    -1,   240,    -1,   240,   110,
+     230,   111,    -1,   240,   110,   187,   111,    -1,   230,    -1,
+     107,    -1,    10,    -1,    11,    -1,   230,    -1,    12,    -1,
+      -1,   233,    -1,   234,   236,    -1,   115,   235,    10,   116,
+      -1,    -1,    94,    -1,    24,    -1,    80,    -1,    -1,    57,
+      -1,    46,    -1,    15,    -1,    16,    -1,    16,    -1,    -1,
+     240,    -1,     9,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,   352,   352,   358,   364,   381,   380,   409,   411,   414,
-     418,   423,   430,   438,   443,   447,   456,   458,   466,   470,
-     478,   482,   485,   488,   492,   512,   514,   522,   531,   535,
-     550,   558,   571,   579,   578,   592,   604,   606,   608,   619,
-     624,   630,   636,   638,   641,   652,   658,   664,   671,   677,
-     686,   688,   699,   703,   706,   713,   719,   725,   732,   738,
-     747,   749,   759,   773,   783,   799,   809,   825,   831,   838,
-     848,   858,   863,   870,   877,   885,   895,   901,   907,   911,
-     919,   930,   952,   954,   956,   962,   968,   976,   982,   989,
-     994,  1000,  1006,  1012,  1015,  1021,  1031,  1033,  1036,  1044,
-    1051,  1064,  1075,  1085,  1096,  1106,  1117,  1128,  1130,  1137,
-    1135,  1144,  1149,  1155,  1160,  1163,  1167,  1172,  1181,  1190,
-    1201,  1223,  1230,  1249,  1253,  1259,  1265,  1271,  1281,  1291,
-    1297,  1308,  1322,  1331,  1341,  1351,  1361,  1369,  1390,  1399,
-    1408,  1410,  1417,  1424,  1430,  1434,  1440,  1460,  1470,  1472,
-    1473,  1480,  1480,  1485,  1492,  1498,  1503,  1507,  1511,  1514,
-    1519,  1531,  1548,  1553,  1558,  1591,  1601,  1615,  1617,  1618,
-    1619,  1620,  1621,  1622,  1623,  1624,  1625,  1626,  1627,  1628,
-    1634,  1636,  1637,  1640,  1647,  1659,  1661,  1665,  1669,  1670,
-    1671,  1672,  1673,  1677,  1678,  1679,  1680,  1684,  1685,  1692,
-    1692,  1693,  1693,  1695,  1697,  1702,  1704,  1709,  1713,  1722,
-    1726,  1731,  1736,  1739,  1745,  1755,  1757,  1762,  1764,  1769,
-    1771,  1777,  1779,  1784,  1793,  1801,  1807,  1813,  1820,  1828,
-    1836,  1845,  1850,  1854,  1859,  1865,  1870,  1871,  1872,  1885,
-    1899,  1903,  1908,  1912,  1917,  1924,  1937,  1939,  1942,  1946,
-    1949,  1956,  1958,  1959,  1964,  1962,  1974,  1982,  1984,  1985,
-    1986,  1988,  1992,  2000,  2015,  2021,  2028,  2041,  2053,  2068,
-    2072,  2089,  2094,  2097,  2102,  2124,  2129,  2134,  2140,  2146,
-    2154,  2162,  2170,  2177,  2187,  2192,  2198,  2200,  2230,  2232,
-    2235,  2242,  2248,  2250,  2251,  2252,  2255,  2257,  2258,  2261,
-    2266,  2273,  2280,  2282,  2287
+       0,   353,   353,   359,   365,   382,   381,   410,   412,   415,
+     419,   424,   431,   439,   444,   448,   457,   459,   467,   471,
+     479,   483,   486,   489,   493,   513,   515,   523,   532,   536,
+     551,   559,   572,   580,   579,   593,   605,   607,   609,   620,
+     625,   627,   629,   635,   641,   643,   646,   657,   663,   669,
+     676,   682,   691,   693,   704,   708,   711,   718,   724,   730,
+     737,   743,   752,   754,   764,   778,   788,   804,   814,   830,
+     836,   843,   853,   863,   868,   875,   882,   890,   900,   906,
+     912,   916,   924,   935,   957,   959,   961,   967,   973,   981,
+     987,   994,   999,  1005,  1011,  1017,  1020,  1026,  1036,  1038,
+    1041,  1049,  1056,  1069,  1080,  1090,  1101,  1111,  1122,  1133,
+    1135,  1142,  1140,  1149,  1154,  1160,  1165,  1168,  1172,  1177,
+    1186,  1195,  1206,  1228,  1235,  1254,  1258,  1264,  1270,  1276,
+    1286,  1296,  1302,  1313,  1327,  1336,  1346,  1356,  1366,  1374,
+    1395,  1404,  1413,  1415,  1422,  1429,  1435,  1439,  1445,  1465,
+    1475,  1477,  1478,  1485,  1485,  1490,  1497,  1503,  1508,  1512,
+    1516,  1519,  1524,  1536,  1553,  1558,  1563,  1596,  1606,  1620,
+    1622,  1623,  1624,  1625,  1626,  1627,  1628,  1629,  1630,  1631,
+    1632,  1633,  1639,  1641,  1642,  1645,  1652,  1664,  1666,  1670,
+    1674,  1675,  1676,  1677,  1678,  1682,  1683,  1684,  1685,  1689,
+    1690,  1697,  1697,  1698,  1698,  1700,  1702,  1707,  1709,  1714,
+    1718,  1727,  1731,  1736,  1741,  1744,  1750,  1760,  1762,  1767,
+    1769,  1774,  1776,  1782,  1784,  1789,  1798,  1806,  1812,  1818,
+    1825,  1833,  1841,  1850,  1855,  1859,  1864,  1870,  1875,  1876,
+    1877,  1890,  1904,  1908,  1913,  1917,  1922,  1929,  1942,  1944,
+    1947,  1951,  1954,  1961,  1963,  1964,  1969,  1967,  1979,  1987,
+    1989,  1990,  1991,  1993,  1997,  2005,  2020,  2026,  2033,  2046,
+    2058,  2073,  2077,  2094,  2099,  2102,  2107,  2129,  2134,  2139,
+    2145,  2151,  2159,  2167,  2175,  2182,  2192,  2197,  2203,  2205,
+    2235,  2237,  2240,  2247,  2253,  2255,  2256,  2257,  2260,  2262,
+    2263,  2266,  2271,  2278,  2285,  2287,  2292
 };
 #endif
 
@@ -787,30 +787,30 @@
   "ObjectIdentifierElement", "optModuleDefinitionFlags", 
   "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody", 
   "ModuleBody", "AssignmentList", "Assignment", "@2", "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", "@3", "WithSyntaxList", "WithSyntaxToken", 
-  "ExtensionAndException", "Type", "NSTD_IndirectMarker", 
-  "TypeDeclaration", "TypeDeclarationSet", "ComplexTypeReference", 
-  "ComplexTypeReferenceAmpList", "ComplexTypeReferenceElement", 
-  "PrimitiveFieldReference", "FieldName", "DefinedObjectClass", 
-  "ValueDefinition", "Value", "@4", "SimpleValue", "DefinedValue", 
-  "RestrictedCharacterStringValue", "Opaque", "BasicTypeId", 
-  "BasicTypeId_UniverationCompatible", "BasicType", "BasicString", 
-  "UnionMark", "IntersectionMark", "optConstraints", "Constraint", 
-  "SubtypeConstraint", "SetOfConstraints", "ElementSetSpecs", 
-  "ElementSetSpec", "Unions", "Intersections", "IntersectionElements", 
-  "ConstraintSubtypeElement", "ConstraintSpec", "SingleValue", 
-  "ContainedSubtype", "InnerTypeConstraint", "WithComponentsList", 
-  "WithComponentsElement", "optPresenceConstraint", "PresenceConstraint", 
-  "GeneralConstraint", "UserDefinedConstraint", "@5", 
-  "ContentsConstraint", "ConstraintRangeSpec", "TableConstraint", 
+  "ImportsDefinition", "optImportsBundleSet", "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", "@3", "WithSyntaxList", 
+  "WithSyntaxToken", "ExtensionAndException", "Type", 
+  "NSTD_IndirectMarker", "TypeDeclaration", "TypeDeclarationSet", 
+  "ComplexTypeReference", "ComplexTypeReferenceAmpList", 
+  "ComplexTypeReferenceElement", "PrimitiveFieldReference", "FieldName", 
+  "DefinedObjectClass", "ValueDefinition", "Value", "@4", "SimpleValue", 
+  "DefinedValue", "RestrictedCharacterStringValue", "Opaque", 
+  "BasicTypeId", "BasicTypeId_UniverationCompatible", "BasicType", 
+  "BasicString", "UnionMark", "IntersectionMark", "optConstraints", 
+  "Constraint", "SubtypeConstraint", "SetOfConstraints", 
+  "ElementSetSpecs", "ElementSetSpec", "Unions", "Intersections", 
+  "IntersectionElements", "ConstraintSubtypeElement", "ConstraintSpec", 
+  "SingleValue", "ContainedSubtype", "InnerTypeConstraint", 
+  "WithComponentsList", "WithComponentsElement", "optPresenceConstraint", 
+  "PresenceConstraint", "GeneralConstraint", "UserDefinedConstraint", 
+  "@5", "ContentsConstraint", "ConstraintRangeSpec", "TableConstraint", 
   "SimpleTableConstraint", "ComponentRelationConstraint", 
   "AtNotationList", "AtNotationElement", "ComponentIdList", "optMarker", 
   "Marker", "UniverationDefinition", "UniverationList", 
@@ -848,33 +848,33 @@
      127,   128,   128,   129,   129,   129,   130,   130,   131,   131,
      132,   132,   132,   132,   132,   133,   133,   134,   135,   135,
      136,   136,   136,   137,   136,   136,   138,   138,   139,   139,
-     140,   140,   141,   141,   142,   143,   143,   144,   144,   144,
-     145,   145,   146,   146,   146,   147,   147,   148,   148,   148,
-     149,   150,   151,   151,   151,   152,   152,   152,   152,   153,
-     153,   154,   154,   154,   154,   154,   155,   155,   156,   156,
-     156,   156,   157,   157,   158,   158,   159,   159,   159,   159,
-     160,   160,   161,   161,   161,   162,   163,   163,   164,   164,
-     165,   165,   165,   165,   165,   165,   165,   166,   166,   168,
-     167,   169,   169,   170,   170,   170,   170,   171,   171,   171,
-     172,   173,   174,   175,   175,   175,   175,   175,   175,   175,
-     175,   175,   176,   176,   176,   176,   176,   176,   177,   177,
-     178,   179,   179,   180,   180,   180,   181,   182,   183,   183,
-     183,   184,   183,   183,   185,   185,   185,   185,   185,   185,
-     186,   186,   187,   187,   187,   188,   188,   189,   189,   189,
-     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
-     190,   190,   190,   191,   191,   192,   192,   192,   192,   192,
-     192,   192,   192,   192,   192,   192,   192,   192,   192,   193,
+     140,   140,   141,   141,   142,   142,   143,   144,   144,   145,
+     145,   145,   146,   146,   147,   147,   147,   148,   148,   149,
+     149,   149,   150,   151,   152,   152,   152,   153,   153,   153,
+     153,   154,   154,   155,   155,   155,   155,   155,   156,   156,
+     157,   157,   157,   157,   158,   158,   159,   159,   160,   160,
+     160,   160,   161,   161,   162,   162,   162,   163,   164,   164,
+     165,   165,   166,   166,   166,   166,   166,   166,   166,   167,
+     167,   169,   168,   170,   170,   171,   171,   171,   171,   172,
+     172,   172,   173,   174,   175,   176,   176,   176,   176,   176,
+     176,   176,   176,   176,   177,   177,   177,   177,   177,   177,
+     178,   178,   179,   180,   180,   181,   181,   181,   182,   183,
+     184,   184,   184,   185,   184,   184,   186,   186,   186,   186,
+     186,   186,   187,   187,   188,   188,   188,   189,   189,   190,
+     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
+     190,   190,   191,   191,   191,   192,   192,   193,   193,   193,
+     193,   193,   193,   193,   193,   193,   193,   193,   193,   193,
      193,   194,   194,   195,   195,   196,   196,   197,   197,   198,
-     198,   199,   199,   199,   199,   200,   200,   201,   201,   202,
-     202,   203,   203,   204,   204,   204,   204,   204,   204,   204,
-     204,   204,   205,   205,   206,   206,   206,   206,   206,   207,
-     208,   208,   209,   209,   210,   210,   211,   211,   212,   212,
-     212,   213,   213,   213,   215,   214,   216,   217,   217,   217,
-     217,   218,   218,   219,   220,   221,   221,   222,   222,   223,
+     198,   199,   199,   200,   200,   200,   200,   201,   201,   202,
+     202,   203,   203,   204,   204,   205,   205,   205,   205,   205,
+     205,   205,   205,   205,   206,   206,   207,   207,   207,   207,
+     207,   208,   209,   209,   210,   210,   211,   211,   212,   212,
+     213,   213,   213,   214,   214,   214,   216,   215,   217,   218,
+     218,   218,   218,   219,   219,   220,   221,   222,   222,   223,
      223,   224,   224,   225,   225,   226,   226,   227,   227,   228,
-     228,   228,   228,   228,   229,   229,   230,   230,   231,   231,
-     232,   233,   234,   234,   234,   234,   235,   235,   235,   236,
-     236,   237,   238,   238,   239
+     228,   229,   229,   229,   229,   229,   230,   230,   231,   231,
+     232,   232,   233,   234,   235,   235,   235,   235,   236,   236,
+     236,   237,   237,   238,   239,   239,   240
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -884,33 +884,33 @@
        2,     1,     2,     1,     4,     1,     0,     1,     1,     2,
        2,     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,
+       0,     1,     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,     3,     1,     4,     3,
-       4,     1,     1,     3,     5,     1,     3,     1,     3,     1,
-       3,     1,     3,     4,     3,     1,     1,     3,     3,     3,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     5,     1,     3,     1,     3,     0,     1,     1,     1,
-       1,     1,     1,     1,     0,     5,     2,     1,     2,     2,
-       3,     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,     1,     1,     0,     1,     1,     3,     1,
+       4,     3,     4,     1,     1,     3,     5,     1,     3,     1,
+       3,     1,     3,     1,     3,     4,     3,     1,     1,     3,
+       3,     3,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     5,     1,     3,     1,     3,     0,     1,
+       1,     1,     1,     1,     1,     1,     0,     5,     2,     1,
+       2,     2,     3,     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
@@ -918,314 +918,301 @@
    means the default is an error.  */
 static const unsigned short yydefact[] =
 {
-       0,   299,   300,     0,     2,     3,     5,     1,     4,     7,
-       0,     0,     8,   304,    15,    10,     0,    11,    13,    16,
+       0,   301,   302,     0,     2,     3,     5,     1,     4,     7,
+       0,     0,     8,   306,    15,    10,     0,    11,    13,    16,
        9,    12,     0,     0,     0,     0,     0,     0,     0,    17,
       18,     0,    24,    22,    20,    23,    21,     0,    19,    14,
-      50,     0,     0,    26,    36,    51,     0,    54,     0,    55,
-      57,    59,     6,     0,     0,    37,    53,    52,     0,     0,
-      39,     0,    40,     0,    45,    47,    49,   185,     0,   186,
-     187,   188,   189,   190,   198,   191,   192,   193,   194,   195,
-     196,   197,    27,    28,    32,    30,    31,    35,     0,     0,
-      56,    58,    38,    41,     0,     0,     0,    33,    29,   288,
-     132,   301,     0,   167,     0,     0,   181,   174,   178,   180,
-     168,     0,     0,   169,   173,   177,     0,     0,    63,   183,
-     170,    62,   179,   136,     0,    42,    46,    48,    34,     0,
-     292,    66,    65,   121,   289,   296,     0,   182,   176,   175,
-     172,   171,     0,    69,     0,   170,    71,     0,   288,     0,
-     184,     0,     0,    43,    44,     0,   294,   295,   293,     0,
-       0,   203,   298,   297,   290,   133,   135,     0,     0,     0,
-       0,     0,    61,   156,   162,   157,   284,   285,   163,   164,
-     154,   155,    81,     0,    76,    78,    79,   158,   159,    80,
-     283,   275,     0,   277,   282,   279,   141,   142,   137,   138,
-     140,   134,   153,   151,   147,   148,   149,     0,   160,   288,
-     288,     0,    98,     0,   129,     0,     0,   203,   203,   123,
-     122,     0,     0,   120,   204,   205,   207,   288,    70,    75,
-      74,    73,    72,   287,     0,   234,   233,     0,   232,   235,
-       0,   211,     0,   237,     0,   212,   215,   217,   219,   221,
-       0,   225,   226,   231,   286,   236,   239,   238,    64,   288,
-     276,     0,     0,     0,     0,     0,     0,   146,   143,     0,
-     273,   271,   271,   271,   100,   272,    96,   271,   271,   107,
-       0,   291,     0,   288,     0,   288,     0,   288,     0,     0,
-       0,   288,     0,     0,     0,   251,   253,   252,   261,   262,
-       0,    68,    67,     0,   257,     0,     0,     0,     0,     0,
-      60,     0,   199,   200,     0,   201,   202,     0,     0,     0,
-       0,    77,   278,     0,     0,   160,   139,   165,   152,   161,
-     150,   274,   105,     0,   104,   106,    97,   271,   102,   103,
-       0,    95,   108,    99,     0,   117,     0,    90,    93,    94,
-     288,   131,     0,     0,    83,    84,    89,   271,   288,   302,
-       0,   302,     0,     0,   256,     0,   209,   206,     0,     0,
-     216,   258,   259,   230,   228,     0,   240,     0,   224,   213,
-     218,   220,   222,     0,   229,   227,   281,   280,   166,   144,
-     145,   101,     0,   130,     0,   124,   288,    92,   288,   125,
-     288,    87,   271,   288,   303,   126,   288,   208,   254,   263,
-       0,     0,   265,   210,   260,   244,     0,   242,   203,     0,
-     223,   109,   118,   119,    91,    88,    85,    86,   121,   121,
-       0,     0,   267,   269,   264,     0,   241,     0,   246,   214,
-       0,   127,   128,   255,   268,     0,   266,   243,   249,   250,
-     248,   245,   247,   113,   114,     0,     0,   111,   115,   270,
-       0,   110,   112,   116
+      52,     0,     0,    26,    36,    53,     0,    56,     0,    57,
+      59,    61,     6,    40,     0,    37,    55,    54,     0,     0,
+      39,     0,    41,    42,     0,    47,    49,    51,   187,     0,
+     188,   189,   190,   191,   192,   200,   193,   194,   195,   196,
+     197,   198,   199,    27,    28,    32,    30,    31,    35,     0,
+       0,    58,    60,    38,    43,     0,     0,     0,    33,    29,
+     290,   134,   303,     0,   169,     0,     0,   183,   176,   180,
+     182,   170,     0,     0,   171,   175,   179,     0,     0,    65,
+     185,   172,    64,   181,   138,     0,    44,    48,    50,    34,
+       0,   294,    68,    67,   123,   291,   298,     0,   184,   178,
+     177,   174,   173,     0,    71,     0,   172,    73,     0,   290,
+       0,   186,     0,     0,    45,    46,     0,   296,   297,   295,
+       0,     0,   205,   300,   299,   292,   135,   137,     0,     0,
+       0,     0,     0,    63,   158,   164,   159,   286,   287,   165,
+     166,   156,   157,    83,     0,    78,    80,    81,   160,   161,
+      82,   285,   277,     0,   279,   284,   281,   143,   144,   139,
+     140,   142,   136,   155,   153,   149,   150,   151,     0,   162,
+     290,   290,     0,   100,     0,   131,     0,     0,   205,   205,
+     125,   124,     0,     0,   122,   206,   207,   209,   290,    72,
+      77,    76,    75,    74,   289,     0,   236,   235,     0,   234,
+     237,     0,   213,     0,   239,     0,   214,   217,   219,   221,
+     223,     0,   227,   228,   233,   288,   238,   241,   240,    66,
+     290,   278,     0,     0,     0,     0,     0,     0,   148,   145,
+       0,   275,   273,   273,   273,   102,   274,    98,   273,   273,
+     109,     0,   293,     0,   290,     0,   290,     0,   290,     0,
+       0,     0,   290,     0,     0,     0,   253,   255,   254,   263,
+     264,     0,    70,    69,     0,   259,     0,     0,     0,     0,
+       0,    62,     0,   201,   202,     0,   203,   204,     0,     0,
+       0,     0,    79,   280,     0,     0,   162,   141,   167,   154,
+     163,   152,   276,   107,     0,   106,   108,    99,   273,   104,
+     105,     0,    97,   110,   101,     0,   119,     0,    92,    95,
+      96,   290,   133,     0,     0,    85,    86,    91,   273,   290,
+     304,     0,   304,     0,     0,   258,     0,   211,   208,     0,
+       0,   218,   260,   261,   232,   230,     0,   242,     0,   226,
+     215,   220,   222,   224,     0,   231,   229,   283,   282,   168,
+     146,   147,   103,     0,   132,     0,   126,   290,    94,   290,
+     127,   290,    89,   273,   290,   305,   128,   290,   210,   256,
+     265,     0,     0,   267,   212,   262,   246,     0,   244,   205,
+       0,   225,   111,   120,   121,    93,    90,    87,    88,   123,
+     123,     0,     0,   269,   271,   266,     0,   243,     0,   248,
+     216,     0,   129,   130,   257,   270,     0,   268,   245,   251,
+     252,   250,   247,   249,   115,   116,     0,     0,   113,   117,
+     272,     0,   112,   114,   118
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
 static const short yydefgoto[] =
 {
       -1,     3,     4,     5,     9,    11,    12,    16,    17,    28,
-      29,    30,    42,    43,    82,    83,   128,    54,    55,    61,
-     154,    62,    63,    64,    44,    45,    48,    49,   182,    84,
-     117,    85,   142,   143,   183,   184,   353,   354,   355,   346,
-     347,   131,   337,   211,   212,   341,   342,   440,   456,   457,
-     356,   357,   160,   161,   220,   118,   198,   199,   458,   272,
-     273,    86,   204,   264,   205,   206,   243,   328,   119,   120,
-     121,   122,   314,   317,   223,   224,   225,   226,   293,   245,
-     246,   247,   248,   249,   250,   251,   252,   253,   416,   417,
-     451,   452,   294,   295,   430,   296,   306,   297,   298,   299,
-     411,   412,   432,   274,   275,   150,   192,   193,   254,   255,
-     133,   134,   135,   159,   164,   256,   123,   403,   257
+      29,    30,    42,    43,    83,    84,   129,    54,    55,    61,
+      62,   155,    63,    64,    65,    44,    45,    48,    49,   183,
+      85,   118,    86,   143,   144,   184,   185,   354,   355,   356,
+     347,   348,   132,   338,   212,   213,   342,   343,   441,   457,
+     458,   357,   358,   161,   162,   221,   119,   199,   200,   459,
+     273,   274,    87,   205,   265,   206,   207,   244,   329,   120,
+     121,   122,   123,   315,   318,   224,   225,   226,   227,   294,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   417,
+     418,   452,   453,   295,   296,   431,   297,   307,   298,   299,
+     300,   412,   413,   433,   275,   276,   151,   193,   194,   255,
+     256,   134,   135,   136,   160,   165,   257,   124,   404,   258
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -282
+#define YYPACT_NINF -274
 static const short yypact[] =
 {
-     193,  -282,  -282,    28,   193,  -282,  -282,  -282,  -282,   -47,
-      13,    45,  -282,  -282,  -282,  -282,    37,  -282,   -16,   168,
-    -282,  -282,   138,    93,    83,   140,   165,   147,   223,   168,
-    -282,   155,  -282,  -282,  -282,  -282,  -282,   245,  -282,  -282,
-      64,    84,   225,  -282,   222,  -282,   176,  -282,   132,  -282,
-     196,  -282,  -282,   167,   512,  -282,  -282,  -282,   249,   202,
-    -282,    11,  -282,    65,  -282,   212,  -282,  -282,   314,  -282,
-    -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,   512,  -282,  -282,  -282,  -282,  -282,   344,   665,
-    -282,  -282,  -282,  -282,   193,   249,   234,  -282,  -282,    -8,
-     215,  -282,   262,  -282,   264,   278,  -282,  -282,  -282,  -282,
-    -282,   299,   270,  -282,  -282,  -282,   741,   354,   250,  -282,
-     255,  -282,  -282,   246,   362,   -47,  -282,  -282,  -282,   258,
-      25,  -282,  -282,  -282,  -282,   128,   249,  -282,  -282,  -282,
-    -282,  -282,   134,  -282,   254,  -282,   256,   261,    60,    70,
-    -282,   279,   224,  -282,  -282,   243,  -282,  -282,  -282,   364,
-     589,    82,  -282,  -282,  -282,  -282,  -282,   373,   741,   249,
-     249,   444,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,  -282,   159,  -282,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,   177,  -282,  -282,   268,  -282,  -282,   263,  -282,
-    -282,  -282,  -282,  -282,  -282,  -282,  -282,   265,   266,   174,
-      73,   203,  -282,   272,   339,   274,   318,   109,   112,  -282,
-    -282,   282,   191,  -282,  -282,  -282,   284,    -8,  -282,  -282,
-    -282,  -282,  -282,  -282,   300,  -282,  -282,   -61,  -282,  -282,
-     294,  -282,   444,  -282,   293,   291,   231,   235,  -282,   304,
-     301,   -61,  -282,  -282,  -282,  -282,  -282,  -282,  -282,    60,
-    -282,    92,   269,   322,   401,   400,   224,  -282,  -282,   224,
-    -282,    50,   -21,    50,  -282,  -282,   317,   -21,    50,   319,
-     243,  -282,   387,    66,   326,    47,   345,    47,   347,   444,
-     392,   309,   193,   320,   325,  -282,  -282,  -282,   321,  -282,
-     444,  -282,  -282,   472,   311,   331,   296,   323,   330,   333,
-    -282,   338,  -282,  -282,   472,  -282,  -282,   472,   472,   444,
-     312,  -282,  -282,   335,   336,  -282,  -282,  -282,   423,  -282,
-    -282,  -282,  -282,   327,  -282,  -282,  -282,    50,  -282,  -282,
-     361,  -282,  -282,  -282,   400,   332,   204,  -282,  -282,  -282,
-     309,  -282,   377,   352,   349,  -282,  -282,    50,   309,   400,
-     355,   400,   365,   367,  -282,   368,  -282,  -282,   343,   378,
-    -282,  -282,   359,  -282,  -282,   444,   284,    23,  -282,   379,
-     235,  -282,  -282,   380,  -282,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,   382,  -282,   269,  -282,    66,  -282,   309,  -282,
-      51,  -282,    50,   309,  -282,  -282,   309,  -282,  -282,  -282,
-      31,   205,  -282,  -282,  -282,  -282,   218,  -282,    82,   458,
-    -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,
-     401,   400,   375,  -282,  -282,   343,  -282,    23,   137,  -282,
-      46,  -282,  -282,   423,   375,   400,  -282,  -282,  -282,  -282,
-    -282,  -282,  -282,  -282,  -282,    46,    20,  -282,  -282,  -282,
-      17,  -282,  -282,  -282
+      77,  -274,  -274,    33,    77,  -274,  -274,  -274,  -274,   -52,
+       8,   107,  -274,  -274,  -274,  -274,    36,  -274,    42,   267,
+    -274,  -274,   149,    20,    79,    96,   132,   111,   208,   267,
+    -274,   105,  -274,  -274,  -274,  -274,  -274,   220,  -274,  -274,
+      69,    72,   193,  -274,   213,  -274,   158,  -274,   117,  -274,
+     178,  -274,  -274,   183,   478,  -274,  -274,  -274,   266,   182,
+    -274,   181,   266,  -274,   -28,  -274,   189,  -274,  -274,   292,
+    -274,  -274,  -274,  -274,  -274,  -274,  -274,  -274,  -274,  -274,
+    -274,  -274,  -274,   478,  -274,  -274,  -274,  -274,  -274,   345,
+     631,  -274,  -274,  -274,  -274,    77,   266,   201,  -274,  -274,
+      -6,   194,  -274,   236,  -274,   248,   268,  -274,  -274,  -274,
+    -274,  -274,   291,   263,  -274,  -274,  -274,   707,   348,   247,
+    -274,   251,  -274,  -274,   238,   354,   -52,  -274,  -274,  -274,
+     255,    83,  -274,  -274,  -274,  -274,    55,   266,  -274,  -274,
+    -274,  -274,  -274,   -81,  -274,   252,  -274,   253,   257,    58,
+      80,  -274,   310,   199,  -274,  -274,   241,  -274,  -274,  -274,
+     359,   555,    10,  -274,  -274,  -274,  -274,  -274,   367,   707,
+     266,   266,   229,  -274,  -274,  -274,  -274,  -274,  -274,  -274,
+    -274,  -274,  -274,  -274,    82,  -274,  -274,  -274,  -274,  -274,
+    -274,  -274,  -274,    88,  -274,  -274,   261,  -274,  -274,   259,
+    -274,  -274,  -274,  -274,  -274,  -274,  -274,  -274,   260,   265,
+     249,    41,   119,  -274,   264,   335,   273,   309,    94,   109,
+    -274,  -274,   274,   211,  -274,  -274,  -274,   278,    -6,  -274,
+    -274,  -274,  -274,  -274,  -274,   288,  -274,  -274,    74,  -274,
+    -274,   282,  -274,   229,  -274,   283,   270,   227,   235,  -274,
+     294,   293,    74,  -274,  -274,  -274,  -274,  -274,  -274,  -274,
+      58,  -274,    40,   289,   323,   388,   393,   199,  -274,  -274,
+     199,  -274,     0,    32,     0,  -274,  -274,   311,    32,     0,
+     305,   241,  -274,   376,    71,   327,    67,   334,    67,   337,
+     229,   381,   297,    77,   307,   308,  -274,  -274,  -274,   312,
+    -274,   229,  -274,  -274,   459,   302,   317,   469,   315,   321,
+     319,  -274,   324,  -274,  -274,   459,  -274,  -274,   459,   459,
+     229,   733,  -274,  -274,   326,   336,  -274,  -274,  -274,   427,
+    -274,  -274,  -274,  -274,   328,  -274,  -274,  -274,     0,  -274,
+    -274,   347,  -274,  -274,  -274,   393,   322,   122,  -274,  -274,
+    -274,   297,  -274,   365,   339,   332,  -274,  -274,     0,   297,
+     393,   340,   393,   351,   338,  -274,   341,  -274,  -274,   331,
+     352,  -274,  -274,   346,  -274,  -274,   229,   278,    16,  -274,
+     364,   235,  -274,  -274,   353,  -274,  -274,  -274,  -274,  -274,
+    -274,  -274,  -274,   377,  -274,   289,  -274,    71,  -274,   297,
+    -274,    68,  -274,     0,   297,  -274,  -274,   297,  -274,  -274,
+    -274,    12,   160,  -274,  -274,  -274,  -274,   175,  -274,    10,
+     445,  -274,  -274,  -274,  -274,  -274,  -274,  -274,  -274,  -274,
+    -274,   388,   393,   366,  -274,  -274,   331,  -274,    16,    91,
+    -274,    43,  -274,  -274,   427,   366,   393,  -274,  -274,  -274,
+    -274,  -274,  -274,  -274,  -274,  -274,    43,    22,  -274,  -274,
+    -274,    18,  -274,  -274,  -274
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short yypgoto[] =
 {
-    -282,  -282,  -282,   492,  -282,  -282,   372,  -282,   482,  -282,
-    -282,   470,  -282,  -282,  -282,   418,  -282,  -282,  -282,  -282,
-    -282,   440,  -282,   407,  -282,  -282,  -282,   445,   357,  -282,
-     -48,  -282,  -282,   337,  -282,   247,   220,  -282,   111,  -282,
-     116,   286,  -282,  -282,   236,  -282,  -282,  -282,    59,  -210,
-    -281,   -96,  -282,   -76,  -282,   233,  -282,   252,  -136,   308,
-     310,  -282,   -80,  -282,  -118,  -258,  -119,    89,   -59,   -24,
-    -282,    22,  -282,  -282,  -208,  -282,  -282,   219,  -155,   106,
-    -282,   216,   214,  -138,  -282,  -229,  -282,  -282,  -282,    95,
-    -282,  -282,  -282,  -282,  -282,  -282,   283,  -282,  -282,  -282,
-    -282,    98,   105,  -259,  -282,  -282,  -282,   276,  -141,  -282,
-    -182,  -282,  -282,  -282,  -282,     1,  -282,   178,   -10
+    -274,  -274,  -274,   482,  -274,  -274,   362,  -274,   473,  -274,
+    -274,   461,  -274,  -274,  -274,   408,  -274,  -274,  -274,  -274,
+    -274,  -274,   430,  -274,   401,  -274,  -274,  -274,   440,   355,
+    -274,   -61,  -274,  -274,   330,  -274,   240,   214,  -274,   100,
+    -274,   108,   276,  -274,  -274,   226,  -274,  -274,  -274,    52,
+    -172,  -273,   -96,  -274,   -76,  -274,   228,  -274,   250,  -136,
+     301,   304,  -274,    39,  -274,  -125,  -253,  -119,    85,   -12,
+      -7,  -274,    21,  -274,  -274,  -216,  -274,  -274,   209,  -165,
+      98,  -274,   205,   204,  -221,  -274,  -140,  -274,  -274,  -274,
+      86,  -274,  -274,  -274,  -274,  -274,  -274,   271,  -274,  -274,
+    -274,  -274,    90,    95,  -259,  -274,  -274,  -274,   275,  -141,
+    -274,   -74,  -274,  -274,  -274,  -274,     1,  -274,   166,   -10
 };
 
 /* 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 -272
+#define YYTABLE_NINF -274
 static const short yytable[] =
 {
-      18,     6,   348,   132,   323,     6,    18,   188,   194,   286,
-     288,   188,   332,   334,   335,   200,   244,   269,   338,   339,
-      13,   453,    13,    14,   453,   129,     1,     2,     7,   187,
-     186,    51,    13,   187,   196,   197,   454,   196,   197,   454,
-      13,   124,    50,    66,    89,   304,    13,    14,    51,   156,
-     453,    66,   185,   270,    65,    88,    13,   144,   305,    50,
-      13,    10,    65,   196,   197,   454,   173,   174,   175,    13,
-     176,   177,    89,   178,   179,    13,    87,   374,   391,    13,
-     176,   177,   352,    88,    19,    66,   352,   309,   269,   267,
-     268,   385,   145,    13,    22,   125,    65,   333,   401,     1,
-       2,    13,   176,   177,    87,   157,    46,   130,   -25,   144,
-     180,    41,   219,   271,   276,   348,    94,   146,   188,   158,
-     194,   324,    15,    92,   270,   188,   166,   200,   188,   461,
-     415,   302,   455,   463,   362,   455,   422,   165,   189,   195,
-     187,   186,   208,   427,   145,   369,    20,   187,    31,   431,
-     187,   181,   201,   207,   345,    32,   -82,   448,   345,   230,
-     232,   455,   130,   185,   383,   370,   130,   221,   171,   146,
-     229,   231,    33,   345,   162,   130,    13,   190,    95,   191,
-     382,   130,     1,     2,    23,   163,   330,   349,   130,   331,
-     267,   268,   222,    24,   221,   364,    47,   221,   174,   190,
-      13,   176,   177,   233,   178,   179,     1,     2,     1,     2,
-     438,   449,   269,   234,    25,   450,    26,   285,    60,   222,
-     287,   428,   222,    35,   429,    27,    37,   290,   291,    34,
-     173,   174,   175,    13,   176,   177,    36,   178,   179,     1,
-       2,   235,   236,   167,    57,    58,   462,   168,   270,   189,
-     462,   195,   325,   423,   397,   329,   208,   237,    13,   208,
-     209,   210,   402,   207,     1,     2,    39,   207,   258,    52,
-     207,    40,   259,   350,   180,   358,   238,   358,    13,   176,
-     177,    53,   239,  -271,     1,     2,   260,  -271,    56,   130,
-     261,   240,   202,   365,     1,     2,   196,   197,   241,   292,
-     349,   242,   425,   174,    59,    13,   176,   177,   233,   178,
-     179,    91,   279,   395,   434,   181,   280,   396,   435,   174,
-      96,    13,   176,   177,   233,   178,   179,   436,   307,   308,
-      97,   437,   203,   136,   393,   312,   313,   315,   316,   196,
-     197,   100,   101,   127,   389,   390,   235,    99,   137,   404,
-     138,   404,   441,   442,   139,   140,   141,   147,   148,   100,
-     101,   373,   235,   149,   151,   152,   155,   418,   169,   171,
-     170,   102,    67,   103,   213,   104,   227,   384,   262,   282,
-     266,   263,   283,   265,   325,   105,   350,   239,   281,   106,
-     358,   284,   289,   107,   300,   207,   108,    69,    70,    71,
-     433,   303,   310,   239,   311,   318,   327,   109,    72,    13,
-     336,   319,   110,    73,   111,    74,   112,   344,   359,   340,
-     361,   433,   363,    75,   130,   113,   114,   418,   388,   368,
-     371,   366,    76,   375,    77,   459,   367,   372,   377,    78,
-     115,    79,    80,    81,   378,   379,   386,   387,   392,   394,
-     398,   174,   116,    13,   176,   177,   233,   178,   179,     1,
-       2,   399,   400,   410,   405,   174,   234,    13,   176,   177,
-     233,   178,   179,     1,     2,   408,   407,   409,   414,   174,
-     234,    13,   176,   177,   233,   178,   179,     1,     2,   413,
-     421,   420,   419,   445,   235,   236,     8,   153,    21,    38,
-      98,    93,   126,    90,   172,   228,   321,   360,   235,   236,
-     237,   426,   424,   301,   460,   326,   343,   351,   277,   443,
-     278,    13,   235,   236,   237,   439,   376,     1,     2,   238,
-     380,   381,   447,   446,   320,   239,   444,   322,   237,   406,
-      67,     0,     0,   238,   240,     0,     0,     0,     0,   239,
-       0,   241,     0,     0,   242,    68,     0,   238,   240,     0,
-       0,     0,     0,   239,     0,    69,    70,    71,   242,     0,
-       0,     0,   240,     0,     0,     0,    72,     0,     0,     0,
-       0,    73,   242,    74,     0,     0,     0,     0,     0,     0,
-       0,    75,     0,     0,     0,     0,     0,     0,     0,     0,
-      76,     0,    77,     0,   100,   101,     0,    78,     0,    79,
-      80,    81,   214,     0,     0,     0,   102,    67,   103,     0,
-     104,   215,     0,     0,     0,     0,     0,     0,     0,     0,
-     105,     0,     0,     0,   106,     0,     0,     0,   107,     0,
-       0,   108,    69,    70,    71,     0,     0,     0,     0,     0,
-     216,     0,   109,    72,     0,     0,     0,   110,    73,   111,
-      74,   112,     0,     0,     0,     0,     0,     0,    75,     0,
-     113,   114,   217,   218,     0,     0,     0,    76,     0,    77,
-     100,   101,     0,     0,    78,   115,    79,    80,    81,     0,
-       0,     0,   102,    67,   103,     0,   104,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   105,     0,     0,     0,
-     106,     0,     0,     0,   107,     0,     0,   108,    69,    70,
-      71,     0,     0,     0,     0,     0,     0,     0,   109,    72,
-       0,     0,     0,   110,    73,   111,    74,   112,     0,     0,
-       0,     0,     0,     0,    75,     0,   113,   114,     0,     0,
-       0,     0,     0,    76,     0,    77,     1,     2,     0,     0,
-      78,   115,    79,    80,    81,     0,     0,     0,   102,    67,
-     103,     0,   104,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   105,     0,     0,     0,   106,     0,     0,     0,
-     107,     0,     0,   108,    69,    70,    71,     0,     0,     0,
-       0,     0,     0,     0,   109,    72,     0,     0,     0,   110,
-      73,   111,    74,   112,     0,     0,     0,     0,     0,     0,
-      75,     0,   113,   114,     0,     0,     0,     0,     0,    76,
-       0,    77,     0,     0,     0,     0,    78,   115,    79,    80,
-      81
+      18,     6,   287,   289,   133,     6,    18,   245,   189,   195,
+     324,   349,   189,   333,   335,   336,   201,    13,    14,   339,
+     340,    13,   454,    95,   187,    13,   454,   130,   168,   125,
+     188,    51,   169,     7,   188,   197,   198,   455,   270,   197,
+     198,   455,    50,    67,    90,    13,    14,   454,    51,    13,
+     177,   178,    67,   186,    66,    89,    10,   268,   269,    50,
+     197,   198,   455,    66,   174,   175,   176,    13,   177,   178,
+     270,   179,   180,    90,   271,    88,    13,    13,   310,   392,
+      13,    13,    32,   371,    89,    96,    67,     1,     2,    13,
+     177,   178,     1,     2,    46,   222,   126,    66,   383,   402,
+     220,   163,   353,   353,    88,   145,   271,   157,   181,   131,
+     146,   449,   164,   -25,   272,   277,    41,    15,   147,   189,
+     223,   195,   325,   416,   349,   363,   189,   167,   201,   189,
+     432,   462,   303,   456,   464,   187,   370,   456,   166,   190,
+     196,   188,   423,   209,   428,    20,    19,   191,   188,   182,
+     334,   188,    22,   202,   208,   384,   131,   145,   456,    31,
+     231,   233,   146,   158,   186,   450,   172,   375,    33,   451,
+     147,   230,   232,   131,   346,   346,   -84,   159,   346,   222,
+     305,   386,   131,   131,    47,    34,   131,   191,   350,   192,
+      35,   259,    13,   306,   222,   260,   365,   261,     1,     2,
+      36,   262,   286,   439,   223,   174,   175,   176,    13,   177,
+     178,    37,   179,   180,     1,     2,    39,   288,   175,   223,
+      13,   177,   178,   234,   179,   180,     1,     2,   280,    57,
+      58,   396,   281,   235,    60,   397,   175,    52,    13,   177,
+     178,   234,   179,   180,     1,     2,    40,   291,   292,   181,
+     190,   235,   196,   326,   424,   398,   330,   209,   210,   211,
+     209,   236,   237,   403,   208,   268,   269,   203,   208,   435,
+      56,   208,    53,   436,   351,    13,   359,   238,   359,   236,
+     237,     1,     2,    23,   437,   463,    59,   270,   438,   463,
+     182,    92,    24,    93,   366,   238,   239,    97,    13,   177,
+     178,   350,   240,   426,     1,     2,   331,   204,    98,   332,
+     128,   241,   137,    25,   239,    26,   308,   309,   242,   293,
+     240,   243,   138,   271,    27,     1,     2,   197,   198,   241,
+     429,   313,   314,   430,   139,   394,   242,   316,   317,   243,
+     197,   198,   101,   102,   140,   390,   391,   141,   100,   142,
+     405,   148,   405,   442,   443,   149,   152,   153,  -273,   150,
+     101,   102,  -273,   156,   131,   172,   170,   171,   419,   214,
+     228,   263,   103,    68,   104,   283,   105,   264,   266,   267,
+     282,   284,   285,   312,   290,   326,   106,   351,   301,   304,
+     107,   359,   311,   328,   108,   319,   208,   109,    70,    71,
+      72,   434,    13,   320,   337,   341,   345,   360,   110,    73,
+     362,   364,   131,   111,    74,   112,    75,   113,   367,   368,
+     369,   372,   434,   373,    76,   376,   114,   115,   419,   378,
+     379,   380,   389,    77,   393,    78,   460,   387,   399,   395,
+      79,   116,    80,    81,    82,   401,   409,   388,   400,   406,
+     410,   411,   175,   117,    13,   177,   178,   234,   179,   180,
+       1,     2,   408,   414,   421,   415,   175,   235,    13,   177,
+     178,   234,   179,   180,     1,     2,   175,   420,    13,   177,
+     178,   234,   179,   180,   446,   422,     8,    13,   154,    21,
+      38,    99,    94,     1,     2,   236,   237,   127,    91,   229,
+     322,   427,   361,   173,   302,   425,    68,   344,   461,   236,
+     237,   238,   278,   352,   327,   279,   444,   377,   440,   236,
+     381,    69,   382,   321,   448,   238,   447,   445,   407,     0,
+     239,    70,    71,    72,   374,     0,   240,   323,     0,     0,
+       0,     0,    73,     0,   239,   241,     0,    74,     0,    75,
+     240,     0,     0,     0,     0,   243,     0,    76,     0,   241,
+     240,     0,     0,     0,     0,     0,    77,     0,    78,   243,
+     101,   102,     0,    79,     0,    80,    81,    82,   215,     0,
+       0,     0,   103,    68,   104,     0,   105,   216,     0,     0,
+       0,     0,     0,     0,     0,     0,   106,     0,     0,     0,
+     107,     0,     0,     0,   108,     0,     0,   109,    70,    71,
+      72,     0,     0,     0,     0,     0,   217,     0,   110,    73,
+       0,     0,     0,   111,    74,   112,    75,   113,     0,     0,
+       0,     0,     0,     0,    76,     0,   114,   115,   218,   219,
+       0,     0,     0,    77,     0,    78,   101,   102,     0,     0,
+      79,   116,    80,    81,    82,     0,     0,     0,   103,    68,
+     104,     0,   105,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   106,     0,     0,     0,   107,     0,     0,     0,
+     108,     0,     0,   109,    70,    71,    72,     0,     0,     0,
+       0,     0,     0,     0,   110,    73,     0,     0,     0,   111,
+      74,   112,    75,   113,     0,     0,     0,     0,     0,     0,
+      76,     0,   114,   115,     0,     0,     0,     0,     0,    77,
+       0,    78,     1,     2,     0,     0,    79,   116,    80,    81,
+      82,     0,     0,     0,   103,    68,   104,     0,   105,     0,
+     175,     0,    13,   177,   178,   234,   179,   180,   106,     0,
+       0,     0,   107,     0,     0,     0,   108,     0,     0,   109,
+      70,    71,    72,     0,     0,     0,     0,     0,     0,     0,
+     110,    73,     0,     0,     0,   111,    74,   112,    75,   113,
+       0,     0,     0,   236,     0,     0,    76,     0,   114,   115,
+       0,     0,     0,     0,     0,    77,     0,    78,   385,     0,
+       0,     0,    79,   116,    80,    81,    82,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   240
 };
 
 static const short yycheck[] =
 {
-      10,     0,   283,    99,   262,     4,    16,   148,   149,   217,
-     218,   152,   271,   272,   273,   151,   171,    38,   277,   278,
-       9,     4,     9,    10,     4,    33,    15,    16,     0,   148,
-     148,    41,     9,   152,    17,    18,    19,    17,    18,    19,
-       9,    89,    41,    53,    54,   106,     9,    10,    58,    24,
-       4,    61,   148,    74,    53,    54,     9,   116,   119,    58,
-       9,   108,    61,    17,    18,    19,     6,     7,     8,     9,
-      10,    11,    82,    13,    14,     9,    54,   306,   337,     9,
-      10,    11,    35,    82,    39,    95,    35,   242,    38,    16,
-      17,   320,   116,     9,   110,    94,    95,   118,   357,    15,
-      16,     9,    10,    11,    82,    80,    22,   115,    44,   168,
-      50,    47,   160,   209,   210,   396,    51,   116,   259,    94,
-     261,   262,   109,   112,    74,   266,   136,   263,   269,   109,
-     107,   227,   115,   116,   289,   115,   394,   136,   148,   149,
-     259,   259,   152,   402,   168,   300,   109,   266,    10,   118,
-     269,    91,   151,   152,   107,    62,   109,    20,   107,   169,
-     170,   115,   115,   259,   319,   303,   115,    85,   108,   168,
-     169,   170,    89,   107,    46,   115,     9,   107,   113,   109,
-     318,   115,    15,    16,    16,    57,   266,   283,   115,   269,
-      16,    17,   110,    25,    85,   291,   112,    85,     7,   107,
-       9,    10,    11,    12,    13,    14,    15,    16,    15,    16,
-     418,    74,    38,    22,    46,    78,    48,   108,    51,   110,
-     108,   403,   110,    58,   406,    57,     3,    36,    37,    89,
-       6,     7,     8,     9,    10,    11,    89,    13,    14,    15,
-      16,    50,    51,   109,   112,   113,   456,   113,    74,   259,
-     460,   261,   262,   394,   350,   265,   266,    66,     9,   269,
-      17,    18,   358,   262,    15,    16,   111,   266,   109,    44,
-     269,    26,   113,   283,    50,   285,    85,   287,     9,    10,
-      11,    59,    91,   109,    15,    16,   109,   113,   112,   115,
-     113,   100,    68,   292,    15,    16,    17,    18,   107,   108,
-     396,   110,   398,     7,   108,     9,    10,    11,    12,    13,
-      14,   109,   109,   109,   109,    91,   113,   113,   113,     7,
-     108,     9,    10,    11,    12,    13,    14,   109,    34,    35,
-      16,   113,   108,   118,   344,   104,   105,   102,   103,    17,
-      18,    15,    16,   109,    17,    18,    50,     3,    86,   359,
-      86,   361,   428,   429,    76,    56,    86,     3,   108,    15,
-      16,    65,    50,   108,   118,     3,   108,   377,   114,   108,
-     114,    27,    28,    29,    10,    31,     3,    65,   110,    40,
-     114,   118,   108,   118,   394,    41,   396,    91,   116,    45,
-     400,    73,   110,    49,   110,   394,    52,    53,    54,    55,
-     410,   101,   109,    91,   113,   101,     5,    63,    64,     9,
-      93,   110,    68,    69,    70,    71,    72,    30,    73,   100,
-      73,   431,    30,    79,   115,    81,    82,   437,     5,   108,
-     119,   111,    88,   110,    90,   445,   111,   106,   108,    95,
-      96,    97,    98,    99,   111,   107,   111,   111,    87,   117,
-      73,     7,   108,     9,    10,    11,    12,    13,    14,    15,
-      16,   109,   113,   120,   109,     7,    22,     9,    10,    11,
-      12,    13,    14,    15,    16,   108,   111,   109,   119,     7,
-      22,     9,    10,    11,    12,    13,    14,    15,    16,   111,
-     108,   111,   113,   118,    50,    51,     4,   125,    16,    29,
-      82,    61,    95,    58,   147,   168,   259,   287,    50,    51,
-      66,   400,   396,   227,   455,   263,   280,   284,   210,   430,
-     210,     9,    50,    51,    66,   419,   307,    15,    16,    85,
-     314,   317,   437,   435,   251,    91,   431,   261,    66,   361,
-      28,    -1,    -1,    85,   100,    -1,    -1,    -1,    -1,    91,
-      -1,   107,    -1,    -1,   110,    43,    -1,    85,   100,    -1,
-      -1,    -1,    -1,    91,    -1,    53,    54,    55,   110,    -1,
-      -1,    -1,   100,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,    69,   110,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
+      10,     0,   218,   219,   100,     4,    16,   172,   149,   150,
+     263,   284,   153,   272,   273,   274,   152,     9,    10,   278,
+     279,     9,     4,    51,   149,     9,     4,    33,   109,    90,
+     149,    41,   113,     0,   153,    17,    18,    19,    38,    17,
+      18,    19,    41,    53,    54,     9,    10,     4,    58,     9,
+      10,    11,    62,   149,    53,    54,   108,    16,    17,    58,
+      17,    18,    19,    62,     6,     7,     8,     9,    10,    11,
+      38,    13,    14,    83,    74,    54,     9,     9,   243,   338,
+       9,     9,    62,   304,    83,   113,    96,    15,    16,     9,
+      10,    11,    15,    16,    22,    85,    95,    96,   319,   358,
+     161,    46,    35,    35,    83,   117,    74,    24,    50,   115,
+     117,    20,    57,    44,   210,   211,    47,   109,   117,   260,
+     110,   262,   263,   107,   397,   290,   267,   137,   264,   270,
+     118,   109,   228,   115,   116,   260,   301,   115,   137,   149,
+     150,   260,   395,   153,   403,   109,    39,   107,   267,    91,
+     118,   270,   110,   152,   153,   320,   115,   169,   115,    10,
+     170,   171,   169,    80,   260,    74,   108,   307,    89,    78,
+     169,   170,   171,   115,   107,   107,   109,    94,   107,    85,
+     106,   321,   115,   115,   112,    89,   115,   107,   284,   109,
+      58,   109,     9,   119,    85,   113,   292,   109,    15,    16,
+      89,   113,   108,   419,   110,     6,     7,     8,     9,    10,
+      11,     3,    13,    14,    15,    16,   111,   108,     7,   110,
+       9,    10,    11,    12,    13,    14,    15,    16,   109,   112,
+     113,   109,   113,    22,    51,   113,     7,    44,     9,    10,
+      11,    12,    13,    14,    15,    16,    26,    36,    37,    50,
+     260,    22,   262,   263,   395,   351,   266,   267,    17,    18,
+     270,    50,    51,   359,   263,    16,    17,    68,   267,   109,
+     112,   270,    59,   113,   284,     9,   286,    66,   288,    50,
+      51,    15,    16,    16,   109,   457,   108,    38,   113,   461,
+      91,   109,    25,   112,   293,    66,    85,   108,     9,    10,
+      11,   397,    91,   399,    15,    16,   267,   108,    16,   270,
+     109,   100,   118,    46,    85,    48,    34,    35,   107,   108,
+      91,   110,    86,    74,    57,    15,    16,    17,    18,   100,
+     404,   104,   105,   407,    86,   345,   107,   102,   103,   110,
+      17,    18,    15,    16,    76,    17,    18,    56,     3,    86,
+     360,     3,   362,   429,   430,   108,   118,     3,   109,   108,
+      15,    16,   113,   108,   115,   108,   114,   114,   378,    10,
+       3,   110,    27,    28,    29,    40,    31,   118,   118,   114,
+     116,   108,    73,   113,   110,   395,    41,   397,   110,   101,
+      45,   401,   109,     5,    49,   101,   395,    52,    53,    54,
+      55,   411,     9,   110,    93,   100,    30,    73,    63,    64,
+      73,    30,   115,    68,    69,    70,    71,    72,   111,   111,
+     108,   119,   432,   106,    79,   110,    81,    82,   438,   108,
+     111,   107,     5,    88,    87,    90,   446,   111,    73,   117,
+      95,    96,    97,    98,    99,   113,   108,   111,   109,   109,
+     109,   120,     7,   108,     9,    10,    11,    12,    13,    14,
+      15,    16,   111,   111,   111,   119,     7,    22,     9,    10,
+      11,    12,    13,    14,    15,    16,     7,   113,     9,    10,
+      11,    12,    13,    14,   118,   108,     4,     9,   126,    16,
+      29,    83,    62,    15,    16,    50,    51,    96,    58,   169,
+     260,   401,   288,   148,   228,   397,    28,   281,   456,    50,
+      51,    66,   211,   285,   264,   211,   431,   308,   420,    50,
+     315,    43,   318,   252,   438,    66,   436,   432,   362,    -1,
+      85,    53,    54,    55,    65,    -1,    91,   262,    -1,    -1,
+      -1,    -1,    64,    -1,    85,   100,    -1,    69,    -1,    71,
+      91,    -1,    -1,    -1,    -1,   110,    -1,    79,    -1,   100,
+      91,    -1,    -1,    -1,    -1,    -1,    88,    -1,    90,   110,
+      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,    -1,    -1,    63,    64,
+      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,    -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,
@@ -1234,61 +1221,70 @@
       -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
+      -1,    90,    15,    16,    -1,    -1,    95,    96,    97,    98,
+      99,    -1,    -1,    -1,    27,    28,    29,    -1,    31,    -1,
+       7,    -1,     9,    10,    11,    12,    13,    14,    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,    50,    -1,    -1,    79,    -1,    81,    82,
+      -1,    -1,    -1,    -1,    -1,    88,    -1,    90,    65,    -1,
+      -1,    -1,    95,    96,    97,    98,    99,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    91
 };
 
 /* 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,   236,     0,   124,   125,
-     108,   126,   127,     9,    10,   109,   128,   129,   239,    39,
+       0,    15,    16,   122,   123,   124,   237,     0,   124,   125,
+     108,   126,   127,     9,    10,   109,   128,   129,   240,    39,
      109,   129,   110,    16,    25,    46,    48,    57,   130,   131,
      132,    10,    62,    89,    89,    58,    89,     3,   132,   111,
-      26,    47,   133,   134,   145,   146,    22,   112,   147,   148,
-     236,   239,    44,    59,   138,   139,   112,   112,   113,   108,
-      51,   140,   142,   143,   144,   236,   239,    28,    43,    53,
-      54,    55,    64,    69,    71,    79,    88,    90,    95,    97,
-      98,    99,   135,   136,   150,   152,   182,   192,   236,   239,
-     148,   109,   112,   142,    51,   113,   108,    16,   136,     3,
-      15,    16,    27,    29,    31,    41,    45,    49,    52,    63,
-      68,    70,    72,    81,    82,    96,   108,   151,   176,   189,
-     190,   191,   192,   237,   151,   236,   144,   109,   137,    33,
-     115,   162,   172,   231,   232,   233,   118,    86,    86,    76,
-      56,    86,   153,   154,   189,   190,   236,     3,   108,   108,
-     226,   118,     3,   127,   141,   108,    24,    80,    94,   234,
-     173,   174,    46,    57,   235,   236,   239,   109,   113,   114,
-     114,   108,   149,     6,     7,     8,    10,    11,    13,    14,
-      50,    91,   149,   155,   156,   172,   185,   187,   229,   239,
-     107,   109,   227,   228,   229,   239,    17,    18,   177,   178,
-     179,   236,    68,   108,   183,   185,   186,   236,   239,    17,
-      18,   164,   165,    10,    23,    32,    61,    83,    84,   151,
-     175,    85,   110,   195,   196,   197,   198,     3,   154,   236,
-     239,   236,   239,    12,    22,    50,    51,    66,    85,    91,
-     100,   107,   110,   187,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   229,   230,   236,   239,   109,   113,
-     109,   113,   110,   118,   184,   118,   114,    16,    17,    38,
-      74,   172,   180,   181,   224,   225,   172,   180,   181,   109,
-     113,   116,    40,   108,    73,   108,   195,   108,   195,   110,
-      36,    37,   108,   199,   213,   214,   216,   218,   219,   220,
-     110,   162,   172,   101,   106,   119,   217,    34,    35,   199,
-     109,   113,   104,   105,   193,   102,   103,   194,   101,   110,
-     217,   156,   228,   186,   229,   239,   178,     5,   188,   239,
-     183,   183,   224,   118,   224,   224,    93,   163,   224,   224,
-     100,   166,   167,   165,    30,   107,   160,   161,   171,   172,
-     239,   176,    35,   157,   158,   159,   171,   172,   239,    73,
-     157,    73,   199,    30,   172,   236,   111,   111,   108,   199,
-     204,   119,   106,    65,   206,   110,   198,   108,   111,   107,
-     202,   203,   204,   199,    65,   206,   111,   111,     5,    17,
-      18,   224,    87,   239,   117,   109,   113,   172,    73,   109,
-     113,   224,   172,   238,   239,   109,   238,   111,   108,   109,
-     120,   221,   222,   111,   119,   107,   209,   210,   239,   113,
-     111,   108,   186,   229,   161,   172,   159,   224,   231,   231,
-     215,   118,   223,   239,   109,   113,   109,   113,   195,   200,
-     168,   174,   174,   188,   223,   118,   222,   210,    20,    74,
-      78,   211,   212,     4,    19,   115,   169,   170,   179,   239,
-     169,   109,   170,   116
+      26,    47,   133,   134,   146,   147,    22,   112,   148,   149,
+     237,   240,    44,    59,   138,   139,   112,   112,   113,   108,
+      51,   140,   141,   143,   144,   145,   237,   240,    28,    43,
+      53,    54,    55,    64,    69,    71,    79,    88,    90,    95,
+      97,    98,    99,   135,   136,   151,   153,   183,   193,   237,
+     240,   149,   109,   112,   143,    51,   113,   108,    16,   136,
+       3,    15,    16,    27,    29,    31,    41,    45,    49,    52,
+      63,    68,    70,    72,    81,    82,    96,   108,   152,   177,
+     190,   191,   192,   193,   238,   152,   237,   145,   109,   137,
+      33,   115,   163,   173,   232,   233,   234,   118,    86,    86,
+      76,    56,    86,   154,   155,   190,   191,   237,     3,   108,
+     108,   227,   118,     3,   127,   142,   108,    24,    80,    94,
+     235,   174,   175,    46,    57,   236,   237,   240,   109,   113,
+     114,   114,   108,   150,     6,     7,     8,    10,    11,    13,
+      14,    50,    91,   150,   156,   157,   173,   186,   188,   230,
+     240,   107,   109,   228,   229,   230,   240,    17,    18,   178,
+     179,   180,   237,    68,   108,   184,   186,   187,   237,   240,
+      17,    18,   165,   166,    10,    23,    32,    61,    83,    84,
+     152,   176,    85,   110,   196,   197,   198,   199,     3,   155,
+     237,   240,   237,   240,    12,    22,    50,    51,    66,    85,
+      91,   100,   107,   110,   188,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   230,   231,   237,   240,   109,
+     113,   109,   113,   110,   118,   185,   118,   114,    16,    17,
+      38,    74,   173,   181,   182,   225,   226,   173,   181,   182,
+     109,   113,   116,    40,   108,    73,   108,   196,   108,   196,
+     110,    36,    37,   108,   200,   214,   215,   217,   219,   220,
+     221,   110,   163,   173,   101,   106,   119,   218,    34,    35,
+     200,   109,   113,   104,   105,   194,   102,   103,   195,   101,
+     110,   218,   157,   229,   187,   230,   240,   179,     5,   189,
+     240,   184,   184,   225,   118,   225,   225,    93,   164,   225,
+     225,   100,   167,   168,   166,    30,   107,   161,   162,   172,
+     173,   240,   177,    35,   158,   159,   160,   172,   173,   240,
+      73,   158,    73,   200,    30,   173,   237,   111,   111,   108,
+     200,   205,   119,   106,    65,   207,   110,   199,   108,   111,
+     107,   203,   204,   205,   200,    65,   207,   111,   111,     5,
+      17,    18,   225,    87,   240,   117,   109,   113,   173,    73,
+     109,   113,   225,   173,   239,   240,   109,   239,   111,   108,
+     109,   120,   222,   223,   111,   119,   107,   210,   211,   240,
+     113,   111,   108,   187,   230,   162,   173,   160,   225,   232,
+     232,   216,   118,   224,   240,   109,   113,   109,   113,   196,
+     201,   169,   175,   175,   189,   224,   118,   223,   211,    20,
+      74,    78,   212,   213,     4,    19,   115,   170,   171,   180,
+     240,   170,   109,   171,   116
 };
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1839,14 +1835,14 @@
   switch (yyn)
     {
         case 2:
-#line 353 "asn1p_y.y"
+#line 354 "asn1p_y.y"
     {
 		*(void **)param = yyvsp[0].a_grammar;
 	}
     break;
 
   case 3:
-#line 359 "asn1p_y.y"
+#line 360 "asn1p_y.y"
     {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1855,7 +1851,7 @@
     break;
 
   case 4:
-#line 364 "asn1p_y.y"
+#line 365 "asn1p_y.y"
     {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
@@ -1863,12 +1859,12 @@
     break;
 
   case 5:
-#line 381 "asn1p_y.y"
+#line 382 "asn1p_y.y"
     { currentModule = asn1p_module_new(); }
     break;
 
   case 6:
-#line 386 "asn1p_y.y"
+#line 387 "asn1p_y.y"
     {
 
 		yyval.a_module = currentModule;
@@ -1889,31 +1885,31 @@
     break;
 
   case 7:
-#line 410 "asn1p_y.y"
+#line 411 "asn1p_y.y"
     { yyval.a_oid = 0; }
     break;
 
   case 8:
-#line 411 "asn1p_y.y"
+#line 412 "asn1p_y.y"
     { yyval.a_oid = yyvsp[0].a_oid; }
     break;
 
   case 9:
-#line 415 "asn1p_y.y"
+#line 416 "asn1p_y.y"
     {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	}
     break;
 
   case 10:
-#line 418 "asn1p_y.y"
+#line 419 "asn1p_y.y"
     {
 		yyval.a_oid = 0;
 	}
     break;
 
   case 11:
-#line 424 "asn1p_y.y"
+#line 425 "asn1p_y.y"
     {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1923,7 +1919,7 @@
     break;
 
   case 12:
-#line 430 "asn1p_y.y"
+#line 431 "asn1p_y.y"
     {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1933,7 +1929,7 @@
     break;
 
   case 13:
-#line 439 "asn1p_y.y"
+#line 440 "asn1p_y.y"
     {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
@@ -1941,7 +1937,7 @@
     break;
 
   case 14:
-#line 443 "asn1p_y.y"
+#line 444 "asn1p_y.y"
     {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
@@ -1949,7 +1945,7 @@
     break;
 
   case 15:
-#line 447 "asn1p_y.y"
+#line 448 "asn1p_y.y"
     {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
@@ -1957,61 +1953,61 @@
     break;
 
   case 16:
-#line 457 "asn1p_y.y"
+#line 458 "asn1p_y.y"
     { yyval.a_module_flags = MSF_NOFLAGS; }
     break;
 
   case 17:
-#line 458 "asn1p_y.y"
+#line 459 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	}
     break;
 
   case 18:
-#line 467 "asn1p_y.y"
+#line 468 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	}
     break;
 
   case 19:
-#line 470 "asn1p_y.y"
+#line 471 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	}
     break;
 
   case 20:
-#line 479 "asn1p_y.y"
+#line 480 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	}
     break;
 
   case 21:
-#line 482 "asn1p_y.y"
+#line 483 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	}
     break;
 
   case 22:
-#line 485 "asn1p_y.y"
+#line 486 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	}
     break;
 
   case 23:
-#line 488 "asn1p_y.y"
+#line 489 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	}
     break;
 
   case 24:
-#line 492 "asn1p_y.y"
+#line 493 "asn1p_y.y"
     {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -2030,19 +2026,19 @@
     break;
 
   case 25:
-#line 513 "asn1p_y.y"
+#line 514 "asn1p_y.y"
     { yyval.a_module = 0; }
     break;
 
   case 26:
-#line 514 "asn1p_y.y"
+#line 515 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 27:
-#line 523 "asn1p_y.y"
+#line 524 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next);
@@ -2052,14 +2048,14 @@
     break;
 
   case 28:
-#line 532 "asn1p_y.y"
+#line 533 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 29:
-#line 535 "asn1p_y.y"
+#line 536 "asn1p_y.y"
     {
 		if(yyvsp[-1].a_module) {
 			yyval.a_module = yyvsp[-1].a_module;
@@ -2072,7 +2068,7 @@
     break;
 
   case 30:
-#line 551 "asn1p_y.y"
+#line 552 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2083,7 +2079,7 @@
     break;
 
   case 31:
-#line 558 "asn1p_y.y"
+#line 559 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2094,7 +2090,7 @@
     break;
 
   case 32:
-#line 571 "asn1p_y.y"
+#line 572 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2105,12 +2101,12 @@
     break;
 
   case 33:
-#line 579 "asn1p_y.y"
+#line 580 "asn1p_y.y"
     { asn1p_lexer_hack_push_encoding_control(); }
     break;
 
   case 34:
-#line 580 "asn1p_y.y"
+#line 581 "asn1p_y.y"
     {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -2122,7 +2118,7 @@
     break;
 
   case 35:
-#line 592 "asn1p_y.y"
+#line 593 "asn1p_y.y"
     {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -2131,12 +2127,12 @@
     break;
 
   case 36:
-#line 605 "asn1p_y.y"
+#line 606 "asn1p_y.y"
     { yyval.a_module = 0; }
     break;
 
   case 38:
-#line 609 "asn1p_y.y"
+#line 610 "asn1p_y.y"
     {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -2147,14 +2143,19 @@
     break;
 
   case 39:
-#line 619 "asn1p_y.y"
+#line 620 "asn1p_y.y"
     {
 		return yyerror("Empty IMPORTS list");
 	}
     break;
 
   case 40:
-#line 625 "asn1p_y.y"
+#line 626 "asn1p_y.y"
+    { yyval.a_module = asn1p_module_new(); }
+    break;
+
+  case 42:
+#line 630 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2162,26 +2163,26 @@
 	}
     break;
 
-  case 41:
-#line 630 "asn1p_y.y"
+  case 43:
+#line 635 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	}
     break;
 
-  case 42:
-#line 637 "asn1p_y.y"
+  case 44:
+#line 642 "asn1p_y.y"
     { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
     break;
 
-  case 43:
-#line 638 "asn1p_y.y"
+  case 45:
+#line 643 "asn1p_y.y"
     { yyval.a_aid.oid = yyvsp[0].a_oid; }
     break;
 
-  case 44:
-#line 642 "asn1p_y.y"
+  case 46:
+#line 647 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -2192,8 +2193,8 @@
 	}
     break;
 
-  case 45:
-#line 653 "asn1p_y.y"
+  case 47:
+#line 658 "asn1p_y.y"
     {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -2201,36 +2202,16 @@
 	}
     break;
 
-  case 46:
-#line 658 "asn1p_y.y"
+  case 48:
+#line 663 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	}
     break;
 
-  case 47:
-#line 665 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
-	}
-    break;
-
-  case 48:
-#line 671 "asn1p_y.y"
-    {		/* Completely equivalent to above */
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
-	}
-    break;
-
   case 49:
-#line 677 "asn1p_y.y"
+#line 670 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2240,12 +2221,32 @@
     break;
 
   case 50:
-#line 687 "asn1p_y.y"
-    { yyval.a_module = 0; }
+#line 676 "asn1p_y.y"
+    {		/* Completely equivalent to above */
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->expr_type = A1TC_REFERENCE;
+	}
     break;
 
   case 51:
-#line 688 "asn1p_y.y"
+#line 682 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[0].tv_str;
+		yyval.a_expr->expr_type = A1TC_REFERENCE;
+	}
+    break;
+
+  case 52:
+#line 692 "asn1p_y.y"
+    { yyval.a_module = 0; }
+    break;
+
+  case 53:
+#line 693 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2257,22 +2258,22 @@
 	}
     break;
 
-  case 52:
-#line 700 "asn1p_y.y"
+  case 54:
+#line 705 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	}
     break;
 
-  case 53:
-#line 703 "asn1p_y.y"
+  case 55:
+#line 708 "asn1p_y.y"
     {
 		yyval.a_xports = 0;
 	}
     break;
 
-  case 54:
-#line 706 "asn1p_y.y"
+  case 56:
+#line 711 "asn1p_y.y"
     {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -2280,8 +2281,8 @@
 	}
     break;
 
-  case 55:
-#line 714 "asn1p_y.y"
+  case 57:
+#line 719 "asn1p_y.y"
     {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -2289,36 +2290,16 @@
 	}
     break;
 
-  case 56:
-#line 719 "asn1p_y.y"
+  case 58:
+#line 724 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	}
     break;
 
-  case 57:
-#line 726 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
-	}
-    break;
-
-  case 58:
-#line 732 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
-	}
-    break;
-
   case 59:
-#line 738 "asn1p_y.y"
+#line 731 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2328,12 +2309,32 @@
     break;
 
   case 60:
-#line 747 "asn1p_y.y"
-    { yyval.a_constr = yyvsp[-1].a_constr; }
+#line 737 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+	}
     break;
 
   case 61:
-#line 750 "asn1p_y.y"
+#line 743 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[0].tv_str;
+		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+	}
+    break;
+
+  case 62:
+#line 752 "asn1p_y.y"
+    { yyval.a_constr = yyvsp[-1].a_constr; }
+    break;
+
+  case 63:
+#line 755 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2343,15 +2344,15 @@
 	}
     break;
 
-  case 62:
-#line 760 "asn1p_y.y"
+  case 64:
+#line 765 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
-  case 63:
-#line 773 "asn1p_y.y"
+  case 65:
+#line 778 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2361,8 +2362,8 @@
 	}
     break;
 
-  case 64:
-#line 783 "asn1p_y.y"
+  case 66:
+#line 788 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2373,8 +2374,8 @@
 	}
     break;
 
-  case 65:
-#line 803 "asn1p_y.y"
+  case 67:
+#line 808 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2383,8 +2384,8 @@
 	}
     break;
 
-  case 66:
-#line 809 "asn1p_y.y"
+  case 68:
+#line 814 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2393,26 +2394,26 @@
 	}
     break;
 
-  case 67:
-#line 825 "asn1p_y.y"
-    {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
-		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
-	}
-    break;
-
-  case 68:
-#line 831 "asn1p_y.y"
-    {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
-		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
-	}
-    break;
-
   case 69:
-#line 839 "asn1p_y.y"
+#line 830 "asn1p_y.y"
+    {
+		yyval.a_expr = yyvsp[0].a_expr;
+		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
+		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
+	}
+    break;
+
+  case 70:
+#line 836 "asn1p_y.y"
+    {
+		yyval.a_expr = yyvsp[0].a_expr;
+		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
+		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
+	}
+    break;
+
+  case 71:
+#line 844 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -2424,8 +2425,8 @@
 	}
     break;
 
-  case 70:
-#line 848 "asn1p_y.y"
+  case 72:
+#line 853 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -2436,50 +2437,38 @@
 	}
     break;
 
-  case 71:
-#line 859 "asn1p_y.y"
+  case 73:
+#line 864 "asn1p_y.y"
     {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	}
     break;
 
-  case 72:
-#line 863 "asn1p_y.y"
-    {
-		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
-		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
-	}
-    break;
-
-  case 73:
-#line 870 "asn1p_y.y"
-    {
-		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
-		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
-	}
-    break;
-
   case 74:
-#line 877 "asn1p_y.y"
+#line 868 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor,
-			ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
+		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
 		checkmem(ret == 0);
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	}
     break;
 
   case 75:
-#line 885 "asn1p_y.y"
+#line 875 "asn1p_y.y"
+    {
+		int ret;
+		yyval.a_parg.governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
+		checkmem(ret == 0);
+		yyval.a_parg.argument = yyvsp[0].tv_str;
+	}
+    break;
+
+  case 76:
+#line 882 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2490,8 +2479,20 @@
 	}
     break;
 
-  case 76:
-#line 896 "asn1p_y.y"
+  case 77:
+#line 890 "asn1p_y.y"
+    {
+		int ret;
+		yyval.a_parg.governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component(yyval.a_parg.governor,
+			ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
+		checkmem(ret == 0);
+		yyval.a_parg.argument = yyvsp[0].tv_str;
+	}
+    break;
+
+  case 78:
+#line 901 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2499,23 +2500,23 @@
 	}
     break;
 
-  case 77:
-#line 901 "asn1p_y.y"
+  case 79:
+#line 906 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	}
     break;
 
-  case 78:
-#line 908 "asn1p_y.y"
+  case 80:
+#line 913 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
-  case 79:
-#line 911 "asn1p_y.y"
+  case 81:
+#line 916 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2526,8 +2527,8 @@
 	}
     break;
 
-  case 80:
-#line 919 "asn1p_y.y"
+  case 82:
+#line 924 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		yyval.a_expr = NEW_EXPR();
@@ -2541,8 +2542,8 @@
 	}
     break;
 
-  case 81:
-#line 930 "asn1p_y.y"
+  case 83:
+#line 935 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->expr_type = A1TC_VALUESET;
@@ -2551,18 +2552,18 @@
 	}
     break;
 
-  case 82:
-#line 953 "asn1p_y.y"
+  case 84:
+#line 958 "asn1p_y.y"
     { yyval.a_expr = NEW_EXPR(); }
     break;
 
-  case 83:
-#line 954 "asn1p_y.y"
+  case 85:
+#line 959 "asn1p_y.y"
     { yyval.a_expr = yyvsp[0].a_expr; }
     break;
 
-  case 84:
-#line 957 "asn1p_y.y"
+  case 86:
+#line 962 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2570,16 +2571,16 @@
 	}
     break;
 
-  case 85:
-#line 962 "asn1p_y.y"
+  case 87:
+#line 967 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	}
     break;
 
-  case 86:
-#line 969 "asn1p_y.y"
+  case 88:
+#line 974 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2589,8 +2590,8 @@
 	}
     break;
 
-  case 87:
-#line 976 "asn1p_y.y"
+  case 89:
+#line 981 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -2599,8 +2600,8 @@
 	}
     break;
 
-  case 88:
-#line 982 "asn1p_y.y"
+  case 90:
+#line 987 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2610,15 +2611,15 @@
 	}
     break;
 
-  case 89:
-#line 989 "asn1p_y.y"
+  case 91:
+#line 994 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
-  case 90:
-#line 995 "asn1p_y.y"
+  case 92:
+#line 1000 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2626,16 +2627,16 @@
 	}
     break;
 
-  case 91:
-#line 1000 "asn1p_y.y"
+  case 93:
+#line 1005 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	}
     break;
 
-  case 92:
-#line 1007 "asn1p_y.y"
+  case 94:
+#line 1012 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2643,23 +2644,23 @@
 	}
     break;
 
-  case 93:
-#line 1012 "asn1p_y.y"
+  case 95:
+#line 1017 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
-  case 94:
-#line 1015 "asn1p_y.y"
+  case 96:
+#line 1020 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
 	}
     break;
 
-  case 95:
-#line 1022 "asn1p_y.y"
+  case 97:
+#line 1027 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2669,18 +2670,18 @@
 	}
     break;
 
-  case 96:
-#line 1032 "asn1p_y.y"
+  case 98:
+#line 1037 "asn1p_y.y"
     { yyval.a_int = 0; }
     break;
 
-  case 97:
-#line 1033 "asn1p_y.y"
+  case 99:
+#line 1038 "asn1p_y.y"
     { yyval.a_int = 1; }
     break;
 
-  case 98:
-#line 1037 "asn1p_y.y"
+  case 100:
+#line 1042 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2690,16 +2691,16 @@
 	}
     break;
 
-  case 99:
-#line 1044 "asn1p_y.y"
+  case 101:
+#line 1049 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	}
     break;
 
-  case 100:
-#line 1054 "asn1p_y.y"
+  case 102:
+#line 1059 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2710,8 +2711,8 @@
 	}
     break;
 
-  case 101:
-#line 1064 "asn1p_y.y"
+  case 103:
+#line 1069 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -2723,8 +2724,8 @@
 	}
     break;
 
-  case 102:
-#line 1075 "asn1p_y.y"
+  case 104:
+#line 1080 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2735,8 +2736,8 @@
 	}
     break;
 
-  case 103:
-#line 1085 "asn1p_y.y"
+  case 105:
+#line 1090 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2748,8 +2749,8 @@
 	}
     break;
 
-  case 104:
-#line 1096 "asn1p_y.y"
+  case 106:
+#line 1101 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2760,8 +2761,8 @@
 	}
     break;
 
-  case 105:
-#line 1106 "asn1p_y.y"
+  case 107:
+#line 1111 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2773,8 +2774,8 @@
 	}
     break;
 
-  case 106:
-#line 1117 "asn1p_y.y"
+  case 108:
+#line 1122 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2786,108 +2787,82 @@
 	}
     break;
 
-  case 107:
-#line 1129 "asn1p_y.y"
+  case 109:
+#line 1134 "asn1p_y.y"
     { yyval.a_wsynt = 0; }
     break;
 
-  case 108:
-#line 1130 "asn1p_y.y"
+  case 110:
+#line 1135 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	}
     break;
 
-  case 109:
-#line 1137 "asn1p_y.y"
+  case 111:
+#line 1142 "asn1p_y.y"
     { asn1p_lexer_hack_enable_with_syntax(); }
     break;
 
-  case 110:
-#line 1139 "asn1p_y.y"
+  case 112:
+#line 1144 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	}
     break;
 
-  case 111:
-#line 1145 "asn1p_y.y"
+  case 113:
+#line 1150 "asn1p_y.y"
     {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	}
     break;
 
-  case 112:
-#line 1149 "asn1p_y.y"
+  case 114:
+#line 1154 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	}
     break;
 
-  case 113:
-#line 1156 "asn1p_y.y"
+  case 115:
+#line 1161 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
 		yyval.a_wchunk->type = WC_WHITESPACE;
 	}
     break;
 
-  case 114:
-#line 1160 "asn1p_y.y"
+  case 116:
+#line 1165 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
 	}
     break;
 
-  case 115:
-#line 1163 "asn1p_y.y"
+  case 117:
+#line 1168 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
 		yyval.a_wchunk->type = WC_FIELD;
 	}
     break;
 
-  case 116:
-#line 1167 "asn1p_y.y"
+  case 118:
+#line 1172 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
 	}
     break;
 
-  case 117:
-#line 1173 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	}
-    break;
-
-  case 118:
-#line 1181 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->value = yyvsp[0].a_value;
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	}
-    break;
-
   case 119:
-#line 1190 "asn1p_y.y"
+#line 1178 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = strdup("...");
-		yyval.a_expr->value = yyvsp[0].a_value;
 		checkmem(yyval.a_expr->Identifier);
 		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
 		yyval.a_expr->meta_type = AMT_TYPE;
@@ -2895,7 +2870,33 @@
     break;
 
   case 120:
-#line 1202 "asn1p_y.y"
+#line 1186 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->value = yyvsp[0].a_value;
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	}
+    break;
+
+  case 121:
+#line 1195 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
+		yyval.a_expr->value = yyvsp[0].a_value;
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	}
+    break;
+
+  case 122:
+#line 1207 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2917,16 +2918,16 @@
 	}
     break;
 
-  case 121:
-#line 1224 "asn1p_y.y"
+  case 123:
+#line 1229 "asn1p_y.y"
     {
 		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
 	}
     break;
 
-  case 122:
-#line 1231 "asn1p_y.y"
+  case 124:
+#line 1236 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2945,15 +2946,15 @@
 	}
     break;
 
-  case 123:
-#line 1250 "asn1p_y.y"
+  case 125:
+#line 1255 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
-  case 124:
-#line 1253 "asn1p_y.y"
+  case 126:
+#line 1258 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2962,8 +2963,8 @@
 	}
     break;
 
-  case 125:
-#line 1259 "asn1p_y.y"
+  case 127:
+#line 1264 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2972,8 +2973,8 @@
 	}
     break;
 
-  case 126:
-#line 1265 "asn1p_y.y"
+  case 128:
+#line 1270 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2982,8 +2983,8 @@
 	}
     break;
 
-  case 127:
-#line 1271 "asn1p_y.y"
+  case 129:
+#line 1276 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2996,8 +2997,8 @@
 	}
     break;
 
-  case 128:
-#line 1281 "asn1p_y.y"
+  case 130:
+#line 1286 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3010,8 +3011,8 @@
 	}
     break;
 
-  case 129:
-#line 1291 "asn1p_y.y"
+  case 131:
+#line 1296 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3020,8 +3021,8 @@
 	}
     break;
 
-  case 130:
-#line 1297 "asn1p_y.y"
+  case 132:
+#line 1302 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_expr = NEW_EXPR();
@@ -3035,8 +3036,8 @@
 	}
     break;
 
-  case 131:
-#line 1308 "asn1p_y.y"
+  case 133:
+#line 1313 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3046,8 +3047,8 @@
 	}
     break;
 
-  case 132:
-#line 1323 "asn1p_y.y"
+  case 134:
+#line 1328 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3058,36 +3059,36 @@
 	}
     break;
 
-  case 133:
-#line 1331 "asn1p_y.y"
-    {
-		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		free(yyvsp[-2].tv_str);
-	}
-    break;
-
-  case 134:
-#line 1341 "asn1p_y.y"
-    {
-		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		free(yyvsp[-2].tv_str);
-	}
-    break;
-
   case 135:
-#line 1351 "asn1p_y.y"
+#line 1336 "asn1p_y.y"
+    {
+		int ret;
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		checkmem(yyval.a_ref);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		free(yyvsp[-2].tv_str);
+	}
+    break;
+
+  case 136:
+#line 1346 "asn1p_y.y"
+    {
+		int ret;
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		checkmem(yyval.a_ref);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		free(yyvsp[-2].tv_str);
+	}
+    break;
+
+  case 137:
+#line 1356 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3100,8 +3101,8 @@
 	}
     break;
 
-  case 136:
-#line 1361 "asn1p_y.y"
+  case 138:
+#line 1366 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3112,8 +3113,8 @@
 	}
     break;
 
-  case 137:
-#line 1369 "asn1p_y.y"
+  case 139:
+#line 1374 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -3135,8 +3136,8 @@
 	}
     break;
 
-  case 138:
-#line 1391 "asn1p_y.y"
+  case 140:
+#line 1396 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3147,8 +3148,8 @@
 	}
     break;
 
-  case 139:
-#line 1399 "asn1p_y.y"
+  case 141:
+#line 1404 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -3158,56 +3159,56 @@
 	}
     break;
 
-  case 141:
-#line 1412 "asn1p_y.y"
+  case 143:
+#line 1417 "asn1p_y.y"
     {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	}
     break;
 
-  case 142:
-#line 1417 "asn1p_y.y"
+  case 144:
+#line 1422 "asn1p_y.y"
     {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	}
     break;
 
-  case 143:
-#line 1426 "asn1p_y.y"
+  case 145:
+#line 1431 "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 144:
-#line 1430 "asn1p_y.y"
+  case 146:
+#line 1435 "asn1p_y.y"
     {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
 	}
     break;
 
-  case 145:
-#line 1434 "asn1p_y.y"
+  case 147:
+#line 1439 "asn1p_y.y"
     {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
 	}
     break;
 
-  case 146:
-#line 1441 "asn1p_y.y"
+  case 148:
+#line 1446 "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 147:
-#line 1461 "asn1p_y.y"
+  case 149:
+#line 1466 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -3217,8 +3218,8 @@
 	}
     break;
 
-  case 150:
-#line 1473 "asn1p_y.y"
+  case 152:
+#line 1478 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3228,13 +3229,13 @@
 	}
     break;
 
-  case 151:
-#line 1480 "asn1p_y.y"
+  case 153:
+#line 1485 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
-  case 152:
-#line 1480 "asn1p_y.y"
+  case 154:
+#line 1485 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -3242,8 +3243,8 @@
 	}
     break;
 
-  case 153:
-#line 1485 "asn1p_y.y"
+  case 155:
+#line 1490 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3251,8 +3252,8 @@
 	}
     break;
 
-  case 154:
-#line 1493 "asn1p_y.y"
+  case 156:
+#line 1498 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3260,8 +3261,8 @@
 	}
     break;
 
-  case 155:
-#line 1498 "asn1p_y.y"
+  case 157:
+#line 1503 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3269,38 +3270,38 @@
 	}
     break;
 
-  case 156:
-#line 1503 "asn1p_y.y"
+  case 158:
+#line 1508 "asn1p_y.y"
     {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	}
     break;
 
-  case 157:
-#line 1507 "asn1p_y.y"
+  case 159:
+#line 1512 "asn1p_y.y"
     {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	}
     break;
 
-  case 158:
-#line 1511 "asn1p_y.y"
+  case 160:
+#line 1516 "asn1p_y.y"
     {
 		yyval.a_value = yyval.a_value;
 	}
     break;
 
-  case 159:
-#line 1514 "asn1p_y.y"
+  case 161:
+#line 1519 "asn1p_y.y"
     {
 		yyval.a_value = yyvsp[0].a_value;
 	}
     break;
 
-  case 160:
-#line 1520 "asn1p_y.y"
+  case 162:
+#line 1525 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3314,8 +3315,8 @@
 	}
     break;
 
-  case 161:
-#line 1531 "asn1p_y.y"
+  case 163:
+#line 1536 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3332,16 +3333,16 @@
 	}
     break;
 
-  case 162:
-#line 1549 "asn1p_y.y"
+  case 164:
+#line 1554 "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 163:
-#line 1553 "asn1p_y.y"
+  case 165:
+#line 1558 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -3349,8 +3350,8 @@
 	}
     break;
 
-  case 164:
-#line 1558 "asn1p_y.y"
+  case 166:
+#line 1563 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -3358,8 +3359,8 @@
 	}
     break;
 
-  case 165:
-#line 1592 "asn1p_y.y"
+  case 167:
+#line 1597 "asn1p_y.y"
     {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -3371,8 +3372,8 @@
 	}
     break;
 
-  case 166:
-#line 1601 "asn1p_y.y"
+  case 168:
+#line 1606 "asn1p_y.y"
     {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -3387,88 +3388,88 @@
 	}
     break;
 
-  case 167:
-#line 1616 "asn1p_y.y"
+  case 169:
+#line 1621 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_BOOLEAN; }
     break;
 
-  case 168:
-#line 1617 "asn1p_y.y"
+  case 170:
+#line 1622 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_NULL; }
     break;
 
-  case 169:
-#line 1618 "asn1p_y.y"
+  case 171:
+#line 1623 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_REAL; }
     break;
 
-  case 170:
-#line 1619 "asn1p_y.y"
-    { yyval.a_type = yyvsp[0].a_type; }
-    break;
-
-  case 171:
-#line 1620 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_OCTET_STRING; }
-    break;
-
   case 172:
-#line 1621 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
+#line 1624 "asn1p_y.y"
+    { yyval.a_type = yyvsp[0].a_type; }
     break;
 
   case 173:
-#line 1622 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
+#line 1625 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_OCTET_STRING; }
     break;
 
   case 174:
-#line 1623 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_EXTERNAL; }
+#line 1626 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
     break;
 
   case 175:
-#line 1624 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
+#line 1627 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
     break;
 
   case 176:
-#line 1625 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
+#line 1628 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_EXTERNAL; }
     break;
 
   case 177:
-#line 1626 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_UTCTime; }
+#line 1629 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
     break;
 
   case 178:
-#line 1627 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_GeneralizedTime; }
+#line 1630 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
     break;
 
   case 179:
-#line 1628 "asn1p_y.y"
-    { yyval.a_type = yyvsp[0].a_type; }
+#line 1631 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_UTCTime; }
     break;
 
   case 180:
-#line 1635 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_INTEGER; }
+#line 1632 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_GeneralizedTime; }
     break;
 
   case 181:
-#line 1636 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_ENUMERATED; }
+#line 1633 "asn1p_y.y"
+    { yyval.a_type = yyvsp[0].a_type; }
     break;
 
   case 182:
-#line 1637 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_BIT_STRING; }
+#line 1640 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_INTEGER; }
     break;
 
   case 183:
 #line 1641 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_ENUMERATED; }
+    break;
+
+  case 184:
+#line 1642 "asn1p_y.y"
+    { yyval.a_type = ASN_BASIC_BIT_STRING; }
+    break;
+
+  case 185:
+#line 1646 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3477,8 +3478,8 @@
 	}
     break;
 
-  case 184:
-#line 1647 "asn1p_y.y"
+  case 186:
+#line 1652 "asn1p_y.y"
     {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -3491,116 +3492,116 @@
 	}
     break;
 
-  case 185:
-#line 1660 "asn1p_y.y"
+  case 187:
+#line 1665 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_BMPString; }
     break;
 
-  case 186:
-#line 1661 "asn1p_y.y"
+  case 188:
+#line 1666 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	}
     break;
 
-  case 187:
-#line 1665 "asn1p_y.y"
+  case 189:
+#line 1670 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	}
     break;
 
-  case 188:
-#line 1669 "asn1p_y.y"
+  case 190:
+#line 1674 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_IA5String; }
     break;
 
-  case 189:
-#line 1670 "asn1p_y.y"
+  case 191:
+#line 1675 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_ISO646String; }
     break;
 
-  case 190:
-#line 1671 "asn1p_y.y"
+  case 192:
+#line 1676 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_NumericString; }
     break;
 
-  case 191:
-#line 1672 "asn1p_y.y"
+  case 193:
+#line 1677 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_PrintableString; }
     break;
 
-  case 192:
-#line 1673 "asn1p_y.y"
+  case 194:
+#line 1678 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	}
     break;
 
-  case 193:
-#line 1677 "asn1p_y.y"
+  case 195:
+#line 1682 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_TeletexString; }
     break;
 
-  case 194:
-#line 1678 "asn1p_y.y"
+  case 196:
+#line 1683 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_UniversalString; }
     break;
 
-  case 195:
-#line 1679 "asn1p_y.y"
+  case 197:
+#line 1684 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_UTF8String; }
     break;
 
-  case 196:
-#line 1680 "asn1p_y.y"
+  case 198:
+#line 1685 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	}
     break;
 
-  case 197:
-#line 1684 "asn1p_y.y"
+  case 199:
+#line 1689 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_VisibleString; }
     break;
 
-  case 198:
-#line 1685 "asn1p_y.y"
+  case 200:
+#line 1690 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_ObjectDescriptor; }
     break;
 
-  case 203:
-#line 1696 "asn1p_y.y"
+  case 205:
+#line 1701 "asn1p_y.y"
     { yyval.a_constr = 0; }
     break;
 
-  case 204:
-#line 1697 "asn1p_y.y"
+  case 206:
+#line 1702 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 206:
-#line 1704 "asn1p_y.y"
+  case 208:
+#line 1709 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	}
     break;
 
-  case 207:
-#line 1710 "asn1p_y.y"
+  case 209:
+#line 1715 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	}
     break;
 
-  case 208:
-#line 1713 "asn1p_y.y"
+  case 210:
+#line 1718 "asn1p_y.y"
     {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -3610,37 +3611,37 @@
 	}
     break;
 
-  case 209:
-#line 1723 "asn1p_y.y"
+  case 211:
+#line 1728 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	}
     break;
 
-  case 210:
-#line 1726 "asn1p_y.y"
+  case 212:
+#line 1731 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	}
     break;
 
-  case 211:
-#line 1732 "asn1p_y.y"
+  case 213:
+#line 1737 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		yyval.a_constr->type = ACT_EL_EXT;
 	}
     break;
 
-  case 212:
-#line 1736 "asn1p_y.y"
+  case 214:
+#line 1741 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 213:
-#line 1739 "asn1p_y.y"
+  case 215:
+#line 1744 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3649,8 +3650,8 @@
 	}
     break;
 
-  case 214:
-#line 1745 "asn1p_y.y"
+  case 216:
+#line 1750 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3661,36 +3662,36 @@
 	}
     break;
 
-  case 216:
-#line 1757 "asn1p_y.y"
+  case 218:
+#line 1762 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	}
     break;
 
-  case 218:
-#line 1764 "asn1p_y.y"
+  case 220:
+#line 1769 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
-  case 220:
-#line 1771 "asn1p_y.y"
+  case 222:
+#line 1776 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
-  case 222:
-#line 1779 "asn1p_y.y"
+  case 224:
+#line 1784 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
-  case 223:
-#line 1785 "asn1p_y.y"
+  case 225:
+#line 1790 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3701,8 +3702,8 @@
 	}
     break;
 
-  case 224:
-#line 1793 "asn1p_y.y"
+  case 226:
+#line 1798 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3713,8 +3714,8 @@
 	}
     break;
 
-  case 225:
-#line 1801 "asn1p_y.y"
+  case 227:
+#line 1806 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3723,8 +3724,8 @@
 	}
     break;
 
-  case 226:
-#line 1807 "asn1p_y.y"
+  case 228:
+#line 1812 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3733,43 +3734,43 @@
 	}
     break;
 
-  case 227:
-#line 1813 "asn1p_y.y"
-    {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-	}
-    break;
-
-  case 228:
-#line 1820 "asn1p_y.y"
-    {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-		yyval.a_constr->range_start->type = ATV_MIN;
-	}
-    break;
-
   case 229:
-#line 1828 "asn1p_y.y"
+#line 1818 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = yyvsp[-1].a_ctype;
 		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_stop->type = ATV_MAX;
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
 	}
     break;
 
   case 230:
-#line 1836 "asn1p_y.y"
+#line 1825 "asn1p_y.y"
+    {
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
+		yyval.a_constr->range_start->type = ATV_MIN;
+	}
+    break;
+
+  case 231:
+#line 1833 "asn1p_y.y"
+    {
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	}
+    break;
+
+  case 232:
+#line 1841 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3781,29 +3782,29 @@
 	}
     break;
 
-  case 231:
-#line 1845 "asn1p_y.y"
+  case 233:
+#line 1850 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 232:
-#line 1851 "asn1p_y.y"
+  case 234:
+#line 1856 "asn1p_y.y"
     {
 		yyval.a_ctype = ACT_CT_SIZE;
 	}
     break;
 
-  case 233:
-#line 1854 "asn1p_y.y"
+  case 235:
+#line 1859 "asn1p_y.y"
     {
 		yyval.a_ctype = ACT_CT_FROM;
 	}
     break;
 
-  case 234:
-#line 1860 "asn1p_y.y"
+  case 236:
+#line 1865 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3811,8 +3812,8 @@
 	}
     break;
 
-  case 235:
-#line 1865 "asn1p_y.y"
+  case 237:
+#line 1870 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -3820,8 +3821,8 @@
 	}
     break;
 
-  case 238:
-#line 1872 "asn1p_y.y"
+  case 240:
+#line 1877 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3835,8 +3836,8 @@
 	}
     break;
 
-  case 239:
-#line 1886 "asn1p_y.y"
+  case 241:
+#line 1891 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3850,36 +3851,36 @@
 	}
     break;
 
-  case 240:
-#line 1900 "asn1p_y.y"
+  case 242:
+#line 1905 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	}
     break;
 
-  case 241:
-#line 1903 "asn1p_y.y"
+  case 243:
+#line 1908 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	}
     break;
 
-  case 242:
-#line 1909 "asn1p_y.y"
+  case 244:
+#line 1914 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 243:
-#line 1912 "asn1p_y.y"
+  case 245:
+#line 1917 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
-  case 244:
-#line 1918 "asn1p_y.y"
+  case 246:
+#line 1923 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3888,8 +3889,8 @@
 	}
     break;
 
-  case 245:
-#line 1924 "asn1p_y.y"
+  case 247:
+#line 1929 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3900,44 +3901,44 @@
 	}
     break;
 
-  case 246:
-#line 1938 "asn1p_y.y"
+  case 248:
+#line 1943 "asn1p_y.y"
     { yyval.a_pres = ACPRES_DEFAULT; }
     break;
 
-  case 247:
-#line 1939 "asn1p_y.y"
+  case 249:
+#line 1944 "asn1p_y.y"
     { yyval.a_pres = yyvsp[0].a_pres; }
     break;
 
-  case 248:
-#line 1943 "asn1p_y.y"
+  case 250:
+#line 1948 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_PRESENT;
 	}
     break;
 
-  case 249:
-#line 1946 "asn1p_y.y"
+  case 251:
+#line 1951 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_ABSENT;
 	}
     break;
 
-  case 250:
-#line 1949 "asn1p_y.y"
+  case 252:
+#line 1954 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	}
     break;
 
-  case 254:
-#line 1964 "asn1p_y.y"
+  case 256:
+#line 1969 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
-  case 255:
-#line 1964 "asn1p_y.y"
+  case 257:
+#line 1969 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3948,8 +3949,8 @@
 	}
     break;
 
-  case 256:
-#line 1975 "asn1p_y.y"
+  case 258:
+#line 1980 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		yyval.a_constr->type = ACT_CT_CTNG;
@@ -3957,42 +3958,42 @@
 	}
     break;
 
-  case 257:
-#line 1983 "asn1p_y.y"
+  case 259:
+#line 1988 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_RANGE; }
     break;
 
-  case 258:
-#line 1984 "asn1p_y.y"
+  case 260:
+#line 1989 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_RLRANGE; }
     break;
 
-  case 259:
-#line 1985 "asn1p_y.y"
+  case 261:
+#line 1990 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_LLRANGE; }
     break;
 
-  case 260:
-#line 1986 "asn1p_y.y"
+  case 262:
+#line 1991 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_ULRANGE; }
     break;
 
-  case 261:
-#line 1989 "asn1p_y.y"
-    {
-		yyval.a_constr = yyvsp[0].a_constr;
-	}
-    break;
-
-  case 262:
-#line 1992 "asn1p_y.y"
-    {
-		yyval.a_constr = yyvsp[0].a_constr;
-	}
-    break;
-
   case 263:
-#line 2001 "asn1p_y.y"
+#line 1994 "asn1p_y.y"
+    {
+		yyval.a_constr = yyvsp[0].a_constr;
+	}
+    break;
+
+  case 264:
+#line 1997 "asn1p_y.y"
+    {
+		yyval.a_constr = yyvsp[0].a_constr;
+	}
+    break;
+
+  case 265:
+#line 2006 "asn1p_y.y"
     {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -4007,15 +4008,15 @@
 	}
     break;
 
-  case 264:
-#line 2016 "asn1p_y.y"
+  case 266:
+#line 2021 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	}
     break;
 
-  case 265:
-#line 2022 "asn1p_y.y"
+  case 267:
+#line 2027 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -4024,8 +4025,8 @@
 	}
     break;
 
-  case 266:
-#line 2028 "asn1p_y.y"
+  case 268:
+#line 2033 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -4036,8 +4037,8 @@
 	}
     break;
 
-  case 267:
-#line 2042 "asn1p_y.y"
+  case 269:
+#line 2047 "asn1p_y.y"
     {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -4051,8 +4052,8 @@
 	}
     break;
 
-  case 268:
-#line 2053 "asn1p_y.y"
+  case 270:
+#line 2058 "asn1p_y.y"
     {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -4067,15 +4068,15 @@
 	}
     break;
 
-  case 269:
-#line 2069 "asn1p_y.y"
+  case 271:
+#line 2074 "asn1p_y.y"
     {
 		yyval.tv_str = yyvsp[0].tv_str;
 	}
     break;
 
-  case 270:
-#line 2072 "asn1p_y.y"
+  case 272:
+#line 2077 "asn1p_y.y"
     {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -4087,52 +4088,52 @@
 	}
     break;
 
-  case 271:
-#line 2090 "asn1p_y.y"
+  case 273:
+#line 2095 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	}
     break;
 
-  case 272:
-#line 2094 "asn1p_y.y"
+  case 274:
+#line 2099 "asn1p_y.y"
     { yyval.a_marker = yyvsp[0].a_marker; }
     break;
 
-  case 273:
-#line 2098 "asn1p_y.y"
+  case 275:
+#line 2103 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
 		yyval.a_marker.default_value = 0;
 	}
     break;
 
-  case 274:
-#line 2102 "asn1p_y.y"
+  case 276:
+#line 2107 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	}
     break;
 
-  case 275:
-#line 2125 "asn1p_y.y"
+  case 277:
+#line 2130 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
 	}
     break;
 
-  case 276:
-#line 2129 "asn1p_y.y"
+  case 278:
+#line 2134 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	}
     break;
 
-  case 277:
-#line 2135 "asn1p_y.y"
+  case 279:
+#line 2140 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4140,16 +4141,16 @@
 	}
     break;
 
-  case 278:
-#line 2140 "asn1p_y.y"
+  case 280:
+#line 2145 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	}
     break;
 
-  case 279:
-#line 2147 "asn1p_y.y"
+  case 281:
+#line 2152 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4159,32 +4160,32 @@
 	}
     break;
 
-  case 280:
-#line 2154 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
-	}
-    break;
-
-  case 281:
-#line 2162 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
-	}
-    break;
-
   case 282:
-#line 2170 "asn1p_y.y"
+#line 2159 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
+		yyval.a_expr->meta_type = AMT_VALUE;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
+		yyval.a_expr->value = yyvsp[-1].a_value;
+	}
+    break;
+
+  case 283:
+#line 2167 "asn1p_y.y"
+    {
+		yyval.a_expr = NEW_EXPR();
+		checkmem(yyval.a_expr);
+		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
+		yyval.a_expr->meta_type = AMT_VALUE;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
+		yyval.a_expr->value = yyvsp[-1].a_value;
+	}
+    break;
+
+  case 284:
+#line 2175 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4194,8 +4195,8 @@
 	}
     break;
 
-  case 283:
-#line 2177 "asn1p_y.y"
+  case 285:
+#line 2182 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4206,16 +4207,8 @@
 	}
     break;
 
-  case 284:
-#line 2188 "asn1p_y.y"
-    {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	}
-    break;
-
-  case 285:
-#line 2192 "asn1p_y.y"
+  case 286:
+#line 2193 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -4223,92 +4216,84 @@
     break;
 
   case 287:
-#line 2200 "asn1p_y.y"
+#line 2197 "asn1p_y.y"
+    {
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	}
+    break;
+
+  case 289:
+#line 2205 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
 		checkmem(yyval.a_value);
 	}
     break;
 
-  case 288:
-#line 2231 "asn1p_y.y"
+  case 290:
+#line 2236 "asn1p_y.y"
     { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
     break;
 
-  case 289:
-#line 2232 "asn1p_y.y"
+  case 291:
+#line 2237 "asn1p_y.y"
     { yyval.a_tag = yyvsp[0].a_tag; }
     break;
 
-  case 290:
-#line 2236 "asn1p_y.y"
+  case 292:
+#line 2241 "asn1p_y.y"
     {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	}
     break;
 
-  case 291:
-#line 2243 "asn1p_y.y"
+  case 293:
+#line 2248 "asn1p_y.y"
     {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	}
     break;
 
-  case 292:
-#line 2249 "asn1p_y.y"
+  case 294:
+#line 2254 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
     break;
 
-  case 293:
-#line 2250 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_UNIVERSAL; }
-    break;
-
-  case 294:
-#line 2251 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_APPLICATION; }
-    break;
-
   case 295:
-#line 2252 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_PRIVATE; }
+#line 2255 "asn1p_y.y"
+    { yyval.a_tag.tag_class = TC_UNIVERSAL; }
     break;
 
   case 296:
 #line 2256 "asn1p_y.y"
-    { yyval.a_tag.tag_mode = TM_DEFAULT; }
+    { yyval.a_tag.tag_class = TC_APPLICATION; }
     break;
 
   case 297:
 #line 2257 "asn1p_y.y"
-    { yyval.a_tag.tag_mode = TM_IMPLICIT; }
+    { yyval.a_tag.tag_class = TC_PRIVATE; }
     break;
 
   case 298:
-#line 2258 "asn1p_y.y"
-    { yyval.a_tag.tag_mode = TM_EXPLICIT; }
+#line 2261 "asn1p_y.y"
+    { yyval.a_tag.tag_mode = TM_DEFAULT; }
     break;
 
   case 299:
 #line 2262 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
+    { yyval.a_tag.tag_mode = TM_IMPLICIT; }
     break;
 
   case 300:
-#line 2266 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
+#line 2263 "asn1p_y.y"
+    { yyval.a_tag.tag_mode = TM_EXPLICIT; }
     break;
 
   case 301:
-#line 2274 "asn1p_y.y"
+#line 2267 "asn1p_y.y"
     {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -4316,19 +4301,35 @@
     break;
 
   case 302:
-#line 2281 "asn1p_y.y"
-    { yyval.tv_str = 0; }
+#line 2271 "asn1p_y.y"
+    {
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
     break;
 
   case 303:
-#line 2282 "asn1p_y.y"
+#line 2279 "asn1p_y.y"
     {
+		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	}
     break;
 
   case 304:
-#line 2288 "asn1p_y.y"
+#line 2286 "asn1p_y.y"
+    { yyval.tv_str = 0; }
+    break;
+
+  case 305:
+#line 2287 "asn1p_y.y"
+    {
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
+    break;
+
+  case 306:
+#line 2293 "asn1p_y.y"
     {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -4339,7 +4340,7 @@
     }
 
 /* Line 1016 of /usr/local/share/bison/yacc.c.  */
-#line 4343 "asn1p_y.c"
+#line 4344 "asn1p_y.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4558,7 +4559,7 @@
 }
 
 
-#line 2294 "asn1p_y.y"
+#line 2299 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index a89ba79..7e63853 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -250,6 +250,7 @@
 %type	<a_module>		optImports
 %type	<a_module>		optExports
 %type	<a_module>		ImportsDefinition
+%type	<a_module>		optImportsBundleSet
 %type	<a_module>		ImportsBundleSet
 %type	<a_xports>		ImportsBundle
 %type	<a_xports>		ImportsList
@@ -606,7 +607,7 @@
 	| ImportsDefinition;
 
 ImportsDefinition:
-	TOK_IMPORTS ImportsBundleSet ';' {
+	TOK_IMPORTS optImportsBundleSet ';' {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
 					"expected semicolon ';'");
@@ -621,6 +622,10 @@
 	}
 	;
 
+optImportsBundleSet:
+	{ $$ = asn1p_module_new(); }
+	| ImportsBundleSet;
+
 ImportsBundleSet:
 	ImportsBundle {
 		$$ = asn1p_module_new();
diff --git a/tests/121-empty-imports-OK.asn1 b/tests/121-empty-imports-OK.asn1
new file mode 100644
index 0000000..bbf1d1e
--- /dev/null
+++ b/tests/121-empty-imports-OK.asn1
@@ -0,0 +1,18 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .121
+
+ModuleEmptyIMPORTS
+	{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5) test(1) 121 }
+	DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+	IMPORTS -- nothing --;
+
+	Type ::= INTEGER
+
+END
diff --git a/tests/121-empty-imports-OK.asn1.-EF b/tests/121-empty-imports-OK.asn1.-EF
new file mode 100644
index 0000000..a5ad681
--- /dev/null
+++ b/tests/121-empty-imports-OK.asn1.-EF
@@ -0,0 +1,8 @@
+ModuleEmptyIMPORTS { iso org(3) dod(6) internet(1) private(4) enterprise(1)
+	spelio(9363) software(1) asn1c(5) test(1) 121 }
+DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+Type ::= INTEGER
+
+END