more distinction

diff --git a/examples/sample.source.PKIX1/Makefile b/examples/sample.source.PKIX1/Makefile
index 0a04ba9..8fecc54 100644
--- a/examples/sample.source.PKIX1/Makefile
+++ b/examples/sample.source.PKIX1/Makefile
@@ -264,11 +264,13 @@
 ASN_MODULE_HEADERS+=ENUMERATED.h
 ASN_MODULE_SOURCES+=ENUMERATED.c
 ASN_MODULE_HEADERS+=INTEGER.h
+ASN_MODULE_HEADERS+=NativeEnumerated.h
 ASN_MODULE_HEADERS+=GeneralizedTime.h
 ASN_MODULE_SOURCES+=GeneralizedTime.c
 ASN_MODULE_HEADERS+=IA5String.h
 ASN_MODULE_SOURCES+=IA5String.c
 ASN_MODULE_SOURCES+=INTEGER.c
+ASN_MODULE_SOURCES+=NativeEnumerated.c
 ASN_MODULE_HEADERS+=NativeInteger.h
 ASN_MODULE_SOURCES+=NativeInteger.c
 ASN_MODULE_HEADERS+=NumericString.h
@@ -328,6 +330,10 @@
 ASN_MODULE_SOURCES+=xer_decoder.c
 ASN_MODULE_HEADERS+=xer_encoder.h
 ASN_MODULE_SOURCES+=xer_encoder.c
+ASN_MODULE_HEADERS+=per_support.h
+ASN_MODULE_SOURCES+=per_support.c
+ASN_MODULE_HEADERS+=per_decoder.h
+ASN_MODULE_SOURCES+=per_decoder.c
 
 
 lib_LTLIBRARIES=libsomething.la
diff --git a/libasn1parser/asn1p_class.c b/libasn1parser/asn1p_class.c
index 741d98e..c9065f6 100644
--- a/libasn1parser/asn1p_class.c
+++ b/libasn1parser/asn1p_class.c
@@ -19,7 +19,9 @@
 asn1p_wsyntx_chunk_free(asn1p_wsyntx_chunk_t *wc) {
 	if(wc) {
 		switch(wc->type) {
-		case WC_LITERAL: free(wc->content.token); break;
+		case WC_LITERAL:
+		case WC_WHITESPACE:
+			free(wc->content.token); break;
 		case WC_REFERENCE: asn1p_ref_free(wc->content.ref); break;
 		case WC_OPTIONALGROUP:
 			asn1p_wsyntx_free(wc->content.syntax);
@@ -35,8 +37,10 @@
 
 	nc = asn1p_wsyntx_chunk_new();
 	if(nc) {
+		nc->type = wc->type;
 		switch(wc->type) {
 		case WC_LITERAL:
+		case WC_WHITESPACE:
 			nc->content.token = malloc(strlen(wc->content.token)+1);
 			strcpy(nc->content.token, wc->content.token);
 			break;
diff --git a/libasn1parser/asn1p_class.h b/libasn1parser/asn1p_class.h
index ca311fe..06db2d1 100644
--- a/libasn1parser/asn1p_class.h
+++ b/libasn1parser/asn1p_class.h
@@ -12,11 +12,13 @@
 typedef struct asn1p_wsyntx_chunk_s {
 	enum {
 		WC_LITERAL,
+		WC_WHITESPACE,
 		WC_REFERENCE,
 		WC_OPTIONALGROUP
 	} type;
 	/*
-	 * WC_LITERAL -> {buf, len}
+	 * WC_LITERAL -> {token}
+	 * WC_WHITESPACE -> {token}
 	 * WC_REFERENCE -> {ref}
 	 * WC_OPTIONALGROUP -> {syntax}
 	 */
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index 9eea6ca..569bc73 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -2946,7 +2946,7 @@
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
+			return TOK_whitespace;
 			}
 	YY_BREAK
 case 130:
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index a327277..e440d42 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -413,7 +413,7 @@
 	{WSP}+		{
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
+			return TOK_whitespace;
 			}
 
 	"}"		{
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index b5c6256..b00f051 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -12,106 +12,107 @@
 #define yydebug asn1p_debug
 #define yynerrs asn1p_nerrs
 #define	TOK_PPEQ	257
-#define	TOK_opaque	258
-#define	TOK_bstring	259
-#define	TOK_cstring	260
-#define	TOK_hstring	261
-#define	TOK_identifier	262
-#define	TOK_number	263
-#define	TOK_tuple	264
-#define	TOK_quadruple	265
-#define	TOK_number_negative	266
-#define	TOK_typereference	267
-#define	TOK_capitalreference	268
-#define	TOK_typefieldreference	269
-#define	TOK_valuefieldreference	270
-#define	TOK_Literal	271
-#define	TOK_ABSENT	272
-#define	TOK_ABSTRACT_SYNTAX	273
-#define	TOK_ALL	274
-#define	TOK_ANY	275
-#define	TOK_APPLICATION	276
-#define	TOK_AUTOMATIC	277
-#define	TOK_BEGIN	278
-#define	TOK_BIT	279
-#define	TOK_BMPString	280
-#define	TOK_BOOLEAN	281
-#define	TOK_BY	282
-#define	TOK_CHARACTER	283
-#define	TOK_CHOICE	284
-#define	TOK_CLASS	285
-#define	TOK_COMPONENT	286
-#define	TOK_COMPONENTS	287
-#define	TOK_CONSTRAINED	288
-#define	TOK_CONTAINING	289
-#define	TOK_DEFAULT	290
-#define	TOK_DEFINITIONS	291
-#define	TOK_DEFINED	292
-#define	TOK_EMBEDDED	293
-#define	TOK_ENCODED	294
-#define	TOK_ENCODING_CONTROL	295
-#define	TOK_END	296
-#define	TOK_ENUMERATED	297
-#define	TOK_EXPLICIT	298
-#define	TOK_EXPORTS	299
-#define	TOK_EXTENSIBILITY	300
-#define	TOK_EXTERNAL	301
-#define	TOK_FALSE	302
-#define	TOK_FROM	303
-#define	TOK_GeneralizedTime	304
-#define	TOK_GeneralString	305
-#define	TOK_GraphicString	306
-#define	TOK_IA5String	307
-#define	TOK_IDENTIFIER	308
-#define	TOK_IMPLICIT	309
-#define	TOK_IMPLIED	310
-#define	TOK_IMPORTS	311
-#define	TOK_INCLUDES	312
-#define	TOK_INSTANCE	313
-#define	TOK_INSTRUCTIONS	314
-#define	TOK_INTEGER	315
-#define	TOK_ISO646String	316
-#define	TOK_MAX	317
-#define	TOK_MIN	318
-#define	TOK_MINUS_INFINITY	319
-#define	TOK_NULL	320
-#define	TOK_NumericString	321
-#define	TOK_OBJECT	322
-#define	TOK_ObjectDescriptor	323
-#define	TOK_OCTET	324
-#define	TOK_OF	325
-#define	TOK_OPTIONAL	326
-#define	TOK_PATTERN	327
-#define	TOK_PDV	328
-#define	TOK_PLUS_INFINITY	329
-#define	TOK_PRESENT	330
-#define	TOK_PrintableString	331
-#define	TOK_PRIVATE	332
-#define	TOK_REAL	333
-#define	TOK_RELATIVE_OID	334
-#define	TOK_SEQUENCE	335
-#define	TOK_SET	336
-#define	TOK_SIZE	337
-#define	TOK_STRING	338
-#define	TOK_SYNTAX	339
-#define	TOK_T61String	340
-#define	TOK_TAGS	341
-#define	TOK_TeletexString	342
-#define	TOK_TRUE	343
-#define	TOK_TYPE_IDENTIFIER	344
-#define	TOK_UNIQUE	345
-#define	TOK_UNIVERSAL	346
-#define	TOK_UniversalString	347
-#define	TOK_UTCTime	348
-#define	TOK_UTF8String	349
-#define	TOK_VideotexString	350
-#define	TOK_VisibleString	351
-#define	TOK_WITH	352
-#define	TOK_EXCEPT	353
-#define	TOK_INTERSECTION	354
-#define	TOK_UNION	355
-#define	TOK_TwoDots	356
-#define	TOK_ThreeDots	357
+#define	TOK_whitespace	258
+#define	TOK_opaque	259
+#define	TOK_bstring	260
+#define	TOK_cstring	261
+#define	TOK_hstring	262
+#define	TOK_identifier	263
+#define	TOK_number	264
+#define	TOK_tuple	265
+#define	TOK_quadruple	266
+#define	TOK_number_negative	267
+#define	TOK_typereference	268
+#define	TOK_capitalreference	269
+#define	TOK_typefieldreference	270
+#define	TOK_valuefieldreference	271
+#define	TOK_Literal	272
+#define	TOK_ABSENT	273
+#define	TOK_ABSTRACT_SYNTAX	274
+#define	TOK_ALL	275
+#define	TOK_ANY	276
+#define	TOK_APPLICATION	277
+#define	TOK_AUTOMATIC	278
+#define	TOK_BEGIN	279
+#define	TOK_BIT	280
+#define	TOK_BMPString	281
+#define	TOK_BOOLEAN	282
+#define	TOK_BY	283
+#define	TOK_CHARACTER	284
+#define	TOK_CHOICE	285
+#define	TOK_CLASS	286
+#define	TOK_COMPONENT	287
+#define	TOK_COMPONENTS	288
+#define	TOK_CONSTRAINED	289
+#define	TOK_CONTAINING	290
+#define	TOK_DEFAULT	291
+#define	TOK_DEFINITIONS	292
+#define	TOK_DEFINED	293
+#define	TOK_EMBEDDED	294
+#define	TOK_ENCODED	295
+#define	TOK_ENCODING_CONTROL	296
+#define	TOK_END	297
+#define	TOK_ENUMERATED	298
+#define	TOK_EXPLICIT	299
+#define	TOK_EXPORTS	300
+#define	TOK_EXTENSIBILITY	301
+#define	TOK_EXTERNAL	302
+#define	TOK_FALSE	303
+#define	TOK_FROM	304
+#define	TOK_GeneralizedTime	305
+#define	TOK_GeneralString	306
+#define	TOK_GraphicString	307
+#define	TOK_IA5String	308
+#define	TOK_IDENTIFIER	309
+#define	TOK_IMPLICIT	310
+#define	TOK_IMPLIED	311
+#define	TOK_IMPORTS	312
+#define	TOK_INCLUDES	313
+#define	TOK_INSTANCE	314
+#define	TOK_INSTRUCTIONS	315
+#define	TOK_INTEGER	316
+#define	TOK_ISO646String	317
+#define	TOK_MAX	318
+#define	TOK_MIN	319
+#define	TOK_MINUS_INFINITY	320
+#define	TOK_NULL	321
+#define	TOK_NumericString	322
+#define	TOK_OBJECT	323
+#define	TOK_ObjectDescriptor	324
+#define	TOK_OCTET	325
+#define	TOK_OF	326
+#define	TOK_OPTIONAL	327
+#define	TOK_PATTERN	328
+#define	TOK_PDV	329
+#define	TOK_PLUS_INFINITY	330
+#define	TOK_PRESENT	331
+#define	TOK_PrintableString	332
+#define	TOK_PRIVATE	333
+#define	TOK_REAL	334
+#define	TOK_RELATIVE_OID	335
+#define	TOK_SEQUENCE	336
+#define	TOK_SET	337
+#define	TOK_SIZE	338
+#define	TOK_STRING	339
+#define	TOK_SYNTAX	340
+#define	TOK_T61String	341
+#define	TOK_TAGS	342
+#define	TOK_TeletexString	343
+#define	TOK_TRUE	344
+#define	TOK_TYPE_IDENTIFIER	345
+#define	TOK_UNIQUE	346
+#define	TOK_UNIVERSAL	347
+#define	TOK_UniversalString	348
+#define	TOK_UTCTime	349
+#define	TOK_UTF8String	350
+#define	TOK_VideotexString	351
+#define	TOK_VisibleString	352
+#define	TOK_WITH	353
+#define	TOK_EXCEPT	354
+#define	TOK_INTERSECTION	355
+#define	TOK_UNION	356
+#define	TOK_TwoDots	357
+#define	TOK_ThreeDots	358
 
 #line 1 "asn1p_y.y"
 
@@ -224,24 +225,24 @@
 
 #define	YYFINAL		446
 #define	YYFLAG		-32768
-#define	YYNTBASE	119
+#define	YYNTBASE	120
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 357 ? yytranslate[x] : 226)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 358 ? yytranslate[x] : 227)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   115,     2,     2,     2,     2,     2,     2,   108,
-   109,     2,     2,   111,     2,   116,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   112,   110,   117,
-     2,     2,     2,   118,     2,     2,     2,     2,     2,     2,
+     2,     2,   116,     2,     2,     2,     2,     2,     2,   109,
+   110,     2,     2,   112,     2,   117,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   113,   111,   118,
+     2,     2,     2,   119,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   113,     2,   114,   100,     2,     2,     2,     2,     2,     2,
+   114,     2,   115,   101,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   106,   102,   107,     2,     2,     2,     2,     2,
+     2,     2,   107,   103,   108,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -264,7 +265,7 @@
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   101,   103,   104,   105
+    97,    98,    99,   100,   102,   104,   105,   106
 };
 
 #if YYDEBUG != 0
@@ -300,123 +301,123 @@
    792,   794,   796,   798,   799,   801
 };
 
-static const short yyrhs[] = {   120,
-     0,   121,     0,   120,   121,     0,   222,   122,    37,   126,
-     3,    24,   129,    42,     0,     0,   123,     0,   106,   124,
-   107,     0,   106,   107,     0,   125,     0,   124,   125,     0,
-   225,     0,   225,   108,     9,   109,     0,     9,     0,     0,
-   127,     0,   128,     0,   127,   128,     0,    44,    87,     0,
-    55,    87,     0,    23,    87,     0,    46,    56,     0,    14,
-    60,     0,     0,   130,     0,   131,     0,   130,   131,     0,
-   133,     0,   139,     0,   145,     0,   176,     0,   142,     0,
-     0,    41,    14,   132,     0,   185,     0,    57,   134,   110,
-     0,    57,    49,     0,   136,     0,   134,   136,     0,     0,
-   123,     0,   137,    49,   222,   135,     0,   138,     0,   137,
-   111,   138,     0,   222,     0,   222,   106,   107,     0,   225,
-     0,    45,   140,   110,     0,    45,    20,   110,     0,    45,
-   110,     0,   141,     0,   140,   111,   141,     0,   222,     0,
-   222,   106,   107,     0,   225,     0,     0,   222,   144,     3,
-   106,   143,   181,     0,   169,     0,   182,     0,   222,     3,
-   165,     0,   222,     3,   155,     0,   222,   106,   146,   107,
-     3,   165,     0,   147,     0,   146,   111,   147,     0,   222,
-     0,   222,   112,   225,     0,   222,   112,   222,     0,   182,
-   112,   225,     0,   149,     0,   148,   111,   149,     0,   165,
-     0,   225,     0,     0,   151,     0,   152,     0,   151,   111,
-   152,     0,   225,   165,   211,     0,   165,   211,     0,    33,
-    71,   165,     0,   164,     0,   154,     0,   153,   111,   154,
-     0,   225,   165,     0,   164,     0,   165,     0,    31,   106,
-   157,   107,   159,     0,     0,    91,     0,   158,     0,   157,
-   111,   158,     0,    15,   211,     0,    16,   165,   156,   211,
-     0,    16,   174,   211,     0,    16,   175,   211,     0,    15,
-   174,   211,     0,    15,   165,   211,     0,    15,   175,   211,
-     0,     0,   160,     0,     0,    98,    85,   106,   161,   162,
-   107,     0,   163,     0,   162,   163,     0,     4,     0,    17,
-     0,   172,     0,   113,   162,   114,     0,   105,     0,   105,
-   115,   179,     0,   105,   115,   216,     0,   217,   167,   189,
-     0,     0,   166,   168,     0,   184,     0,    30,   106,   153,
-   107,     0,    81,   106,   150,   107,     0,    82,   106,   150,
-   107,     0,    81,   189,    71,   224,   217,   167,     0,    82,
-   189,    71,   224,   217,   167,     0,    21,     0,    21,    38,
-    28,   225,     0,   222,   106,   148,   107,     0,   169,     0,
-    59,    71,   169,     0,    13,     0,    13,   116,   222,     0,
-   223,   116,   222,     0,    13,   116,   225,     0,   223,     0,
-   223,   116,   170,     0,   171,     0,   170,   116,   171,     0,
-   173,     0,   173,     0,    15,     0,    16,     0,    15,     0,
-   174,   116,    15,     0,   174,   116,    16,     0,    14,     0,
-   225,   144,     3,   177,     0,   225,   112,   177,     0,     0,
-   106,   178,   181,     0,    66,     0,    48,     0,    89,     0,
-     5,     0,     7,     0,   180,     0,   216,     0,   179,     0,
-   225,     0,   222,   116,   225,     0,     6,     0,    10,     0,
-    11,     0,     4,     0,   181,     4,     0,    27,     0,    66,
-     0,    79,     0,   183,     0,    70,    84,     0,    68,    54,
-     0,    80,     0,    47,     0,    39,    74,     0,    29,    84,
-     0,    94,     0,    50,     0,   185,     0,    61,     0,    43,
-     0,    25,    84,     0,   182,     0,   183,   213,     0,    26,
-     0,    51,     0,    52,     0,    53,     0,    62,     0,    67,
-     0,    77,     0,    86,     0,    88,     0,    93,     0,    95,
-     0,    96,     0,    97,     0,    69,     0,   102,     0,   103,
-     0,   100,     0,   101,     0,    99,     0,     0,   190,     0,
-   191,     0,    83,   108,   192,   109,     0,   108,   192,   109,
-     0,   191,   108,   192,   109,     0,   193,     0,   193,   111,
-   105,     0,   193,   111,   105,   111,   193,     0,   194,     0,
-    20,    99,   194,     0,   193,   186,   194,     0,   193,   187,
-   194,     0,   194,   188,   194,     0,   197,   108,   192,   109,
-     0,   108,   192,   109,     0,   198,     0,   199,     0,   198,
-   196,   198,     0,    64,   196,   198,     0,   198,   196,    63,
-     0,    64,   196,    63,     0,   205,     0,   200,     0,     0,
-    34,    28,   106,   195,   181,     0,   104,     0,   104,   117,
-     0,   117,   104,     0,   117,   104,   117,     0,    83,     0,
-    49,     0,    48,     0,    89,     0,   216,     0,   180,     0,
-   225,     0,   222,     0,    98,    32,   191,     0,    98,    33,
-   106,   201,   107,     0,   202,     0,   201,   111,   202,     0,
-   105,     0,   225,   189,   203,     0,     0,   204,     0,    76,
-     0,    18,     0,    72,     0,   206,     0,   207,     0,   106,
-   222,   107,     0,   206,   106,   208,   107,     0,   209,     0,
-   208,   111,   209,     0,   118,   210,     0,   118,   116,   210,
-     0,   225,     0,   210,   116,   225,     0,     0,   212,     0,
-    72,     0,    36,   177,     0,   106,   107,     0,   106,   214,
-   107,     0,   215,     0,   214,   111,   215,     0,   225,     0,
-   225,   108,   216,   109,     0,   225,   108,   179,   109,     0,
-   216,     0,   105,     0,     9,     0,    12,     0,     0,   218,
-     0,   219,   221,     0,   113,   220,     9,   114,     0,     0,
-    92,     0,    22,     0,    78,     0,     0,    55,     0,    44,
-     0,    13,     0,    14,     0,    14,     0,     0,   225,     0,
-     8,     0
+static const short yyrhs[] = {   121,
+     0,   122,     0,   121,   122,     0,   223,   123,    38,   127,
+     3,    25,   130,    43,     0,     0,   124,     0,   107,   125,
+   108,     0,   107,   108,     0,   126,     0,   125,   126,     0,
+   226,     0,   226,   109,    10,   110,     0,    10,     0,     0,
+   128,     0,   129,     0,   128,   129,     0,    45,    88,     0,
+    56,    88,     0,    24,    88,     0,    47,    57,     0,    15,
+    61,     0,     0,   131,     0,   132,     0,   131,   132,     0,
+   134,     0,   140,     0,   146,     0,   177,     0,   143,     0,
+     0,    42,    15,   133,     0,   186,     0,    58,   135,   111,
+     0,    58,    50,     0,   137,     0,   135,   137,     0,     0,
+   124,     0,   138,    50,   223,   136,     0,   139,     0,   138,
+   112,   139,     0,   223,     0,   223,   107,   108,     0,   226,
+     0,    46,   141,   111,     0,    46,    21,   111,     0,    46,
+   111,     0,   142,     0,   141,   112,   142,     0,   223,     0,
+   223,   107,   108,     0,   226,     0,     0,   223,   145,     3,
+   107,   144,   182,     0,   170,     0,   183,     0,   223,     3,
+   166,     0,   223,     3,   156,     0,   223,   107,   147,   108,
+     3,   166,     0,   148,     0,   147,   112,   148,     0,   223,
+     0,   223,   113,   226,     0,   223,   113,   223,     0,   183,
+   113,   226,     0,   150,     0,   149,   112,   150,     0,   166,
+     0,   226,     0,     0,   152,     0,   153,     0,   152,   112,
+   153,     0,   226,   166,   212,     0,   166,   212,     0,    34,
+    72,   166,     0,   165,     0,   155,     0,   154,   112,   155,
+     0,   226,   166,     0,   165,     0,   166,     0,    32,   107,
+   158,   108,   160,     0,     0,    92,     0,   159,     0,   158,
+   112,   159,     0,    16,   212,     0,    17,   166,   157,   212,
+     0,    17,   175,   212,     0,    17,   176,   212,     0,    16,
+   175,   212,     0,    16,   166,   212,     0,    16,   176,   212,
+     0,     0,   161,     0,     0,    99,    86,   107,   162,   163,
+   108,     0,   164,     0,   163,   164,     0,     4,     0,    18,
+     0,   173,     0,   114,   163,   115,     0,   106,     0,   106,
+   116,   180,     0,   106,   116,   217,     0,   218,   168,   190,
+     0,     0,   167,   169,     0,   185,     0,    31,   107,   154,
+   108,     0,    82,   107,   151,   108,     0,    83,   107,   151,
+   108,     0,    82,   190,    72,   225,   218,   168,     0,    83,
+   190,    72,   225,   218,   168,     0,    22,     0,    22,    39,
+    29,   226,     0,   223,   107,   149,   108,     0,   170,     0,
+    60,    72,   170,     0,    14,     0,    14,   117,   223,     0,
+   224,   117,   223,     0,    14,   117,   226,     0,   224,     0,
+   224,   117,   171,     0,   172,     0,   171,   117,   172,     0,
+   174,     0,   174,     0,    16,     0,    17,     0,    16,     0,
+   175,   117,    16,     0,   175,   117,    17,     0,    15,     0,
+   226,   145,     3,   178,     0,   226,   113,   178,     0,     0,
+   107,   179,   182,     0,    67,     0,    49,     0,    90,     0,
+     6,     0,     8,     0,   181,     0,   217,     0,   180,     0,
+   226,     0,   223,   117,   226,     0,     7,     0,    11,     0,
+    12,     0,     5,     0,   182,     5,     0,    28,     0,    67,
+     0,    80,     0,   184,     0,    71,    85,     0,    69,    55,
+     0,    81,     0,    48,     0,    40,    75,     0,    30,    85,
+     0,    95,     0,    51,     0,   186,     0,    62,     0,    44,
+     0,    26,    85,     0,   183,     0,   184,   214,     0,    27,
+     0,    52,     0,    53,     0,    54,     0,    63,     0,    68,
+     0,    78,     0,    87,     0,    89,     0,    94,     0,    96,
+     0,    97,     0,    98,     0,    70,     0,   103,     0,   104,
+     0,   101,     0,   102,     0,   100,     0,     0,   191,     0,
+   192,     0,    84,   109,   193,   110,     0,   109,   193,   110,
+     0,   192,   109,   193,   110,     0,   194,     0,   194,   112,
+   106,     0,   194,   112,   106,   112,   194,     0,   195,     0,
+    21,   100,   195,     0,   194,   187,   195,     0,   194,   188,
+   195,     0,   195,   189,   195,     0,   198,   109,   193,   110,
+     0,   109,   193,   110,     0,   199,     0,   200,     0,   199,
+   197,   199,     0,    65,   197,   199,     0,   199,   197,    64,
+     0,    65,   197,    64,     0,   206,     0,   201,     0,     0,
+    35,    29,   107,   196,   182,     0,   105,     0,   105,   118,
+     0,   118,   105,     0,   118,   105,   118,     0,    84,     0,
+    50,     0,    49,     0,    90,     0,   217,     0,   181,     0,
+   226,     0,   223,     0,    99,    33,   192,     0,    99,    34,
+   107,   202,   108,     0,   203,     0,   202,   112,   203,     0,
+   106,     0,   226,   190,   204,     0,     0,   205,     0,    77,
+     0,    19,     0,    73,     0,   207,     0,   208,     0,   107,
+   223,   108,     0,   207,   107,   209,   108,     0,   210,     0,
+   209,   112,   210,     0,   119,   211,     0,   119,   117,   211,
+     0,   226,     0,   211,   117,   226,     0,     0,   213,     0,
+    73,     0,    37,   178,     0,   107,   108,     0,   107,   215,
+   108,     0,   216,     0,   215,   112,   216,     0,   226,     0,
+   226,   109,   217,   110,     0,   226,   109,   180,   110,     0,
+   217,     0,   106,     0,    10,     0,    13,     0,     0,   219,
+     0,   220,   222,     0,   114,   221,    10,   115,     0,     0,
+    93,     0,    23,     0,    79,     0,     0,    56,     0,    45,
+     0,    14,     0,    15,     0,    15,     0,     0,   226,     0,
+     9,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   323,   329,   335,   351,   376,   378,   381,   385,   390,   397,
-   405,   410,   414,   423,   425,   433,   437,   445,   449,   452,
-   455,   459,   479,   481,   489,   493,   525,   529,   538,   545,
-   558,   565,   567,   579,   591,   602,   607,   613,   619,   621,
-   624,   635,   641,   647,   654,   660,   668,   672,   675,   682,
-   688,   694,   701,   707,   716,   718,   727,   735,   749,   759,
-   775,   784,   794,   804,   809,   816,   823,   833,   839,   845,
-   849,   872,   874,   876,   882,   888,   896,   902,   909,   914,
-   920,   926,   932,   935,   941,   951,   953,   956,   964,   971,
-   984,   995,  1005,  1016,  1026,  1037,  1048,  1050,  1055,  1059,
-  1064,  1069,  1075,  1079,  1082,  1091,  1096,  1105,  1114,  1125,
-  1147,  1154,  1173,  1177,  1183,  1189,  1195,  1205,  1215,  1221,
-  1235,  1259,  1266,  1280,  1289,  1299,  1309,  1319,  1327,  1348,
-  1357,  1366,  1367,  1369,  1376,  1383,  1389,  1393,  1399,  1419,
-  1429,  1437,  1437,  1442,  1447,  1452,  1457,  1461,  1465,  1468,
-  1471,  1476,  1488,  1505,  1510,  1515,  1548,  1558,  1572,  1574,
-  1575,  1576,  1577,  1578,  1579,  1580,  1581,  1582,  1583,  1584,
-  1585,  1591,  1593,  1594,  1597,  1604,  1616,  1618,  1622,  1626,
-  1627,  1628,  1629,  1630,  1634,  1635,  1636,  1637,  1641,  1642,
-  1649,  1649,  1650,  1650,  1651,  1653,  1655,  1660,  1664,  1673,
-  1677,  1682,  1686,  1692,  1702,  1706,  1709,  1712,  1715,  1720,
-  1729,  1737,  1743,  1749,  1756,  1764,  1772,  1781,  1784,  1787,
-  1788,  1798,  1800,  1801,  1802,  1805,  1809,  1814,  1820,  1825,
-  1828,  1831,  1844,  1858,  1862,  1867,  1871,  1876,  1883,  1896,
-  1898,  1901,  1905,  1908,  1913,  1917,  1925,  1940,  1946,  1953,
-  1966,  1978,  1993,  1997,  2014,  2019,  2022,  2027,  2049,  2054,
-  2059,  2065,  2071,  2079,  2087,  2095,  2102,  2112,  2117,  2147,
-  2149,  2152,  2159,  2165,  2167,  2168,  2169,  2172,  2174,  2175,
-  2178,  2183,  2190,  2197,  2199,  2204
+   324,   330,   336,   352,   377,   379,   382,   386,   391,   398,
+   406,   411,   415,   424,   426,   434,   438,   446,   450,   453,
+   456,   460,   480,   482,   490,   494,   526,   530,   539,   546,
+   559,   566,   568,   580,   592,   603,   608,   614,   620,   622,
+   625,   636,   642,   648,   655,   661,   669,   673,   676,   683,
+   689,   695,   702,   708,   717,   719,   728,   736,   750,   760,
+   776,   785,   795,   805,   810,   817,   824,   834,   840,   846,
+   850,   873,   875,   877,   883,   889,   897,   903,   910,   915,
+   921,   927,   933,   936,   942,   952,   954,   957,   965,   972,
+   985,   996,  1006,  1017,  1027,  1038,  1049,  1051,  1056,  1060,
+  1065,  1070,  1076,  1081,  1084,  1093,  1098,  1107,  1116,  1127,
+  1149,  1156,  1175,  1179,  1185,  1191,  1197,  1207,  1217,  1223,
+  1237,  1261,  1268,  1282,  1291,  1301,  1311,  1321,  1329,  1350,
+  1359,  1368,  1369,  1371,  1378,  1385,  1391,  1395,  1401,  1421,
+  1431,  1439,  1439,  1444,  1449,  1454,  1459,  1463,  1467,  1470,
+  1473,  1478,  1490,  1507,  1512,  1517,  1550,  1560,  1574,  1576,
+  1577,  1578,  1579,  1580,  1581,  1582,  1583,  1584,  1585,  1586,
+  1587,  1593,  1595,  1596,  1599,  1606,  1618,  1620,  1624,  1628,
+  1629,  1630,  1631,  1632,  1636,  1637,  1638,  1639,  1643,  1644,
+  1651,  1651,  1652,  1652,  1653,  1655,  1657,  1662,  1666,  1675,
+  1679,  1684,  1688,  1694,  1704,  1708,  1711,  1714,  1717,  1722,
+  1731,  1739,  1745,  1751,  1758,  1766,  1774,  1783,  1786,  1789,
+  1790,  1800,  1802,  1803,  1804,  1807,  1811,  1816,  1822,  1827,
+  1830,  1833,  1846,  1860,  1864,  1869,  1873,  1878,  1885,  1898,
+  1900,  1903,  1907,  1910,  1915,  1919,  1927,  1942,  1948,  1955,
+  1968,  1980,  1995,  1999,  2016,  2021,  2024,  2029,  2051,  2056,
+  2061,  2067,  2073,  2081,  2089,  2097,  2104,  2114,  2119,  2149,
+  2151,  2154,  2161,  2167,  2169,  2170,  2171,  2174,  2176,  2177,
+  2180,  2185,  2192,  2199,  2201,  2206
 };
 #endif
 
@@ -424,10 +425,10 @@
 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
 
 static const char * const yytname[] = {   "$","error","$undefined.","TOK_PPEQ",
-"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
-"TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference",
-"TOK_typefieldreference","TOK_valuefieldreference","TOK_Literal","TOK_ABSENT",
-"TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC",
+"TOK_whitespace","TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier",
+"TOK_number","TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference",
+"TOK_capitalreference","TOK_typefieldreference","TOK_valuefieldreference","TOK_Literal",
+"TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC",
 "TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER",
 "TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED",
 "TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED",
@@ -471,35 +472,35 @@
 #endif
 
 static const short yyr1[] = {     0,
-   119,   120,   120,   121,   122,   122,   123,   123,   124,   124,
-   125,   125,   125,   126,   126,   127,   127,   128,   128,   128,
-   128,   128,   129,   129,   130,   130,   131,   131,   131,   131,
-   131,   132,   131,   131,   133,   133,   134,   134,   135,   135,
-   136,   137,   137,   138,   138,   138,   139,   139,   139,   140,
-   140,   141,   141,   141,   143,   142,   144,   144,   145,   145,
-   145,   146,   146,   147,   147,   147,   147,   148,   148,   149,
-   149,   150,   150,   151,   151,   152,   152,   152,   152,   153,
-   153,   154,   154,   154,   155,   156,   156,   157,   157,   158,
-   158,   158,   158,   158,   158,   158,   159,   159,   161,   160,
-   162,   162,   163,   163,   163,   163,   164,   164,   164,   165,
-   166,   167,   168,   168,   168,   168,   168,   168,   168,   168,
-   168,   168,   168,   169,   169,   169,   169,   169,   169,   170,
-   170,   171,   172,   173,   173,   174,   174,   174,   175,   176,
-   177,   178,   177,   177,   177,   177,   177,   177,   177,   177,
-   177,   179,   179,   180,   180,   180,   181,   181,   182,   182,
-   182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-   182,   183,   183,   183,   184,   184,   185,   185,   185,   185,
-   185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
-   186,   186,   187,   187,   188,   189,   189,   190,   190,   191,
-   191,   192,   192,   192,   193,   193,   193,   193,   193,   194,
-   194,   194,   194,   194,   194,   194,   194,   194,   194,   195,
-   194,   196,   196,   196,   196,   197,   197,   198,   198,   198,
-   198,   198,   199,   200,   200,   201,   201,   202,   202,   203,
-   203,   204,   204,   204,   205,   205,   206,   207,   208,   208,
-   209,   209,   210,   210,   211,   211,   212,   212,   213,   213,
-   214,   214,   215,   215,   215,   215,   215,   216,   216,   217,
-   217,   218,   219,   220,   220,   220,   220,   221,   221,   221,
-   222,   222,   223,   224,   224,   225
+   120,   121,   121,   122,   123,   123,   124,   124,   125,   125,
+   126,   126,   126,   127,   127,   128,   128,   129,   129,   129,
+   129,   129,   130,   130,   131,   131,   132,   132,   132,   132,
+   132,   133,   132,   132,   134,   134,   135,   135,   136,   136,
+   137,   138,   138,   139,   139,   139,   140,   140,   140,   141,
+   141,   142,   142,   142,   144,   143,   145,   145,   146,   146,
+   146,   147,   147,   148,   148,   148,   148,   149,   149,   150,
+   150,   151,   151,   152,   152,   153,   153,   153,   153,   154,
+   154,   155,   155,   155,   156,   157,   157,   158,   158,   159,
+   159,   159,   159,   159,   159,   159,   160,   160,   162,   161,
+   163,   163,   164,   164,   164,   164,   165,   165,   165,   166,
+   167,   168,   169,   169,   169,   169,   169,   169,   169,   169,
+   169,   169,   169,   170,   170,   170,   170,   170,   170,   171,
+   171,   172,   173,   174,   174,   175,   175,   175,   176,   177,
+   178,   179,   178,   178,   178,   178,   178,   178,   178,   178,
+   178,   180,   180,   181,   181,   181,   182,   182,   183,   183,
+   183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
+   183,   184,   184,   184,   185,   185,   186,   186,   186,   186,
+   186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
+   187,   187,   188,   188,   189,   190,   190,   191,   191,   192,
+   192,   193,   193,   193,   194,   194,   194,   194,   194,   195,
+   195,   195,   195,   195,   195,   195,   195,   195,   195,   196,
+   195,   197,   197,   197,   197,   198,   198,   199,   199,   199,
+   199,   199,   200,   201,   201,   202,   202,   203,   203,   204,
+   204,   205,   205,   205,   206,   206,   207,   208,   209,   209,
+   210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
+   215,   215,   216,   216,   216,   216,   216,   217,   217,   218,
+   218,   219,   220,   221,   221,   221,   221,   222,   222,   222,
+   223,   223,   224,   225,   225,   226
 };
 
 static const short yyr2[] = {     0,
@@ -596,220 +597,228 @@
    146,   151,   265,   105,   355,   266
 };
 
-static const short yypact[] = {    76,
--32768,-32768,    76,-32768,   -55,-32768,    23,    59,-32768,-32768,
--32768,-32768,    31,-32768,    32,   350,-32768,-32768,   101,   120,
-   136,   144,   131,   152,   192,   350,-32768,   139,-32768,-32768,
--32768,-32768,-32768,   233,-32768,-32768,   394,-32768,   275,    34,
--32768,-32768,-32768,   133,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   258,   394,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   224,   547,-32768,   197,-32768,    63,-32768,
-   203,-32768,-32768,    45,-32768,    24,-32768,   205,-32768,-32768,
--32768,    21,   206,-32768,   240,-32768,   254,   266,-32768,-32768,
--32768,-32768,-32768,   288,   260,-32768,-32768,-32768,   623,   343,
--32768,-32768,-32768,-32768,   236,   352,-32768,-32768,-32768,   248,
-   251,-32768,-32768,    76,   248,   252,   257,   106,-32768,-32768,
--32768,-32768,    43,   248,-32768,-32768,-32768,-32768,-32768,   100,
--32768,   249,   256,   261,   300,   158,-32768,-32768,   -55,-32768,
--32768,   189,-32768,-32768,-32768,   351,   471,   -27,-32768,-32768,
--32768,-32768,-32768,   363,   623,   361,   248,-32768,-32768,-32768,
-   269,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   277,
-   262,-32768,-32768,    70,    62,   108,-32768,   263,    80,   264,
-   357,   291,   327,   -13,    -9,-32768,-32768,-32768,   293,-32768,
-   294,   295,   323,-32768,-32768,   301,   297,-32768,-32768,-32768,
--32768,   407,   250,   407,   361,   158,-32768,-32768,   158,-32768,
-    14,     7,    14,-32768,-32768,   324,     7,    14,   316,   189,
--32768,   388,     8,   265,    47,   353,    47,   354,    52,-32768,
-     9,   323,   328,   395,-32768,-32768,   -16,-32768,-32768,   255,
-    76,   323,-32768,   313,    99,   331,   318,   -16,-32768,-32768,
--32768,   326,-32768,-32768,-32768,-32768,   323,-32768,-32768,   429,
--32768,   429,-32768,-32768,-32768,-32768,   333,-32768,-32768,-32768,
-    14,-32768,-32768,   355,-32768,-32768,-32768,   361,   321,   118,
--32768,-32768,-32768,   297,-32768,   366,   334,   337,-32768,-32768,
-    14,   297,   361,   335,   361,-32768,-32768,   162,-32768,-32768,
-   330,   173,-32768,-32768,-32768,   340,   370,   338,   341,   346,
-   234,   344,   348,   358,   364,-32768,-32768,-32768,-32768,-32768,
-   359,   370,   370,-32768,   370,   323,   380,   339,   365,-32768,
--32768,-32768,-32768,   349,-32768,   246,-32768,     8,-32768,   297,
--32768,    38,-32768,    14,   297,-32768,-32768,   297,-32768,    57,
-   246,-32768,     9,-32768,-32768,-32768,-32768,   345,-32768,-32768,
-   301,     2,-32768,-32768,   356,-32768,-32768,-32768,   368,-32768,
--32768,    17,   188,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   372,   374,-32768,   407,
--32768,-32768,   195,-32768,   -27,   323,-32768,   361,   377,-32768,
--32768,   339,    11,-32768,-32768,-32768,-32768,   429,-32768,     2,
-   121,   225,   377,   361,-32768,-32768,-32768,    11,    19,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,     5,
--32768,-32768,-32768,   460,   466,-32768
+static const short yypact[] = {   223,
+-32768,-32768,   223,-32768,   -76,-32768,    30,    24,-32768,-32768,
+-32768,-32768,    34,-32768,   -61,   247,-32768,-32768,    61,    27,
+    52,    71,    55,    77,    99,   247,-32768,    76,-32768,-32768,
+-32768,-32768,-32768,   181,-32768,-32768,   428,-32768,   187,    49,
+-32768,-32768,-32768,   154,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   176,   428,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   352,   581,-32768,   102,-32768,   199,-32768,
+   117,-32768,-32768,    59,-32768,   -26,-32768,   120,-32768,-32768,
+-32768,   -15,   112,-32768,   179,-32768,   193,   165,-32768,-32768,
+-32768,-32768,-32768,   211,   208,-32768,-32768,-32768,   657,   266,
+-32768,-32768,-32768,-32768,   169,   299,-32768,-32768,-32768,   286,
+   200,-32768,-32768,   223,   286,   206,   210,     3,-32768,-32768,
+-32768,-32768,    45,   286,-32768,-32768,-32768,-32768,-32768,   -23,
+-32768,   224,   227,   239,   319,   184,-32768,-32768,   -76,-32768,
+-32768,   312,-32768,-32768,-32768,   340,   505,    57,-32768,-32768,
+-32768,-32768,-32768,   354,   657,   355,   286,-32768,-32768,-32768,
+   246,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   259,
+   264,-32768,-32768,   168,    37,    35,-32768,   268,    65,   274,
+   345,   278,   314,   116,   170,-32768,-32768,-32768,   280,-32768,
+   281,   282,   166,-32768,-32768,   285,   275,-32768,-32768,-32768,
+-32768,   385,   326,   385,   355,   184,-32768,-32768,   184,-32768,
+    98,    94,    98,-32768,-32768,   303,    94,    98,   298,   312,
+-32768,   369,     7,   334,    16,   330,    16,   335,    56,-32768,
+    14,   166,   310,   380,-32768,-32768,   -25,-32768,-32768,   318,
+   223,   166,-32768,   301,   203,   324,   316,   -25,-32768,-32768,
+-32768,   305,-32768,-32768,-32768,-32768,   166,-32768,-32768,   421,
+-32768,   421,-32768,-32768,-32768,-32768,   344,-32768,-32768,-32768,
+    98,-32768,-32768,   341,-32768,-32768,-32768,   355,   313,   131,
+-32768,-32768,-32768,   275,-32768,   356,   323,   322,-32768,-32768,
+    98,   275,   355,   327,   355,-32768,-32768,   141,-32768,-32768,
+   329,   155,-32768,-32768,-32768,   342,   309,   333,   336,   331,
+   235,   347,   337,   343,   348,-32768,-32768,-32768,-32768,-32768,
+   339,   309,   309,-32768,   309,   166,   248,   338,   350,-32768,
+-32768,-32768,-32768,   346,-32768,   317,-32768,     7,-32768,   275,
+-32768,    12,-32768,    98,   275,-32768,-32768,   275,-32768,    68,
+   317,-32768,    14,-32768,-32768,-32768,-32768,   349,-32768,-32768,
+   285,     0,-32768,-32768,   351,-32768,-32768,-32768,   358,-32768,
+-32768,     6,   177,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   359,   361,-32768,   385,
+-32768,-32768,   201,-32768,    57,   166,-32768,   355,   360,-32768,
+-32768,   338,    43,-32768,-32768,-32768,-32768,   421,-32768,     0,
+    10,   267,   360,   355,-32768,-32768,-32768,    43,    38,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    18,
+-32768,-32768,-32768,   461,   462,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   467,-32768,   336,-32768,   459,-32768,-32768,   453,-32768,
--32768,   430,-32768,-32768,-32768,-32768,   414,-32768,   379,-32768,
--32768,   385,-32768,-32768,   434,-32768,-32768,   347,-32768,   140,
-   267,-32768,   153,-32768,   159,-32768,-32768,-32768,   276,-32768,
--32768,-32768,    81,  -250,  -228,   -80,-32768,   -44,-32768,  -103,
--32768,   298,-32768,  -111,   332,   342,-32768,    -3,-32768,  -278,
-  -107,  -211,    86,   369,-32768,    26,-32768,-32768,-32768,  -187,
--32768,   186,   -64,   107,  -141,-32768,   268,-32768,  -259,-32768,
--32768,-32768,    92,-32768,-32768,-32768,-32768,-32768,-32768,   103,
-   111,  -209,-32768,-32768,-32768,   160,  -125,   -50,-32768,-32768,
--32768,-32768,     1,-32768,   220,    -7
+-32768,   463,-32768,   325,-32768,   452,-32768,-32768,   446,-32768,
+-32768,   417,-32768,-32768,-32768,-32768,   401,-32768,   363,-32768,
+-32768,   366,-32768,-32768,   414,-32768,-32768,   328,-32768,   121,
+   250,-32768,   133,-32768,   140,-32768,-32768,-32768,   260,-32768,
+-32768,-32768,    64,  -285,  -228,   -80,-32768,   -22,-32768,  -137,
+-32768,   276,-32768,  -115,   308,   315,-32768,   -31,-32768,  -207,
+  -109,  -211,   -71,   357,-32768,    -5,-32768,-32768,-32768,  -187,
+-32768,   172,  -133,    89,   -45,-32768,   241,-32768,  -242,-32768,
+-32768,-32768,    81,-32768,-32768,-32768,-32768,-32768,-32768,    85,
+    95,  -209,-32768,-32768,-32768,   142,  -125,  -148,-32768,-32768,
+-32768,-32768,     1,-32768,   202,    -7
 };
 
 
-#define	YYLAST		720
+#define	YYLAST		755
 
 
 static const short yytable[] = {    15,
-     5,   120,   272,     5,   292,    15,   236,   238,   426,    10,
-   179,   276,   278,   279,   426,    10,    10,   282,   283,   159,
-   160,   427,   426,   163,    10,   159,   160,   427,   178,    65,
-    10,    11,    72,   159,   160,   427,    79,    64,    10,    11,
-    71,    10,   219,   197,    78,    10,     1,     2,    65,   219,
-     7,   117,    10,    67,    10,   202,    64,     1,     2,    10,
-   168,   370,    63,   171,    10,   168,    79,   387,   171,   202,
-   296,   343,   114,   202,    78,   217,   218,   381,   220,   296,
-   203,    63,   397,   217,   218,   220,   149,   319,     1,     2,
-   179,   353,   235,   179,   203,    16,   237,   150,   203,   133,
-   320,   163,    72,   221,   226,   219,   402,    79,   178,    28,
-    71,   178,   289,   310,   139,    78,   153,   428,   443,   292,
-   118,   118,   277,   428,   152,   441,   268,   143,   181,    12,
-   295,   428,   408,   118,   115,   164,   180,    17,   434,    19,
-    10,   220,   289,    68,   393,     1,     2,   201,   209,   211,
-   118,   289,   293,   -72,   112,   133,   306,   210,   307,   118,
-   314,   306,   165,   166,   167,    10,   168,   169,   170,   171,
-     1,     2,   109,   110,   118,   365,  -255,   316,   442,    29,
-  -255,    73,   118,   144,   132,  -281,    32,   325,   418,   442,
-   376,   377,   435,   378,    34,   124,   436,   145,   327,   328,
-   329,   330,   339,   184,   185,   172,   154,   273,   181,   331,
-   155,   181,   274,   349,   229,   275,   180,   421,   230,   180,
-   388,   354,    30,   173,   347,   294,    82,   302,   348,   302,
-    31,   311,   198,   315,   310,   398,    83,    84,    33,   166,
-   132,    10,   168,   169,   170,   171,   174,    36,    85,    38,
-    86,   324,    87,    10,   168,    10,    37,   171,     1,     2,
-     1,     2,    88,   175,   159,   160,    89,   293,   359,   391,
-    90,   379,   360,    91,    41,    42,    43,    83,    84,   362,
-   345,   245,   314,   363,    92,    45,   322,   323,    66,    93,
-    46,    94,    47,    95,   411,   356,   369,   356,   412,    80,
-    48,   419,    96,    97,   394,   420,   108,   395,   111,    49,
-   116,    50,     1,     2,   159,   160,    51,    98,    52,    53,
-    54,   124,   249,   125,   327,   328,   329,   330,   166,    99,
-    10,   168,   169,   170,   171,     1,     2,   126,   389,   127,
-   294,   128,   243,   129,   302,   134,   180,   341,   342,   414,
-   415,   135,   311,   389,   136,   315,   244,   138,   141,   188,
-   156,   180,   142,    20,   405,   207,   158,   157,    10,  -282,
-   245,   246,    21,   216,   410,   166,   231,    10,   168,   169,
-   170,   171,     1,     2,   213,   166,   247,    10,   168,   169,
-   170,   171,   215,    22,   232,    23,   233,   234,   239,   241,
-   410,    10,   242,   244,    24,   248,     1,     2,   267,   118,
-   269,   249,   405,   284,   280,   288,   439,   245,   246,    38,
-   250,   326,   318,   303,   305,   336,   317,   245,   251,   334,
-   252,   338,   340,   247,    39,   346,   350,   361,    40,   344,
-   351,   357,   380,   366,    41,    42,    43,   352,   364,   368,
-    44,   203,   248,   372,   386,    45,   382,   367,   249,   445,
-    46,   401,    47,   375,   373,   446,   406,   250,   249,     6,
-    48,    18,   374,   385,   182,   251,   407,   252,    35,    49,
-   416,    50,   417,   189,   190,    81,    51,   113,    52,    53,
-    54,   191,   424,   140,   137,    85,    38,    86,   106,    87,
-   192,   208,   399,   304,   392,   287,   390,   371,   440,    88,
-   271,   433,   422,    89,   425,   199,   227,    90,   423,   396,
-    91,    41,    42,    43,   358,   337,   228,     0,     0,   193,
-     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
-    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
-    97,   194,   195,     0,     0,     0,    49,     0,    50,    83,
-    84,     0,     0,    51,    98,    52,    53,    54,     0,     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,     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
+     5,   120,   272,     5,   292,    15,   236,   238,    10,   197,
+   179,   276,   278,   279,    10,    10,   117,   282,   283,   163,
+    10,   426,    10,   114,    10,   143,   178,   132,   434,    65,
+     7,    63,    72,   159,   160,   427,    79,    64,    10,    11,
+    71,   426,    10,    11,    78,   296,   426,    19,    65,   296,
+    63,   217,   218,   159,   160,   427,    64,    10,   159,   160,
+   427,    16,     1,     2,    10,   168,    79,    10,   171,    67,
+    28,   343,     1,     2,    78,   198,    10,   168,   370,   319,
+   171,   144,   435,   132,   154,   115,   436,    29,   155,   149,
+   179,   353,   320,   179,   381,   145,   295,   163,   118,   133,
+   150,    34,    72,   221,   226,   402,   178,    79,   316,   178,
+    71,    32,   289,   310,   139,    78,   153,   289,   325,   292,
+   118,   289,   408,   -72,   152,   118,   268,   118,   181,   118,
+   219,   428,   443,   339,   219,   164,   180,    12,   387,    30,
+   202,    17,   229,   442,   393,   441,   230,   201,   209,   211,
+   118,   428,   293,   397,   442,   133,   428,   210,    31,    68,
+   314,   306,    10,   307,    33,   203,   220,     1,     2,   112,
+   220,  -281,   166,   306,    10,   168,   169,   170,   171,     1,
+     2,   124,   217,   218,   274,    36,   243,   275,   418,   165,
+   166,   167,    10,   168,   169,   170,   171,     1,     2,   202,
+   244,    66,   379,    73,   219,    37,   394,   273,   181,   395,
+   277,   181,   108,   349,   245,   246,   180,   421,    80,   180,
+   388,   354,   235,   111,   203,   294,   116,   302,   124,   302,
+   247,   311,   172,   315,   310,   398,     1,     2,   347,   127,
+   220,   166,   348,    10,   168,   169,   170,   171,   359,   248,
+   173,   324,   360,   202,   166,   249,    10,   168,   169,   170,
+   171,    20,   362,   125,   250,   128,   363,   293,   134,   391,
+    21,   365,   251,   174,   252,  -255,   237,   126,   203,  -255,
+   345,   118,   314,   245,   411,   135,   376,   377,   412,   378,
+   175,    22,   129,    23,    10,   356,   245,   356,   369,     1,
+     2,   136,    24,   327,   328,   329,   330,   138,   419,   109,
+   110,   380,   420,   141,   331,   166,   142,    10,   168,   169,
+   170,   171,     1,     2,   249,    10,   168,   184,   185,   171,
+     1,     2,     1,     2,   159,   160,   156,   249,   389,   157,
+   294,   159,   160,   244,   302,   158,   180,    83,    84,   188,
+   322,   323,   311,   389,    82,   315,   207,   245,   246,   341,
+   342,   180,   213,    10,   405,    83,    84,   327,   328,   329,
+   330,   414,   415,   247,   410,   215,   216,    85,    38,    86,
+  -282,    87,   231,   232,   233,   234,   239,   241,   118,   269,
+   242,    88,   248,   267,   280,    89,   284,   288,   249,    90,
+   410,   303,    91,    41,    42,    43,   305,   250,   318,   317,
+   326,   338,   405,    92,    45,   251,   439,   252,    93,    46,
+    94,    47,    95,   334,   336,   340,   344,   350,   346,    48,
+   351,    96,    97,   352,   357,   368,    10,   361,    49,   366,
+    50,     1,     2,   372,   375,    51,    98,    52,    53,    54,
+   373,   364,   386,   367,    38,   203,   382,   374,    99,   385,
+   445,   446,   406,   182,    18,     6,   401,   407,   416,    39,
+   417,    35,    81,    40,   113,   137,   424,   140,   106,    41,
+    42,    43,   208,   399,   392,    44,   304,   390,   271,   287,
+    45,   440,   227,   371,   422,    46,   425,    47,   337,   228,
+   433,   396,   423,   199,     0,    48,   358,     0,     0,     0,
+     0,     0,     0,     0,    49,     0,    50,     0,   189,   190,
+     0,    51,     0,    52,    53,    54,   191,     0,     0,     0,
+    85,    38,    86,     0,    87,   192,     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,   193,     0,    92,    45,     0,     0,
+     0,    93,    46,    94,    47,    95,     0,     0,     0,     0,
+     0,     0,    48,     0,    96,    97,   194,   195,     0,     0,
+     0,    49,     0,    50,    83,    84,     0,     0,    51,    98,
+    52,    53,    54,     0,     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,     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,
-     0,    82,   214,     3,   233,    13,   194,   195,     4,     8,
-   136,   221,   222,   223,     4,     8,     8,   227,   228,    15,
-    16,    17,     4,   135,     8,    15,    16,    17,   136,    37,
-     8,     9,    40,    15,    16,    17,    44,    37,     8,     9,
-    40,     8,    36,   147,    44,     8,    13,    14,    56,    36,
-   106,    31,     8,    20,     8,    83,    56,    13,    14,     8,
-     9,   321,    37,    12,     8,     9,    74,   346,    12,    83,
-    33,   281,    49,    83,    74,    14,    15,   337,    72,    33,
-   108,    56,   361,    14,    15,    72,    44,   104,    13,    14,
-   216,   301,   106,   219,   108,    37,   106,    55,   108,    99,
-   117,   213,   110,   184,   185,    36,   105,   115,   216,     9,
-   110,   219,   105,   239,   114,   115,   124,   113,   114,   348,
-   113,   113,   116,   113,   124,   107,   207,    22,   136,   107,
-   234,   113,   116,   113,   111,   135,   136,   107,    18,   108,
-     8,    72,   105,   110,   354,    13,    14,   147,   156,   157,
-   113,   105,   233,   107,   110,   155,   105,   157,   107,   113,
-   241,   105,     5,     6,     7,     8,     9,    10,    11,    12,
-    13,    14,   110,   111,   113,   317,   107,   242,   429,    60,
-   111,    49,   113,    78,    99,   106,    56,   252,   400,   440,
-   332,   333,    72,   335,     3,   116,    76,    92,   100,   101,
-   102,   103,   267,    15,    16,    48,   107,   215,   216,   111,
-   111,   219,   216,   294,   107,   219,   216,   405,   111,   219,
-   346,   302,    87,    66,   107,   233,     3,   235,   111,   237,
-    87,   239,   147,   241,   360,   361,    13,    14,    87,     6,
-   155,     8,     9,    10,    11,    12,    89,   109,    25,    26,
-    27,   251,    29,     8,     9,     8,    24,    12,    13,    14,
-    13,    14,    39,   106,    15,    16,    43,   348,   107,   350,
-    47,   336,   111,    50,    51,    52,    53,    13,    14,   107,
-   288,    48,   363,   111,    61,    62,    32,    33,    14,    66,
-    67,    68,    69,    70,   107,   303,    63,   305,   111,    42,
-    77,   107,    79,    80,   355,   111,   110,   358,   106,    86,
-   106,    88,    13,    14,    15,    16,    93,    94,    95,    96,
-    97,   116,    89,    84,   100,   101,   102,   103,     6,   106,
-     8,     9,    10,    11,    12,    13,    14,    84,   346,    74,
-   348,    54,    20,    84,   352,     3,   346,    15,    16,   394,
-   395,   116,   360,   361,     3,   363,    34,   107,   107,     9,
-   112,   361,   106,    14,   372,     3,   106,   112,     8,   106,
-    48,    49,    23,   112,   382,     6,   114,     8,     9,    10,
-    11,    12,    13,    14,   116,     6,    64,     8,     9,    10,
-    11,    12,   116,    44,    38,    46,   106,    71,   106,   106,
-   408,     8,   108,    34,    55,    83,    13,    14,   108,   113,
-     4,    89,   420,    98,    91,    28,   424,    48,    49,    26,
-    98,   109,    28,    71,    71,   108,    99,    48,   106,    99,
-   108,   106,     4,    64,    41,   115,    71,   108,    45,    85,
-   107,   107,    63,   106,    51,    52,    53,   111,   109,   104,
-    57,   108,    83,   106,   106,    62,   118,   117,    89,     0,
-    67,   117,    69,   105,   107,     0,   111,    98,    89,     3,
-    77,    13,   109,   109,   139,   106,   109,   108,    26,    86,
-   109,    88,   109,    13,    14,    56,    93,    74,    95,    96,
-    97,    21,   116,   115,   110,    25,    26,    27,    65,    29,
-    30,   155,   363,   237,   352,   230,   348,   322,   428,    39,
-   213,   420,   406,    43,   412,   147,   185,    47,   408,   360,
-    50,    51,    52,    53,   305,   258,   185,    -1,    -1,    59,
-    -1,    61,    62,    -1,    -1,    -1,    66,    67,    68,    69,
-    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,    -1,    79,
-    80,    81,    82,    -1,    -1,    -1,    86,    -1,    88,    13,
-    14,    -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,
-    -1,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    43,
-    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    53,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
-    -1,    -1,    66,    67,    68,    69,    70,    -1,    -1,    -1,
-    -1,    -1,    -1,    77,    -1,    79,    80,    -1,    -1,    -1,
-    -1,    -1,    86,    -1,    88,    13,    14,    -1,    -1,    93,
-    94,    95,    96,    97,    -1,    -1,    -1,    25,    26,    27,
-    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    -1,    47,
-    -1,    -1,    50,    51,    52,    53,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,    66,    67,
-    68,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
-    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    86,    -1,
-    88,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97
+     0,    82,   214,     3,   233,    13,   194,   195,     9,   147,
+   136,   221,   222,   223,     9,     9,    32,   227,   228,   135,
+     9,     4,     9,    50,     9,    23,   136,    99,    19,    37,
+   107,    37,    40,    16,    17,    18,    44,    37,     9,    10,
+    40,     4,     9,    10,    44,    34,     4,   109,    56,    34,
+    56,    15,    16,    16,    17,    18,    56,     9,    16,    17,
+    18,    38,    14,    15,     9,    10,    74,     9,    13,    21,
+    10,   281,    14,    15,    74,   147,     9,    10,   321,   105,
+    13,    79,    73,   155,   108,   112,    77,    61,   112,    45,
+   216,   301,   118,   219,   337,    93,   234,   213,   114,    99,
+    56,     3,   110,   184,   185,   106,   216,   115,   242,   219,
+   110,    57,   106,   239,   114,   115,   124,   106,   252,   348,
+   114,   106,   117,   108,   124,   114,   207,   114,   136,   114,
+    37,   114,   115,   267,    37,   135,   136,   108,   346,    88,
+    84,   108,   108,   429,   354,   108,   112,   147,   156,   157,
+   114,   114,   233,   361,   440,   155,   114,   157,    88,   111,
+   241,   106,     9,   108,    88,   109,    73,    14,    15,   111,
+    73,   107,     7,   106,     9,    10,    11,    12,    13,    14,
+    15,   117,    15,    16,   216,   110,    21,   219,   400,     6,
+     7,     8,     9,    10,    11,    12,    13,    14,    15,    84,
+    35,    15,   336,    50,    37,    25,   355,   215,   216,   358,
+   117,   219,   111,   294,    49,    50,   216,   405,    43,   219,
+   346,   302,   107,   107,   109,   233,   107,   235,   117,   237,
+    65,   239,    49,   241,   360,   361,    14,    15,   108,    75,
+    73,     7,   112,     9,    10,    11,    12,    13,   108,    84,
+    67,   251,   112,    84,     7,    90,     9,    10,    11,    12,
+    13,    15,   108,    85,    99,    55,   112,   348,     3,   350,
+    24,   317,   107,    90,   109,   108,   107,    85,   109,   112,
+   288,   114,   363,    49,   108,   117,   332,   333,   112,   335,
+   107,    45,    85,    47,     9,   303,    49,   305,    64,    14,
+    15,     3,    56,   101,   102,   103,   104,   108,   108,   111,
+   112,    64,   112,   108,   112,     7,   107,     9,    10,    11,
+    12,    13,    14,    15,    90,     9,    10,    16,    17,    13,
+    14,    15,    14,    15,    16,    17,   113,    90,   346,   113,
+   348,    16,    17,    35,   352,   107,   346,    14,    15,    10,
+    33,    34,   360,   361,     3,   363,     3,    49,    50,    16,
+    17,   361,   117,     9,   372,    14,    15,   101,   102,   103,
+   104,   394,   395,    65,   382,   117,   113,    26,    27,    28,
+   107,    30,   115,    39,   107,    72,   107,   107,   114,     5,
+   109,    40,    84,   109,    92,    44,    99,    29,    90,    48,
+   408,    72,    51,    52,    53,    54,    72,    99,    29,   100,
+   110,   107,   420,    62,    63,   107,   424,   109,    67,    68,
+    69,    70,    71,   100,   109,     5,    86,    72,   116,    78,
+   108,    80,    81,   112,   108,   105,     9,   109,    87,   107,
+    89,    14,    15,   107,   106,    94,    95,    96,    97,    98,
+   108,   110,   107,   118,    27,   109,   119,   110,   107,   110,
+     0,     0,   112,   139,    13,     3,   118,   110,   110,    42,
+   110,    26,    56,    46,    74,   110,   117,   115,    65,    52,
+    53,    54,   155,   363,   352,    58,   237,   348,   213,   230,
+    63,   428,   185,   322,   406,    68,   412,    70,   258,   185,
+   420,   360,   408,   147,    -1,    78,   305,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    87,    -1,    89,    -1,    14,    15,
+    -1,    94,    -1,    96,    97,    98,    22,    -1,    -1,    -1,
+    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,
+    -1,    -1,    48,    -1,    -1,    51,    52,    53,    54,    -1,
+    -1,    -1,    -1,    -1,    60,    -1,    62,    63,    -1,    -1,
+    -1,    67,    68,    69,    70,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    78,    -1,    80,    81,    82,    83,    -1,    -1,
+    -1,    87,    -1,    89,    14,    15,    -1,    -1,    94,    95,
+    96,    97,    98,    -1,    -1,    -1,    26,    27,    28,    -1,
+    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    40,    -1,    -1,    -1,    44,    -1,    -1,    -1,    48,    -1,
+    -1,    51,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    62,    63,    -1,    -1,    -1,    67,    68,    69,
+    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    -1,    89,
+    14,    15,    -1,    -1,    94,    95,    96,    97,    98,    -1,
+    -1,    -1,    26,    27,    28,    -1,    30,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+    44,    -1,    -1,    -1,    48,    -1,    -1,    51,    52,    53,
+    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
+    -1,    -1,    -1,    67,    68,    69,    70,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    78,    -1,    80,    81,    -1,    -1,
+    -1,    -1,    -1,    87,    -1,    89,    -1,    -1,    -1,    -1,
+    94,    95,    96,    97,    98
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1355,13 +1364,13 @@
   switch (yyn) {
 
 case 1:
-#line 324 "asn1p_y.y"
+#line 325 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 330 "asn1p_y.y"
+#line 331 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1369,14 +1378,14 @@
 	;
     break;}
 case 3:
-#line 335 "asn1p_y.y"
+#line 336 "asn1p_y.y"
 {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
 	;
     break;}
 case 4:
-#line 356 "asn1p_y.y"
+#line 357 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1393,27 +1402,27 @@
 	;
     break;}
 case 5:
-#line 377 "asn1p_y.y"
+#line 378 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 378 "asn1p_y.y"
+#line 379 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 382 "asn1p_y.y"
+#line 383 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 385 "asn1p_y.y"
+#line 386 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 391 "asn1p_y.y"
+#line 392 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1422,7 +1431,7 @@
 	;
     break;}
 case 10:
-#line 397 "asn1p_y.y"
+#line 398 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1431,74 +1440,74 @@
 	;
     break;}
 case 11:
-#line 406 "asn1p_y.y"
+#line 407 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 410 "asn1p_y.y"
+#line 411 "asn1p_y.y"
 {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
 	;
     break;}
 case 13:
-#line 414 "asn1p_y.y"
+#line 415 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 424 "asn1p_y.y"
+#line 425 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 425 "asn1p_y.y"
+#line 426 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 434 "asn1p_y.y"
+#line 435 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 437 "asn1p_y.y"
+#line 438 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 446 "asn1p_y.y"
+#line 447 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 449 "asn1p_y.y"
+#line 450 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 452 "asn1p_y.y"
+#line 453 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 455 "asn1p_y.y"
+#line 456 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 459 "asn1p_y.y"
+#line 460 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1516,23 +1525,23 @@
 	;
     break;}
 case 23:
-#line 480 "asn1p_y.y"
+#line 481 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 481 "asn1p_y.y"
+#line 482 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 490 "asn1p_y.y"
+#line 491 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 493 "asn1p_y.y"
+#line 494 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1562,13 +1571,13 @@
 	;
     break;}
 case 27:
-#line 526 "asn1p_y.y"
+#line 527 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 529 "asn1p_y.y"
+#line 530 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1580,7 +1589,7 @@
 	;
     break;}
 case 29:
-#line 538 "asn1p_y.y"
+#line 539 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1590,7 +1599,7 @@
 	;
     break;}
 case 30:
-#line 545 "asn1p_y.y"
+#line 546 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1600,7 +1609,7 @@
 	;
     break;}
 case 31:
-#line 558 "asn1p_y.y"
+#line 559 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1610,11 +1619,11 @@
 	;
     break;}
 case 32:
-#line 566 "asn1p_y.y"
+#line 567 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 567 "asn1p_y.y"
+#line 568 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1625,7 +1634,7 @@
 	;
     break;}
 case 34:
-#line 579 "asn1p_y.y"
+#line 580 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -1633,7 +1642,7 @@
 	;
     break;}
 case 35:
-#line 592 "asn1p_y.y"
+#line 593 "asn1p_y.y"
 {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -1643,13 +1652,13 @@
 	;
     break;}
 case 36:
-#line 602 "asn1p_y.y"
+#line 603 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 608 "asn1p_y.y"
+#line 609 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1657,22 +1666,22 @@
 	;
     break;}
 case 38:
-#line 613 "asn1p_y.y"
+#line 614 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	;
     break;}
 case 39:
-#line 620 "asn1p_y.y"
+#line 621 "asn1p_y.y"
 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
     break;}
 case 40:
-#line 621 "asn1p_y.y"
+#line 622 "asn1p_y.y"
 { yyval.a_aid.oid = yyvsp[0].a_oid; ;
     break;}
 case 41:
-#line 625 "asn1p_y.y"
+#line 626 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -1683,7 +1692,7 @@
 	;
     break;}
 case 42:
-#line 636 "asn1p_y.y"
+#line 637 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1691,14 +1700,14 @@
 	;
     break;}
 case 43:
-#line 641 "asn1p_y.y"
+#line 642 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 44:
-#line 648 "asn1p_y.y"
+#line 649 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1707,7 +1716,7 @@
 	;
     break;}
 case 45:
-#line 654 "asn1p_y.y"
+#line 655 "asn1p_y.y"
 {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1716,7 +1725,7 @@
 	;
     break;}
 case 46:
-#line 660 "asn1p_y.y"
+#line 661 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1725,19 +1734,19 @@
 	;
     break;}
 case 47:
-#line 669 "asn1p_y.y"
+#line 670 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 48:
-#line 672 "asn1p_y.y"
+#line 673 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 49:
-#line 675 "asn1p_y.y"
+#line 676 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1745,7 +1754,7 @@
 	;
     break;}
 case 50:
-#line 683 "asn1p_y.y"
+#line 684 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1753,14 +1762,14 @@
 	;
     break;}
 case 51:
-#line 688 "asn1p_y.y"
+#line 689 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 52:
-#line 695 "asn1p_y.y"
+#line 696 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1769,7 +1778,7 @@
 	;
     break;}
 case 53:
-#line 701 "asn1p_y.y"
+#line 702 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1778,7 +1787,7 @@
 	;
     break;}
 case 54:
-#line 707 "asn1p_y.y"
+#line 708 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1787,11 +1796,11 @@
 	;
     break;}
 case 55:
-#line 718 "asn1p_y.y"
+#line 719 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 56:
-#line 718 "asn1p_y.y"
+#line 719 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1801,7 +1810,7 @@
 	;
     break;}
 case 57:
-#line 728 "asn1p_y.y"
+#line 729 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1811,7 +1820,7 @@
 	;
     break;}
 case 58:
-#line 735 "asn1p_y.y"
+#line 736 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1820,7 +1829,7 @@
 	;
     break;}
 case 59:
-#line 753 "asn1p_y.y"
+#line 754 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1829,7 +1838,7 @@
 	;
     break;}
 case 60:
-#line 759 "asn1p_y.y"
+#line 760 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1838,7 +1847,7 @@
 	;
     break;}
 case 61:
-#line 775 "asn1p_y.y"
+#line 776 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1848,7 +1857,7 @@
 	;
     break;}
 case 62:
-#line 785 "asn1p_y.y"
+#line 786 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1860,7 +1869,7 @@
 	;
     break;}
 case 63:
-#line 794 "asn1p_y.y"
+#line 795 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1871,14 +1880,14 @@
 	;
     break;}
 case 64:
-#line 805 "asn1p_y.y"
+#line 806 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
 case 65:
-#line 809 "asn1p_y.y"
+#line 810 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1888,7 +1897,7 @@
 	;
     break;}
 case 66:
-#line 816 "asn1p_y.y"
+#line 817 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1898,7 +1907,7 @@
 	;
     break;}
 case 67:
-#line 823 "asn1p_y.y"
+#line 824 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1909,7 +1918,7 @@
 	;
     break;}
 case 68:
-#line 834 "asn1p_y.y"
+#line 835 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1917,20 +1926,20 @@
 	;
     break;}
 case 69:
-#line 839 "asn1p_y.y"
+#line 840 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 70:
-#line 846 "asn1p_y.y"
+#line 847 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 71:
-#line 849 "asn1p_y.y"
+#line 850 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1940,15 +1949,15 @@
 	;
     break;}
 case 72:
-#line 873 "asn1p_y.y"
+#line 874 "asn1p_y.y"
 { yyval.a_expr = asn1p_expr_new(yylineno); ;
     break;}
 case 73:
-#line 874 "asn1p_y.y"
+#line 875 "asn1p_y.y"
 { yyval.a_expr = yyvsp[0].a_expr; ;
     break;}
 case 74:
-#line 877 "asn1p_y.y"
+#line 878 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1956,14 +1965,14 @@
 	;
     break;}
 case 75:
-#line 882 "asn1p_y.y"
+#line 883 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 76:
-#line 889 "asn1p_y.y"
+#line 890 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1973,7 +1982,7 @@
 	;
     break;}
 case 77:
-#line 896 "asn1p_y.y"
+#line 897 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -1982,7 +1991,7 @@
 	;
     break;}
 case 78:
-#line 902 "asn1p_y.y"
+#line 903 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1992,13 +2001,13 @@
 	;
     break;}
 case 79:
-#line 909 "asn1p_y.y"
+#line 910 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 80:
-#line 915 "asn1p_y.y"
+#line 916 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2006,14 +2015,14 @@
 	;
     break;}
 case 81:
-#line 920 "asn1p_y.y"
+#line 921 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 82:
-#line 927 "asn1p_y.y"
+#line 928 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2021,20 +2030,20 @@
 	;
     break;}
 case 83:
-#line 932 "asn1p_y.y"
+#line 933 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 84:
-#line 935 "asn1p_y.y"
+#line 936 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
 	;
     break;}
 case 85:
-#line 942 "asn1p_y.y"
+#line 943 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2044,15 +2053,15 @@
 	;
     break;}
 case 86:
-#line 952 "asn1p_y.y"
+#line 953 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
 case 87:
-#line 953 "asn1p_y.y"
+#line 954 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
 case 88:
-#line 957 "asn1p_y.y"
+#line 958 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2062,14 +2071,14 @@
 	;
     break;}
 case 89:
-#line 964 "asn1p_y.y"
+#line 965 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 90:
-#line 974 "asn1p_y.y"
+#line 975 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2080,7 +2089,7 @@
 	;
     break;}
 case 91:
-#line 984 "asn1p_y.y"
+#line 985 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -2092,7 +2101,7 @@
 	;
     break;}
 case 92:
-#line 995 "asn1p_y.y"
+#line 996 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2103,7 +2112,7 @@
 	;
     break;}
 case 93:
-#line 1005 "asn1p_y.y"
+#line 1006 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2115,7 +2124,7 @@
 	;
     break;}
 case 94:
-#line 1016 "asn1p_y.y"
+#line 1017 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2126,7 +2135,7 @@
 	;
     break;}
 case 95:
-#line 1026 "asn1p_y.y"
+#line 1027 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2138,7 +2147,7 @@
 	;
     break;}
 case 96:
-#line 1037 "asn1p_y.y"
+#line 1038 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2150,53 +2159,54 @@
 	;
     break;}
 case 97:
-#line 1049 "asn1p_y.y"
+#line 1050 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
 case 98:
-#line 1050 "asn1p_y.y"
+#line 1051 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 99:
-#line 1057 "asn1p_y.y"
+#line 1058 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
 case 100:
-#line 1059 "asn1p_y.y"
+#line 1060 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
 case 101:
-#line 1065 "asn1p_y.y"
+#line 1066 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 102:
-#line 1069 "asn1p_y.y"
+#line 1070 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 103:
-#line 1076 "asn1p_y.y"
+#line 1077 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
+		yyval.a_wchunk->type = WC_WHITESPACE;
 	;
     break;}
 case 104:
-#line 1079 "asn1p_y.y"
+#line 1081 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0);
 	;
     break;}
 case 105:
-#line 1082 "asn1p_y.y"
+#line 1084 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2208,13 +2218,13 @@
 	;
     break;}
 case 106:
-#line 1091 "asn1p_y.y"
+#line 1093 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
 	;
     break;}
 case 107:
-#line 1097 "asn1p_y.y"
+#line 1099 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2225,7 +2235,7 @@
 	;
     break;}
 case 108:
-#line 1105 "asn1p_y.y"
+#line 1107 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2237,7 +2247,7 @@
 	;
     break;}
 case 109:
-#line 1114 "asn1p_y.y"
+#line 1116 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2249,7 +2259,7 @@
 	;
     break;}
 case 110:
-#line 1126 "asn1p_y.y"
+#line 1128 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2271,14 +2281,14 @@
 	;
     break;}
 case 111:
-#line 1148 "asn1p_y.y"
+#line 1150 "asn1p_y.y"
 {
 		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
 	;
     break;}
 case 112:
-#line 1155 "asn1p_y.y"
+#line 1157 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2297,13 +2307,13 @@
 	;
     break;}
 case 113:
-#line 1174 "asn1p_y.y"
+#line 1176 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 114:
-#line 1177 "asn1p_y.y"
+#line 1179 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2312,7 +2322,7 @@
 	;
     break;}
 case 115:
-#line 1183 "asn1p_y.y"
+#line 1185 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2321,7 +2331,7 @@
 	;
     break;}
 case 116:
-#line 1189 "asn1p_y.y"
+#line 1191 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2330,7 +2340,7 @@
 	;
     break;}
 case 117:
-#line 1195 "asn1p_y.y"
+#line 1197 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2343,7 +2353,7 @@
 	;
     break;}
 case 118:
-#line 1205 "asn1p_y.y"
+#line 1207 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2356,7 +2366,7 @@
 	;
     break;}
 case 119:
-#line 1215 "asn1p_y.y"
+#line 1217 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2365,7 +2375,7 @@
 	;
     break;}
 case 120:
-#line 1221 "asn1p_y.y"
+#line 1223 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2379,7 +2389,7 @@
 	;
     break;}
 case 121:
-#line 1235 "asn1p_y.y"
+#line 1237 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2396,7 +2406,7 @@
 	;
     break;}
 case 122:
-#line 1259 "asn1p_y.y"
+#line 1261 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2406,7 +2416,7 @@
 	;
     break;}
 case 123:
-#line 1266 "asn1p_y.y"
+#line 1268 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2416,7 +2426,7 @@
 	;
     break;}
 case 124:
-#line 1281 "asn1p_y.y"
+#line 1283 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2427,7 +2437,7 @@
 	;
     break;}
 case 125:
-#line 1289 "asn1p_y.y"
+#line 1291 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2440,7 +2450,7 @@
 	;
     break;}
 case 126:
-#line 1299 "asn1p_y.y"
+#line 1301 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2453,7 +2463,7 @@
 	;
     break;}
 case 127:
-#line 1309 "asn1p_y.y"
+#line 1311 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2466,7 +2476,7 @@
 	;
     break;}
 case 128:
-#line 1319 "asn1p_y.y"
+#line 1321 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2477,7 +2487,7 @@
 	;
     break;}
 case 129:
-#line 1327 "asn1p_y.y"
+#line 1329 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2499,7 +2509,7 @@
 	;
     break;}
 case 130:
-#line 1349 "asn1p_y.y"
+#line 1351 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2510,7 +2520,7 @@
 	;
     break;}
 case 131:
-#line 1357 "asn1p_y.y"
+#line 1359 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2520,49 +2530,49 @@
 	;
     break;}
 case 134:
-#line 1371 "asn1p_y.y"
+#line 1373 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 135:
-#line 1376 "asn1p_y.y"
+#line 1378 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 136:
-#line 1385 "asn1p_y.y"
+#line 1387 "asn1p_y.y"
 {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
 	;
     break;}
 case 137:
-#line 1389 "asn1p_y.y"
+#line 1391 "asn1p_y.y"
 {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
 	;
     break;}
 case 138:
-#line 1393 "asn1p_y.y"
+#line 1395 "asn1p_y.y"
 {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
 	;
     break;}
 case 139:
-#line 1400 "asn1p_y.y"
+#line 1402 "asn1p_y.y"
 {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
 	;
     break;}
 case 140:
-#line 1420 "asn1p_y.y"
+#line 1422 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2572,7 +2582,7 @@
 	;
     break;}
 case 141:
-#line 1430 "asn1p_y.y"
+#line 1432 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2582,11 +2592,11 @@
 	;
     break;}
 case 142:
-#line 1437 "asn1p_y.y"
+#line 1439 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 143:
-#line 1437 "asn1p_y.y"
+#line 1439 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -2594,7 +2604,7 @@
 	;
     break;}
 case 144:
-#line 1442 "asn1p_y.y"
+#line 1444 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2602,7 +2612,7 @@
 	;
     break;}
 case 145:
-#line 1447 "asn1p_y.y"
+#line 1449 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2610,7 +2620,7 @@
 	;
     break;}
 case 146:
-#line 1452 "asn1p_y.y"
+#line 1454 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2618,39 +2628,39 @@
 	;
     break;}
 case 147:
-#line 1457 "asn1p_y.y"
+#line 1459 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 148:
-#line 1461 "asn1p_y.y"
+#line 1463 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 149:
-#line 1465 "asn1p_y.y"
+#line 1467 "asn1p_y.y"
 {
 		yyval.a_value = yyval.a_value;
 	;
     break;}
 case 150:
-#line 1468 "asn1p_y.y"
+#line 1470 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 151:
-#line 1471 "asn1p_y.y"
+#line 1473 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 152:
-#line 1477 "asn1p_y.y"
+#line 1479 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2664,7 +2674,7 @@
 	;
     break;}
 case 153:
-#line 1488 "asn1p_y.y"
+#line 1490 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2681,14 +2691,14 @@
 	;
     break;}
 case 154:
-#line 1506 "asn1p_y.y"
+#line 1508 "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 155:
-#line 1510 "asn1p_y.y"
+#line 1512 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -2696,7 +2706,7 @@
 	;
     break;}
 case 156:
-#line 1515 "asn1p_y.y"
+#line 1517 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -2704,7 +2714,7 @@
 	;
     break;}
 case 157:
-#line 1549 "asn1p_y.y"
+#line 1551 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2716,7 +2726,7 @@
 	;
     break;}
 case 158:
-#line 1558 "asn1p_y.y"
+#line 1560 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2731,71 +2741,71 @@
 	;
     break;}
 case 159:
-#line 1573 "asn1p_y.y"
+#line 1575 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
 case 160:
-#line 1574 "asn1p_y.y"
+#line 1576 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
 case 161:
-#line 1575 "asn1p_y.y"
+#line 1577 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
 case 162:
-#line 1576 "asn1p_y.y"
+#line 1578 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 163:
-#line 1577 "asn1p_y.y"
+#line 1579 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 164:
-#line 1578 "asn1p_y.y"
+#line 1580 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 165:
-#line 1579 "asn1p_y.y"
+#line 1581 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 166:
-#line 1580 "asn1p_y.y"
+#line 1582 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 167:
-#line 1581 "asn1p_y.y"
+#line 1583 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
 case 168:
-#line 1582 "asn1p_y.y"
+#line 1584 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
 case 169:
-#line 1583 "asn1p_y.y"
+#line 1585 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
 case 170:
-#line 1584 "asn1p_y.y"
+#line 1586 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
 case 171:
-#line 1585 "asn1p_y.y"
+#line 1587 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 172:
-#line 1592 "asn1p_y.y"
+#line 1594 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
 case 173:
-#line 1593 "asn1p_y.y"
+#line 1595 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
 case 174:
-#line 1594 "asn1p_y.y"
+#line 1596 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
 case 175:
-#line 1598 "asn1p_y.y"
+#line 1600 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2804,7 +2814,7 @@
 	;
     break;}
 case 176:
-#line 1604 "asn1p_y.y"
+#line 1606 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2817,91 +2827,91 @@
 	;
     break;}
 case 177:
-#line 1617 "asn1p_y.y"
+#line 1619 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
 case 178:
-#line 1618 "asn1p_y.y"
+#line 1620 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
 case 179:
-#line 1622 "asn1p_y.y"
+#line 1624 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
 case 180:
-#line 1626 "asn1p_y.y"
+#line 1628 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
 case 181:
-#line 1627 "asn1p_y.y"
+#line 1629 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
 case 182:
-#line 1628 "asn1p_y.y"
+#line 1630 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
 case 183:
-#line 1629 "asn1p_y.y"
+#line 1631 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
 case 184:
-#line 1630 "asn1p_y.y"
+#line 1632 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
 case 185:
-#line 1634 "asn1p_y.y"
+#line 1636 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
 case 186:
-#line 1635 "asn1p_y.y"
+#line 1637 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
 case 187:
-#line 1636 "asn1p_y.y"
+#line 1638 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
 case 188:
-#line 1637 "asn1p_y.y"
+#line 1639 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
 case 189:
-#line 1641 "asn1p_y.y"
+#line 1643 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
 case 190:
-#line 1642 "asn1p_y.y"
+#line 1644 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
 case 196:
-#line 1654 "asn1p_y.y"
+#line 1656 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
 case 197:
-#line 1655 "asn1p_y.y"
+#line 1657 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 198:
-#line 1661 "asn1p_y.y"
+#line 1663 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 199:
-#line 1664 "asn1p_y.y"
+#line 1666 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2911,25 +2921,25 @@
 	;
     break;}
 case 200:
-#line 1674 "asn1p_y.y"
+#line 1676 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
 case 201:
-#line 1677 "asn1p_y.y"
+#line 1679 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 202:
-#line 1683 "asn1p_y.y"
+#line 1685 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 203:
-#line 1686 "asn1p_y.y"
+#line 1688 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2938,7 +2948,7 @@
 	;
     break;}
 case 204:
-#line 1692 "asn1p_y.y"
+#line 1694 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2949,37 +2959,37 @@
 	;
     break;}
 case 205:
-#line 1703 "asn1p_y.y"
+#line 1705 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 206:
-#line 1706 "asn1p_y.y"
+#line 1708 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 207:
-#line 1709 "asn1p_y.y"
+#line 1711 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 208:
-#line 1712 "asn1p_y.y"
+#line 1714 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 209:
-#line 1715 "asn1p_y.y"
+#line 1717 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 210:
-#line 1721 "asn1p_y.y"
+#line 1723 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2990,7 +3000,7 @@
 	;
     break;}
 case 211:
-#line 1729 "asn1p_y.y"
+#line 1731 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3001,7 +3011,7 @@
 	;
     break;}
 case 212:
-#line 1737 "asn1p_y.y"
+#line 1739 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3010,7 +3020,7 @@
 	;
     break;}
 case 213:
-#line 1743 "asn1p_y.y"
+#line 1745 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3019,7 +3029,7 @@
 	;
     break;}
 case 214:
-#line 1749 "asn1p_y.y"
+#line 1751 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3029,7 +3039,7 @@
 	;
     break;}
 case 215:
-#line 1756 "asn1p_y.y"
+#line 1758 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3040,7 +3050,7 @@
 	;
     break;}
 case 216:
-#line 1764 "asn1p_y.y"
+#line 1766 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3051,7 +3061,7 @@
 	;
     break;}
 case 217:
-#line 1772 "asn1p_y.y"
+#line 1774 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3063,23 +3073,23 @@
 	;
     break;}
 case 218:
-#line 1781 "asn1p_y.y"
+#line 1783 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 219:
-#line 1784 "asn1p_y.y"
+#line 1786 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 220:
-#line 1788 "asn1p_y.y"
+#line 1790 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 221:
-#line 1788 "asn1p_y.y"
+#line 1790 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3090,35 +3100,35 @@
 	;
     break;}
 case 222:
-#line 1799 "asn1p_y.y"
+#line 1801 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
 case 223:
-#line 1800 "asn1p_y.y"
+#line 1802 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
 case 224:
-#line 1801 "asn1p_y.y"
+#line 1803 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
 case 225:
-#line 1802 "asn1p_y.y"
+#line 1804 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
 case 226:
-#line 1806 "asn1p_y.y"
+#line 1808 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
 case 227:
-#line 1809 "asn1p_y.y"
+#line 1811 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
 case 228:
-#line 1815 "asn1p_y.y"
+#line 1817 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3126,7 +3136,7 @@
 	;
     break;}
 case 229:
-#line 1820 "asn1p_y.y"
+#line 1822 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -3134,19 +3144,19 @@
 	;
     break;}
 case 230:
-#line 1825 "asn1p_y.y"
+#line 1827 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 231:
-#line 1828 "asn1p_y.y"
+#line 1830 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 232:
-#line 1831 "asn1p_y.y"
+#line 1833 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3160,7 +3170,7 @@
 	;
     break;}
 case 233:
-#line 1845 "asn1p_y.y"
+#line 1847 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3174,31 +3184,31 @@
 	;
     break;}
 case 234:
-#line 1859 "asn1p_y.y"
+#line 1861 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 235:
-#line 1862 "asn1p_y.y"
+#line 1864 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
 case 236:
-#line 1868 "asn1p_y.y"
+#line 1870 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 237:
-#line 1871 "asn1p_y.y"
+#line 1873 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 238:
-#line 1877 "asn1p_y.y"
+#line 1879 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3207,7 +3217,7 @@
 	;
     break;}
 case 239:
-#line 1883 "asn1p_y.y"
+#line 1885 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3218,45 +3228,45 @@
 	;
     break;}
 case 240:
-#line 1897 "asn1p_y.y"
+#line 1899 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
 case 241:
-#line 1898 "asn1p_y.y"
+#line 1900 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
 case 242:
-#line 1902 "asn1p_y.y"
+#line 1904 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
 case 243:
-#line 1905 "asn1p_y.y"
+#line 1907 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
 case 244:
-#line 1908 "asn1p_y.y"
+#line 1910 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
 case 245:
-#line 1914 "asn1p_y.y"
+#line 1916 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 246:
-#line 1917 "asn1p_y.y"
+#line 1919 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 247:
-#line 1926 "asn1p_y.y"
+#line 1928 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3271,13 +3281,13 @@
 	;
     break;}
 case 248:
-#line 1941 "asn1p_y.y"
+#line 1943 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 249:
-#line 1947 "asn1p_y.y"
+#line 1949 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3286,7 +3296,7 @@
 	;
     break;}
 case 250:
-#line 1953 "asn1p_y.y"
+#line 1955 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3297,7 +3307,7 @@
 	;
     break;}
 case 251:
-#line 1967 "asn1p_y.y"
+#line 1969 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3311,7 +3321,7 @@
 	;
     break;}
 case 252:
-#line 1978 "asn1p_y.y"
+#line 1980 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3326,13 +3336,13 @@
 	;
     break;}
 case 253:
-#line 1994 "asn1p_y.y"
+#line 1996 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 254:
-#line 1997 "asn1p_y.y"
+#line 1999 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3344,45 +3354,45 @@
 	;
     break;}
 case 255:
-#line 2015 "asn1p_y.y"
+#line 2017 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 256:
-#line 2019 "asn1p_y.y"
+#line 2021 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
 case 257:
-#line 2023 "asn1p_y.y"
+#line 2025 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 258:
-#line 2027 "asn1p_y.y"
+#line 2029 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
 case 259:
-#line 2050 "asn1p_y.y"
+#line 2052 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
 case 260:
-#line 2054 "asn1p_y.y"
+#line 2056 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
 case 261:
-#line 2060 "asn1p_y.y"
+#line 2062 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3390,14 +3400,14 @@
 	;
     break;}
 case 262:
-#line 2065 "asn1p_y.y"
+#line 2067 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 263:
-#line 2072 "asn1p_y.y"
+#line 2074 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3407,7 +3417,7 @@
 	;
     break;}
 case 264:
-#line 2079 "asn1p_y.y"
+#line 2081 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3418,7 +3428,7 @@
 	;
     break;}
 case 265:
-#line 2087 "asn1p_y.y"
+#line 2089 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3429,7 +3439,7 @@
 	;
     break;}
 case 266:
-#line 2095 "asn1p_y.y"
+#line 2097 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3439,7 +3449,7 @@
 	;
     break;}
 case 267:
-#line 2102 "asn1p_y.y"
+#line 2104 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3450,102 +3460,102 @@
 	;
     break;}
 case 268:
-#line 2113 "asn1p_y.y"
+#line 2115 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 269:
-#line 2117 "asn1p_y.y"
+#line 2119 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 270:
-#line 2148 "asn1p_y.y"
+#line 2150 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
 case 271:
-#line 2149 "asn1p_y.y"
+#line 2151 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
 case 272:
-#line 2153 "asn1p_y.y"
+#line 2155 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
 case 273:
-#line 2160 "asn1p_y.y"
+#line 2162 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
 case 274:
-#line 2166 "asn1p_y.y"
+#line 2168 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
 case 275:
-#line 2167 "asn1p_y.y"
+#line 2169 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
 case 276:
-#line 2168 "asn1p_y.y"
+#line 2170 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
 case 277:
-#line 2169 "asn1p_y.y"
+#line 2171 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
 case 278:
-#line 2173 "asn1p_y.y"
+#line 2175 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_DEFAULT; ;
     break;}
 case 279:
-#line 2174 "asn1p_y.y"
+#line 2176 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_IMPLICIT; ;
     break;}
 case 280:
-#line 2175 "asn1p_y.y"
+#line 2177 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_EXPLICIT; ;
     break;}
 case 281:
-#line 2179 "asn1p_y.y"
+#line 2181 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 282:
-#line 2183 "asn1p_y.y"
+#line 2185 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 283:
-#line 2191 "asn1p_y.y"
+#line 2193 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 284:
-#line 2198 "asn1p_y.y"
+#line 2200 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
 case 285:
-#line 2199 "asn1p_y.y"
+#line 2201 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 286:
-#line 2205 "asn1p_y.y"
+#line 2207 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3773,7 +3783,7 @@
     }
   return 1;
 }
-#line 2211 "asn1p_y.y"
+#line 2213 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index a391f74..41f312e 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -32,106 +32,107 @@
 	} tv_nametag;
 } YYSTYPE;
 #define	TOK_PPEQ	257
-#define	TOK_opaque	258
-#define	TOK_bstring	259
-#define	TOK_cstring	260
-#define	TOK_hstring	261
-#define	TOK_identifier	262
-#define	TOK_number	263
-#define	TOK_tuple	264
-#define	TOK_quadruple	265
-#define	TOK_number_negative	266
-#define	TOK_typereference	267
-#define	TOK_capitalreference	268
-#define	TOK_typefieldreference	269
-#define	TOK_valuefieldreference	270
-#define	TOK_Literal	271
-#define	TOK_ABSENT	272
-#define	TOK_ABSTRACT_SYNTAX	273
-#define	TOK_ALL	274
-#define	TOK_ANY	275
-#define	TOK_APPLICATION	276
-#define	TOK_AUTOMATIC	277
-#define	TOK_BEGIN	278
-#define	TOK_BIT	279
-#define	TOK_BMPString	280
-#define	TOK_BOOLEAN	281
-#define	TOK_BY	282
-#define	TOK_CHARACTER	283
-#define	TOK_CHOICE	284
-#define	TOK_CLASS	285
-#define	TOK_COMPONENT	286
-#define	TOK_COMPONENTS	287
-#define	TOK_CONSTRAINED	288
-#define	TOK_CONTAINING	289
-#define	TOK_DEFAULT	290
-#define	TOK_DEFINITIONS	291
-#define	TOK_DEFINED	292
-#define	TOK_EMBEDDED	293
-#define	TOK_ENCODED	294
-#define	TOK_ENCODING_CONTROL	295
-#define	TOK_END	296
-#define	TOK_ENUMERATED	297
-#define	TOK_EXPLICIT	298
-#define	TOK_EXPORTS	299
-#define	TOK_EXTENSIBILITY	300
-#define	TOK_EXTERNAL	301
-#define	TOK_FALSE	302
-#define	TOK_FROM	303
-#define	TOK_GeneralizedTime	304
-#define	TOK_GeneralString	305
-#define	TOK_GraphicString	306
-#define	TOK_IA5String	307
-#define	TOK_IDENTIFIER	308
-#define	TOK_IMPLICIT	309
-#define	TOK_IMPLIED	310
-#define	TOK_IMPORTS	311
-#define	TOK_INCLUDES	312
-#define	TOK_INSTANCE	313
-#define	TOK_INSTRUCTIONS	314
-#define	TOK_INTEGER	315
-#define	TOK_ISO646String	316
-#define	TOK_MAX	317
-#define	TOK_MIN	318
-#define	TOK_MINUS_INFINITY	319
-#define	TOK_NULL	320
-#define	TOK_NumericString	321
-#define	TOK_OBJECT	322
-#define	TOK_ObjectDescriptor	323
-#define	TOK_OCTET	324
-#define	TOK_OF	325
-#define	TOK_OPTIONAL	326
-#define	TOK_PATTERN	327
-#define	TOK_PDV	328
-#define	TOK_PLUS_INFINITY	329
-#define	TOK_PRESENT	330
-#define	TOK_PrintableString	331
-#define	TOK_PRIVATE	332
-#define	TOK_REAL	333
-#define	TOK_RELATIVE_OID	334
-#define	TOK_SEQUENCE	335
-#define	TOK_SET	336
-#define	TOK_SIZE	337
-#define	TOK_STRING	338
-#define	TOK_SYNTAX	339
-#define	TOK_T61String	340
-#define	TOK_TAGS	341
-#define	TOK_TeletexString	342
-#define	TOK_TRUE	343
-#define	TOK_TYPE_IDENTIFIER	344
-#define	TOK_UNIQUE	345
-#define	TOK_UNIVERSAL	346
-#define	TOK_UniversalString	347
-#define	TOK_UTCTime	348
-#define	TOK_UTF8String	349
-#define	TOK_VideotexString	350
-#define	TOK_VisibleString	351
-#define	TOK_WITH	352
-#define	TOK_EXCEPT	353
-#define	TOK_INTERSECTION	354
-#define	TOK_UNION	355
-#define	TOK_TwoDots	356
-#define	TOK_ThreeDots	357
+#define	TOK_whitespace	258
+#define	TOK_opaque	259
+#define	TOK_bstring	260
+#define	TOK_cstring	261
+#define	TOK_hstring	262
+#define	TOK_identifier	263
+#define	TOK_number	264
+#define	TOK_tuple	265
+#define	TOK_quadruple	266
+#define	TOK_number_negative	267
+#define	TOK_typereference	268
+#define	TOK_capitalreference	269
+#define	TOK_typefieldreference	270
+#define	TOK_valuefieldreference	271
+#define	TOK_Literal	272
+#define	TOK_ABSENT	273
+#define	TOK_ABSTRACT_SYNTAX	274
+#define	TOK_ALL	275
+#define	TOK_ANY	276
+#define	TOK_APPLICATION	277
+#define	TOK_AUTOMATIC	278
+#define	TOK_BEGIN	279
+#define	TOK_BIT	280
+#define	TOK_BMPString	281
+#define	TOK_BOOLEAN	282
+#define	TOK_BY	283
+#define	TOK_CHARACTER	284
+#define	TOK_CHOICE	285
+#define	TOK_CLASS	286
+#define	TOK_COMPONENT	287
+#define	TOK_COMPONENTS	288
+#define	TOK_CONSTRAINED	289
+#define	TOK_CONTAINING	290
+#define	TOK_DEFAULT	291
+#define	TOK_DEFINITIONS	292
+#define	TOK_DEFINED	293
+#define	TOK_EMBEDDED	294
+#define	TOK_ENCODED	295
+#define	TOK_ENCODING_CONTROL	296
+#define	TOK_END	297
+#define	TOK_ENUMERATED	298
+#define	TOK_EXPLICIT	299
+#define	TOK_EXPORTS	300
+#define	TOK_EXTENSIBILITY	301
+#define	TOK_EXTERNAL	302
+#define	TOK_FALSE	303
+#define	TOK_FROM	304
+#define	TOK_GeneralizedTime	305
+#define	TOK_GeneralString	306
+#define	TOK_GraphicString	307
+#define	TOK_IA5String	308
+#define	TOK_IDENTIFIER	309
+#define	TOK_IMPLICIT	310
+#define	TOK_IMPLIED	311
+#define	TOK_IMPORTS	312
+#define	TOK_INCLUDES	313
+#define	TOK_INSTANCE	314
+#define	TOK_INSTRUCTIONS	315
+#define	TOK_INTEGER	316
+#define	TOK_ISO646String	317
+#define	TOK_MAX	318
+#define	TOK_MIN	319
+#define	TOK_MINUS_INFINITY	320
+#define	TOK_NULL	321
+#define	TOK_NumericString	322
+#define	TOK_OBJECT	323
+#define	TOK_ObjectDescriptor	324
+#define	TOK_OCTET	325
+#define	TOK_OF	326
+#define	TOK_OPTIONAL	327
+#define	TOK_PATTERN	328
+#define	TOK_PDV	329
+#define	TOK_PLUS_INFINITY	330
+#define	TOK_PRESENT	331
+#define	TOK_PrintableString	332
+#define	TOK_PRIVATE	333
+#define	TOK_REAL	334
+#define	TOK_RELATIVE_OID	335
+#define	TOK_SEQUENCE	336
+#define	TOK_SET	337
+#define	TOK_SIZE	338
+#define	TOK_STRING	339
+#define	TOK_SYNTAX	340
+#define	TOK_T61String	341
+#define	TOK_TAGS	342
+#define	TOK_TeletexString	343
+#define	TOK_TRUE	344
+#define	TOK_TYPE_IDENTIFIER	345
+#define	TOK_UNIQUE	346
+#define	TOK_UNIVERSAL	347
+#define	TOK_UniversalString	348
+#define	TOK_UTCTime	349
+#define	TOK_UTF8String	350
+#define	TOK_VideotexString	351
+#define	TOK_VisibleString	352
+#define	TOK_WITH	353
+#define	TOK_EXCEPT	354
+#define	TOK_INTERSECTION	355
+#define	TOK_UNION	356
+#define	TOK_TwoDots	357
+#define	TOK_ThreeDots	358
 
 
 extern YYSTYPE asn1p_lval;
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index f39bd12..323ebe7 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -107,6 +107,7 @@
  * Token types returned by scanner.
  */
 %token			TOK_PPEQ	/* "::=", Pseudo Pascal EQuality */
+%token	<tv_opaque>	TOK_whitespace	/* A span of whitespace */
 %token	<tv_opaque>	TOK_opaque	/* opaque data (driven from .y) */
 %token	<tv_str>	TOK_bstring
 %token	<tv_opaque>	TOK_cstring
@@ -1073,8 +1074,9 @@
 	;
 
 WithSyntaxToken:
-	TOK_opaque {
+	TOK_whitespace {
 		$$ = asn1p_wsyntx_chunk_frombuf($1.buf, $1.len, 0);
+		$$->type = WC_WHITESPACE;
 	}
 	| TOK_Literal {
 		$$ = asn1p_wsyntx_chunk_frombuf($1, strlen($1), 0);
diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 423a5fa..865d90b 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -415,6 +415,7 @@
 		TQ_FOR(wc, &(wx->chunks), next) {
 		  switch(wc->type) {
 		  case WC_LITERAL:
+		  case WC_WHITESPACE:
 			printf("%s", wc->content.token);
 			break;
 		  case WC_REFERENCE: