groking obsolete syntax


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@953 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/ChangeLog b/ChangeLog
index 5e15d96..2782dd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,8 @@
 
-0.9.17:	2005-Aug-11
+0.9.17:	2005-Aug-13
 
-	* ...
+	* The obsolete X.208 syntax is handled gracefully now (compound types'
+	  member names are invented on the fly). (Test case 87).
 
 0.9.17:	2005-Aug-07
 
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 6c4e9ff..04b2105 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -144,8 +144,8 @@
  */
 static struct AssignedIdentifier *saved_aid;
 
-static asn1p_value_t *
-	_convert_bitstring2binary(char *str, int base);
+static asn1p_value_t *_convert_bitstring2binary(char *str, int base);
+static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
 
 #define	checkmem(ptr)	do {						\
 		if(!(ptr))						\
@@ -216,7 +216,7 @@
 
 
 
-#define	YYFINAL		426
+#define	YYFINAL		429
 #define	YYFLAG		-32768
 #define	YYNTBASE	118
 
@@ -271,26 +271,26 @@
    135,   139,   141,   145,   147,   148,   155,   157,   159,   164,
    168,   172,   179,   181,   185,   187,   191,   195,   199,   201,
    205,   207,   209,   210,   212,   214,   218,   222,   226,   228,
-   230,   234,   237,   239,   245,   246,   248,   250,   254,   257,
-   262,   267,   268,   270,   271,   278,   280,   283,   285,   287,
-   289,   293,   297,   301,   303,   308,   313,   318,   325,   332,
-   334,   339,   344,   346,   350,   352,   356,   360,   364,   366,
-   370,   372,   376,   378,   380,   382,   384,   389,   393,   394,
-   398,   400,   402,   404,   406,   408,   410,   412,   414,   416,
-   420,   422,   424,   426,   428,   431,   433,   435,   437,   439,
-   442,   445,   447,   449,   452,   455,   457,   459,   461,   463,
-   465,   468,   470,   473,   475,   477,   479,   481,   483,   485,
-   487,   489,   491,   493,   495,   497,   499,   501,   503,   505,
-   507,   509,   511,   512,   514,   516,   521,   525,   530,   532,
-   536,   542,   544,   548,   552,   556,   560,   565,   569,   571,
-   573,   577,   581,   585,   589,   591,   593,   594,   600,   602,
-   605,   608,   612,   614,   616,   618,   620,   622,   624,   626,
-   628,   632,   638,   640,   644,   646,   650,   651,   653,   655,
-   657,   659,   661,   663,   667,   672,   674,   678,   681,   685,
-   687,   691,   692,   694,   696,   699,   702,   706,   708,   712,
-   714,   719,   724,   726,   728,   730,   732,   733,   735,   738,
-   743,   744,   746,   748,   750,   751,   753,   755,   757,   759,
-   761,   762,   764
+   231,   233,   237,   240,   242,   244,   250,   251,   253,   255,
+   259,   262,   267,   272,   273,   275,   276,   283,   285,   288,
+   290,   292,   294,   298,   302,   306,   308,   313,   318,   323,
+   330,   337,   339,   344,   349,   351,   355,   357,   361,   365,
+   369,   371,   375,   377,   381,   383,   385,   387,   389,   394,
+   398,   399,   403,   405,   407,   409,   411,   413,   415,   417,
+   419,   421,   425,   427,   429,   431,   433,   436,   438,   440,
+   442,   444,   447,   450,   452,   454,   457,   460,   462,   464,
+   466,   468,   470,   473,   475,   478,   480,   482,   484,   486,
+   488,   490,   492,   494,   496,   498,   500,   502,   504,   506,
+   508,   510,   512,   514,   516,   517,   519,   521,   526,   530,
+   535,   537,   541,   547,   549,   553,   557,   561,   565,   570,
+   574,   576,   578,   582,   586,   590,   594,   596,   598,   599,
+   605,   607,   610,   613,   617,   619,   621,   623,   625,   627,
+   629,   631,   633,   637,   643,   645,   649,   651,   655,   656,
+   658,   660,   662,   664,   666,   668,   672,   677,   679,   683,
+   686,   690,   692,   696,   697,   699,   701,   704,   707,   711,
+   713,   717,   719,   724,   729,   731,   733,   735,   737,   738,
+   740,   743,   748,   749,   751,   753,   755,   756,   758,   760,
+   762,   764,   766,   767,   769
 };
 
 static const short yyrhs[] = {   119,
@@ -316,61 +316,61 @@
    217,   111,   217,     0,   177,   111,   220,     0,   148,     0,
    147,   110,   148,     0,   164,     0,   220,     0,     0,   150,
      0,   151,     0,   150,   110,   151,     0,   220,   164,   206,
-     0,    32,    70,   164,     0,   163,     0,   153,     0,   152,
-   110,   153,     0,   220,   164,     0,   163,     0,    30,   105,
-   156,   106,   158,     0,     0,    90,     0,   157,     0,   156,
-   110,   157,     0,   169,   206,     0,   169,   164,   155,   206,
-     0,   169,   169,   155,   206,     0,     0,   159,     0,     0,
-    97,    84,   105,   160,   161,   106,     0,   162,     0,   161,
-   162,     0,     4,     0,   169,     0,   104,     0,   104,   112,
-   174,     0,   104,   112,   211,     0,   212,   165,   184,     0,
-   179,     0,    29,   105,   152,   106,     0,    80,   105,   149,
-   106,     0,    81,   105,   149,   106,     0,    80,   184,    70,
-   219,   212,   165,     0,    81,   184,    70,   219,   212,   165,
-     0,    20,     0,    20,    37,    27,   220,     0,   217,   105,
-   147,   106,     0,   166,     0,    58,    70,   166,     0,    13,
-     0,    13,   113,   217,     0,   218,   113,   217,     0,    13,
-   113,   220,     0,   218,     0,   218,   113,   167,     0,   168,
-     0,   167,   113,   168,     0,   170,     0,   170,     0,    15,
-     0,    16,     0,   220,   143,     3,   172,     0,   220,   111,
-   172,     0,     0,   105,   173,   176,     0,    65,     0,    47,
-     0,    88,     0,     5,     0,     7,     0,   175,     0,   211,
-     0,   174,     0,   220,     0,   217,   113,   220,     0,     6,
-     0,    10,     0,    11,     0,     4,     0,   176,     4,     0,
-    26,     0,    65,     0,    78,     0,   178,     0,    69,    83,
-     0,    67,    53,     0,    79,     0,    46,     0,    38,    73,
-     0,    28,    83,     0,    93,     0,    49,     0,   180,     0,
-    60,     0,    42,     0,    24,    83,     0,   177,     0,   178,
-   208,     0,    25,     0,    50,     0,    51,     0,    52,     0,
-    61,     0,    66,     0,    76,     0,    85,     0,    87,     0,
-    92,     0,    94,     0,    95,     0,    96,     0,    68,     0,
-   101,     0,   102,     0,    99,     0,   100,     0,    98,     0,
-     0,   185,     0,   186,     0,    82,   107,   187,   108,     0,
-   107,   187,   108,     0,   186,   107,   187,   108,     0,   188,
-     0,   188,   110,   104,     0,   188,   110,   104,   110,   188,
-     0,   189,     0,    19,    98,   189,     0,   188,   181,   189,
-     0,   188,   182,   189,     0,   189,   183,   189,     0,   192,
-   107,   187,   108,     0,   107,   187,   108,     0,   193,     0,
-   194,     0,   193,   191,   193,     0,    63,   191,   193,     0,
-   193,   191,    62,     0,    63,   191,    62,     0,   200,     0,
-   195,     0,     0,    33,    27,   105,   190,   176,     0,   103,
-     0,   103,   114,     0,   114,   103,     0,   114,   103,   114,
-     0,    82,     0,    48,     0,    47,     0,    88,     0,   211,
-     0,   175,     0,   220,     0,   217,     0,    97,    31,   186,
-     0,    97,    32,   105,   196,   106,     0,   197,     0,   196,
-   110,   197,     0,   104,     0,   220,   184,   198,     0,     0,
-   199,     0,    75,     0,    17,     0,    71,     0,   201,     0,
-   202,     0,   105,   217,   106,     0,   201,   105,   203,   106,
-     0,   204,     0,   203,   110,   204,     0,   115,   205,     0,
-   115,   113,   205,     0,   220,     0,   205,   113,   220,     0,
-     0,   207,     0,    71,     0,    35,   172,     0,   105,   106,
-     0,   105,   209,   106,     0,   210,     0,   209,   110,   210,
-     0,   220,     0,   220,   107,   211,   108,     0,   220,   107,
-   174,   108,     0,   211,     0,   104,     0,     9,     0,    12,
-     0,     0,   213,     0,   214,   216,     0,   116,   215,     9,
-   117,     0,     0,    91,     0,    21,     0,    77,     0,     0,
-    54,     0,    43,     0,    13,     0,    14,     0,    14,     0,
-     0,   220,     0,     8,     0
+     0,    32,    70,   164,     0,   163,     0,   164,   206,     0,
+   153,     0,   152,   110,   153,     0,   220,   164,     0,   163,
+     0,   164,     0,    30,   105,   156,   106,   158,     0,     0,
+    90,     0,   157,     0,   156,   110,   157,     0,   169,   206,
+     0,   169,   164,   155,   206,     0,   169,   169,   155,   206,
+     0,     0,   159,     0,     0,    97,    84,   105,   160,   161,
+   106,     0,   162,     0,   161,   162,     0,     4,     0,   169,
+     0,   104,     0,   104,   112,   174,     0,   104,   112,   211,
+     0,   212,   165,   184,     0,   179,     0,    29,   105,   152,
+   106,     0,    80,   105,   149,   106,     0,    81,   105,   149,
+   106,     0,    80,   184,    70,   219,   212,   165,     0,    81,
+   184,    70,   219,   212,   165,     0,    20,     0,    20,    37,
+    27,   220,     0,   217,   105,   147,   106,     0,   166,     0,
+    58,    70,   166,     0,    13,     0,    13,   113,   217,     0,
+   218,   113,   217,     0,    13,   113,   220,     0,   218,     0,
+   218,   113,   167,     0,   168,     0,   167,   113,   168,     0,
+   170,     0,   170,     0,    15,     0,    16,     0,   220,   143,
+     3,   172,     0,   220,   111,   172,     0,     0,   105,   173,
+   176,     0,    65,     0,    47,     0,    88,     0,     5,     0,
+     7,     0,   175,     0,   211,     0,   174,     0,   220,     0,
+   217,   113,   220,     0,     6,     0,    10,     0,    11,     0,
+     4,     0,   176,     4,     0,    26,     0,    65,     0,    78,
+     0,   178,     0,    69,    83,     0,    67,    53,     0,    79,
+     0,    46,     0,    38,    73,     0,    28,    83,     0,    93,
+     0,    49,     0,   180,     0,    60,     0,    42,     0,    24,
+    83,     0,   177,     0,   178,   208,     0,    25,     0,    50,
+     0,    51,     0,    52,     0,    61,     0,    66,     0,    76,
+     0,    85,     0,    87,     0,    92,     0,    94,     0,    95,
+     0,    96,     0,    68,     0,   101,     0,   102,     0,    99,
+     0,   100,     0,    98,     0,     0,   185,     0,   186,     0,
+    82,   107,   187,   108,     0,   107,   187,   108,     0,   186,
+   107,   187,   108,     0,   188,     0,   188,   110,   104,     0,
+   188,   110,   104,   110,   188,     0,   189,     0,    19,    98,
+   189,     0,   188,   181,   189,     0,   188,   182,   189,     0,
+   189,   183,   189,     0,   192,   107,   187,   108,     0,   107,
+   187,   108,     0,   193,     0,   194,     0,   193,   191,   193,
+     0,    63,   191,   193,     0,   193,   191,    62,     0,    63,
+   191,    62,     0,   200,     0,   195,     0,     0,    33,    27,
+   105,   190,   176,     0,   103,     0,   103,   114,     0,   114,
+   103,     0,   114,   103,   114,     0,    82,     0,    48,     0,
+    47,     0,    88,     0,   211,     0,   175,     0,   220,     0,
+   217,     0,    97,    31,   186,     0,    97,    32,   105,   196,
+   106,     0,   197,     0,   196,   110,   197,     0,   104,     0,
+   220,   184,   198,     0,     0,   199,     0,    75,     0,    17,
+     0,    71,     0,   201,     0,   202,     0,   105,   217,   106,
+     0,   201,   105,   203,   106,     0,   204,     0,   203,   110,
+   204,     0,   115,   205,     0,   115,   113,   205,     0,   220,
+     0,   205,   113,   220,     0,     0,   207,     0,    71,     0,
+    35,   172,     0,   105,   106,     0,   105,   209,   106,     0,
+   210,     0,   209,   110,   210,     0,   220,     0,   220,   107,
+   211,   108,     0,   220,   107,   174,   108,     0,   211,     0,
+   104,     0,     9,     0,    12,     0,     0,   213,     0,   214,
+   216,     0,   116,   215,     9,   117,     0,     0,    91,     0,
+    21,     0,    77,     0,     0,    54,     0,    43,     0,    13,
+     0,    14,     0,    14,     0,     0,   220,     0,     8,     0
 };
 
 #endif
@@ -384,27 +384,27 @@
    615,   626,   632,   638,   645,   651,   659,   663,   666,   673,
    679,   685,   692,   698,   707,   709,   718,   726,   740,   752,
    758,   774,   783,   793,   803,   808,   815,   822,   832,   838,
-   844,   848,   871,   873,   875,   881,   887,   894,   901,   906,
-   912,   918,   924,   929,   939,   941,   944,   952,   958,   967,
-   973,   990,   992,   997,  1001,  1006,  1011,  1017,  1021,  1032,
-  1041,  1050,  1061,  1083,  1087,  1093,  1099,  1105,  1115,  1125,
-  1131,  1145,  1169,  1176,  1190,  1199,  1209,  1219,  1229,  1237,
-  1258,  1267,  1276,  1277,  1279,  1286,  1298,  1308,  1316,  1316,
-  1321,  1326,  1331,  1336,  1340,  1344,  1347,  1350,  1355,  1367,
-  1384,  1389,  1394,  1427,  1437,  1451,  1453,  1454,  1455,  1456,
-  1457,  1458,  1459,  1460,  1461,  1462,  1463,  1464,  1470,  1472,
-  1473,  1476,  1483,  1495,  1497,  1501,  1505,  1506,  1507,  1508,
-  1509,  1513,  1514,  1515,  1516,  1520,  1521,  1528,  1528,  1529,
-  1529,  1530,  1532,  1534,  1539,  1543,  1552,  1556,  1561,  1565,
-  1571,  1581,  1585,  1588,  1591,  1594,  1599,  1608,  1616,  1622,
-  1628,  1635,  1643,  1651,  1660,  1663,  1666,  1667,  1677,  1679,
-  1680,  1681,  1684,  1688,  1693,  1699,  1704,  1707,  1710,  1723,
-  1737,  1741,  1746,  1750,  1755,  1762,  1775,  1777,  1780,  1784,
-  1787,  1792,  1796,  1804,  1819,  1825,  1832,  1845,  1857,  1872,
-  1876,  1893,  1898,  1901,  1906,  1928,  1933,  1938,  1944,  1950,
-  1958,  1966,  1974,  1981,  1991,  1996,  2026,  2028,  2031,  2038,
-  2044,  2046,  2047,  2048,  2051,  2053,  2054,  2057,  2062,  2069,
-  2076,  2078,  2083
+   844,   848,   871,   873,   875,   881,   887,   894,   901,   904,
+   911,   917,   923,   929,   932,   938,   948,   950,   953,   961,
+   967,   976,   982,   999,  1001,  1006,  1010,  1015,  1020,  1026,
+  1030,  1041,  1050,  1059,  1070,  1092,  1096,  1102,  1108,  1114,
+  1124,  1134,  1140,  1154,  1178,  1185,  1199,  1208,  1218,  1228,
+  1238,  1246,  1267,  1276,  1285,  1286,  1288,  1295,  1307,  1317,
+  1325,  1325,  1330,  1335,  1340,  1345,  1349,  1353,  1356,  1359,
+  1364,  1376,  1393,  1398,  1403,  1436,  1446,  1460,  1462,  1463,
+  1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,  1472,  1473,
+  1479,  1481,  1482,  1485,  1492,  1504,  1506,  1510,  1514,  1515,
+  1516,  1517,  1518,  1522,  1523,  1524,  1525,  1529,  1530,  1537,
+  1537,  1538,  1538,  1539,  1541,  1543,  1548,  1552,  1561,  1565,
+  1570,  1574,  1580,  1590,  1594,  1597,  1600,  1603,  1608,  1617,
+  1625,  1631,  1637,  1644,  1652,  1660,  1669,  1672,  1675,  1676,
+  1686,  1688,  1689,  1690,  1693,  1697,  1702,  1708,  1713,  1716,
+  1719,  1732,  1746,  1750,  1755,  1759,  1764,  1771,  1784,  1786,
+  1789,  1793,  1796,  1801,  1805,  1813,  1828,  1834,  1841,  1854,
+  1866,  1881,  1885,  1902,  1907,  1910,  1915,  1937,  1942,  1947,
+  1953,  1959,  1967,  1975,  1983,  1990,  2000,  2005,  2035,  2037,
+  2040,  2047,  2053,  2055,  2056,  2057,  2060,  2062,  2063,  2066,
+  2071,  2078,  2085,  2087,  2092
 };
 #endif
 
@@ -465,27 +465,27 @@
    135,   136,   136,   137,   137,   137,   138,   138,   138,   139,
    139,   140,   140,   140,   142,   141,   143,   143,   144,   144,
    144,   144,   145,   145,   146,   146,   146,   146,   147,   147,
-   148,   148,   149,   149,   150,   150,   151,   151,   151,   152,
-   152,   153,   153,   154,   155,   155,   156,   156,   157,   157,
-   157,   158,   158,   160,   159,   161,   161,   162,   162,   163,
-   163,   163,   164,   165,   165,   165,   165,   165,   165,   165,
-   165,   165,   165,   165,   166,   166,   166,   166,   166,   166,
-   167,   167,   168,   169,   170,   170,   171,   172,   173,   172,
-   172,   172,   172,   172,   172,   172,   172,   172,   174,   174,
-   175,   175,   175,   176,   176,   177,   177,   177,   177,   177,
-   177,   177,   177,   177,   177,   177,   177,   177,   178,   178,
-   178,   179,   179,   180,   180,   180,   180,   180,   180,   180,
-   180,   180,   180,   180,   180,   180,   180,   181,   181,   182,
-   182,   183,   184,   184,   185,   185,   186,   186,   187,   187,
-   187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
-   189,   189,   189,   189,   189,   189,   190,   189,   191,   191,
-   191,   191,   192,   192,   193,   193,   193,   193,   193,   194,
-   195,   195,   196,   196,   197,   197,   198,   198,   199,   199,
-   199,   200,   200,   201,   202,   203,   203,   204,   204,   205,
-   205,   206,   206,   207,   207,   208,   208,   209,   209,   210,
-   210,   210,   210,   210,   211,   211,   212,   212,   213,   214,
-   215,   215,   215,   215,   216,   216,   216,   217,   217,   218,
-   219,   219,   220
+   148,   148,   149,   149,   150,   150,   151,   151,   151,   151,
+   152,   152,   153,   153,   153,   154,   155,   155,   156,   156,
+   157,   157,   157,   158,   158,   160,   159,   161,   161,   162,
+   162,   163,   163,   163,   164,   165,   165,   165,   165,   165,
+   165,   165,   165,   165,   165,   165,   166,   166,   166,   166,
+   166,   166,   167,   167,   168,   169,   170,   170,   171,   172,
+   173,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+   174,   174,   175,   175,   175,   176,   176,   177,   177,   177,
+   177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+   178,   178,   178,   179,   179,   180,   180,   180,   180,   180,
+   180,   180,   180,   180,   180,   180,   180,   180,   180,   181,
+   181,   182,   182,   183,   184,   184,   185,   185,   186,   186,
+   187,   187,   187,   188,   188,   188,   188,   188,   189,   189,
+   189,   189,   189,   189,   189,   189,   189,   189,   190,   189,
+   191,   191,   191,   191,   192,   192,   193,   193,   193,   193,
+   193,   194,   195,   195,   196,   196,   197,   197,   198,   198,
+   199,   199,   199,   200,   200,   201,   202,   203,   203,   204,
+   204,   205,   205,   206,   206,   207,   207,   208,   208,   209,
+   209,   210,   210,   210,   210,   210,   211,   211,   212,   212,
+   213,   214,   215,   215,   215,   215,   216,   216,   216,   217,
+   217,   218,   219,   219,   220
 };
 
 static const short yyr2[] = {     0,
@@ -496,323 +496,339 @@
      4,     1,     3,     1,     3,     1,     3,     3,     2,     1,
      3,     1,     3,     1,     0,     6,     1,     1,     4,     3,
      3,     6,     1,     3,     1,     3,     3,     3,     1,     3,
-     1,     1,     0,     1,     1,     3,     3,     3,     1,     1,
-     3,     2,     1,     5,     0,     1,     1,     3,     2,     4,
-     4,     0,     1,     0,     6,     1,     2,     1,     1,     1,
-     3,     3,     3,     1,     4,     4,     4,     6,     6,     1,
-     4,     4,     1,     3,     1,     3,     3,     3,     1,     3,
-     1,     3,     1,     1,     1,     1,     4,     3,     0,     3,
-     1,     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,     0,     1,     1,     3,     3,     3,     1,     2,
+     1,     3,     2,     1,     1,     5,     0,     1,     1,     3,
+     2,     4,     4,     0,     1,     0,     6,     1,     2,     1,
+     1,     1,     3,     3,     3,     1,     4,     4,     4,     6,
+     6,     1,     4,     4,     1,     3,     1,     3,     3,     3,
+     1,     3,     1,     3,     1,     1,     1,     1,     4,     3,
+     0,     3,     1,     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,     1,     0,     1,     1,     4,     3,     4,     1,     3,
-     5,     1,     3,     3,     3,     3,     4,     3,     1,     1,
-     3,     3,     3,     3,     1,     1,     0,     5,     1,     2,
-     2,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-     3,     5,     1,     3,     1,     3,     0,     1,     1,     1,
-     1,     1,     1,     3,     4,     1,     3,     2,     3,     1,
-     3,     0,     1,     1,     2,     2,     3,     1,     3,     1,
-     4,     4,     1,     1,     1,     1,     0,     1,     2,     4,
-     0,     1,     1,     1,     0,     1,     1,     1,     1,     1,
-     0,     1,     1
+     1,     1,     1,     1,     0,     1,     1,     4,     3,     4,
+     1,     3,     5,     1,     3,     3,     3,     3,     4,     3,
+     1,     1,     3,     3,     3,     3,     1,     1,     0,     5,
+     1,     2,     2,     3,     1,     1,     1,     1,     1,     1,
+     1,     1,     3,     5,     1,     3,     1,     3,     0,     1,
+     1,     1,     1,     1,     1,     3,     4,     1,     3,     2,
+     3,     1,     3,     0,     1,     1,     2,     2,     3,     1,
+     3,     1,     4,     4,     1,     1,     1,     1,     0,     1,
+     2,     4,     0,     1,     1,     1,     0,     1,     1,     1,
+     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   268,   269,     1,     2,     5,     3,     0,     0,     6,   273,
+   270,   271,     1,     2,     5,     3,     0,     0,     6,   275,
     13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
      0,     0,     0,     0,     0,    15,    16,     0,    22,    20,
-    18,    21,    19,     0,    17,    12,    23,   164,     0,     0,
-   165,   166,   167,     0,   168,   169,   177,   170,   171,   172,
-   173,   174,   175,   176,     0,    24,    25,    27,    28,    31,
+    18,    21,    19,     0,    17,    12,    23,   166,     0,     0,
+   167,   168,   169,     0,   170,   171,   179,   172,   173,   174,
+   175,   176,   177,   178,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    49,     0,    50,
     52,    54,    36,     0,    37,     0,    42,    44,    46,     4,
-    26,   257,   115,   270,     0,   146,     0,     0,   160,   153,
-   157,   159,   147,     0,     0,   148,   152,   156,     0,     0,
-    57,    58,   149,   158,   119,     0,    33,    48,    47,     0,
-     0,    35,    38,     0,     0,     0,     0,   261,    61,    60,
-     0,   258,   265,     0,   161,   155,   154,   151,   150,     0,
+    26,   259,   117,   272,     0,   148,     0,     0,   162,   155,
+   159,   161,   149,     0,     0,   150,   154,   158,     0,     0,
+    57,    58,   151,   160,   121,     0,    33,    48,    47,     0,
+     0,    35,    38,     0,     0,     0,     0,   263,    61,    60,
+     0,   260,   267,     0,   163,   157,   156,   153,   152,     0,
     63,     0,    65,     0,     0,     0,    51,    53,    39,    43,
-    45,     0,   263,   264,   262,     0,   115,   270,   110,     0,
-     0,   183,   183,    59,   183,   113,   162,   149,   104,     0,
-   267,   266,   259,   116,   118,     0,     0,     0,     0,    55,
-   125,   126,   120,   121,   123,   117,   134,   141,   135,   255,
-   142,   143,   256,   132,   131,   133,   129,   127,   138,   136,
-   137,     0,   139,    40,    41,     0,    87,   257,   124,     0,
-     0,     0,     0,     0,    73,     0,     0,   184,   185,    73,
-     0,   103,     0,   163,   257,   257,    64,    68,    67,    66,
-     0,     0,     0,     0,     0,    92,     0,     0,   244,    85,
-    85,    89,   243,     0,   260,     0,   100,     0,    80,    83,
-   257,   114,     0,     0,     0,    74,    75,    79,   257,     0,
-     0,   215,   214,     0,   213,   216,     0,     0,     0,   218,
-     0,   189,   192,     0,   199,   200,   206,   205,   232,   233,
-   217,   220,   219,   271,     0,     0,   271,   254,   246,     0,
-   248,   253,   250,     0,    69,    71,    72,    62,   144,    56,
-   122,   130,   140,   128,     0,    84,    93,    88,   245,    86,
-   242,   242,   111,     0,   105,     0,    82,     0,   257,   106,
-     0,   242,     0,     0,   209,     0,     0,     0,     0,     0,
-     0,   187,   180,   181,   178,   179,     0,     0,     0,   182,
-     0,     0,     0,     0,   257,   272,     0,   107,   257,   247,
-     0,     0,   112,   257,   145,     0,    90,    91,   101,   102,
-   139,    81,   186,    78,    76,    77,   193,   207,   210,   211,
-   204,   202,   221,     0,   234,   198,   190,   194,   195,   196,
-     0,   203,   201,     0,     0,   236,     0,   188,     0,   249,
-     0,     0,    70,    94,     0,   212,   225,     0,   223,   183,
-     0,   197,     0,   238,   240,   235,     0,   108,   109,   252,
-   251,     0,   208,   222,     0,   227,   191,   239,     0,   237,
-    98,     0,    96,    99,   224,   230,   231,   229,   226,   228,
-   241,    95,    97,     0,     0,     0
+    45,     0,   265,   266,   264,     0,   117,   272,   112,     0,
+     0,   185,   185,    59,   185,   115,   164,   151,   106,     0,
+   269,   268,   261,   118,   120,     0,     0,     0,     0,    55,
+   127,   128,   122,   123,   125,   119,   136,   143,   137,   257,
+   144,   145,   258,   134,   133,   135,   131,   129,   140,   138,
+   139,     0,   141,    40,    41,     0,    89,   259,   126,     0,
+     0,   259,     0,     0,   259,     0,     0,   186,   187,   259,
+     0,   105,     0,   165,   259,   259,    64,    68,    67,    66,
+     0,     0,     0,     0,     0,    94,     0,     0,   246,    87,
+    87,    91,   245,     0,   262,     0,   102,     0,    81,    84,
+    85,   259,   116,     0,     0,     0,    74,    75,    79,   244,
+   259,     0,     0,   217,   216,     0,   215,   218,     0,     0,
+     0,   220,     0,   191,   194,     0,   201,   202,   208,   207,
+   234,   235,   219,   222,   221,   273,     0,     0,   273,   256,
+   248,     0,   250,   255,   252,     0,    69,    71,    72,    62,
+   146,    56,   124,   132,   142,   130,     0,    86,    95,    90,
+   247,    88,   244,   244,   113,     0,   107,   259,    83,     0,
+   259,   108,   259,    80,   244,     0,     0,   211,     0,     0,
+     0,     0,     0,     0,   189,   182,   183,   180,   181,     0,
+     0,     0,   184,     0,     0,     0,     0,   259,   274,     0,
+   109,   259,   249,     0,     0,   114,   259,   147,     0,    92,
+    93,   103,   104,   141,    82,   188,    78,    76,    77,   195,
+   209,   212,   213,   206,   204,   223,     0,   236,   200,   192,
+   196,   197,   198,     0,   205,   203,     0,     0,   238,     0,
+   190,     0,   251,     0,     0,    70,    96,     0,   214,   227,
+     0,   225,   185,     0,   199,     0,   240,   242,   237,     0,
+   110,   111,   254,   253,     0,   210,   224,     0,   229,   193,
+   241,     0,   239,   100,     0,    98,   101,   226,   232,   233,
+   231,   228,   230,   243,    97,    99,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   424,
+static const short yydefgoto[] = {   427,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   107,    58,    74,   195,    75,    76,    77,    59,
-    69,    70,    60,   221,   100,    61,   130,   131,   284,   285,
-   245,   246,   247,   238,   239,   119,   301,   196,   197,   296,
-   297,   402,   412,   413,   248,   286,   155,   156,   173,   174,
-   198,   199,    62,   188,   223,   189,   260,   290,   157,   103,
-   159,   104,   328,   329,   331,   207,   208,   209,   261,   262,
-   263,   385,   317,   264,   265,   266,   267,   388,   389,   419,
-   420,   268,   269,   270,   375,   376,   394,   232,   233,   214,
-   280,   281,   271,   234,   122,   123,   146,   163,   272,   105,
-   335,   273
+    69,    70,    60,   221,   100,    61,   130,   131,   286,   287,
+   246,   247,   248,   238,   239,   119,   303,   196,   197,   298,
+   299,   405,   415,   416,   249,   250,   155,   156,   173,   174,
+   198,   199,    62,   188,   223,   189,   262,   292,   157,   103,
+   159,   104,   331,   332,   334,   207,   208,   209,   263,   264,
+   265,   388,   320,   266,   267,   268,   269,   391,   392,   422,
+   423,   270,   271,   272,   378,   379,   397,   232,   233,   214,
+   282,   283,   273,   234,   122,   123,   146,   163,   274,   105,
+   338,   275
 };
 
-static const short yypact[] = {    87,
--32768,-32768,    87,-32768,   -69,-32768,    35,    82,-32768,-32768,
--32768,-32768,    37,-32768,   -78,   156,-32768,-32768,   114,    -6,
-    89,   108,   147,   125,   151,   156,-32768,   106,-32768,-32768,
--32768,-32768,-32768,   196,-32768,-32768,   430,-32768,   213,    44,
--32768,-32768,-32768,    56,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   193,   430,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   355,   659,-32768,   137,-32768,   -86,-32768,
-   159,-32768,-32768,    18,-32768,   -23,-32768,   161,-32768,-32768,
--32768,    32,   168,-32768,   199,-32768,   200,   215,-32768,-32768,
--32768,-32768,-32768,   232,   207,-32768,-32768,-32768,   734,   293,
--32768,-32768,-32768,-32768,   187,   298,-32768,-32768,-32768,   212,
-   197,-32768,-32768,    87,   212,   203,   205,    14,-32768,-32768,
-   507,-32768,   112,   212,-32768,-32768,-32768,-32768,-32768,    -8,
--32768,   204,   218,   221,   304,    68,-32768,-32768,   -69,-32768,
--32768,   122,-32768,-32768,-32768,   302,    55,   226,   295,   233,
-   263,    58,    75,-32768,   -14,-32768,-32768,   234,-32768,   235,
--32768,-32768,-32768,-32768,-32768,   338,   734,   334,   212,-32768,
--32768,-32768,   230,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {    72,
+-32768,-32768,    72,-32768,   -69,-32768,    36,    58,-32768,-32768,
+-32768,-32768,    60,-32768,   -48,   137,-32768,-32768,    32,    79,
+    69,    74,   142,   106,   162,   137,-32768,   116,-32768,-32768,
+-32768,-32768,-32768,   218,-32768,-32768,   508,-32768,   232,    38,
+-32768,-32768,-32768,   127,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   208,   508,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   358,   737,-32768,   156,-32768,    95,-32768,
+   168,-32768,-32768,    47,-32768,   -10,-32768,   169,-32768,-32768,
+-32768,    23,   174,-32768,   205,-32768,   212,   224,-32768,-32768,
+-32768,-32768,-32768,   243,   215,-32768,-32768,-32768,   812,   297,
+-32768,-32768,-32768,-32768,   189,   300,-32768,-32768,-32768,   223,
+   198,-32768,-32768,    72,   223,   201,   203,     6,-32768,-32768,
+   585,-32768,    48,   223,-32768,-32768,-32768,-32768,-32768,    62,
+-32768,   200,   202,   204,   263,   466,-32768,-32768,   -69,-32768,
+-32768,   199,-32768,-32768,-32768,   301,   -40,   207,   277,   210,
+   247,    66,    76,-32768,   -18,-32768,-32768,   213,-32768,   217,
+-32768,-32768,-32768,-32768,-32768,   316,   812,   312,   223,-32768,
+-32768,-32768,   216,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   236,   237,-32768,-32768,    61,-32768,    26,-32768,   238,
-   323,     7,   241,   244,    40,   239,   284,-32768,   249,    40,
-   289,-32768,    77,-32768,     6,   245,-32768,-32768,-32768,-32768,
-   356,   122,   356,   334,    68,   266,   122,    68,-32768,   274,
-   274,-32768,-32768,   584,-32768,   334,   253,    78,-32768,-32768,
-   245,-32768,   239,   296,   267,   264,-32768,-32768,   245,   277,
-   349,-32768,-32768,   -20,-32768,-32768,   231,    87,   239,-32768,
-   269,   206,   280,   275,   -20,-32768,-32768,-32768,   279,-32768,
--32768,-32768,-32768,   334,   239,   282,   334,-32768,-32768,    94,
--32768,-32768,   278,    99,-32768,-32768,-32768,-32768,-32768,   386,
--32768,   386,-32768,-32768,   307,-32768,-32768,-32768,-32768,-32768,
-    64,    64,-32768,   228,-32768,     7,-32768,   286,   245,-32768,
-    40,    64,   265,   287,   281,   297,   181,   292,   291,   303,
-   300,-32768,-32768,-32768,-32768,-32768,   299,   265,   265,-32768,
-   265,   239,   283,   310,   245,-32768,   305,-32768,   245,-32768,
-    47,   228,-32768,     6,-32768,   306,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   312,
--32768,-32768,   249,    12,-32768,-32768,   308,-32768,-32768,-32768,
-   309,-32768,-32768,    13,   155,-32768,   584,-32768,   584,-32768,
-   311,   319,-32768,-32768,   356,-32768,-32768,   174,-32768,   -14,
-   239,-32768,   334,   301,-32768,-32768,   310,-32768,-32768,-32768,
--32768,   143,   386,-32768,    12,    17,   223,   301,   334,-32768,
--32768,    24,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   410,   412,-32768
+-32768,   220,   221,-32768,-32768,   101,-32768,    27,-32768,   206,
+   298,    11,   219,   227,     0,   242,   256,-32768,   228,     0,
+   257,-32768,    17,-32768,    12,   225,-32768,-32768,-32768,-32768,
+   324,   199,   324,   312,   466,   234,   199,   466,-32768,   252,
+   252,-32768,-32768,   662,-32768,   312,   231,   110,-32768,-32768,
+-32768,   225,-32768,   242,   275,   238,   236,-32768,-32768,    21,
+   225,   250,   323,-32768,-32768,    -2,-32768,-32768,   226,    72,
+   242,-32768,   244,   100,   253,   246,    -2,-32768,-32768,-32768,
+   249,-32768,-32768,-32768,-32768,   312,   242,   251,   312,-32768,
+-32768,   124,-32768,-32768,   258,   133,-32768,-32768,-32768,-32768,
+-32768,   352,-32768,   352,-32768,-32768,   279,-32768,-32768,-32768,
+-32768,-32768,    21,    21,-32768,   214,-32768,    11,-32768,   259,
+   225,-32768,     3,-32768,    21,   456,   254,   255,   261,   178,
+   266,   269,   260,   267,-32768,-32768,-32768,-32768,-32768,   264,
+   456,   456,-32768,   456,   242,   274,   262,   225,-32768,   268,
+-32768,   225,-32768,    63,   214,-32768,    12,-32768,   273,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   265,-32768,-32768,   228,    40,-32768,-32768,   248,
+-32768,-32768,-32768,   272,-32768,-32768,     9,   158,-32768,   662,
+-32768,   662,-32768,   280,   283,-32768,-32768,   324,-32768,-32768,
+   161,-32768,   -18,   242,-32768,   312,   281,-32768,-32768,   262,
+-32768,-32768,-32768,-32768,   148,   352,-32768,    40,     5,   192,
+   281,   312,-32768,-32768,    24,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   381,   385,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   425,-32768,   290,-32768,   417,-32768,-32768,   406,-32768,
--32768,   379,-32768,-32768,-32768,-32768,   362,-32768,   322,-32768,
--32768,   329,-32768,-32768,   376,-32768,-32768,   285,-32768,   101,
-   243,-32768,   135,-32768,   148,-32768,   225,-32768,   240,-32768,
--32768,-32768,-32768,    45,  -193,   -77,  -203,   -53,-32768,   242,
-  -190,  -116,-32768,   -12,-32768,  -277,   -76,  -216,   -48,  -120,
--32768,    34,-32768,-32768,-32768,  -151,-32768,   140,  -147,    70,
-   -98,-32768,   194,-32768,  -295,-32768,-32768,-32768,    57,-32768,
--32768,-32768,-32768,-32768,-32768,    66,    72,  -105,-32768,-32768,
--32768,   127,  -118,   -79,-32768,-32768,-32768,-32768,    10,-32768,
-   189,    -7
+-32768,   384,-32768,   276,-32768,   380,-32768,-32768,   369,-32768,
+-32768,   341,-32768,-32768,-32768,-32768,   325,-32768,   287,-32768,
+-32768,   288,-32768,-32768,   338,-32768,-32768,   239,-32768,    64,
+   211,-32768,    99,-32768,   105,-32768,   183,-32768,   190,-32768,
+-32768,-32768,-32768,     1,  -190,   -66,  -303,   -50,-32768,   209,
+  -196,  -117,-32768,   -71,-32768,  -275,  -115,  -218,   -41,  -120,
+-32768,    26,-32768,-32768,-32768,  -146,-32768,   107,  -166,    28,
+  -138,-32768,   153,-32768,  -246,-32768,-32768,-32768,    22,-32768,
+-32768,-32768,-32768,-32768,-32768,    29,    37,  -216,-32768,-32768,
+-32768,    88,  -132,   -79,-32768,-32768,-32768,-32768,    10,-32768,
+   159,    -7
 };
 
 
-#define	YYLAST		830
+#define	YYLAST		908
 
 
 static const short yytable[] = {    15,
-   158,   211,   121,   212,   120,    15,   292,   231,   240,     5,
-   101,   101,     5,    10,    10,   102,   102,   191,   175,    10,
-    10,   362,   109,   110,   114,    10,   349,   411,    19,    65,
-     1,     2,    72,   416,   143,     7,    79,   373,   171,   172,
-   171,   172,    10,    11,    10,    11,    64,    10,    65,    71,
-   132,    10,    29,    78,    10,   180,     1,     2,   183,   190,
-   228,   117,    67,    10,   381,    64,    79,   204,     1,     2,
-    63,   244,   177,   178,   179,    10,   180,   181,   182,   183,
-     1,     2,   315,    78,    10,   180,   115,   417,   183,    63,
-   144,   418,   206,   316,   282,   308,   229,   166,   228,     1,
-     2,   167,    72,    73,   145,   175,   191,    79,   133,   191,
-   237,   321,   240,   158,   184,   387,   165,    16,   132,    71,
-   230,   118,    28,   139,    78,   393,   112,   337,   193,   422,
-   160,  -242,   185,   164,   229,  -242,   171,   172,   288,   204,
-    12,   118,    17,   237,   176,   192,   411,   118,   190,   242,
-   278,   190,    68,    34,   161,   186,   204,   171,   172,  -268,
-   218,   220,   205,   307,   206,   162,   226,   124,   403,    20,
-   227,   312,   187,   398,    30,   399,   133,    21,   219,   210,
-   278,   206,   279,   305,   371,   350,   178,   306,    10,   180,
-   181,   182,   183,    31,   241,   347,   348,   249,    22,   340,
-    23,    32,   249,   341,   343,   283,   356,   287,   344,    24,
-    33,   414,   294,    36,   357,   299,   293,   193,    37,    10,
-   193,   414,   282,   382,     1,     2,    66,   252,   303,   368,
-   369,   354,   370,    80,   192,    10,   180,   192,   406,   183,
-     1,     2,   361,   160,   178,   108,    10,   180,   181,   182,
-   183,     1,     2,    83,    84,   377,   158,   250,   158,   379,
-   396,   318,   319,   111,   397,   116,   336,   320,   256,   336,
-   178,   251,    10,   180,   181,   182,   183,     1,     2,   404,
-   124,   125,   126,   405,   128,   252,   253,   127,   178,   129,
-    10,   180,   181,   182,   183,   134,   351,   251,   241,   135,
-   136,   254,   138,   249,   323,   324,   325,   326,   141,   142,
-   200,   252,   253,   192,   168,   327,     1,     2,   171,   172,
-   255,   323,   324,   325,   326,   170,   256,   254,   169,   252,
-  -269,   201,   203,   283,   351,   257,   287,   202,   213,   215,
-   216,    10,   222,   258,   372,   259,   255,   225,   224,   236,
-   243,   192,   256,   274,   235,   275,   390,    82,   277,   289,
-   118,   257,   295,   300,   304,   309,   395,    83,    84,   258,
-   256,   259,   310,   311,   313,   314,   322,   330,    85,    38,
-    86,   332,    87,   334,   342,   395,   160,   338,   160,   345,
-   346,   358,    88,   353,   359,   364,    89,   390,   206,   360,
-    90,   421,   367,    91,    41,    42,    43,   366,   365,   425,
-   384,   426,   378,   409,    92,    45,   392,   391,   400,    93,
-    46,    94,    47,    95,   374,   386,   401,     6,   194,    18,
-    48,    35,    96,    97,    81,   113,   140,    10,   137,    49,
-   106,    50,     1,     2,   383,   355,    51,    98,    52,    53,
-    54,   217,   276,   352,    38,   302,   423,   363,   333,    99,
-   407,   415,   410,   291,   408,   339,   298,   380,     0,    39,
-     0,     0,     0,    40,     0,     0,     0,     0,     0,    41,
-    42,    43,     0,     0,     0,    44,     0,     0,     0,     0,
-    45,     0,     0,     0,     0,    46,     0,    47,     0,     0,
-     0,     0,     0,     0,     0,    48,     0,     0,     0,     0,
-     0,     0,     0,     0,    49,     0,    50,     0,     0,   147,
-   148,    51,     0,    52,    53,    54,   149,     0,     0,     0,
-    85,    38,    86,     0,    87,   150,     0,     0,     0,     0,
+   158,   231,   121,   191,   294,    15,   211,    10,   212,     5,
+    10,   240,     5,   101,   101,   120,    10,   175,    10,    10,
+   190,   419,   102,   102,    10,   180,   143,   414,   183,    65,
+   352,   245,    72,   314,   245,     7,    79,   114,   171,   172,
+    28,   171,   172,    10,    11,    10,    64,    10,    65,    71,
+     1,     2,   117,    78,    10,   228,    67,   132,    19,     1,
+     2,   228,    63,   204,  -270,    64,    79,    10,    11,   384,
+    10,   180,   124,   365,   183,   420,   401,   310,   402,   421,
+   284,    63,   144,    78,     1,     2,   350,   351,   206,   376,
+   161,   229,   191,    16,   324,   191,   145,   229,   359,   115,
+   318,   162,    72,   237,   175,   -73,   237,    79,   133,   190,
+   340,   319,   190,   158,   237,   118,   165,   240,   118,    71,
+   280,   396,   281,   139,    78,   132,   118,   118,   193,   425,
+   160,   230,  -244,   164,    10,   241,  -244,    29,   118,     1,
+     2,    12,   118,   390,   176,   192,    68,   204,   288,   290,
+    20,   414,   243,   296,    30,   112,   301,   204,    21,    31,
+   218,   220,   171,   172,    34,    17,   280,   166,   374,   406,
+   205,   167,   206,   353,    73,   309,   133,   360,   219,    22,
+   210,    23,   206,   178,   315,    10,   180,   181,   182,   183,
+    24,    33,   371,   372,   242,   373,    32,   251,   326,   327,
+   328,   329,   251,   109,   110,   285,   226,   289,   417,   330,
+   227,   284,   385,   171,   172,   307,   295,   193,   417,   308,
+   193,    10,   180,    36,   254,   183,     1,     2,   305,   343,
+    10,    83,    84,   344,   192,     1,     2,   192,   346,   364,
+    37,   241,   347,   160,   357,    66,   409,   178,    80,    10,
+   180,   181,   182,   183,     1,     2,   321,   322,   380,   158,
+   252,   158,   382,   399,   108,   258,   407,   400,   339,   323,
+   408,   339,   111,   116,   253,     1,     2,   171,   172,   178,
+   288,    10,   180,   181,   182,   183,   124,   125,   254,   255,
+   326,   327,   328,   329,   126,   128,   127,   129,   354,   134,
+   242,   135,   136,   138,   256,   251,   141,   142,   170,   200,
+   168,  -271,   169,   201,   202,   192,   203,   213,   216,    10,
+   254,   215,   235,   257,   236,   276,   279,   291,   222,   258,
+   297,   225,   224,   244,   277,   375,   285,   354,   259,   289,
+   118,   302,   306,   312,   311,   313,   260,   316,   261,   317,
+   333,   325,   335,   337,   192,   348,   341,   394,   361,   393,
+    82,   258,   349,   363,   345,   368,   356,   370,   362,   398,
+    83,    84,   206,   367,   369,   381,   377,   387,   389,   395,
+   428,    85,    38,    86,   429,    87,     6,   403,   398,   160,
+   404,   160,    18,   412,    35,    88,    81,   137,   113,    89,
+   393,   140,   106,    90,   424,   217,    91,    41,    42,    43,
+   386,   358,   355,   304,   194,   426,   300,    92,    45,   336,
+   278,   410,    93,    46,    94,    47,    95,   366,   413,   418,
+   293,   383,   411,    48,     0,    96,    97,   342,     0,     0,
+     0,     0,    49,     0,    50,     0,     0,     0,     0,    51,
+    98,    52,    53,    54,     0,     0,     0,     0,     0,     0,
+     0,   178,    99,    10,   180,   181,   182,   183,     1,     2,
+   177,   178,   179,    10,   180,   181,   182,   183,     1,     2,
+     0,     0,     0,     0,     0,     0,     0,     0,   253,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   254,   255,     0,     0,     0,     0,     0,     0,
+     0,     0,   184,     0,     0,    10,     0,     0,   256,     0,
+     1,     2,     0,     0,     0,     0,     0,     0,     0,     0,
+   185,     0,    38,     0,     0,     0,     0,   257,     0,     0,
+     0,     0,     0,   258,     0,     0,     0,    39,     0,     0,
+     0,    40,   259,   186,     0,     0,     0,    41,    42,    43,
+   260,     0,   261,    44,     0,     0,     0,     0,    45,     0,
+   187,     0,     0,    46,     0,    47,     0,     0,     0,     0,
+     0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
+     0,     0,    49,     0,    50,     0,     0,   147,   148,    51,
+     0,    52,    53,    54,   149,     0,     0,     0,    85,    38,
+    86,     0,    87,   150,     0,     0,     0,     0,     0,     0,
+     0,     0,    88,     0,     0,     0,    89,     0,     0,     0,
+    90,     0,     0,    91,    41,    42,    43,     0,     0,     0,
+     0,     0,   151,     0,    92,    45,     0,     0,     0,    93,
+    46,    94,    47,    95,     0,     0,     0,     0,     0,     0,
+    48,     0,    96,    97,   152,   153,     0,     0,     0,    49,
+     0,    50,     0,   154,   147,   148,    51,    98,    52,    53,
+    54,   149,     0,     0,     0,    85,    38,    86,     0,    87,
+   150,     0,     0,     0,     0,     0,     0,     0,     0,    88,
+     0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
+    91,    41,    42,    43,     0,     0,     0,     0,     0,   151,
+     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
+    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
+    97,   152,   153,     0,     0,     0,    49,     0,    50,    83,
+    84,     0,     0,    51,    98,    52,    53,    54,     0,     0,
+    85,    38,    86,     0,    87,     0,     0,     0,     0,     0,
      0,     0,     0,     0,    88,     0,     0,     0,    89,     0,
      0,     0,    90,     0,     0,    91,    41,    42,    43,     0,
-     0,     0,     0,     0,   151,     0,    92,    45,     0,     0,
+     0,     0,     0,     0,     0,     0,    92,    45,     0,     0,
      0,    93,    46,    94,    47,    95,     0,     0,     0,     0,
-     0,     0,    48,     0,    96,    97,   152,   153,     0,     0,
-     0,    49,     0,    50,     0,   154,   147,   148,    51,    98,
-    52,    53,    54,   149,     0,     0,     0,    85,    38,    86,
-     0,    87,   150,     0,     0,     0,     0,     0,     0,     0,
-     0,    88,     0,     0,     0,    89,     0,     0,     0,    90,
-     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
-     0,   151,     0,    92,    45,     0,     0,     0,    93,    46,
-    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
-     0,    96,    97,   152,   153,     0,     0,     0,    49,     0,
-    50,    83,    84,     0,     0,    51,    98,    52,    53,    54,
-     0,     0,    85,    38,    86,     0,    87,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    88,     0,     0,     0,
-    89,     0,     0,     0,    90,     0,     0,    91,    41,    42,
-    43,     0,     0,     0,     0,     0,     0,     0,    92,    45,
-     0,     0,     0,    93,    46,    94,    47,    95,     0,     0,
-     0,     0,     0,     0,    48,     0,    96,    97,     0,     0,
-     0,     0,     0,    49,     0,    50,     1,     2,     0,     0,
-    51,    98,    52,    53,    54,     0,     0,    85,    38,    86,
-     0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    88,     0,     0,     0,    89,     0,     0,     0,    90,
-     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
-     0,     0,     0,    92,    45,     0,     0,     0,    93,    46,
-    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
-     0,    96,    97,     0,     0,     0,     0,     0,    49,     0,
-    50,     0,     0,     0,     0,    51,    98,    52,    53,    54
+     0,     0,    48,     0,    96,    97,     0,     0,     0,     0,
+     0,    49,     0,    50,     1,     2,     0,     0,    51,    98,
+    52,    53,    54,     0,     0,    85,    38,    86,     0,    87,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    88,
+     0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
+    91,    41,    42,    43,     0,     0,     0,     0,     0,     0,
+     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
+    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
+    97,     0,     0,     0,     0,     0,    49,     0,    50,     0,
+     0,     0,     0,    51,    98,    52,    53,    54
 };
 
 static const short yycheck[] = {     7,
-   121,   153,    82,   155,    82,    13,   223,   198,   202,     0,
-    64,    65,     3,     8,     8,    64,    65,   136,   135,     8,
-     8,   317,   109,   110,    48,     8,   304,     4,   107,    37,
-    13,    14,    40,    17,    21,   105,    44,   333,    15,    16,
-    15,    16,     8,     9,     8,     9,    37,     8,    56,    40,
-    99,     8,    59,    44,     8,     9,    13,    14,    12,   136,
-    35,    30,    19,     8,   342,    56,    74,    82,    13,    14,
-    37,    32,     5,     6,     7,     8,     9,    10,    11,    12,
-    13,    14,   103,    74,     8,     9,   110,    71,    12,    56,
-    77,    75,   107,   114,   213,   243,    71,   106,    35,    13,
-    14,   110,   110,    48,    91,   222,   225,   115,    99,   228,
-   104,   259,   306,   234,    47,   104,   124,    36,   167,   110,
-   198,   116,     9,   114,   115,   113,   109,   275,   136,   106,
-   121,   106,    65,   124,    71,   110,    15,    16,   216,    82,
-   106,   116,   106,   104,   135,   136,     4,   116,   225,   203,
-   104,   228,   109,     3,    43,    88,    82,    15,    16,   105,
-   168,   169,   105,   241,   107,    54,   106,   113,   385,    14,
-   110,   249,   105,   377,    86,   379,   167,    22,   169,   105,
-   104,   107,   106,   106,   332,   304,     6,   110,     8,     9,
-    10,    11,    12,    86,   202,   301,   302,   205,    43,   106,
-    45,    55,   210,   110,   106,   213,   312,   215,   110,    54,
-    86,   402,   225,   108,   313,   228,   224,   225,    23,     8,
-   228,   412,   341,   342,    13,    14,    14,    47,   236,   328,
-   329,   309,   331,    41,   225,     8,     9,   228,   390,    12,
-    13,    14,    62,   234,     6,   109,     8,     9,    10,    11,
-    12,    13,    14,    13,    14,   335,   377,    19,   379,   339,
-   106,    31,    32,   105,   110,   105,   274,   258,    88,   277,
-     6,    33,     8,     9,    10,    11,    12,    13,    14,   106,
-   113,    83,    83,   110,    53,    47,    48,    73,     6,    83,
-     8,     9,    10,    11,    12,     3,   304,    33,   306,   113,
-     3,    63,   106,   311,    99,   100,   101,   102,   106,   105,
-     9,    47,    48,   304,   111,   110,    13,    14,    15,    16,
-    82,    99,   100,   101,   102,   105,    88,    63,   111,    47,
-   105,    37,    70,   341,   342,    97,   344,   105,   105,   105,
-     3,     8,   113,   105,    62,   107,    82,   111,   113,    27,
-   107,   342,    88,    70,   117,   107,   364,     3,    70,     4,
-   116,    97,    97,    90,   112,    70,   374,    13,    14,   105,
-    88,   107,   106,   110,    98,    27,   108,    98,    24,    25,
-    26,   107,    28,   105,   107,   393,   377,   106,   379,     4,
-    84,   105,    38,   108,   114,   105,    42,   405,   107,   103,
-    46,   409,   104,    49,    50,    51,    52,   108,   106,     0,
-   105,     0,   108,   113,    60,    61,   108,   110,   108,    65,
-    66,    67,    68,    69,   115,   114,   108,     3,   139,    13,
-    76,    26,    78,    79,    56,    74,   115,     8,   110,    85,
-    65,    87,    13,    14,   344,   311,    92,    93,    94,    95,
-    96,   167,   210,   306,    25,   231,   412,   318,   265,   105,
-   391,   405,   397,   222,   393,   277,   227,   341,    -1,    40,
-    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,
-    61,    -1,    -1,    -1,    -1,    66,    -1,    68,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    85,    -1,    87,    -1,    -1,    13,
-    14,    92,    -1,    94,    95,    96,    20,    -1,    -1,    -1,
-    24,    25,    26,    -1,    28,    29,    -1,    -1,    -1,    -1,
+   121,   198,    82,   136,   223,    13,   153,     8,   155,     0,
+     8,   202,     3,    64,    65,    82,     8,   135,     8,     8,
+   136,    17,    64,    65,     8,     9,    21,     4,    12,    37,
+   306,    32,    40,   250,    32,   105,    44,    48,    15,    16,
+     9,    15,    16,     8,     9,     8,    37,     8,    56,    40,
+    13,    14,    30,    44,     8,    35,    19,    99,   107,    13,
+    14,    35,    37,    82,   105,    56,    74,     8,     9,   345,
+     8,     9,   113,   320,    12,    71,   380,   244,   382,    75,
+   213,    56,    77,    74,    13,    14,   303,   304,   107,   336,
+    43,    71,   225,    36,   261,   228,    91,    71,   315,   110,
+   103,    54,   110,   104,   222,   106,   104,   115,    99,   225,
+   277,   114,   228,   234,   104,   116,   124,   308,   116,   110,
+   104,   113,   106,   114,   115,   167,   116,   116,   136,   106,
+   121,   198,   106,   124,     8,   202,   110,    59,   116,    13,
+    14,   106,   116,   104,   135,   136,   109,    82,   215,   216,
+    14,     4,   203,   225,    86,   109,   228,    82,    22,    86,
+   168,   169,    15,    16,     3,   106,   104,   106,   335,   388,
+   105,   110,   107,   306,    48,   242,   167,   316,   169,    43,
+   105,    45,   107,     6,   251,     8,     9,    10,    11,    12,
+    54,    86,   331,   332,   202,   334,    55,   205,    99,   100,
+   101,   102,   210,   109,   110,   213,   106,   215,   405,   110,
+   110,   344,   345,    15,    16,   106,   224,   225,   415,   110,
+   228,     8,     9,   108,    47,    12,    13,    14,   236,   106,
+     8,    13,    14,   110,   225,    13,    14,   228,   106,    62,
+    23,   308,   110,   234,   311,    14,   393,     6,    41,     8,
+     9,    10,    11,    12,    13,    14,    31,    32,   338,   380,
+    19,   382,   342,   106,   109,    88,   106,   110,   276,   260,
+   110,   279,   105,   105,    33,    13,    14,    15,    16,     6,
+   347,     8,     9,    10,    11,    12,   113,    83,    47,    48,
+    99,   100,   101,   102,    83,    53,    73,    83,   306,     3,
+   308,   113,     3,   106,    63,   313,   106,   105,   105,     9,
+   111,   105,   111,    37,   105,   306,    70,   105,     3,     8,
+    47,   105,   117,    82,    27,    70,    70,     4,   113,    88,
+    97,   111,   113,   107,   107,    62,   344,   345,    97,   347,
+   116,    90,   112,   106,    70,   110,   105,    98,   107,    27,
+    98,   108,   107,   105,   345,     4,   106,   110,   105,   367,
+     3,    88,    84,   103,   107,   106,   108,   104,   114,   377,
+    13,    14,   107,   105,   108,   108,   115,   105,   114,   108,
+     0,    24,    25,    26,     0,    28,     3,   108,   396,   380,
+   108,   382,    13,   113,    26,    38,    56,   110,    74,    42,
+   408,   115,    65,    46,   412,   167,    49,    50,    51,    52,
+   347,   313,   308,   231,   139,   415,   227,    60,    61,   267,
+   210,   394,    65,    66,    67,    68,    69,   321,   400,   408,
+   222,   344,   396,    76,    -1,    78,    79,   279,    -1,    -1,
+    -1,    -1,    85,    -1,    87,    -1,    -1,    -1,    -1,    92,
+    93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     6,   105,     8,     9,    10,    11,    12,    13,    14,
+     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    47,    -1,    -1,     8,    -1,    -1,    63,    -1,
+    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    65,    -1,    25,    -1,    -1,    -1,    -1,    82,    -1,    -1,
+    -1,    -1,    -1,    88,    -1,    -1,    -1,    40,    -1,    -1,
+    -1,    44,    97,    88,    -1,    -1,    -1,    50,    51,    52,
+   105,    -1,   107,    56,    -1,    -1,    -1,    -1,    61,    -1,
+   105,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    85,    -1,    87,    -1,    -1,    13,    14,    92,
+    -1,    94,    95,    96,    20,    -1,    -1,    -1,    24,    25,
+    26,    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,
+    46,    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,
+    -1,    -1,    58,    -1,    60,    61,    -1,    -1,    -1,    65,
+    66,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+    76,    -1,    78,    79,    80,    81,    -1,    -1,    -1,    85,
+    -1,    87,    -1,    89,    13,    14,    92,    93,    94,    95,
+    96,    20,    -1,    -1,    -1,    24,    25,    26,    -1,    28,
+    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
+    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,
+    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    58,
+    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
+    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,
+    79,    80,    81,    -1,    -1,    -1,    85,    -1,    87,    13,
+    14,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
+    24,    25,    26,    -1,    28,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,
     -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,    -1,
-    -1,    -1,    -1,    -1,    58,    -1,    60,    61,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
     -1,    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,
-    -1,    -1,    76,    -1,    78,    79,    80,    81,    -1,    -1,
-    -1,    85,    -1,    87,    -1,    89,    13,    14,    92,    93,
-    94,    95,    96,    20,    -1,    -1,    -1,    24,    25,    26,
-    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
-    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,
-    -1,    58,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
-    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-    -1,    78,    79,    80,    81,    -1,    -1,    -1,    85,    -1,
-    87,    13,    14,    -1,    -1,    92,    93,    94,    95,    96,
-    -1,    -1,    24,    25,    26,    -1,    28,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
-    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
-    -1,    -1,    -1,    65,    66,    67,    68,    69,    -1,    -1,
-    -1,    -1,    -1,    -1,    76,    -1,    78,    79,    -1,    -1,
-    -1,    -1,    -1,    85,    -1,    87,    13,    14,    -1,    -1,
-    92,    93,    94,    95,    96,    -1,    -1,    24,    25,    26,
-    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
-    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
-    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,    -1,
-    87,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96
+    -1,    -1,    76,    -1,    78,    79,    -1,    -1,    -1,    -1,
+    -1,    85,    -1,    87,    13,    14,    -1,    -1,    92,    93,
+    94,    95,    96,    -1,    -1,    24,    25,    26,    -1,    28,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
+    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,
+    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
+    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,
+    79,    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    -1,
+    -1,    -1,    -1,    92,    93,    94,    95,    96
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -2003,36 +2019,51 @@
 	;
     break;}
 case 80:
-#line 907 "asn1p_y.y"
+#line 904 "asn1p_y.y"
+{
+		yyval.a_expr = yyvsp[-1].a_expr;
+		yyval.a_expr->marker = yyvsp[0].a_marker;
+		_fixup_anonymous_identifier(yyval.a_expr);
+	;
+    break;}
+case 81:
+#line 912 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 81:
-#line 912 "asn1p_y.y"
+case 82:
+#line 917 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 82:
-#line 919 "asn1p_y.y"
-{
-		yyval.a_expr = yyvsp[0].a_expr;
-		assert(yyval.a_expr->Identifier == 0);
-		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
-	;
-    break;}
 case 83:
 #line 924 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
+		assert(yyval.a_expr->Identifier == 0);
+		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
 	;
     break;}
 case 84:
-#line 930 "asn1p_y.y"
+#line 929 "asn1p_y.y"
+{
+		yyval.a_expr = yyvsp[0].a_expr;
+	;
+    break;}
+case 85:
+#line 932 "asn1p_y.y"
+{
+		yyval.a_expr = yyvsp[0].a_expr;
+		_fixup_anonymous_identifier(yyval.a_expr);
+	;
+    break;}
+case 86:
+#line 939 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2041,16 +2072,16 @@
 		assert(yyval.a_expr->meta_type == AMT_OBJECT);
 	;
     break;}
-case 85:
-#line 940 "asn1p_y.y"
+case 87:
+#line 949 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
-case 86:
-#line 941 "asn1p_y.y"
+case 88:
+#line 950 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
-case 87:
-#line 945 "asn1p_y.y"
+case 89:
+#line 954 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2059,15 +2090,15 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 88:
-#line 952 "asn1p_y.y"
+case 90:
+#line 961 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 89:
-#line 959 "asn1p_y.y"
+case 91:
+#line 968 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2077,8 +2108,8 @@
 		yyval.a_expr->marker = yyvsp[0].a_marker;
 	;
     break;}
-case 90:
-#line 967 "asn1p_y.y"
+case 92:
+#line 976 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -2086,8 +2117,8 @@
 		yyval.a_expr->unique = yyvsp[-1].a_int;
 	;
     break;}
-case 91:
-#line 973 "asn1p_y.y"
+case 93:
+#line 982 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2104,48 +2135,48 @@
 		yyval.a_expr->unique = yyvsp[-1].a_int;
 	;
     break;}
-case 92:
-#line 991 "asn1p_y.y"
-{ yyval.a_wsynt = 0; ;
-    break;}
-case 93:
-#line 992 "asn1p_y.y"
-{
-		yyval.a_wsynt = yyvsp[0].a_wsynt;
-	;
-    break;}
 case 94:
-#line 999 "asn1p_y.y"
-{ asn1p_lexer_hack_enable_with_syntax(); ;
+#line 1000 "asn1p_y.y"
+{ yyval.a_wsynt = 0; ;
     break;}
 case 95:
 #line 1001 "asn1p_y.y"
 {
-		yyval.a_wsynt = yyvsp[-1].a_wsynt;
+		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 96:
-#line 1007 "asn1p_y.y"
+#line 1008 "asn1p_y.y"
+{ asn1p_lexer_hack_enable_with_syntax(); ;
+    break;}
+case 97:
+#line 1010 "asn1p_y.y"
+{
+		yyval.a_wsynt = yyvsp[-1].a_wsynt;
+	;
+    break;}
+case 98:
+#line 1016 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
-case 97:
-#line 1011 "asn1p_y.y"
+case 99:
+#line 1020 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
-case 98:
-#line 1018 "asn1p_y.y"
+case 100:
+#line 1027 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
-case 99:
-#line 1021 "asn1p_y.y"
+case 101:
+#line 1030 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2156,43 +2187,43 @@
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
 	;
     break;}
-case 100:
-#line 1033 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		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 101:
-#line 1041 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		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 102:
-#line 1050 "asn1p_y.y"
+#line 1042 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		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 103:
-#line 1062 "asn1p_y.y"
+#line 1050 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		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 104:
+#line 1059 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		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 105:
+#line 1071 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2213,14 +2244,14 @@
 		}
 	;
     break;}
-case 104:
-#line 1084 "asn1p_y.y"
+case 106:
+#line 1093 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 105:
-#line 1087 "asn1p_y.y"
+case 107:
+#line 1096 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2228,8 +2259,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 106:
-#line 1093 "asn1p_y.y"
+case 108:
+#line 1102 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2237,8 +2268,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 107:
-#line 1099 "asn1p_y.y"
+case 109:
+#line 1108 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2246,8 +2277,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 108:
-#line 1105 "asn1p_y.y"
+case 110:
+#line 1114 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2259,8 +2290,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 109:
-#line 1115 "asn1p_y.y"
+case 111:
+#line 1124 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2272,8 +2303,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 110:
-#line 1125 "asn1p_y.y"
+case 112:
+#line 1134 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2281,8 +2312,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 111:
-#line 1131 "asn1p_y.y"
+case 113:
+#line 1140 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2295,8 +2326,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 112:
-#line 1145 "asn1p_y.y"
+case 114:
+#line 1154 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2312,8 +2343,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 113:
-#line 1169 "asn1p_y.y"
+case 115:
+#line 1178 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2322,8 +2353,8 @@
 		yyval.a_expr->meta_type = AMT_TYPEREF;
 	;
     break;}
-case 114:
-#line 1176 "asn1p_y.y"
+case 116:
+#line 1185 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2332,8 +2363,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 115:
-#line 1191 "asn1p_y.y"
+case 117:
+#line 1200 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2343,34 +2374,34 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 116:
-#line 1199 "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 117:
-#line 1209 "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 118:
-#line 1219 "asn1p_y.y"
+#line 1208 "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 119:
+#line 1218 "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 120:
+#line 1228 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2382,8 +2413,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 119:
-#line 1229 "asn1p_y.y"
+case 121:
+#line 1238 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2393,8 +2424,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 120:
-#line 1237 "asn1p_y.y"
+case 122:
+#line 1246 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2415,8 +2446,8 @@
 		}
 	;
     break;}
-case 121:
-#line 1259 "asn1p_y.y"
+case 123:
+#line 1268 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2426,8 +2457,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 122:
-#line 1267 "asn1p_y.y"
+case 124:
+#line 1276 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2436,22 +2467,22 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 125:
-#line 1281 "asn1p_y.y"
+case 127:
+#line 1290 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 126:
-#line 1286 "asn1p_y.y"
+case 128:
+#line 1295 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 127:
-#line 1299 "asn1p_y.y"
+case 129:
+#line 1308 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2460,8 +2491,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 128:
-#line 1309 "asn1p_y.y"
+case 130:
+#line 1318 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2470,77 +2501,77 @@
 		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
 	;
     break;}
-case 129:
-#line 1316 "asn1p_y.y"
+case 131:
+#line 1325 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 130:
-#line 1316 "asn1p_y.y"
+case 132:
+#line 1325 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_UNPARSED;
 	;
     break;}
-case 131:
-#line 1321 "asn1p_y.y"
+case 133:
+#line 1330 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_NULL;
 	;
     break;}
-case 132:
-#line 1326 "asn1p_y.y"
+case 134:
+#line 1335 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 133:
-#line 1331 "asn1p_y.y"
+case 135:
+#line 1340 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 134:
-#line 1336 "asn1p_y.y"
+case 136:
+#line 1345 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 135:
-#line 1340 "asn1p_y.y"
+case 137:
+#line 1349 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 136:
-#line 1344 "asn1p_y.y"
+case 138:
+#line 1353 "asn1p_y.y"
 {
 		yyval.a_value = yyval.a_value;
 	;
     break;}
-case 137:
-#line 1347 "asn1p_y.y"
-{
-		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
-case 138:
-#line 1350 "asn1p_y.y"
-{
-		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
 case 139:
 #line 1356 "asn1p_y.y"
 {
+		yyval.a_value = yyvsp[0].a_value;
+	;
+    break;}
+case 140:
+#line 1359 "asn1p_y.y"
+{
+		yyval.a_value = yyvsp[0].a_value;
+	;
+    break;}
+case 141:
+#line 1365 "asn1p_y.y"
+{
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
@@ -2552,8 +2583,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 140:
-#line 1367 "asn1p_y.y"
+case 142:
+#line 1376 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2569,31 +2600,31 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 141:
-#line 1385 "asn1p_y.y"
+case 143:
+#line 1394 "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 142:
-#line 1389 "asn1p_y.y"
+case 144:
+#line 1398 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TUPLE;
 	;
     break;}
-case 143:
-#line 1394 "asn1p_y.y"
+case 145:
+#line 1403 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_QUADRUPLE;
 	;
     break;}
-case 144:
-#line 1428 "asn1p_y.y"
+case 146:
+#line 1437 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2604,8 +2635,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 145:
-#line 1437 "asn1p_y.y"
+case 147:
+#line 1446 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2619,72 +2650,72 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 146:
-#line 1452 "asn1p_y.y"
+case 148:
+#line 1461 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 147:
-#line 1453 "asn1p_y.y"
+case 149:
+#line 1462 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 148:
-#line 1454 "asn1p_y.y"
+case 150:
+#line 1463 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 149:
-#line 1455 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
-    break;}
-case 150:
-#line 1456 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
-    break;}
 case 151:
-#line 1457 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
-    break;}
-case 152:
-#line 1458 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
-    break;}
-case 153:
-#line 1459 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
-    break;}
-case 154:
-#line 1460 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
-    break;}
-case 155:
-#line 1461 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
-    break;}
-case 156:
-#line 1462 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_UTCTime; ;
-    break;}
-case 157:
-#line 1463 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
-    break;}
-case 158:
 #line 1464 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
-case 159:
+case 152:
+#line 1465 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
+    break;}
+case 153:
+#line 1466 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
+    break;}
+case 154:
+#line 1467 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
+    break;}
+case 155:
+#line 1468 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
+    break;}
+case 156:
+#line 1469 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
+    break;}
+case 157:
+#line 1470 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
+    break;}
+case 158:
 #line 1471 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_INTEGER; ;
+{ yyval.a_type = ASN_BASIC_UTCTime; ;
+    break;}
+case 159:
+#line 1472 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
 case 160:
-#line 1472 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+#line 1473 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 161:
-#line 1473 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+#line 1480 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
 case 162:
-#line 1477 "asn1p_y.y"
+#line 1481 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+    break;}
+case 163:
+#line 1482 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+    break;}
+case 164:
+#line 1486 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2692,8 +2723,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 163:
-#line 1483 "asn1p_y.y"
+case 165:
+#line 1492 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2705,92 +2736,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 164:
-#line 1496 "asn1p_y.y"
+case 166:
+#line 1505 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 165:
-#line 1497 "asn1p_y.y"
+case 167:
+#line 1506 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 166:
-#line 1501 "asn1p_y.y"
+case 168:
+#line 1510 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
-case 167:
-#line 1505 "asn1p_y.y"
+case 169:
+#line 1514 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
-case 168:
-#line 1506 "asn1p_y.y"
+case 170:
+#line 1515 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
-case 169:
-#line 1507 "asn1p_y.y"
+case 171:
+#line 1516 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
-case 170:
-#line 1508 "asn1p_y.y"
+case 172:
+#line 1517 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
-case 171:
-#line 1509 "asn1p_y.y"
+case 173:
+#line 1518 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
-case 172:
-#line 1513 "asn1p_y.y"
+case 174:
+#line 1522 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
-case 173:
-#line 1514 "asn1p_y.y"
+case 175:
+#line 1523 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
-case 174:
-#line 1515 "asn1p_y.y"
+case 176:
+#line 1524 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
-case 175:
-#line 1516 "asn1p_y.y"
+case 177:
+#line 1525 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
-case 176:
-#line 1520 "asn1p_y.y"
+case 178:
+#line 1529 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
-case 177:
-#line 1521 "asn1p_y.y"
+case 179:
+#line 1530 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 183:
-#line 1533 "asn1p_y.y"
+case 185:
+#line 1542 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 184:
-#line 1534 "asn1p_y.y"
+case 186:
+#line 1543 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 185:
-#line 1540 "asn1p_y.y"
+case 187:
+#line 1549 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 186:
-#line 1543 "asn1p_y.y"
+case 188:
+#line 1552 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2799,26 +2830,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 187:
-#line 1553 "asn1p_y.y"
+case 189:
+#line 1562 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 188:
-#line 1556 "asn1p_y.y"
+case 190:
+#line 1565 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 189:
-#line 1562 "asn1p_y.y"
+case 191:
+#line 1571 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 190:
-#line 1565 "asn1p_y.y"
+case 192:
+#line 1574 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2826,8 +2857,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 191:
-#line 1571 "asn1p_y.y"
+case 193:
+#line 1580 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2837,38 +2868,38 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 192:
-#line 1582 "asn1p_y.y"
+case 194:
+#line 1591 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 193:
-#line 1585 "asn1p_y.y"
+case 195:
+#line 1594 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 194:
-#line 1588 "asn1p_y.y"
+case 196:
+#line 1597 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 195:
-#line 1591 "asn1p_y.y"
+case 197:
+#line 1600 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 196:
-#line 1594 "asn1p_y.y"
+case 198:
+#line 1603 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 197:
-#line 1600 "asn1p_y.y"
+case 199:
+#line 1609 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2878,8 +2909,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 198:
-#line 1608 "asn1p_y.y"
+case 200:
+#line 1617 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2889,8 +2920,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 199:
-#line 1616 "asn1p_y.y"
+case 201:
+#line 1625 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2898,8 +2929,8 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 200:
-#line 1622 "asn1p_y.y"
+case 202:
+#line 1631 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2907,40 +2938,40 @@
 		yyval.a_constr->containedSubtype = yyvsp[0].a_value;
 	;
     break;}
-case 201:
-#line 1628 "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 202:
-#line 1635 "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 203:
-#line 1643 "asn1p_y.y"
+#line 1637 "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 204:
-#line 1651 "asn1p_y.y"
+#line 1644 "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 205:
+#line 1652 "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 206:
+#line 1660 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2951,24 +2982,24 @@
 		yyval.a_constr->range_stop->type = ATV_MAX;
 	;
     break;}
-case 205:
-#line 1660 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 206:
-#line 1663 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
 case 207:
-#line 1667 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
+#line 1669 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
     break;}
 case 208:
-#line 1667 "asn1p_y.y"
+#line 1672 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 209:
+#line 1676 "asn1p_y.y"
+{ asn1p_lexer_hack_push_opaque_state(); ;
+    break;}
+case 210:
+#line 1676 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2978,64 +3009,64 @@
 		yyval.a_constr->value->type = ATV_UNPARSED;
 	;
     break;}
-case 209:
-#line 1678 "asn1p_y.y"
+case 211:
+#line 1687 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
-case 210:
-#line 1679 "asn1p_y.y"
+case 212:
+#line 1688 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
-case 211:
-#line 1680 "asn1p_y.y"
+case 213:
+#line 1689 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
-case 212:
-#line 1681 "asn1p_y.y"
+case 214:
+#line 1690 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
-case 213:
-#line 1685 "asn1p_y.y"
+case 215:
+#line 1694 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 214:
-#line 1688 "asn1p_y.y"
+case 216:
+#line 1697 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 215:
-#line 1694 "asn1p_y.y"
+case 217:
+#line 1703 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 216:
-#line 1699 "asn1p_y.y"
+case 218:
+#line 1708 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 217:
-#line 1704 "asn1p_y.y"
-{
-		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
-case 218:
-#line 1707 "asn1p_y.y"
-{
-		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
 case 219:
-#line 1710 "asn1p_y.y"
+#line 1713 "asn1p_y.y"
+{
+		yyval.a_value = yyvsp[0].a_value;
+	;
+    break;}
+case 220:
+#line 1716 "asn1p_y.y"
+{
+		yyval.a_value = yyvsp[0].a_value;
+	;
+    break;}
+case 221:
+#line 1719 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3048,8 +3079,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 220:
-#line 1724 "asn1p_y.y"
+case 222:
+#line 1733 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3062,41 +3093,41 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 221:
-#line 1738 "asn1p_y.y"
-{
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
-	;
-    break;}
-case 222:
-#line 1741 "asn1p_y.y"
-{
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
-	;
-    break;}
 case 223:
 #line 1747 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 224:
 #line 1750 "asn1p_y.y"
 {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
+		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
 case 225:
 #line 1756 "asn1p_y.y"
 {
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 226:
+#line 1759 "asn1p_y.y"
+{
+		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
+	;
+    break;}
+case 227:
+#line 1765 "asn1p_y.y"
+{
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
 		yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
 	;
     break;}
-case 226:
-#line 1762 "asn1p_y.y"
+case 228:
+#line 1771 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3106,47 +3137,47 @@
 		if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 227:
-#line 1776 "asn1p_y.y"
+case 229:
+#line 1785 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 228:
-#line 1777 "asn1p_y.y"
+case 230:
+#line 1786 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 229:
-#line 1781 "asn1p_y.y"
+case 231:
+#line 1790 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 230:
-#line 1784 "asn1p_y.y"
-{
-		yyval.a_pres = ACPRES_ABSENT;
-	;
-    break;}
-case 231:
-#line 1787 "asn1p_y.y"
-{
-		yyval.a_pres = ACPRES_OPTIONAL;
-	;
-    break;}
 case 232:
 #line 1793 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
 case 233:
 #line 1796 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
 case 234:
+#line 1802 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 235:
 #line 1805 "asn1p_y.y"
 {
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 236:
+#line 1814 "asn1p_y.y"
+{
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
 		int ret;
@@ -3159,14 +3190,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 235:
-#line 1820 "asn1p_y.y"
+case 237:
+#line 1829 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 236:
-#line 1826 "asn1p_y.y"
+case 238:
+#line 1835 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3174,8 +3205,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 237:
-#line 1832 "asn1p_y.y"
+case 239:
+#line 1841 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3185,8 +3216,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 238:
-#line 1846 "asn1p_y.y"
+case 240:
+#line 1855 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3199,8 +3230,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 239:
-#line 1857 "asn1p_y.y"
+case 241:
+#line 1866 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3214,14 +3245,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 240:
-#line 1873 "asn1p_y.y"
+case 242:
+#line 1882 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 241:
-#line 1876 "asn1p_y.y"
+case 243:
+#line 1885 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3232,61 +3263,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 242:
-#line 1894 "asn1p_y.y"
+case 244:
+#line 1903 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 243:
-#line 1898 "asn1p_y.y"
+case 245:
+#line 1907 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
-case 244:
-#line 1902 "asn1p_y.y"
+case 246:
+#line 1911 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 245:
-#line 1906 "asn1p_y.y"
+case 247:
+#line 1915 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
-case 246:
-#line 1929 "asn1p_y.y"
+case 248:
+#line 1938 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 247:
-#line 1933 "asn1p_y.y"
+case 249:
+#line 1942 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 248:
-#line 1939 "asn1p_y.y"
+case 250:
+#line 1948 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 249:
-#line 1944 "asn1p_y.y"
+case 251:
+#line 1953 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 250:
-#line 1951 "asn1p_y.y"
+case 252:
+#line 1960 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3295,30 +3326,30 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 251:
-#line 1958 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
-	;
-    break;}
-case 252:
-#line 1966 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
-	;
-    break;}
 case 253:
-#line 1974 "asn1p_y.y"
+#line 1967 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
+		yyval.a_expr->meta_type = AMT_VALUE;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
+		yyval.a_expr->value = yyvsp[-1].a_value;
+	;
+    break;}
+case 254:
+#line 1975 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
+		yyval.a_expr->meta_type = AMT_VALUE;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
+		yyval.a_expr->value = yyvsp[-1].a_value;
+	;
+    break;}
+case 255:
+#line 1983 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3327,8 +3358,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 254:
-#line 1981 "asn1p_y.y"
+case 256:
+#line 1990 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3338,103 +3369,103 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 255:
-#line 1992 "asn1p_y.y"
-{
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	;
-    break;}
-case 256:
-#line 1996 "asn1p_y.y"
-{
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	;
-    break;}
 case 257:
-#line 2027 "asn1p_y.y"
-{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
+#line 2001 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	;
     break;}
 case 258:
-#line 2028 "asn1p_y.y"
-{ yyval.a_tag = yyvsp[0].a_tag; ;
+#line 2005 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	;
     break;}
 case 259:
-#line 2032 "asn1p_y.y"
+#line 2036 "asn1p_y.y"
+{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
+    break;}
+case 260:
+#line 2037 "asn1p_y.y"
+{ yyval.a_tag = yyvsp[0].a_tag; ;
+    break;}
+case 261:
+#line 2041 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
-case 260:
-#line 2039 "asn1p_y.y"
+case 262:
+#line 2048 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
-case 261:
-#line 2045 "asn1p_y.y"
+case 263:
+#line 2054 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
-case 262:
-#line 2046 "asn1p_y.y"
+case 264:
+#line 2055 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
-case 263:
-#line 2047 "asn1p_y.y"
+case 265:
+#line 2056 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
-case 264:
-#line 2048 "asn1p_y.y"
+case 266:
+#line 2057 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
-case 265:
-#line 2052 "asn1p_y.y"
+case 267:
+#line 2061 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_DEFAULT; ;
     break;}
-case 266:
-#line 2053 "asn1p_y.y"
+case 268:
+#line 2062 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_IMPLICIT; ;
     break;}
-case 267:
-#line 2054 "asn1p_y.y"
+case 269:
+#line 2063 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_EXPLICIT; ;
     break;}
-case 268:
-#line 2058 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 269:
-#line 2062 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
 case 270:
-#line 2070 "asn1p_y.y"
+#line 2067 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 271:
-#line 2077 "asn1p_y.y"
-{ yyval.tv_str = 0; ;
+#line 2071 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
     break;}
 case 272:
-#line 2078 "asn1p_y.y"
+#line 2079 "asn1p_y.y"
 {
+		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 273:
-#line 2084 "asn1p_y.y"
+#line 2086 "asn1p_y.y"
+{ yyval.tv_str = 0; ;
+    break;}
+case 274:
+#line 2087 "asn1p_y.y"
+{
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 275:
+#line 2093 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3662,7 +3693,7 @@
     }
   return 1;
 }
-#line 2090 "asn1p_y.y"
+#line 2099 "asn1p_y.y"
 
 
 
@@ -3760,6 +3791,48 @@
 	return val;
 }
 
+/*
+ * For unnamed types (used in old X.208 compliant modules)
+ * generate some sort of interim names, to not to force human being to fix
+ * the specification's compliance to modern ASN.1 standards.
+ */
+static void
+_fixup_anonymous_identifier(asn1p_expr_t *expr) {
+	char *p;
+	assert(expr->Identifier == 0);
+
+	/*
+	 * Try to figure out the type name
+	 * without going too much into details
+	 */
+	expr->Identifier = ASN_EXPR_TYPE2STR(expr->expr_type);
+	if(expr->reference && expr->reference->comp_count > 0)
+		expr->Identifier = expr->reference->components[0].name;
+
+	fprintf(stderr,
+		"WARNING: Line %d: expected lower-case member identifier, "
+		"found an unnamed %s.\n"
+		"WARNING: Obsolete X.208 syntax detected, "
+		"please give the member a name.\n",
+		yylineno, expr->Identifier ? expr->Identifier : "type");
+
+	if(!expr->Identifier)
+		expr->Identifier = "unnamed";
+	expr->Identifier = strdup(expr->Identifier);
+	assert(expr->Identifier);
+	/* Make a lowercase identifier from the type name */
+	for(p = expr->Identifier; *p; p++) {
+		switch(*p) {
+		case 'A' ... 'Z': *p += 32; break;
+		case ' ': *p = '_'; break;
+		case '-': *p = '_'; break;
+		}
+	}
+	fprintf(stderr, "NOTE: Assigning temporary identifier \"%s\". "
+			"Name clash may occur later.\n",
+		expr->Identifier);
+}
+
 extern char *asn1p_text;
 
 int
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index f7df754..13af5a2 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -29,8 +29,8 @@
  */
 static struct AssignedIdentifier *saved_aid;
 
-static asn1p_value_t *
-	_convert_bitstring2binary(char *str, int base);
+static asn1p_value_t *_convert_bitstring2binary(char *str, int base);
+static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
 
 #define	checkmem(ptr)	do {						\
 		if(!(ptr))						\
@@ -901,6 +901,11 @@
 	| ExtensionAndException {
 		$$ = $1;
 	}
+	| Type optMarker {
+		$$ = $1;
+		$$->marker = $2;
+		_fixup_anonymous_identifier($$);
+	}
 	;
 
 AlternativeTypeLists:
@@ -924,6 +929,10 @@
 	| ExtensionAndException {
 		$$ = $1;
 	}
+	| Type {
+		$$ = $1;
+		_fixup_anonymous_identifier($$);
+	}
 	;
 
 ClassDeclaration:
@@ -2184,6 +2193,48 @@
 	return val;
 }
 
+/*
+ * For unnamed types (used in old X.208 compliant modules)
+ * generate some sort of interim names, to not to force human being to fix
+ * the specification's compliance to modern ASN.1 standards.
+ */
+static void
+_fixup_anonymous_identifier(asn1p_expr_t *expr) {
+	char *p;
+	assert(expr->Identifier == 0);
+
+	/*
+	 * Try to figure out the type name
+	 * without going too much into details
+	 */
+	expr->Identifier = ASN_EXPR_TYPE2STR(expr->expr_type);
+	if(expr->reference && expr->reference->comp_count > 0)
+		expr->Identifier = expr->reference->components[0].name;
+
+	fprintf(stderr,
+		"WARNING: Line %d: expected lower-case member identifier, "
+		"found an unnamed %s.\n"
+		"WARNING: Obsolete X.208 syntax detected, "
+		"please give the member a name.\n",
+		yylineno, expr->Identifier ? expr->Identifier : "type");
+
+	if(!expr->Identifier)
+		expr->Identifier = "unnamed";
+	expr->Identifier = strdup(expr->Identifier);
+	assert(expr->Identifier);
+	/* Make a lowercase identifier from the type name */
+	for(p = expr->Identifier; *p; p++) {
+		switch(*p) {
+		case 'A' ... 'Z': *p += 32; break;
+		case ' ': *p = '_'; break;
+		case '-': *p = '_'; break;
+		}
+	}
+	fprintf(stderr, "NOTE: Assigning temporary identifier \"%s\". "
+			"Name clash may occur later.\n",
+		expr->Identifier);
+}
+
 extern char *asn1p_text;
 
 int
diff --git a/tests/87-old-syntax-OK.asn1 b/tests/87-old-syntax-OK.asn1
new file mode 100644
index 0000000..58e1a0c
--- /dev/null
+++ b/tests/87-old-syntax-OK.asn1
@@ -0,0 +1,29 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .87
+
+ModuleObsoleteSyntax
+	{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5) test(1) 87 }
+DEFINITIONS ::=
+BEGIN
+
+	Tc ::= CHOICE {
+		INTEGER,
+		BOOLEAN
+	}
+
+	Ts ::= SET {
+		INTEGER,
+		BOOLEAN,
+		SEQUENCE {
+			OBJECT IDENTIFIER,
+			RELATIVE-OID,
+			Tc
+		}
+	}
+
+END