diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index 6a6eb44..bbddbcc 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -21,6 +21,7 @@
 
 /* Scanner skeleton version:
  * $Header$
+ * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.4 1999/10/27 07:56:44 obrien Exp $
  */
 
 #define FLEX_SCANNER
@@ -1802,7 +1803,7 @@
 
 /* Newline */
 /* White-space */
-#line 1806 "lex.yy.c"
+#line 1807 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1956,7 +1957,7 @@
 #line 99 "asn1p_l.l"
 
 
-#line 1960 "lex.yy.c"
+#line 1961 "lex.yy.c"
 
 	if ( yy_init )
 		{
@@ -2898,7 +2899,7 @@
 #line 483 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2902 "lex.yy.c"
+#line 2903 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 095c904..18c744a 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -1,114 +1,265 @@
+/* A Bison parser, made from asn1p_y.y, by GNU bison 1.75.  */
 
-/*  A Bison parser, made from asn1p_y.y
-    by GNU Bison version 1.28  */
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-#define YYBISON 1  /* Identify Bison output.  */
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON	1
+
+/* Pure parsers.  */
+#define YYPURE	0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+/* If NAME_PREFIX is specified substitute the variables and functions
+   names.  */
 #define yyparse asn1p_parse
-#define yylex asn1p_lex
+#define yylex   asn1p_lex
 #define yyerror asn1p_error
-#define yylval asn1p_lval
-#define yychar asn1p_char
+#define yylval  asn1p_lval
+#define yychar  asn1p_char
 #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_number_negative	264
-#define	TOK_typereference	265
-#define	TOK_objectclassreference	266
-#define	TOK_typefieldreference	267
-#define	TOK_valuefieldreference	268
-#define	TOK_ABSENT	269
-#define	TOK_ABSTRACT_SYNTAX	270
-#define	TOK_ALL	271
-#define	TOK_ANY	272
-#define	TOK_APPLICATION	273
-#define	TOK_AUTOMATIC	274
-#define	TOK_BEGIN	275
-#define	TOK_BIT	276
-#define	TOK_BMPString	277
-#define	TOK_BOOLEAN	278
-#define	TOK_BY	279
-#define	TOK_CHARACTER	280
-#define	TOK_CHOICE	281
-#define	TOK_CLASS	282
-#define	TOK_COMPONENT	283
-#define	TOK_COMPONENTS	284
-#define	TOK_CONSTRAINED	285
-#define	TOK_CONTAINING	286
-#define	TOK_DEFAULT	287
-#define	TOK_DEFINITIONS	288
-#define	TOK_DEFINED	289
-#define	TOK_EMBEDDED	290
-#define	TOK_ENCODED	291
-#define	TOK_END	292
-#define	TOK_ENUMERATED	293
-#define	TOK_EXPLICIT	294
-#define	TOK_EXPORTS	295
-#define	TOK_EXTENSIBILITY	296
-#define	TOK_EXTERNAL	297
-#define	TOK_FALSE	298
-#define	TOK_FROM	299
-#define	TOK_GeneralizedTime	300
-#define	TOK_GeneralString	301
-#define	TOK_GraphicString	302
-#define	TOK_IA5String	303
-#define	TOK_IDENTIFIER	304
-#define	TOK_IMPLICIT	305
-#define	TOK_IMPLIED	306
-#define	TOK_IMPORTS	307
-#define	TOK_INCLUDES	308
-#define	TOK_INSTANCE	309
-#define	TOK_INTEGER	310
-#define	TOK_ISO646String	311
-#define	TOK_MAX	312
-#define	TOK_MIN	313
-#define	TOK_MINUS_INFINITY	314
-#define	TOK_NULL	315
-#define	TOK_NumericString	316
-#define	TOK_OBJECT	317
-#define	TOK_ObjectDescriptor	318
-#define	TOK_OCTET	319
-#define	TOK_OF	320
-#define	TOK_OPTIONAL	321
-#define	TOK_PATTERN	322
-#define	TOK_PDV	323
-#define	TOK_PLUS_INFINITY	324
-#define	TOK_PRESENT	325
-#define	TOK_PrintableString	326
-#define	TOK_PRIVATE	327
-#define	TOK_REAL	328
-#define	TOK_RELATIVE_OID	329
-#define	TOK_SEQUENCE	330
-#define	TOK_SET	331
-#define	TOK_SIZE	332
-#define	TOK_STRING	333
-#define	TOK_SYNTAX	334
-#define	TOK_T61String	335
-#define	TOK_TAGS	336
-#define	TOK_TeletexString	337
-#define	TOK_TRUE	338
-#define	TOK_TYPE_IDENTIFIER	339
-#define	TOK_UNIQUE	340
-#define	TOK_UNIVERSAL	341
-#define	TOK_UniversalString	342
-#define	TOK_UTCTime	343
-#define	TOK_UTF8String	344
-#define	TOK_VideotexString	345
-#define	TOK_VisibleString	346
-#define	TOK_WITH	347
-#define	TOK_UNION	348
-#define	TOK_INTERSECTION	349
-#define	TOK_EXCEPT	350
-#define	TOK_TwoDots	351
-#define	TOK_ThreeDots	352
-#define	TOK_tag	353
 
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TOK_PPEQ = 258,
+     TOK_opaque = 259,
+     TOK_bstring = 260,
+     TOK_cstring = 261,
+     TOK_hstring = 262,
+     TOK_identifier = 263,
+     TOK_number = 264,
+     TOK_number_negative = 265,
+     TOK_typereference = 266,
+     TOK_objectclassreference = 267,
+     TOK_typefieldreference = 268,
+     TOK_valuefieldreference = 269,
+     TOK_ABSENT = 270,
+     TOK_ABSTRACT_SYNTAX = 271,
+     TOK_ALL = 272,
+     TOK_ANY = 273,
+     TOK_APPLICATION = 274,
+     TOK_AUTOMATIC = 275,
+     TOK_BEGIN = 276,
+     TOK_BIT = 277,
+     TOK_BMPString = 278,
+     TOK_BOOLEAN = 279,
+     TOK_BY = 280,
+     TOK_CHARACTER = 281,
+     TOK_CHOICE = 282,
+     TOK_CLASS = 283,
+     TOK_COMPONENT = 284,
+     TOK_COMPONENTS = 285,
+     TOK_CONSTRAINED = 286,
+     TOK_CONTAINING = 287,
+     TOK_DEFAULT = 288,
+     TOK_DEFINITIONS = 289,
+     TOK_DEFINED = 290,
+     TOK_EMBEDDED = 291,
+     TOK_ENCODED = 292,
+     TOK_END = 293,
+     TOK_ENUMERATED = 294,
+     TOK_EXPLICIT = 295,
+     TOK_EXPORTS = 296,
+     TOK_EXTENSIBILITY = 297,
+     TOK_EXTERNAL = 298,
+     TOK_FALSE = 299,
+     TOK_FROM = 300,
+     TOK_GeneralizedTime = 301,
+     TOK_GeneralString = 302,
+     TOK_GraphicString = 303,
+     TOK_IA5String = 304,
+     TOK_IDENTIFIER = 305,
+     TOK_IMPLICIT = 306,
+     TOK_IMPLIED = 307,
+     TOK_IMPORTS = 308,
+     TOK_INCLUDES = 309,
+     TOK_INSTANCE = 310,
+     TOK_INTEGER = 311,
+     TOK_ISO646String = 312,
+     TOK_MAX = 313,
+     TOK_MIN = 314,
+     TOK_MINUS_INFINITY = 315,
+     TOK_NULL = 316,
+     TOK_NumericString = 317,
+     TOK_OBJECT = 318,
+     TOK_ObjectDescriptor = 319,
+     TOK_OCTET = 320,
+     TOK_OF = 321,
+     TOK_OPTIONAL = 322,
+     TOK_PATTERN = 323,
+     TOK_PDV = 324,
+     TOK_PLUS_INFINITY = 325,
+     TOK_PRESENT = 326,
+     TOK_PrintableString = 327,
+     TOK_PRIVATE = 328,
+     TOK_REAL = 329,
+     TOK_RELATIVE_OID = 330,
+     TOK_SEQUENCE = 331,
+     TOK_SET = 332,
+     TOK_SIZE = 333,
+     TOK_STRING = 334,
+     TOK_SYNTAX = 335,
+     TOK_T61String = 336,
+     TOK_TAGS = 337,
+     TOK_TeletexString = 338,
+     TOK_TRUE = 339,
+     TOK_TYPE_IDENTIFIER = 340,
+     TOK_UNIQUE = 341,
+     TOK_UNIVERSAL = 342,
+     TOK_UniversalString = 343,
+     TOK_UTCTime = 344,
+     TOK_UTF8String = 345,
+     TOK_VideotexString = 346,
+     TOK_VisibleString = 347,
+     TOK_WITH = 348,
+     TOK_UNION = 349,
+     TOK_INTERSECTION = 350,
+     TOK_EXCEPT = 351,
+     TOK_TwoDots = 352,
+     TOK_ThreeDots = 353,
+     TOK_tag = 354
+   };
+#endif
+#define TOK_PPEQ 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_number_negative 265
+#define TOK_typereference 266
+#define TOK_objectclassreference 267
+#define TOK_typefieldreference 268
+#define TOK_valuefieldreference 269
+#define TOK_ABSENT 270
+#define TOK_ABSTRACT_SYNTAX 271
+#define TOK_ALL 272
+#define TOK_ANY 273
+#define TOK_APPLICATION 274
+#define TOK_AUTOMATIC 275
+#define TOK_BEGIN 276
+#define TOK_BIT 277
+#define TOK_BMPString 278
+#define TOK_BOOLEAN 279
+#define TOK_BY 280
+#define TOK_CHARACTER 281
+#define TOK_CHOICE 282
+#define TOK_CLASS 283
+#define TOK_COMPONENT 284
+#define TOK_COMPONENTS 285
+#define TOK_CONSTRAINED 286
+#define TOK_CONTAINING 287
+#define TOK_DEFAULT 288
+#define TOK_DEFINITIONS 289
+#define TOK_DEFINED 290
+#define TOK_EMBEDDED 291
+#define TOK_ENCODED 292
+#define TOK_END 293
+#define TOK_ENUMERATED 294
+#define TOK_EXPLICIT 295
+#define TOK_EXPORTS 296
+#define TOK_EXTENSIBILITY 297
+#define TOK_EXTERNAL 298
+#define TOK_FALSE 299
+#define TOK_FROM 300
+#define TOK_GeneralizedTime 301
+#define TOK_GeneralString 302
+#define TOK_GraphicString 303
+#define TOK_IA5String 304
+#define TOK_IDENTIFIER 305
+#define TOK_IMPLICIT 306
+#define TOK_IMPLIED 307
+#define TOK_IMPORTS 308
+#define TOK_INCLUDES 309
+#define TOK_INSTANCE 310
+#define TOK_INTEGER 311
+#define TOK_ISO646String 312
+#define TOK_MAX 313
+#define TOK_MIN 314
+#define TOK_MINUS_INFINITY 315
+#define TOK_NULL 316
+#define TOK_NumericString 317
+#define TOK_OBJECT 318
+#define TOK_ObjectDescriptor 319
+#define TOK_OCTET 320
+#define TOK_OF 321
+#define TOK_OPTIONAL 322
+#define TOK_PATTERN 323
+#define TOK_PDV 324
+#define TOK_PLUS_INFINITY 325
+#define TOK_PRESENT 326
+#define TOK_PrintableString 327
+#define TOK_PRIVATE 328
+#define TOK_REAL 329
+#define TOK_RELATIVE_OID 330
+#define TOK_SEQUENCE 331
+#define TOK_SET 332
+#define TOK_SIZE 333
+#define TOK_STRING 334
+#define TOK_SYNTAX 335
+#define TOK_T61String 336
+#define TOK_TAGS 337
+#define TOK_TeletexString 338
+#define TOK_TRUE 339
+#define TOK_TYPE_IDENTIFIER 340
+#define TOK_UNIQUE 341
+#define TOK_UNIVERSAL 342
+#define TOK_UniversalString 343
+#define TOK_UTCTime 344
+#define TOK_UTF8String 345
+#define TOK_VideotexString 346
+#define TOK_VisibleString 347
+#define TOK_WITH 348
+#define TOK_UNION 349
+#define TOK_INTERSECTION 350
+#define TOK_EXCEPT 351
+#define TOK_TwoDots 352
+#define TOK_ThreeDots 353
+#define TOK_tag 354
+
+
+
+
+/* Copy the first part of user declarations.  */
 #line 1 "asn1p_y.y"
 
 
@@ -159,6 +310,21 @@
 	} while(0)
 
 
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#ifndef YYSTYPE
 #line 57 "asn1p_y.y"
 typedef union {
 	asn1p_t			*a_grammar;
@@ -191,801 +357,1035 @@
 		char *name;
 		struct asn1p_type_tag_s tag;
 	} tv_nametag;
-} YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
-#endif
+} yystype;
+/* Line 193 of /usr/local/share/bison/yacc.c.  */
+#line 363 "y.tab.c"
+# define YYSTYPE yystype
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
+#ifndef YYLTYPE
+typedef struct yyltype
+{
+  int first_line;
+  int first_column;
+  int last_line;
+  int last_column;
+} yyltype;
+# define YYLTYPE yyltype
+# define YYLTYPE_IS_TRIVIAL 1
+#endif
+
+/* Copy the second part of user declarations.  */
 
 
-#define	YYFINAL		375
-#define	YYFLAG		-32768
-#define	YYNTBASE	113
+/* Line 213 of /usr/local/share/bison/yacc.c.  */
+#line 384 "y.tab.c"
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 353 ? yytranslate[x] : 211)
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
 
-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,   109,     2,     2,     2,     2,     2,     2,   104,
-   105,     2,     2,   107,     2,   110,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   108,   106,   111,
-     2,     2,     2,   112,     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,    96,     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,   102,    94,   103,     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,
-     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,     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,
-     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,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    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,    95,    97,    98,
-    99,   100,   101
-};
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
 
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     7,    16,    17,    19,    23,    26,    28,
-    31,    33,    38,    40,    41,    43,    45,    48,    51,    54,
-    57,    60,    61,    63,    65,    68,    70,    72,    74,    76,
-    78,    80,    84,    87,    89,    92,    97,    99,   103,   105,
-   107,   111,   115,   118,   120,   124,   126,   128,   135,   137,
-   139,   140,   142,   147,   152,   156,   163,   165,   169,   171,
-   175,   179,   181,   185,   187,   189,   191,   195,   201,   202,
-   204,   206,   210,   213,   217,   222,   223,   225,   226,   233,
-   235,   238,   240,   242,   245,   247,   251,   253,   257,   261,
-   263,   265,   267,   272,   274,   278,   280,   284,   288,   290,
-   294,   296,   300,   302,   304,   306,   308,   313,   314,   318,
-   320,   322,   324,   326,   328,   330,   334,   336,   339,   341,
-   343,   345,   347,   350,   353,   355,   357,   360,   363,   365,
-   367,   369,   371,   374,   376,   379,   381,   383,   385,   387,
-   389,   391,   393,   395,   397,   399,   401,   403,   405,   407,
-   412,   417,   422,   427,   432,   434,   439,   440,   442,   444,
-   446,   448,   450,   452,   457,   459,   462,   466,   468,   472,
-   478,   480,   484,   486,   488,   492,   494,   498,   500,   504,
-   506,   510,   515,   517,   519,   521,   524,   527,   531,   533,
-   535,   537,   539,   541,   543,   545,   547,   549,   555,   557,
-   561,   563,   567,   568,   570,   572,   574,   576,   578,   580,
-   584,   589,   591,   595,   598,   602,   604,   608,   609,   611,
-   613,   616,   618,   620,   621,   625,   628,   632,   634,   638,
-   640,   645,   650,   652,   654,   656,   658,   659,   661,   663,
-   666,   669,   671,   673,   675,   677,   679
-};
+# if YYSTACK_USE_ALLOCA
+#  define YYSTACK_ALLOC alloca
+# else
+#  ifndef YYSTACK_USE_ALLOCA
+#   if defined (alloca) || defined (_ALLOCA_H)
+#    define YYSTACK_ALLOC alloca
+#   else
+#    ifdef __GNUC__
+#     define YYSTACK_ALLOC __builtin_alloca
+#    endif
+#   endif
+#  endif
+# endif
 
-static const short yyrhs[] = {   114,
-     0,   115,     0,   114,   115,     0,   207,   116,    34,   120,
-     3,    21,   123,    38,     0,     0,   117,     0,   102,   118,
-   103,     0,   102,   103,     0,   119,     0,   118,   119,     0,
-   209,     0,   209,   104,     9,   105,     0,     9,     0,     0,
-   121,     0,   122,     0,   121,   122,     0,    40,    82,     0,
-    51,    82,     0,    20,    82,     0,    42,    52,     0,     0,
-   124,     0,   125,     0,   124,   125,     0,   126,     0,   131,
-     0,   137,     0,   161,     0,   134,     0,   169,     0,    53,
-   127,   106,     0,    53,    45,     0,   128,     0,   127,   128,
-     0,   129,    45,   207,   116,     0,   130,     0,   129,   107,
-   130,     0,   207,     0,   209,     0,    41,   132,   106,     0,
-    41,    17,   106,     0,    41,   106,     0,   133,     0,   132,
-   107,   133,     0,   207,     0,   209,     0,   207,   135,     3,
-   102,   136,   103,     0,   156,     0,   166,     0,     0,   177,
-     0,   207,     3,   205,    85,     0,   207,     3,   205,   153,
-     0,   207,     3,   143,     0,   207,   102,   138,   103,     3,
-   153,     0,   139,     0,   138,   107,   139,     0,   207,     0,
-   207,   108,   209,     0,   166,   108,   209,     0,   141,     0,
-   140,   107,   141,     0,   155,     0,   209,     0,   152,     0,
-   142,   107,   152,     0,    28,   102,   145,   103,   147,     0,
-     0,    86,     0,   146,     0,   145,   107,   146,     0,   159,
-   197,     0,   159,   153,   144,     0,   159,   159,   197,   144,
-     0,     0,   148,     0,     0,    93,    80,   102,   149,   150,
-   103,     0,   151,     0,   150,   151,     0,     4,     0,   159,
-     0,   210,   153,     0,   154,     0,   155,   171,   197,     0,
-   100,     0,   100,   109,   164,     0,   100,   109,   204,     0,
-   168,     0,   169,     0,   170,     0,   207,   102,   140,   103,
-     0,   156,     0,    55,    66,   156,     0,    11,     0,    11,
-   110,   207,     0,    11,   110,   209,     0,   208,     0,   208,
-   110,   157,     0,   158,     0,   157,   110,   158,     0,   160,
-     0,   160,     0,    13,     0,    14,     0,   209,   135,     3,
-   162,     0,     0,   102,   163,   165,     0,     5,     0,     7,
-     0,     6,     0,   204,     0,   164,     0,   209,     0,   207,
-   110,   209,     0,     4,     0,   165,     4,     0,    24,     0,
-    61,     0,    74,     0,   167,     0,    65,    79,     0,    63,
-    50,     0,    75,     0,    43,     0,    36,    69,     0,    26,
-    79,     0,    89,     0,    46,     0,    56,     0,    39,     0,
-    22,    79,     0,   166,     0,   167,   201,     0,    23,     0,
-    47,     0,    48,     0,    49,     0,    57,     0,    62,     0,
-    72,     0,    81,     0,    83,     0,    88,     0,    90,     0,
-    91,     0,    92,     0,    64,     0,    27,   102,   142,   103,
-     0,    76,   102,   142,   103,     0,    77,   102,   142,   103,
-     0,    76,   171,    66,   155,     0,    77,   171,    66,   155,
-     0,    18,     0,    18,    35,    25,   209,     0,     0,   175,
-     0,    94,     0,    95,     0,    96,     0,    97,     0,    98,
-     0,    78,   104,   177,   105,     0,   176,     0,   175,   176,
-     0,   104,   177,   105,     0,   178,     0,   178,   107,   100,
-     0,   178,   107,   100,   107,   178,     0,   100,     0,   100,
-   107,   178,     0,   179,     0,   180,     0,   179,   172,   180,
-     0,   181,     0,   180,   173,   181,     0,   182,     0,   181,
-   174,   182,     0,   185,     0,   185,   183,   185,     0,   184,
-   104,   177,   105,     0,   191,     0,   186,     0,    99,     0,
-    99,   111,     0,   111,    99,     0,   111,    99,   111,     0,
-    78,     0,    45,     0,   204,     0,   209,     0,     6,     0,
-    59,     0,    58,     0,    44,     0,    84,     0,    93,    30,
-   102,   187,   103,     0,   188,     0,   187,   107,   188,     0,
-   100,     0,   209,   171,   189,     0,     0,   190,     0,    71,
-     0,    15,     0,    67,     0,   192,     0,   193,     0,   102,
-   207,   103,     0,   192,   102,   194,   103,     0,   195,     0,
-   194,   107,   195,     0,   112,   196,     0,   112,   110,   196,
-     0,   209,     0,   196,   110,   209,     0,     0,   198,     0,
-    67,     0,    33,   199,     0,   185,     0,   166,     0,     0,
-   102,   200,   165,     0,   102,   103,     0,   102,   202,   103,
-     0,   203,     0,   202,   107,   203,     0,   209,     0,   209,
-   104,   204,   105,     0,   209,   104,   164,   105,     0,   204,
-     0,   100,     0,     9,     0,    10,     0,     0,   206,     0,
-   101,     0,   101,    51,     0,   101,    40,     0,    11,     0,
-    12,     0,    12,     0,     8,     0,   209,     0,   209,   206,
-     0
-};
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC malloc
+#  define YYSTACK_FREE free
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
+      + YYSTACK_GAP_MAX)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  register YYSIZE_T yyi;		\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];	\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;	\
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
 
 #endif
 
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   297,   303,   309,   325,   350,   352,   355,   359,   364,   371,
-   379,   384,   388,   397,   399,   407,   411,   419,   423,   426,
-   429,   437,   439,   448,   452,   477,   481,   490,   497,   510,
-   521,   534,   541,   546,   552,   558,   567,   573,   579,   586,
-   594,   598,   601,   608,   614,   620,   627,   636,   646,   654,
-   662,   664,   676,   688,   695,   711,   721,   731,   741,   746,
-   753,   763,   769,   775,   779,   791,   797,   803,   813,   815,
-   818,   826,   832,   841,   846,   863,   865,   870,   874,   879,
-   884,   890,   894,   919,   926,   931,   939,   948,   957,   968,
-   972,   978,   986,  1010,  1017,  1031,  1040,  1050,  1060,  1068,
-  1089,  1098,  1107,  1108,  1110,  1117,  1129,  1139,  1141,  1146,
-  1150,  1154,  1158,  1161,  1166,  1178,  1194,  1205,  1219,  1221,
-  1222,  1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,  1231,
-  1237,  1239,  1240,  1243,  1250,  1262,  1264,  1268,  1272,  1273,
-  1274,  1275,  1276,  1280,  1281,  1282,  1283,  1287,  1288,  1291,
-  1298,  1304,  1310,  1318,  1326,  1332,  1348,  1350,  1353,  1353,
-  1354,  1354,  1355,  1357,  1370,  1373,  1378,  1384,  1388,  1395,
-  1403,  1408,  1417,  1419,  1421,  1426,  1428,  1434,  1436,  1441,
-  1448,  1455,  1463,  1466,  1471,  1473,  1474,  1475,  1478,  1482,
-  1487,  1491,  1502,  1506,  1511,  1516,  1521,  1528,  1534,  1538,
-  1543,  1549,  1561,  1563,  1566,  1570,  1573,  1578,  1582,  1590,
-  1605,  1611,  1618,  1631,  1643,  1658,  1662,  1679,  1681,  1684,
-  1688,  1694,  1697,  1699,  1699,  1719,  1724,  1729,  1735,  1741,
-  1749,  1757,  1765,  1772,  1782,  1787,  1817,  1819,  1822,  1827,
-  1831,  1837,  1842,  1848,  1855,  1862,  1867
-};
-#endif
-
-
-#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_number_negative","TOK_typereference","TOK_objectclassreference","TOK_typefieldreference",
-"TOK_valuefieldreference","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","TOK_ENCODED","TOK_END","TOK_ENUMERATED","TOK_EXPLICIT","TOK_EXPORTS",
-"TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime",
-"TOK_GeneralString","TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT",
-"TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INTEGER","TOK_ISO646String",
-"TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL","TOK_NumericString","TOK_OBJECT",
-"TOK_ObjectDescriptor","TOK_OCTET","TOK_OF","TOK_OPTIONAL","TOK_PATTERN","TOK_PDV",
-"TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString","TOK_PRIVATE","TOK_REAL",
-"TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE","TOK_STRING","TOK_SYNTAX",
-"TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE","TOK_TYPE_IDENTIFIER",
-"TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime","TOK_UTF8String",
-"TOK_VideotexString","TOK_VisibleString","TOK_WITH","'|'","TOK_UNION","'^'",
-"TOK_INTERSECTION","TOK_EXCEPT","TOK_TwoDots","TOK_ThreeDots","TOK_tag","'{'",
-"'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'","ParsedGrammar",
-"ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
-"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
-"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
-"ModuleSpecificationBody","ModuleSpecificationElement","ImportsDefinition","ImportsBundleSet",
-"ImportsBundle","ImportsList","ImportsElement","ExportsDefinition","ExportsBody",
-"ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody","DataTypeReference",
-"ParameterArgumentList","ParameterArgumentName","ActualParameterList","ActualParameter",
-"ConstructedDataTypeDefinition","ClassDeclaration","optUnique","ClassFieldList",
-"ClassField","optWithSyntax","WithSyntax","@1","WithSyntaxFormat","WithSyntaxFormatToken",
-"DataTypeMember","ConstrainedTypeDeclaration","ExtensionAndException","TypeDeclaration",
-"ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","InlineOrDefinedValue",
-"@2","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","ConstructedType","optConstraints","Union","Intersection",
-"Except","Constraints","SingleConstraint","ConstraintElementSet","ConstraintElement",
-"ConstraintElementUnion","ConstraintElementIntersection","ConstraintElementException",
-"ConstraintSubtypeElement","ConstraintRangeSpec","ConstraintSpec","ConstraintValue",
-"WithComponents","WithComponentsList","WithComponentsElement","optPresenceConstraint",
-"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
-"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
-"DefaultValue","@3","UniverationDefinition","UniverationList","UniverationElement",
-"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","Identifier",
-"TaggedIdentifier", NULL
-};
-#endif
-
-static const short yyr1[] = {     0,
-   113,   114,   114,   115,   116,   116,   117,   117,   118,   118,
-   119,   119,   119,   120,   120,   121,   121,   122,   122,   122,
-   122,   123,   123,   124,   124,   125,   125,   125,   125,   125,
-   125,   126,   126,   127,   127,   128,   129,   129,   130,   130,
-   131,   131,   131,   132,   132,   133,   133,   134,   135,   135,
-   136,   136,   137,   137,   137,   137,   138,   138,   139,   139,
-   139,   140,   140,   141,   141,   142,   142,   143,   144,   144,
-   145,   145,   146,   146,   146,   147,   147,   149,   148,   150,
-   150,   151,   151,   152,   152,   153,   154,   154,   154,   155,
-   155,   155,   155,   155,   155,   156,   156,   156,   156,   156,
-   157,   157,   158,   159,   160,   160,   161,   163,   162,   162,
-   162,   162,   162,   162,   164,   164,   165,   165,   166,   166,
-   166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-   167,   167,   167,   168,   168,   169,   169,   169,   169,   169,
-   169,   169,   169,   169,   169,   169,   169,   169,   169,   170,
-   170,   170,   170,   170,   170,   170,   171,   171,   172,   172,
-   173,   173,   174,   175,   175,   175,   176,   177,   177,   177,
-   177,   177,   178,   179,   179,   180,   180,   181,   181,   182,
-   182,   182,   182,   182,   183,   183,   183,   183,   184,   184,
-   185,   185,   185,   185,   185,   185,   185,   186,   187,   187,
-   188,   188,   189,   189,   190,   190,   190,   191,   191,   192,
-   193,   194,   194,   195,   195,   196,   196,   197,   197,   198,
-   198,   199,   199,   200,   199,   201,   201,   202,   202,   203,
-   203,   203,   203,   203,   204,   204,   205,   205,   206,   206,
-   206,   207,   207,   208,   209,   210,   210
-};
-
-static const short yyr2[] = {     0,
-     1,     1,     2,     8,     0,     1,     3,     2,     1,     2,
-     1,     4,     1,     0,     1,     1,     2,     2,     2,     2,
-     2,     0,     1,     1,     2,     1,     1,     1,     1,     1,
-     1,     3,     2,     1,     2,     4,     1,     3,     1,     1,
-     3,     3,     2,     1,     3,     1,     1,     6,     1,     1,
-     0,     1,     4,     4,     3,     6,     1,     3,     1,     3,
-     3,     1,     3,     1,     1,     1,     3,     5,     0,     1,
-     1,     3,     2,     3,     4,     0,     1,     0,     6,     1,
-     2,     1,     1,     2,     1,     3,     1,     3,     3,     1,
-     1,     1,     4,     1,     3,     1,     3,     3,     1,     3,
-     1,     3,     1,     1,     1,     1,     4,     0,     3,     1,
-     1,     1,     1,     1,     1,     3,     1,     2,     1,     1,
-     1,     1,     2,     2,     1,     1,     2,     2,     1,     1,
-     1,     1,     2,     1,     2,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
-     4,     4,     4,     4,     1,     4,     0,     1,     1,     1,
-     1,     1,     1,     4,     1,     2,     3,     1,     3,     5,
-     1,     3,     1,     1,     3,     1,     3,     1,     3,     1,
-     3,     4,     1,     1,     1,     2,     2,     3,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     5,     1,     3,
-     1,     3,     0,     1,     1,     1,     1,     1,     1,     3,
-     4,     1,     3,     2,     3,     1,     3,     0,     1,     1,
-     2,     1,     1,     0,     3,     2,     3,     1,     3,     1,
-     4,     4,     1,     1,     1,     1,     0,     1,     1,     2,
-     2,     1,     1,     1,     1,     1,     2
-};
-
-static const short yydefact[] = {     0,
-   242,   243,     1,     2,     5,     3,     0,     0,     6,   245,
-    13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
-     0,     0,     0,     0,    15,    16,     0,    20,    18,    21,
-    19,     0,    17,    12,    22,   136,     0,   137,   138,   139,
-     0,   140,   141,   149,   142,   143,   144,   145,   146,   147,
-   148,     0,    23,    24,    26,    27,    30,    28,    29,    31,
-     0,     0,     0,    43,     0,    44,    46,    47,    33,     0,
-    34,     0,    37,    39,    40,     4,    25,   237,    96,   244,
-     0,   119,     0,     0,   132,   126,   130,   131,   120,     0,
-     0,   121,   125,   129,     0,     0,    49,    50,   122,    99,
-     0,    42,    41,     0,    32,    35,     0,     0,     0,   239,
-    55,     0,   238,     0,   133,   128,   127,   124,   123,     0,
-    57,     0,    59,     0,     0,     0,    45,     5,    38,     0,
-   241,   240,    96,   244,   155,     0,     0,   157,   157,    53,
-    54,   157,    94,   134,   122,    90,    91,    92,     0,    97,
-    98,     0,     0,     0,     0,    51,   105,   106,   100,   101,
-   103,   110,   112,   111,   235,   236,   108,   107,   114,   113,
-     0,   115,    36,     0,    71,   218,   104,     0,     0,     0,
-     0,     0,     0,     0,   158,   165,     0,     0,   218,     0,
-   135,     0,     0,    58,    61,    60,   193,   196,   190,   195,
-   194,   189,   197,     0,   171,     0,     0,    52,   168,   173,
-   174,   176,   178,     0,   180,   184,   183,   208,   209,   191,
-   192,     0,     0,     0,    76,     0,     0,   220,    69,   218,
-    73,   219,     0,    87,     0,    66,    85,   246,     0,    95,
-     0,     0,     0,     0,   166,     0,     0,    86,   234,   226,
-     0,   228,   233,   230,     0,    62,    64,    65,    56,     0,
-     0,     0,    48,     0,   159,   160,     0,   161,   162,     0,
-   163,     0,     0,   185,     0,     0,     0,   102,   117,   109,
-   116,     0,    68,    77,    72,   224,   223,   222,   221,    70,
-    74,    69,   156,     0,   150,     0,   247,    84,     0,   151,
-   167,   153,   152,   154,   227,     0,     0,    93,     0,     0,
-   172,   210,   169,   175,   177,   179,     0,   186,   187,   181,
-     0,     0,   212,   118,     0,     0,    75,    88,    89,    67,
-   164,   229,     0,     0,    63,   201,     0,   199,   157,     0,
-   182,   188,     0,   214,   216,   211,     0,    78,   225,   232,
-   231,   198,     0,   203,   170,   215,     0,   213,     0,   200,
-   206,   207,   205,   202,   204,   217,    82,     0,    80,    83,
-    79,    81,     0,     0,     0
-};
-
-static const short yydefgoto[] = {   373,
-     3,     4,     8,     9,    13,    14,    24,    25,    26,    52,
-    53,    54,    55,    70,    71,    72,    73,    56,    65,    66,
-    57,    96,   207,    58,   120,   121,   255,   256,   235,   111,
-   291,   174,   175,   283,   284,   359,   368,   369,   236,   141,
-   237,   142,   143,   159,   160,   176,   177,    59,   168,   223,
-   169,   280,   144,   145,   146,   147,   148,   184,   267,   270,
-   272,   185,   186,   208,   209,   210,   211,   212,   213,   276,
-   214,   215,   216,   337,   338,   364,   365,   217,   218,   219,
-   322,   323,   344,   231,   232,   289,   326,   191,   251,   252,
-   220,   112,   113,   149,   100,   221,   239
-};
-
-static const short yypact[] = {    81,
--32768,-32768,    81,-32768,   -45,-32768,    23,    70,-32768,-32768,
--32768,-32768,    47,-32768,    31,   190,-32768,-32768,   132,    61,
-    69,   108,    86,   176,   190,-32768,    76,-32768,-32768,-32768,
--32768,   166,-32768,-32768,   442,-32768,    32,-32768,-32768,-32768,
-   121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   168,   442,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   179,   732,   103,-32768,    52,-32768,-32768,-32768,-32768,    39,
--32768,    16,-32768,-32768,-32768,-32768,-32768,   -11,   111,-32768,
-   150,-32768,   152,   142,-32768,-32768,-32768,-32768,-32768,   184,
-   159,-32768,-32768,-32768,   748,   240,-32768,-32768,-32768,   135,
-   243,-32768,-32768,   141,-32768,-32768,    81,   141,   145,    60,
--32768,   599,-32768,   141,-32768,-32768,-32768,-32768,-32768,    -1,
--32768,   143,   144,   147,   206,    68,-32768,   -45,-32768,   206,
--32768,-32768,   -42,   148,   221,   161,   198,    40,    53,-32768,
--32768,   -37,-32768,-32768,   163,-32768,-32768,-32768,   164,-32768,
--32768,   264,   748,   261,   261,   155,-32768,-32768,   160,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   162,-32768,-32768,    64,-32768,   524,-32768,   246,    21,   212,
-   169,    21,   155,   208,   171,-32768,    21,   210,     2,    17,
--32768,   383,   674,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   247,   172,    81,   175,-32768,   173,   133,
-   140,   185,-32768,   178,    35,-32768,-32768,   182,-32768,-32768,
--32768,   206,   281,   261,   193,   206,   301,-32768,   202,     2,
--32768,-32768,   261,   181,    66,-32768,-32768,   191,   674,-32768,
-   155,    71,   186,   674,-32768,    89,   674,-32768,-32768,-32768,
-    90,-32768,-32768,   189,    91,-32768,-32768,-32768,-32768,   192,
-   309,   194,-32768,   196,-32768,-32768,   309,-32768,-32768,   309,
--32768,   309,   155,   187,   205,    78,   200,-32768,-32768,   297,
--32768,   225,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   202,-32768,   250,-32768,    21,-32768,-32768,   201,-32768,
--32768,-32768,-32768,-32768,-32768,    56,   250,-32768,   383,    25,
--32768,-32768,   209,   140,   185,-32768,   215,-32768,   211,-32768,
-     6,   101,-32768,-32768,   219,   281,-32768,-32768,-32768,-32768,
--32768,-32768,   223,   224,-32768,-32768,   109,-32768,   -37,   309,
--32768,-32768,   261,   203,-32768,-32768,   200,-32768,   297,-32768,
--32768,-32768,    25,    24,-32768,   203,   261,-32768,   126,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,     9,-32768,-32768,
--32768,-32768,   324,   326,-32768
-};
-
-static const short yypgoto[] = {-32768,
--32768,   327,   204,-32768,-32768,   318,-32768,-32768,   308,-32768,
--32768,   282,-32768,-32768,   268,-32768,   226,-32768,-32768,   235,
--32768,   279,-32768,-32768,-32768,   195,-32768,    33,  -129,-32768,
-    51,-32768,   123,-32768,-32768,-32768,-32768,   -17,    59,  -156,
--32768,  -185,   -52,-32768,   130,  -173,  -109,-32768,-32768,-32768,
-  -209,    30,   -50,   -43,-32768,    46,-32768,  -137,-32768,-32768,
--32768,-32768,   180,  -159,  -246,-32768,    94,    88,    97,-32768,
--32768,  -206,-32768,-32768,    10,-32768,-32768,-32768,-32768,-32768,
--32768,    26,    27,  -141,-32768,-32768,-32768,-32768,-32768,    65,
-  -118,-32768,   134,     1,-32768,    -7,-32768
-};
-
-
-#define	YYLAST		837
-
-
-static const short yytable[] = {    15,
-     5,   188,   230,     5,   189,    15,   257,   170,    97,    97,
-    98,    98,   367,    10,   311,   161,   109,    99,    99,   229,
-   288,   157,   158,   243,    10,   165,   166,    62,    10,    68,
-    10,    11,    10,    75,   227,    61,   259,    67,   361,    10,
-   181,    74,     1,     2,   122,    62,    10,   248,    63,     1,
-     2,    99,   242,    61,    10,    11,     7,   246,   302,  -242,
-   107,   304,    75,    10,   165,   166,   183,   114,   228,   320,
-    74,   253,   162,   163,   164,    10,   165,   166,     1,     2,
-    60,   299,   298,   197,   328,    10,   165,   166,   292,   110,
-   362,     1,     2,   355,   363,   123,    68,   333,    60,   131,
-    75,   152,   122,    16,    67,   153,   151,   128,    74,    99,
-   132,   371,   161,   317,   150,   343,   249,   181,   172,   250,
-   234,   198,   108,   257,   336,    12,   171,   240,    10,   367,
-   181,     1,     2,   274,    19,   200,   201,    64,   157,   158,
-    27,   182,    28,   183,   105,   275,   195,   196,    10,    17,
-    29,     1,     2,   123,   187,   249,   183,   103,   104,    30,
-   197,   203,    10,   165,   166,    69,   225,    31,   295,   167,
-   226,   238,   296,   300,   238,   329,   287,   296,    32,   238,
-    34,    78,   254,    99,   258,   370,    35,   253,   334,    79,
-    80,   303,   305,   308,   370,   296,   306,   309,   198,   199,
-    81,   354,    82,   346,    83,    76,   262,   347,   102,    20,
-   117,   352,   200,   201,    84,   353,   281,    85,   157,   158,
-   114,    86,    79,    80,    87,   293,   265,   266,   115,    21,
-   116,    22,   202,   118,    88,   268,   269,   119,   203,    89,
-    23,    90,   124,    91,   125,   126,   130,   204,   156,  -243,
-   154,   155,    92,    93,   205,   178,   206,    10,   165,   166,
-     1,     2,   179,   180,   190,   192,   193,    94,    10,   222,
-   233,   224,   241,   244,   183,   247,   260,   263,   261,   264,
-    95,   273,   271,   277,   279,   282,   172,   290,   238,   294,
-   301,   110,   307,   310,   171,   313,   312,   318,   254,   172,
-   324,   258,   339,   319,   325,   331,   197,   171,    10,   165,
-   166,   321,   357,   345,   197,   340,    10,   165,   166,   341,
-   348,   342,    81,   374,    82,   375,    83,   350,   351,     6,
-    18,   173,    33,   129,    77,   345,    84,   106,   127,    85,
-   101,   335,   327,    86,   198,   339,    87,   194,   285,   366,
-   372,   278,   198,   199,   330,   349,    88,   315,   200,   201,
-   314,    89,   360,    90,   245,    91,   200,   201,   316,   356,
-   332,   297,   358,     0,    92,    93,     0,     0,     0,     0,
-     0,     0,     0,     0,   203,     0,   202,     0,     0,    94,
-    10,     0,   203,   133,   134,     0,     0,     0,     0,     0,
-   135,   204,   286,     0,    81,    36,    82,     0,    83,   136,
-   206,     0,     0,     0,     0,     0,     0,     0,    84,     0,
-     0,    85,     0,     0,     0,    86,     0,     0,    87,    38,
-    39,    40,     0,     0,     0,     0,     0,   137,    88,    42,
-     0,     0,     0,    89,    43,    90,    44,    91,     0,    10,
-     0,     0,     1,     2,    45,     0,    92,    93,   138,   139,
-     0,     0,     0,    46,    36,    47,     0,     0,     0,     0,
-    48,    94,    49,    50,    51,     0,     0,     0,     0,     0,
-     0,     0,    37,     0,     0,     0,     0,     0,    38,    39,
-    40,     0,     0,     0,    41,     0,     0,     0,    42,     0,
-     0,     0,     0,    43,     0,    44,     0,     0,     0,     0,
-     0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
-     0,     0,    46,     0,    47,     0,     0,     0,     0,    48,
-     0,    49,    50,    51,   133,   134,   157,   158,     0,     0,
-     0,   135,     0,     0,     0,    81,    36,    82,     0,    83,
-   136,     0,     0,     0,     0,     0,   227,     0,     0,    84,
-     0,     0,    85,     0,     0,     0,    86,     0,     0,    87,
-    38,    39,    40,     0,     0,     0,     0,     0,   137,    88,
-    42,     0,     0,     0,    89,    43,    90,    44,    91,     0,
-   228,     0,     0,     0,     0,    45,     0,    92,    93,   138,
-   139,     0,     0,     0,    46,     0,    47,     0,     0,   133,
-   134,    48,    94,    49,    50,    51,   135,     0,     0,     0,
-    81,    36,    82,     0,    83,   136,     0,     0,     0,     0,
-     0,     0,     0,     0,    84,     0,     0,    85,     0,     0,
-     0,    86,     0,     0,    87,    38,    39,    40,     0,     0,
-     0,     0,     0,   137,    88,    42,     0,     0,     0,    89,
-    43,    90,    44,    91,     0,     0,     0,     0,     0,     0,
-    45,     0,    92,    93,   138,   139,     0,     0,     0,    46,
-     0,    47,     0,   140,   133,   134,    48,    94,    49,    50,
-    51,   135,     0,     0,     0,    81,    36,    82,     0,    83,
-   136,     0,     0,     0,     0,     0,     0,     0,     0,    84,
-     0,     0,    85,     0,     0,     0,    86,     0,     0,    87,
-    38,    39,    40,     0,     0,     0,     0,     0,   137,    88,
-    42,     0,     0,     0,    89,    43,    90,    44,    91,     0,
-     0,     0,    79,    80,     0,    45,     0,    92,    93,   138,
-   139,     0,     0,    81,    46,    82,    47,    83,     1,     2,
-     0,    48,    94,    49,    50,    51,     0,    84,     0,    81,
-    85,    82,     0,    83,    86,     0,     0,    87,     0,     0,
-     0,     0,     0,    84,     0,     0,    85,    88,     0,     0,
-    86,     0,    89,    87,    90,     0,    91,     0,     0,     0,
-     0,     0,     0,    88,     0,    92,    93,     0,    89,     0,
-    90,     0,    91,     0,     0,     0,     0,     0,     0,     0,
-    94,    92,    93,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    94
-};
-
-static const short yycheck[] = {     7,
-     0,   139,   176,     3,   142,    13,   192,   126,    61,    62,
-    61,    62,     4,     8,   261,   125,    28,    61,    62,   176,
-   227,    13,    14,   183,     8,     9,    10,    35,     8,    37,
-     8,     9,     8,    41,    33,    35,   193,    37,    15,     8,
-    78,    41,    11,    12,    95,    53,     8,   189,    17,    11,
-    12,    95,   182,    53,     8,     9,   102,   187,   244,   102,
-    45,   247,    70,     8,     9,    10,   104,   110,    67,   276,
-    70,   190,     5,     6,     7,     8,     9,    10,    11,    12,
-    35,   241,   239,     6,   294,     8,     9,    10,   230,   101,
-    67,    11,    12,   340,    71,    95,   104,   307,    53,    40,
-   108,   103,   153,    34,   104,   107,   114,   107,   108,   153,
-    51,   103,   222,   273,   114,   110,   100,    78,   126,   103,
-   100,    44,   107,   309,   100,   103,   126,   180,     8,     4,
-    78,    11,    12,    99,   104,    58,    59,   106,    13,    14,
-     9,   102,    82,   104,   106,   111,   154,   155,     8,   103,
-    82,    11,    12,   153,   102,   100,   104,   106,   107,    52,
-     6,    84,     8,     9,    10,    45,   103,    82,   103,   102,
-   107,   179,   107,   103,   182,   294,   227,   107,     3,   187,
-   105,     3,   190,   227,   192,   359,    21,   306,   307,    11,
-    12,   103,   103,   103,   368,   107,   107,   107,    44,    45,
-    22,   339,    24,   103,    26,    38,   206,   107,   106,    20,
-    69,   103,    58,    59,    36,   107,   224,    39,    13,    14,
-   110,    43,    11,    12,    46,   233,    94,    95,    79,    40,
-    79,    42,    78,    50,    56,    96,    97,    79,    84,    61,
-    51,    63,     3,    65,   110,     3,   102,    93,   102,   102,
-   108,   108,    74,    75,   100,    35,   102,     8,     9,    10,
-    11,    12,   102,    66,   102,   102,     3,    89,     8,   110,
-    25,   110,   104,    66,   104,    66,    30,   103,   107,   107,
-   102,   104,    98,   102,     4,    93,   294,    86,   296,   109,
-   105,   101,   104,   102,   294,   100,   103,   111,   306,   307,
-     4,   309,   310,    99,    80,   105,     6,   307,     8,     9,
-    10,   112,   110,   321,     6,   107,     8,     9,    10,   105,
-   102,   111,    22,     0,    24,     0,    26,   105,   105,     3,
-    13,   128,    25,   108,    53,   343,    36,    70,   104,    39,
-    62,   309,   292,    43,    44,   353,    46,   153,   226,   357,
-   368,   222,    44,    45,   296,   326,    56,   270,    58,    59,
-   267,    61,   353,    63,   185,    65,    58,    59,   272,   343,
-   306,   238,   347,    -1,    74,    75,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    84,    -1,    78,    -1,    -1,    89,
-     8,    -1,    84,    11,    12,    -1,    -1,    -1,    -1,    -1,
-    18,    93,   102,    -1,    22,    23,    24,    -1,    26,    27,
-   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
-    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,    47,
-    48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,    57,
-    -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,     8,
-    -1,    -1,    11,    12,    72,    -1,    74,    75,    76,    77,
-    -1,    -1,    -1,    81,    23,    83,    -1,    -1,    -1,    -1,
-    88,    89,    90,    91,    92,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    48,
-    49,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,
-    -1,    -1,    -1,    62,    -1,    64,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    81,    -1,    83,    -1,    -1,    -1,    -1,    88,
-    -1,    90,    91,    92,    11,    12,    13,    14,    -1,    -1,
-    -1,    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
-    27,    -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,    36,
-    -1,    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,
-    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,
-    57,    -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,
-    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
-    77,    -1,    -1,    -1,    81,    -1,    83,    -1,    -1,    11,
-    12,    88,    89,    90,    91,    92,    18,    -1,    -1,    -1,
-    22,    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,
-    -1,    43,    -1,    -1,    46,    47,    48,    49,    -1,    -1,
-    -1,    -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,
-    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-    72,    -1,    74,    75,    76,    77,    -1,    -1,    -1,    81,
-    -1,    83,    -1,    85,    11,    12,    88,    89,    90,    91,
-    92,    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
-    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
-    -1,    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,
-    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,
-    57,    -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,
-    -1,    -1,    11,    12,    -1,    72,    -1,    74,    75,    76,
-    77,    -1,    -1,    22,    81,    24,    83,    26,    11,    12,
-    -1,    88,    89,    90,    91,    92,    -1,    36,    -1,    22,
-    39,    24,    -1,    26,    43,    -1,    -1,    46,    -1,    -1,
-    -1,    -1,    -1,    36,    -1,    -1,    39,    56,    -1,    -1,
-    43,    -1,    61,    46,    63,    -1,    65,    -1,    -1,    -1,
-    -1,    -1,    -1,    56,    -1,    74,    75,    -1,    61,    -1,
-    63,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    89,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    89
-};
-/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/share/bison.simple"
-/* This file comes from bison-1.28.  */
-
-/* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
-#include <alloca.h>
-#else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-	 instead, just don't use alloca.  */
-#include <malloc.h>
-#endif
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
- #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-		 and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
-#endif /* __hpux */
-#endif
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
 #else
-#define YYSTACK_ALLOC malloc
+   typedef short yysigned_char;
 #endif
 
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  7
+#define YYLAST   775
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  113
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  99
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  248
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  375
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   354
+
+#define YYTRANSLATE(X) \
+  ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned 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,   109,     2,     2,     2,     2,     2,     2,
+     104,   105,     2,     2,   107,     2,   110,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   108,   106,
+     111,     2,     2,     2,   112,     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,    96,     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,   102,    94,   103,     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,     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,     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,     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,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    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,    95,
+      97,    98,    99,   100,   101
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned short yyprhs[] =
+{
+       0,     0,     3,     5,     7,    10,    19,    20,    22,    26,
+      29,    31,    34,    36,    41,    43,    44,    46,    48,    51,
+      54,    57,    60,    63,    64,    66,    68,    71,    73,    75,
+      77,    79,    81,    83,    87,    90,    92,    95,   100,   102,
+     106,   108,   110,   114,   118,   121,   123,   127,   129,   131,
+     138,   140,   142,   143,   145,   150,   155,   159,   166,   168,
+     172,   174,   178,   182,   184,   188,   190,   192,   194,   198,
+     204,   205,   207,   209,   213,   216,   220,   225,   226,   228,
+     229,   236,   238,   241,   243,   245,   248,   250,   254,   256,
+     260,   264,   266,   268,   270,   275,   277,   281,   283,   287,
+     291,   293,   297,   299,   303,   305,   307,   309,   311,   316,
+     317,   321,   323,   325,   327,   329,   331,   333,   337,   339,
+     342,   344,   346,   348,   350,   353,   356,   358,   360,   363,
+     366,   368,   370,   372,   374,   377,   379,   382,   384,   386,
+     388,   390,   392,   394,   396,   398,   400,   402,   404,   406,
+     408,   410,   415,   420,   425,   430,   435,   437,   442,   443,
+     445,   447,   449,   451,   453,   455,   460,   462,   465,   469,
+     471,   475,   481,   483,   487,   489,   491,   495,   497,   501,
+     503,   507,   509,   513,   518,   520,   522,   524,   527,   530,
+     534,   536,   538,   540,   542,   544,   546,   548,   550,   552,
+     558,   560,   564,   566,   570,   571,   573,   575,   577,   579,
+     581,   583,   587,   592,   594,   598,   601,   605,   607,   611,
+     612,   614,   616,   619,   621,   623,   624,   628,   631,   635,
+     637,   641,   643,   648,   653,   655,   657,   659,   661,   662,
+     664,   666,   669,   672,   674,   676,   678,   680,   682
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short yyrhs[] =
+{
+     114,     0,    -1,   115,    -1,   116,    -1,   115,   116,    -1,
+     208,   117,    34,   121,     3,    21,   124,    38,    -1,    -1,
+     118,    -1,   102,   119,   103,    -1,   102,   103,    -1,   120,
+      -1,   119,   120,    -1,   210,    -1,   210,   104,     9,   105,
+      -1,     9,    -1,    -1,   122,    -1,   123,    -1,   122,   123,
+      -1,    40,    82,    -1,    51,    82,    -1,    20,    82,    -1,
+      42,    52,    -1,    -1,   125,    -1,   126,    -1,   125,   126,
+      -1,   127,    -1,   132,    -1,   138,    -1,   162,    -1,   135,
+      -1,   170,    -1,    53,   128,   106,    -1,    53,    45,    -1,
+     129,    -1,   128,   129,    -1,   130,    45,   208,   117,    -1,
+     131,    -1,   130,   107,   131,    -1,   208,    -1,   210,    -1,
+      41,   133,   106,    -1,    41,    17,   106,    -1,    41,   106,
+      -1,   134,    -1,   133,   107,   134,    -1,   208,    -1,   210,
+      -1,   208,   136,     3,   102,   137,   103,    -1,   157,    -1,
+     167,    -1,    -1,   178,    -1,   208,     3,   206,    85,    -1,
+     208,     3,   206,   154,    -1,   208,     3,   144,    -1,   208,
+     102,   139,   103,     3,   154,    -1,   140,    -1,   139,   107,
+     140,    -1,   208,    -1,   208,   108,   210,    -1,   167,   108,
+     210,    -1,   142,    -1,   141,   107,   142,    -1,   156,    -1,
+     210,    -1,   153,    -1,   143,   107,   153,    -1,    28,   102,
+     146,   103,   148,    -1,    -1,    86,    -1,   147,    -1,   146,
+     107,   147,    -1,   160,   198,    -1,   160,   154,   145,    -1,
+     160,   160,   198,   145,    -1,    -1,   149,    -1,    -1,    93,
+      80,   102,   150,   151,   103,    -1,   152,    -1,   151,   152,
+      -1,     4,    -1,   160,    -1,   211,   154,    -1,   155,    -1,
+     156,   172,   198,    -1,   100,    -1,   100,   109,   165,    -1,
+     100,   109,   205,    -1,   169,    -1,   170,    -1,   171,    -1,
+     208,   102,   141,   103,    -1,   157,    -1,    55,    66,   157,
+      -1,    11,    -1,    11,   110,   208,    -1,    11,   110,   210,
+      -1,   209,    -1,   209,   110,   158,    -1,   159,    -1,   158,
+     110,   159,    -1,   161,    -1,   161,    -1,    13,    -1,    14,
+      -1,   210,   136,     3,   163,    -1,    -1,   102,   164,   166,
+      -1,     5,    -1,     7,    -1,     6,    -1,   205,    -1,   165,
+      -1,   210,    -1,   208,   110,   210,    -1,     4,    -1,   166,
+       4,    -1,    24,    -1,    61,    -1,    74,    -1,   168,    -1,
+      65,    79,    -1,    63,    50,    -1,    75,    -1,    43,    -1,
+      36,    69,    -1,    26,    79,    -1,    89,    -1,    46,    -1,
+      56,    -1,    39,    -1,    22,    79,    -1,   167,    -1,   168,
+     202,    -1,    23,    -1,    47,    -1,    48,    -1,    49,    -1,
+      57,    -1,    62,    -1,    72,    -1,    81,    -1,    83,    -1,
+      88,    -1,    90,    -1,    91,    -1,    92,    -1,    64,    -1,
+      27,   102,   143,   103,    -1,    76,   102,   143,   103,    -1,
+      77,   102,   143,   103,    -1,    76,   172,    66,   156,    -1,
+      77,   172,    66,   156,    -1,    18,    -1,    18,    35,    25,
+     210,    -1,    -1,   176,    -1,    94,    -1,    95,    -1,    96,
+      -1,    97,    -1,    98,    -1,    78,   104,   178,   105,    -1,
+     177,    -1,   176,   177,    -1,   104,   178,   105,    -1,   179,
+      -1,   179,   107,   100,    -1,   179,   107,   100,   107,   179,
+      -1,   100,    -1,   100,   107,   179,    -1,   180,    -1,   181,
+      -1,   180,   173,   181,    -1,   182,    -1,   181,   174,   182,
+      -1,   183,    -1,   182,   175,   183,    -1,   186,    -1,   186,
+     184,   186,    -1,   185,   104,   178,   105,    -1,   192,    -1,
+     187,    -1,    99,    -1,    99,   111,    -1,   111,    99,    -1,
+     111,    99,   111,    -1,    78,    -1,    45,    -1,   205,    -1,
+     210,    -1,     6,    -1,    59,    -1,    58,    -1,    44,    -1,
+      84,    -1,    93,    30,   102,   188,   103,    -1,   189,    -1,
+     188,   107,   189,    -1,   100,    -1,   210,   172,   190,    -1,
+      -1,   191,    -1,    71,    -1,    15,    -1,    67,    -1,   193,
+      -1,   194,    -1,   102,   208,   103,    -1,   193,   102,   195,
+     103,    -1,   196,    -1,   195,   107,   196,    -1,   112,   197,
+      -1,   112,   110,   197,    -1,   210,    -1,   197,   110,   210,
+      -1,    -1,   199,    -1,    67,    -1,    33,   200,    -1,   186,
+      -1,   167,    -1,    -1,   102,   201,   166,    -1,   102,   103,
+      -1,   102,   203,   103,    -1,   204,    -1,   203,   107,   204,
+      -1,   210,    -1,   210,   104,   205,   105,    -1,   210,   104,
+     165,   105,    -1,   205,    -1,   100,    -1,     9,    -1,    10,
+      -1,    -1,   207,    -1,   101,    -1,   101,    51,    -1,   101,
+      40,    -1,    11,    -1,    12,    -1,    12,    -1,     8,    -1,
+     210,    -1,   210,   207,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned short yyrline[] =
+{
+       0,   297,   297,   303,   309,   325,   350,   352,   355,   359,
+     364,   371,   379,   384,   388,   397,   399,   407,   411,   419,
+     423,   426,   429,   437,   439,   448,   452,   477,   481,   490,
+     497,   510,   521,   534,   541,   546,   552,   558,   567,   573,
+     579,   586,   594,   598,   601,   608,   614,   620,   627,   636,
+     646,   654,   662,   664,   676,   688,   695,   711,   721,   731,
+     741,   746,   753,   763,   769,   775,   779,   791,   797,   803,
+     813,   815,   818,   826,   832,   841,   846,   863,   865,   872,
+     870,   879,   884,   890,   894,   919,   926,   931,   939,   948,
+     957,   968,   972,   978,   986,  1010,  1017,  1031,  1040,  1050,
+    1060,  1068,  1089,  1098,  1107,  1108,  1110,  1117,  1129,  1140,
+    1139,  1146,  1150,  1154,  1158,  1161,  1166,  1178,  1194,  1205,
+    1219,  1221,  1222,  1223,  1224,  1225,  1226,  1227,  1228,  1229,
+    1230,  1231,  1237,  1239,  1240,  1243,  1250,  1262,  1264,  1268,
+    1272,  1273,  1274,  1275,  1276,  1280,  1281,  1282,  1283,  1287,
+    1288,  1291,  1298,  1304,  1310,  1318,  1326,  1332,  1348,  1350,
+    1353,  1353,  1354,  1354,  1355,  1357,  1370,  1373,  1378,  1384,
+    1388,  1395,  1403,  1408,  1417,  1419,  1421,  1426,  1428,  1434,
+    1436,  1441,  1448,  1455,  1463,  1466,  1471,  1473,  1474,  1475,
+    1478,  1482,  1487,  1491,  1502,  1506,  1511,  1516,  1521,  1528,
+    1534,  1538,  1543,  1549,  1561,  1563,  1566,  1570,  1573,  1578,
+    1582,  1590,  1605,  1611,  1618,  1631,  1643,  1658,  1662,  1679,
+    1681,  1684,  1688,  1694,  1697,  1699,  1699,  1719,  1724,  1729,
+    1735,  1741,  1749,  1757,  1765,  1772,  1782,  1787,  1817,  1819,
+    1822,  1827,  1831,  1837,  1842,  1848,  1855,  1862,  1867
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "TOK_PPEQ", "TOK_opaque", "TOK_bstring", 
+  "TOK_cstring", "TOK_hstring", "TOK_identifier", "TOK_number", 
+  "TOK_number_negative", "TOK_typereference", "TOK_objectclassreference", 
+  "TOK_typefieldreference", "TOK_valuefieldreference", "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", "TOK_ENCODED", 
+  "TOK_END", "TOK_ENUMERATED", "TOK_EXPLICIT", "TOK_EXPORTS", 
+  "TOK_EXTENSIBILITY", "TOK_EXTERNAL", "TOK_FALSE", "TOK_FROM", 
+  "TOK_GeneralizedTime", "TOK_GeneralString", "TOK_GraphicString", 
+  "TOK_IA5String", "TOK_IDENTIFIER", "TOK_IMPLICIT", "TOK_IMPLIED", 
+  "TOK_IMPORTS", "TOK_INCLUDES", "TOK_INSTANCE", "TOK_INTEGER", 
+  "TOK_ISO646String", "TOK_MAX", "TOK_MIN", "TOK_MINUS_INFINITY", 
+  "TOK_NULL", "TOK_NumericString", "TOK_OBJECT", "TOK_ObjectDescriptor", 
+  "TOK_OCTET", "TOK_OF", "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV", 
+  "TOK_PLUS_INFINITY", "TOK_PRESENT", "TOK_PrintableString", 
+  "TOK_PRIVATE", "TOK_REAL", "TOK_RELATIVE_OID", "TOK_SEQUENCE", 
+  "TOK_SET", "TOK_SIZE", "TOK_STRING", "TOK_SYNTAX", "TOK_T61String", 
+  "TOK_TAGS", "TOK_TeletexString", "TOK_TRUE", "TOK_TYPE_IDENTIFIER", 
+  "TOK_UNIQUE", "TOK_UNIVERSAL", "TOK_UniversalString", "TOK_UTCTime", 
+  "TOK_UTF8String", "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH", 
+  "'|'", "TOK_UNION", "'^'", "TOK_INTERSECTION", "TOK_EXCEPT", 
+  "TOK_TwoDots", "TOK_ThreeDots", "TOK_tag", "'{'", "'}'", "'('", "')'", 
+  "';'", "','", "':'", "'!'", "'.'", "'<'", "'@'", "$accept", 
+  "ParsedGrammar", "ModuleList", "ModuleSpecification", 
+  "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody", 
+  "ObjectIdentifierElement", "optModuleSpecificationFlags", 
+  "ModuleSpecificationFlags", "ModuleSpecificationFlag", 
+  "optModuleSpecificationBody", "ModuleSpecificationBody", 
+  "ModuleSpecificationElement", "ImportsDefinition", "ImportsBundleSet", 
+  "ImportsBundle", "ImportsList", "ImportsElement", "ExportsDefinition", 
+  "ExportsBody", "ExportsElement", "ValueSetDefinition", "DefinedTypeRef", 
+  "optValueSetBody", "DataTypeReference", "ParameterArgumentList", 
+  "ParameterArgumentName", "ActualParameterList", "ActualParameter", 
+  "ConstructedDataTypeDefinition", "ClassDeclaration", "optUnique", 
+  "ClassFieldList", "ClassField", "optWithSyntax", "WithSyntax", "@1", 
+  "WithSyntaxFormat", "WithSyntaxFormatToken", "DataTypeMember", 
+  "ConstrainedTypeDeclaration", "ExtensionAndException", 
+  "TypeDeclaration", "ComplexTypeReference", 
+  "ComplexTypeReferenceAmpList", "ComplexTypeReferenceElement", 
+  "ClassFieldIdentifier", "ClassFieldName", "ValueDefinition", 
+  "InlineOrDefinedValue", "@2", "DefinedValue", "Opaque", "BasicTypeId", 
+  "BasicTypeId_UniverationCompatible", "BasicType", "BasicString", 
+  "ConstructedType", "optConstraints", "Union", "Intersection", "Except", 
+  "Constraints", "SingleConstraint", "ConstraintElementSet", 
+  "ConstraintElement", "ConstraintElementUnion", 
+  "ConstraintElementIntersection", "ConstraintElementException", 
+  "ConstraintSubtypeElement", "ConstraintRangeSpec", "ConstraintSpec", 
+  "ConstraintValue", "WithComponents", "WithComponentsList", 
+  "WithComponentsElement", "optPresenceConstraint", "PresenceConstraint", 
+  "TableConstraint", "SimpleTableConstraint", 
+  "ComponentRelationConstraint", "AtNotationList", "AtNotationElement", 
+  "ComponentIdList", "optMarker", "Marker", "DefaultValue", "@3", 
+  "UniverationDefinition", "UniverationList", "UniverationElement", 
+  "SignedNumber", "optTag", "Tag", "TypeRefName", "ObjectClassReference", 
+  "Identifier", "TaggedIdentifier", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   124,   349,    94,   350,   351,   352,
+     353,   354,   123,   125,    40,    41,    59,    44,    58,    33,
+      46,    60,    64
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,   113,   114,   115,   115,   116,   117,   117,   118,   118,
+     119,   119,   120,   120,   120,   121,   121,   122,   122,   123,
+     123,   123,   123,   124,   124,   125,   125,   126,   126,   126,
+     126,   126,   126,   127,   127,   128,   128,   129,   130,   130,
+     131,   131,   132,   132,   132,   133,   133,   134,   134,   135,
+     136,   136,   137,   137,   138,   138,   138,   138,   139,   139,
+     140,   140,   140,   141,   141,   142,   142,   143,   143,   144,
+     145,   145,   146,   146,   147,   147,   147,   148,   148,   150,
+     149,   151,   151,   152,   152,   153,   153,   154,   155,   155,
+     155,   156,   156,   156,   156,   156,   156,   157,   157,   157,
+     157,   157,   158,   158,   159,   160,   161,   161,   162,   164,
+     163,   163,   163,   163,   163,   163,   165,   165,   166,   166,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
+     167,   167,   168,   168,   168,   169,   169,   170,   170,   170,
+     170,   170,   170,   170,   170,   170,   170,   170,   170,   170,
+     170,   171,   171,   171,   171,   171,   171,   171,   172,   172,
+     173,   173,   174,   174,   175,   176,   176,   176,   177,   178,
+     178,   178,   178,   178,   179,   180,   180,   181,   181,   182,
+     182,   183,   183,   183,   183,   183,   184,   184,   184,   184,
+     185,   185,   186,   186,   186,   186,   186,   186,   186,   187,
+     188,   188,   189,   189,   190,   190,   191,   191,   191,   192,
+     192,   193,   194,   195,   195,   196,   196,   197,   197,   198,
+     198,   199,   199,   200,   200,   201,   200,   202,   202,   203,
+     203,   204,   204,   204,   204,   204,   205,   205,   206,   206,
+     207,   207,   207,   208,   208,   209,   210,   211,   211
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     1,     1,     2,     8,     0,     1,     3,     2,
+       1,     2,     1,     4,     1,     0,     1,     1,     2,     2,
+       2,     2,     2,     0,     1,     1,     2,     1,     1,     1,
+       1,     1,     1,     3,     2,     1,     2,     4,     1,     3,
+       1,     1,     3,     3,     2,     1,     3,     1,     1,     6,
+       1,     1,     0,     1,     4,     4,     3,     6,     1,     3,
+       1,     3,     3,     1,     3,     1,     1,     1,     3,     5,
+       0,     1,     1,     3,     2,     3,     4,     0,     1,     0,
+       6,     1,     2,     1,     1,     2,     1,     3,     1,     3,
+       3,     1,     1,     1,     4,     1,     3,     1,     3,     3,
+       1,     3,     1,     3,     1,     1,     1,     1,     4,     0,
+       3,     1,     1,     1,     1,     1,     1,     3,     1,     2,
+       1,     1,     1,     1,     2,     2,     1,     1,     2,     2,
+       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     4,     4,     4,     4,     4,     1,     4,     0,     1,
+       1,     1,     1,     1,     1,     4,     1,     2,     3,     1,
+       3,     5,     1,     3,     1,     1,     3,     1,     3,     1,
+       3,     1,     3,     4,     1,     1,     1,     2,     2,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
+       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
+       1,     3,     4,     1,     3,     2,     3,     1,     3,     0,
+       1,     1,     2,     1,     1,     0,     3,     2,     3,     1,
+       3,     1,     4,     4,     1,     1,     1,     1,     0,     1,
+       1,     2,     2,     1,     1,     1,     1,     1,     2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       0,   243,   244,     0,     2,     3,     6,     1,     4,     0,
+       0,     7,   246,    14,     9,     0,    10,    12,    15,     8,
+      11,     0,     0,     0,     0,     0,     0,    16,    17,     0,
+      21,    19,    22,    20,     0,    18,    13,    23,   137,     0,
+     138,   139,   140,     0,   141,   142,   150,   143,   144,   145,
+     146,   147,   148,   149,     0,    24,    25,    27,    28,    31,
+      29,    30,    32,     0,     0,     0,    44,     0,    45,    47,
+      48,    34,     0,    35,     0,    38,    40,    41,     5,    26,
+     238,    97,   245,     0,   120,     0,     0,   133,   127,   131,
+     132,   121,     0,     0,   122,   126,   130,     0,     0,    50,
+      51,   123,   100,     0,    43,    42,     0,    33,    36,     0,
+       0,     0,   240,    56,     0,   239,     0,   134,   129,   128,
+     125,   124,     0,    58,     0,    60,     0,     0,     0,    46,
+       6,    39,     0,   242,   241,    97,   245,   156,     0,     0,
+     158,   158,    54,    55,   158,    95,   135,   123,    91,    92,
+      93,     0,    98,    99,     0,     0,     0,     0,    52,   106,
+     107,   101,   102,   104,   111,   113,   112,   236,   237,   109,
+     108,   115,   114,     0,   116,    37,     0,    72,   219,   105,
+       0,     0,     0,     0,     0,     0,     0,   159,   166,     0,
+       0,   219,     0,   136,     0,     0,    59,    62,    61,   194,
+     197,   191,   196,   195,   190,   198,     0,   172,     0,     0,
+      53,   169,   174,   175,   177,   179,     0,   181,   185,   184,
+     209,   210,   192,   193,     0,     0,     0,    77,     0,     0,
+     221,    70,   219,    74,   220,     0,    88,     0,    67,    86,
+     247,     0,    96,     0,     0,     0,     0,   167,     0,     0,
+      87,   235,   227,     0,   229,   234,   231,     0,    63,    65,
+      66,    57,     0,     0,     0,    49,     0,   160,   161,     0,
+     162,   163,     0,   164,     0,     0,   186,     0,     0,     0,
+     103,   118,   110,   117,     0,    69,    78,    73,   225,   224,
+     223,   222,    71,    75,    70,   157,     0,   151,     0,   248,
+      85,     0,   152,   168,   154,   153,   155,   228,     0,     0,
+      94,     0,     0,   173,   211,   170,   176,   178,   180,     0,
+     187,   188,   182,     0,     0,   213,   119,     0,     0,    76,
+      89,    90,    68,   165,   230,     0,     0,    64,   202,     0,
+     200,   158,     0,   183,   189,     0,   215,   217,   212,     0,
+      79,   226,   233,   232,   199,     0,   204,   171,   216,     0,
+     214,     0,   201,   207,   208,   206,   203,   205,   218,    83,
+       0,    81,    84,    80,    82
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short yydefgoto[] =
+{
+      -1,     3,     4,     5,    10,    11,    15,    16,    26,    27,
+      28,    54,    55,    56,    57,    72,    73,    74,    75,    58,
+      67,    68,    59,    98,   209,    60,   122,   123,   257,   258,
+     237,   113,   293,   176,   177,   285,   286,   361,   370,   371,
+     238,   143,   239,   144,   145,   161,   162,   178,   179,    61,
+     170,   225,   171,   282,   146,   147,   148,   149,   150,   186,
+     269,   272,   274,   187,   188,   210,   211,   212,   213,   214,
+     215,   278,   216,   217,   218,   339,   340,   366,   367,   219,
+     220,   221,   324,   325,   346,   233,   234,   291,   328,   193,
+     253,   254,   222,   114,   115,   151,   102,   223,   241
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -206
+static const short yypact[] =
+{
+     227,  -206,  -206,    27,   227,  -206,   -38,  -206,  -206,    13,
+      52,  -206,  -206,  -206,  -206,    47,  -206,   -12,    42,  -206,
+    -206,   106,    51,    76,   111,    83,   146,    42,  -206,    63,
+    -206,  -206,  -206,  -206,   152,  -206,  -206,   380,  -206,    12,
+    -206,  -206,  -206,    91,  -206,  -206,  -206,  -206,  -206,  -206,
+    -206,  -206,  -206,  -206,   160,   380,  -206,  -206,  -206,  -206,
+    -206,  -206,  -206,   131,   670,   107,  -206,   147,  -206,  -206,
+    -206,  -206,    24,  -206,   -19,  -206,  -206,  -206,  -206,  -206,
+      -3,   114,  -206,   150,  -206,   155,   174,  -206,  -206,  -206,
+    -206,  -206,   201,   184,  -206,  -206,  -206,   686,   258,  -206,
+    -206,  -206,   156,   265,  -206,  -206,   191,  -206,  -206,   227,
+     191,   168,   101,  -206,   537,  -206,   191,  -206,  -206,  -206,
+    -206,  -206,    75,  -206,   164,   166,   183,   242,    33,  -206,
+     -38,  -206,   242,  -206,  -206,    44,   186,   249,   189,   220,
+      -8,    36,  -206,  -206,   -13,  -206,  -206,   190,  -206,  -206,
+    -206,   192,  -206,  -206,   290,   686,   293,   293,   238,  -206,
+    -206,   188,  -206,  -206,  -206,  -206,  -206,  -206,  -206,  -206,
+    -206,  -206,  -206,   194,  -206,  -206,    90,  -206,   462,  -206,
+     280,    23,   246,   202,    23,   238,   243,   208,  -206,    23,
+     244,    20,    59,  -206,   321,   612,  -206,  -206,  -206,  -206,
+    -206,  -206,  -206,  -206,  -206,  -206,   283,   210,   227,   212,
+    -206,   211,   165,   182,   221,  -206,   217,   -40,  -206,  -206,
+     222,  -206,  -206,  -206,   242,   319,   293,   234,   242,   206,
+    -206,   248,    20,  -206,  -206,   293,   219,    97,  -206,  -206,
+     229,   612,  -206,   238,   115,   230,   612,  -206,   118,   612,
+    -206,  -206,  -206,   120,  -206,  -206,   233,   128,  -206,  -206,
+    -206,  -206,   239,    67,   250,  -206,   252,  -206,  -206,    67,
+    -206,  -206,    67,  -206,    67,   238,   231,   255,   267,   237,
+    -206,  -206,   351,  -206,   276,  -206,  -206,  -206,  -206,  -206,
+    -206,  -206,  -206,  -206,   248,  -206,   199,  -206,    23,  -206,
+    -206,   253,  -206,  -206,  -206,  -206,  -206,  -206,    71,   199,
+    -206,   321,    29,  -206,  -206,   254,   182,   221,  -206,   257,
+    -206,   260,  -206,    -6,   133,  -206,  -206,   261,   319,  -206,
+    -206,  -206,  -206,  -206,  -206,   268,   269,  -206,  -206,   134,
+    -206,   -13,    67,  -206,  -206,   293,   256,  -206,  -206,   237,
+    -206,   351,  -206,  -206,  -206,    29,    18,  -206,   256,   293,
+    -206,   177,  -206,  -206,  -206,  -206,  -206,  -206,  -206,  -206,
+       3,  -206,  -206,  -206,  -206
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const short yypgoto[] =
+{
+    -206,  -206,  -206,   355,   235,  -206,  -206,   357,  -206,  -206,
+     348,  -206,  -206,   324,  -206,  -206,   308,  -206,   271,  -206,
+    -206,   281,  -206,   325,  -206,  -206,  -206,   245,  -206,    79,
+     -28,  -206,   100,  -206,   171,  -206,  -206,  -206,  -206,    31,
+     108,  -117,  -206,  -189,   -54,  -206,   181,  -175,  -115,  -206,
+    -206,  -206,  -165,    80,   -50,   -45,  -206,    58,  -206,  -140,
+    -206,  -206,  -206,  -206,   228,  -111,  -205,  -206,   138,   142,
+     143,  -206,  -206,  -178,  -206,  -206,    61,  -206,  -206,  -206,
+    -206,  -206,  -206,    69,    74,  -142,  -206,  -206,  -206,  -206,
+    -206,   112,  -120,  -206,   185,    11,  -206,    -9,  -206
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, parse error.  */
+#define YYTABLE_NINF -245
+static const short yytable[] =
+{
+      17,   190,    12,   232,   191,   259,    17,   369,   172,    99,
+      99,     6,   163,   100,   100,     6,   159,   160,   101,   101,
+      12,    12,    13,     1,     2,   111,   109,     7,    64,    65,
+      70,    12,    12,   363,    77,     1,     2,    12,   164,   165,
+     166,    12,   167,   168,     1,     2,    64,   124,    63,   250,
+      69,   290,   101,   229,    76,    12,    13,   304,   313,   276,
+     306,   231,    22,    77,     9,   183,    63,    12,   167,   168,
+     183,   277,   255,   199,   245,    12,   167,   168,   261,    12,
+     167,   168,    23,    76,    24,   364,    18,   230,   110,   365,
+     294,   185,    21,    25,   184,    62,   185,    70,   112,    12,
+     322,    77,     1,     2,   345,   124,   373,   153,   125,   163,
+     101,   200,   201,    62,   183,    29,    14,    69,    66,   174,
+     130,    76,   259,   236,   300,   202,   203,   152,   242,   338,
+     107,   330,   301,    30,    80,   169,    71,   357,   189,   173,
+     185,   133,    81,    82,   335,   204,  -243,   197,   198,    34,
+      19,   205,   134,    83,   116,    84,   244,    85,    31,   251,
+     206,   248,   252,    32,   319,    33,   125,    86,    36,   208,
+      87,   251,   240,    37,    88,   240,   331,    89,   154,   289,
+     240,   369,   155,   256,   101,   260,   372,    90,   255,   336,
+     159,   160,    91,   227,    92,   372,    93,   228,    78,    12,
+     297,   356,     1,     2,   298,    94,    95,    12,   167,   168,
+       1,     2,   199,   104,    12,   167,   168,   283,   302,   264,
+      96,   305,   298,   307,   116,   298,   295,   308,    83,   117,
+      84,   310,    85,    97,   118,   311,   348,   354,     1,     2,
+     349,   355,    86,   119,   199,    87,    12,   167,   168,    88,
+     200,   120,    89,   105,   106,   159,   160,    81,    82,   267,
+     268,   126,    90,   121,   202,   203,   127,    91,   128,    92,
+     132,    93,   156,   199,   157,    12,   167,   168,   270,   271,
+      94,    95,   200,   201,   180,   158,   182,   174,  -244,   240,
+     205,   181,   192,   195,   194,    96,   202,   203,   224,   256,
+     174,    12,   260,   341,   226,   235,   243,   173,   288,   246,
+     249,   200,   185,   262,   347,   265,   204,   263,   266,   273,
+     173,   275,   205,   281,   279,   202,   203,   284,   296,    12,
+     112,   206,   135,   136,   292,   303,   347,   309,   207,   137,
+     208,   312,   320,    83,    38,    84,   341,    85,   138,   323,
+     368,   205,   315,   314,   321,   326,   327,    86,   333,     8,
+      87,   342,   343,   350,    88,   175,   359,    89,    40,    41,
+      42,   344,    20,   352,   353,    35,   139,    90,    44,    79,
+     108,   131,    91,    45,    92,    46,    93,   129,    12,   103,
+     337,     1,     2,    47,   329,    94,    95,   140,   141,   287,
+     196,   374,    48,    38,    49,   280,   332,   316,   351,    50,
+      96,    51,    52,    53,   317,   247,   362,   318,   360,   358,
+     334,    39,     0,     0,     0,   299,     0,    40,    41,    42,
+       0,     0,     0,    43,     0,     0,     0,    44,     0,     0,
+       0,     0,    45,     0,    46,     0,     0,     0,     0,     0,
+       0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
+       0,    48,     0,    49,     0,     0,     0,     0,    50,     0,
+      51,    52,    53,   135,   136,   159,   160,     0,     0,     0,
+     137,     0,     0,     0,    83,    38,    84,     0,    85,   138,
+       0,     0,     0,     0,     0,   229,     0,     0,    86,     0,
+       0,    87,     0,     0,     0,    88,     0,     0,    89,    40,
+      41,    42,     0,     0,     0,     0,     0,   139,    90,    44,
+       0,     0,     0,    91,    45,    92,    46,    93,     0,   230,
+       0,     0,     0,     0,    47,     0,    94,    95,   140,   141,
+       0,     0,     0,    48,     0,    49,     0,     0,   135,   136,
+      50,    96,    51,    52,    53,   137,     0,     0,     0,    83,
+      38,    84,     0,    85,   138,     0,     0,     0,     0,     0,
+       0,     0,     0,    86,     0,     0,    87,     0,     0,     0,
+      88,     0,     0,    89,    40,    41,    42,     0,     0,     0,
+       0,     0,   139,    90,    44,     0,     0,     0,    91,    45,
+      92,    46,    93,     0,     0,     0,     0,     0,     0,    47,
+       0,    94,    95,   140,   141,     0,     0,     0,    48,     0,
+      49,     0,   142,   135,   136,    50,    96,    51,    52,    53,
+     137,     0,     0,     0,    83,    38,    84,     0,    85,   138,
+       0,     0,     0,     0,     0,     0,     0,     0,    86,     0,
+       0,    87,     0,     0,     0,    88,     0,     0,    89,    40,
+      41,    42,     0,     0,     0,     0,     0,   139,    90,    44,
+       0,     0,     0,    91,    45,    92,    46,    93,     0,     0,
+       0,    81,    82,     0,    47,     0,    94,    95,   140,   141,
+       0,     0,    83,    48,    84,    49,    85,     1,     2,     0,
+      50,    96,    51,    52,    53,     0,    86,     0,    83,    87,
+      84,     0,    85,    88,     0,     0,    89,     0,     0,     0,
+       0,     0,    86,     0,     0,    87,    90,     0,     0,    88,
+       0,    91,    89,    92,     0,    93,     0,     0,     0,     0,
+       0,     0,    90,     0,    94,    95,     0,    91,     0,    92,
+       0,    93,     0,     0,     0,     0,     0,     0,     0,    96,
+      94,    95,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    96
+};
+
+static const short yycheck[] =
+{
+       9,   141,     8,   178,   144,   194,    15,     4,   128,    63,
+      64,     0,   127,    63,    64,     4,    13,    14,    63,    64,
+       8,     8,     9,    11,    12,    28,    45,     0,    37,    17,
+      39,     8,     8,    15,    43,    11,    12,     8,     5,     6,
+       7,     8,     9,    10,    11,    12,    55,    97,    37,   191,
+      39,   229,    97,    33,    43,     8,     9,   246,   263,    99,
+     249,   178,    20,    72,   102,    78,    55,     8,     9,    10,
+      78,   111,   192,     6,   185,     8,     9,    10,   195,     8,
+       9,    10,    40,    72,    42,    67,    34,    67,   107,    71,
+     232,   104,   104,    51,   102,    37,   104,   106,   101,     8,
+     278,   110,    11,    12,   110,   155,   103,   116,    97,   224,
+     155,    44,    45,    55,    78,     9,   103,   106,   106,   128,
+     109,   110,   311,   100,   241,    58,    59,   116,   182,   100,
+     106,   296,   243,    82,     3,   102,    45,   342,   102,   128,
+     104,    40,    11,    12,   309,    78,   102,   156,   157,     3,
+     103,    84,    51,    22,   110,    24,   184,    26,    82,   100,
+      93,   189,   103,    52,   275,    82,   155,    36,   105,   102,
+      39,   100,   181,    21,    43,   184,   296,    46,   103,   229,
+     189,     4,   107,   192,   229,   194,   361,    56,   308,   309,
+      13,    14,    61,   103,    63,   370,    65,   107,    38,     8,
+     103,   341,    11,    12,   107,    74,    75,     8,     9,    10,
+      11,    12,     6,   106,     8,     9,    10,   226,   103,   208,
+      89,   103,   107,   103,   110,   107,   235,   107,    22,    79,
+      24,   103,    26,   102,    79,   107,   103,   103,    11,    12,
+     107,   107,    36,    69,     6,    39,     8,     9,    10,    43,
+      44,    50,    46,   106,   107,    13,    14,    11,    12,    94,
+      95,     3,    56,    79,    58,    59,   110,    61,     3,    63,
+     102,    65,   108,     6,   108,     8,     9,    10,    96,    97,
+      74,    75,    44,    45,    35,   102,    66,   296,   102,   298,
+      84,   102,   102,     3,   102,    89,    58,    59,   110,   308,
+     309,     8,   311,   312,   110,    25,   104,   296,   102,    66,
+      66,    44,   104,    30,   323,   103,    78,   107,   107,    98,
+     309,   104,    84,     4,   102,    58,    59,    93,   109,     8,
+     101,    93,    11,    12,    86,   105,   345,   104,   100,    18,
+     102,   102,   111,    22,    23,    24,   355,    26,    27,   112,
+     359,    84,   100,   103,    99,     4,    80,    36,   105,     4,
+      39,   107,   105,   102,    43,   130,   110,    46,    47,    48,
+      49,   111,    15,   105,   105,    27,    55,    56,    57,    55,
+      72,   110,    61,    62,    63,    64,    65,   106,     8,    64,
+     311,    11,    12,    72,   294,    74,    75,    76,    77,   228,
+     155,   370,    81,    23,    83,   224,   298,   269,   328,    88,
+      89,    90,    91,    92,   272,   187,   355,   274,   349,   345,
+     308,    41,    -1,    -1,    -1,   240,    -1,    47,    48,    49,
+      -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,    -1,
+      -1,    -1,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    81,    -1,    83,    -1,    -1,    -1,    -1,    88,    -1,
+      90,    91,    92,    11,    12,    13,    14,    -1,    -1,    -1,
+      18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,    27,
+      -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,    36,    -1,
+      -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,    47,
+      48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,    57,
+      -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,    67,
+      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    77,
+      -1,    -1,    -1,    81,    -1,    83,    -1,    -1,    11,    12,
+      88,    89,    90,    91,    92,    18,    -1,    -1,    -1,    22,
+      23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,
+      43,    -1,    -1,    46,    47,    48,    49,    -1,    -1,    -1,
+      -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,    62,
+      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    74,    75,    76,    77,    -1,    -1,    -1,    81,    -1,
+      83,    -1,    85,    11,    12,    88,    89,    90,    91,    92,
+      18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,    27,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
+      -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,    47,
+      48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,    57,
+      -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,    -1,
+      -1,    11,    12,    -1,    72,    -1,    74,    75,    76,    77,
+      -1,    -1,    22,    81,    24,    83,    26,    11,    12,    -1,
+      88,    89,    90,    91,    92,    -1,    36,    -1,    22,    39,
+      24,    -1,    26,    43,    -1,    -1,    46,    -1,    -1,    -1,
+      -1,    -1,    36,    -1,    -1,    39,    56,    -1,    -1,    43,
+      -1,    61,    46,    63,    -1,    65,    -1,    -1,    -1,    -1,
+      -1,    -1,    56,    -1,    74,    75,    -1,    61,    -1,    63,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    89
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,    11,    12,   114,   115,   116,   208,     0,   116,   102,
+     117,   118,     8,     9,   103,   119,   120,   210,    34,   103,
+     120,   104,    20,    40,    42,    51,   121,   122,   123,     9,
+      82,    82,    52,    82,     3,   123,   105,    21,    23,    41,
+      47,    48,    49,    53,    57,    62,    64,    72,    81,    83,
+      88,    90,    91,    92,   124,   125,   126,   127,   132,   135,
+     138,   162,   170,   208,   210,    17,   106,   133,   134,   208,
+     210,    45,   128,   129,   130,   131,   208,   210,    38,   126,
+       3,    11,    12,    22,    24,    26,    36,    39,    43,    46,
+      56,    61,    63,    65,    74,    75,    89,   102,   136,   157,
+     167,   168,   209,   136,   106,   106,   107,   106,   129,    45,
+     107,    28,   101,   144,   206,   207,   110,    79,    79,    69,
+      50,    79,   139,   140,   167,   208,     3,   110,     3,   134,
+     208,   131,   102,    40,    51,    11,    12,    18,    27,    55,
+      76,    77,    85,   154,   156,   157,   167,   168,   169,   170,
+     171,   208,   208,   210,   103,   107,   108,   108,   102,    13,
+      14,   158,   159,   161,     5,     6,     7,     9,    10,   102,
+     163,   165,   205,   208,   210,   117,   146,   147,   160,   161,
+      35,   102,    66,    78,   102,   104,   172,   176,   177,   102,
+     172,   172,   102,   202,   102,     3,   140,   210,   210,     6,
+      44,    45,    58,    59,    78,    84,    93,   100,   102,   137,
+     178,   179,   180,   181,   182,   183,   185,   186,   187,   192,
+     193,   194,   205,   210,   110,   164,   110,   103,   107,    33,
+      67,   154,   160,   198,   199,    25,   100,   143,   153,   155,
+     210,   211,   157,   104,   143,   178,    66,   177,   143,    66,
+     198,   100,   103,   203,   204,   205,   210,   141,   142,   156,
+     210,   154,    30,   107,   208,   103,   107,    94,    95,   173,
+      96,    97,   174,    98,   175,   104,    99,   111,   184,   102,
+     159,     4,   166,   210,    93,   148,   149,   147,   102,   167,
+     186,   200,    86,   145,   198,   210,   109,   103,   107,   207,
+     154,   178,   103,   105,   156,   103,   156,   103,   107,   104,
+     103,   107,   102,   179,   103,   100,   181,   182,   183,   178,
+     111,    99,   186,   112,   195,   196,     4,    80,   201,   145,
+     165,   205,   153,   105,   204,   165,   205,   142,   100,   188,
+     189,   210,   107,   105,   111,   110,   197,   210,   103,   107,
+     102,   166,   105,   105,   103,   107,   172,   179,   197,   110,
+     196,   150,   189,    15,    67,    71,   190,   191,   210,     4,
+     151,   152,   160,   103,   152
+};
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
 
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
 #define YYEMPTY		-2
 #define YYEOF		0
+
 #define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
+#define YYABORT		goto yyabortlab
 #define YYERROR		goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
+
 #define YYFAIL		goto yyerrlab
+
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+
+#define YYBACKUP(Token, Value)					\
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    { yychar = (token), yylval = (value);			\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
       yychar1 = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
+    { 								\
+      yyerror ("syntax error: cannot back up");			\
+      YYERROR;							\
+    }								\
 while (0)
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-#ifndef YYPURE
-#define YYLEX		yylex()
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).  */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)           \
+  Current.first_line   = Rhs[1].first_line;      \
+  Current.first_column = Rhs[1].first_column;    \
+  Current.last_line    = Rhs[N].last_line;       \
+  Current.last_column  = Rhs[N].last_column;
 #endif
 
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
+/* YYLEX -- calling `yylex' with the right arguments.  */
 
-/* If nonreentrant, generate the variables here */
+#define YYLEX	yylex ()
 
-#ifndef YYPURE
+/* Enable debugging if requested.  */
+#if YYDEBUG
 
-int	yychar;			/*  the lookahead symbol		*/
-YYSTYPE	yylval;			/*  the semantic value of the		*/
-				/*  lookahead symbol			*/
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
 
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;			/*  location data for the lookahead	*/
-				/*  symbol				*/
-#endif
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+# define YYDSYMPRINT(Args)			\
+do {						\
+  if (yydebug)					\
+    yysymprint Args;				\
+} while (0)
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YYDSYMPRINT(Args)
+#endif /* !YYDEBUG */
 
-int yynerrs;			/*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;			/*  nonzero means print parse trace	*/
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
-
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
 
 #if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
+# undef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# define YYMAXDEPTH 10000
 #endif
+
 
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
 
-#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
-#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
-#else				/* not GNU C or C++ */
-#ifndef __cplusplus
+#if YYERROR_VERBOSE
 
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
 {
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
+  register const char *yys = yystr;
 
-  while (i-- > 0)
-    *t++ = *f++;
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+#endif /* !YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*-----------------------------.
+| Print this symbol on YYOUT.  |
+`-----------------------------*/
+
+static void
+#if defined (__STDC__) || defined (__cplusplus)
+yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
+#else
+yysymprint (yyout, yytype, yyvalue)
+    FILE* yyout;
+    int yytype;
+    YYSTYPE yyvalue;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvalue;
+
+  if (yytype < YYNTOKENS)
+    {
+      YYFPRINTF (yyout, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+      YYPRINT (yyout, yytoknum[yytype], yyvalue);
+# endif
+    }
+  else
+    YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
+
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyout, ")");
+}
+#endif /* YYDEBUG. */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+static void
+#if defined (__STDC__) || defined (__cplusplus)
+yydestruct (int yytype, YYSTYPE yyvalue)
+#else
+yydestruct (yytype, yyvalue)
+    int yytype;
+    YYSTYPE yyvalue;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvalue;
+
+  switch (yytype)
+    {
+      default:
+        break;
+    }
 }
 
-#else /* __cplusplus */
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (char *to, char *from, unsigned int count)
-{
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#endif
-#endif
 
-#line 217 "/usr/share/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -994,76 +1394,85 @@
    to the proper pointer type.  */
 
 #ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
+# if defined (__STDC__) || defined (__cplusplus)
+#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL
+# else
+#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
 
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
-#ifdef YYPARSE_PARAM
+# ifdef YYPARSE_PARAM
 int yyparse (void *);
-#else
+# else
 int yyparse (void);
+# endif
 #endif
-#endif
+
+
+/* The lookahead symbol.  */
+int yychar;
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of parse errors so far.  */
+int yynerrs;
+
 
 int
-yyparse(YYPARSE_PARAM_ARG)
+yyparse (YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {
+  
   register int yystate;
   register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yychar1 = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short	yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
   register short *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
   register YYSTYPE *yyvsp;
-  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
 
-  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
-  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
 
-  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
 
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
-  YYLTYPE *yyls = yylsa;
-  YYLTYPE *yylsp;
-
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
-#else
 #define YYPOPSTACK   (yyvsp--, yyssp--)
-#endif
 
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
+  YYSIZE_T yystacksize = YYINITDEPTH;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
 
-  YYSTYPE yyval;		/*  the variable used to return		*/
-				/*  semantic values from the action	*/
-				/*  routines				*/
 
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
   int yylen;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
+  YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
@@ -1075,110 +1484,96 @@
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
-  yylsp = yyls;
-#endif
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+  goto yysetstate;
 
-  *++yyssp = yystate;
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
 
   if (yyssp >= yyss + yystacksize - 1)
     {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
       /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
+      YYSIZE_T yysize = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-	 the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-	 but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yyls1, size * sizeof (*yylsp),
-		 &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yystacksize);
-#endif
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short *yyss1 = yyss;
 
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow ("parser stack overflow",
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
 #else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
       /* Extend the stack our own way.  */
       if (yystacksize >= YYMAXDEPTH)
-	{
-	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
-	  return 2;
-	}
+	goto yyoverflowlab;
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
 	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
-#endif
+
+      {
+	short *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyoverflowlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
-#endif
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
 
       if (yyssp >= yyss + yystacksize - 1)
 	YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -1187,7 +1582,7 @@
   /* First try to decide what to do without reference to lookahead token.  */
 
   yyn = yypact[yystate];
-  if (yyn == YYFLAG)
+  if (yyn == YYPACT_NINF)
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
@@ -1197,146 +1592,141 @@
 
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with */
+  /* Convert token to internal form (in yychar1) for indexing tables with.  */
 
-  if (yychar <= 0)		/* This means end of input. */
+  if (yychar <= 0)		/* This means end of input.  */
     {
       yychar1 = 0;
-      yychar = YYEOF;		/* Don't call YYLEX any more */
+      yychar = YYEOF;		/* Don't call YYLEX any more.  */
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Now at end of input.\n");
-#endif
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
+      yychar1 = YYTRANSLATE (yychar);
 
-#if YYDEBUG != 0
-      if (yydebug)
-	{
-	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-	  /* Give the individual parser a way to print the precise meaning
-	     of a token, for further debugging info.  */
-#ifdef YYPRINT
-	  YYPRINT (stderr, yychar, yylval);
-#endif
-	  fprintf (stderr, ")\n");
-	}
-#endif
+      /* We have to keep this `#if YYDEBUG', since we use variables
+	 which are defined only if `YYDEBUG' is set.  */
+      YYDPRINTF ((stderr, "Next token is "));
+      YYDSYMPRINT ((stderr, yychar1, yylval));
+      YYDPRINTF ((stderr, "\n"));
     }
 
+  /* If the proper action on seeing token YYCHAR1 is to reduce or to
+     detect an error, take that action.  */
   yyn += yychar1;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
     goto yydefault;
-
   yyn = yytable[yyn];
-
-  /* yyn is what to do for this token type in this state.
-     Negative => reduce, -yyn is rule number.
-     Positive => shift, yyn is new state.
-       New state is final state => don't bother to shift,
-       just return success.
-     0, or most negative number => error.  */
-
-  if (yyn < 0)
+  if (yyn <= 0)
     {
-      if (yyn == YYFLAG)
+      if (yyn == 0 || yyn == YYTABLE_NINF)
 	goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
-  else if (yyn == 0)
-    goto yyerrlab;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+	      yychar, yytname[yychar1]));
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
 
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+
+#if YYDEBUG
+  /* We have to keep this `#if YYDEBUG', since we use variables which
+     are defined only if `YYDEBUG' is set.  */
   if (yydebug)
     {
-      int i;
+      int yyi;
 
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-	       yyn, yyrline[yyn]);
+      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+		 yyn - 1, yyrline[yyn]);
 
       /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+      for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
+	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
     }
 #endif
-
-
-  switch (yyn) {
-
-case 1:
+  switch (yyn)
+    {
+        case 2:
 #line 298 "asn1p_y.y"
-{
+    {
 		*(void **)param = yyvsp[0].a_grammar;
-	;
-    break;}
-case 2:
+	}
+    break;
+
+  case 3:
 #line 304 "asn1p_y.y"
-{
+    {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
-	;
-    break;}
-case 3:
+	}
+    break;
+
+  case 4:
 #line 309 "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:
+	}
+    break;
+
+  case 5:
 #line 330 "asn1p_y.y"
-{
+    {
 
 		if(yyvsp[-1].a_module) {
 			yyval.a_module = yyvsp[-1].a_module;
@@ -1349,133 +1739,154 @@
 		yyval.a_module->Identifier = yyvsp[-7].tv_str;
 		yyval.a_module->module_oid = yyvsp[-6].a_oid;
 		yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
-	;
-    break;}
-case 5:
+	}
+    break;
+
+  case 6:
 #line 351 "asn1p_y.y"
-{ yyval.a_oid = 0; ;
-    break;}
-case 6:
+    { yyval.a_oid = 0; }
+    break;
+
+  case 7:
 #line 352 "asn1p_y.y"
-{ yyval.a_oid = yyvsp[0].a_oid; ;
-    break;}
-case 7:
+    { yyval.a_oid = yyvsp[0].a_oid; }
+    break;
+
+  case 8:
 #line 356 "asn1p_y.y"
-{
+    {
 		yyval.a_oid = yyvsp[-1].a_oid;
-	;
-    break;}
-case 8:
+	}
+    break;
+
+  case 9:
 #line 359 "asn1p_y.y"
-{
+    {
 		yyval.a_oid = 0;
-	;
-    break;}
-case 9:
+	}
+    break;
+
+  case 10:
 #line 365 "asn1p_y.y"
-{
+    {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
 		if(yyvsp[0].a_oid_arc.name)
 			free(yyvsp[0].a_oid_arc.name);
-	;
-    break;}
-case 10:
+	}
+    break;
+
+  case 11:
 #line 371 "asn1p_y.y"
-{
+    {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
 		if(yyvsp[0].a_oid_arc.name)
 			free(yyvsp[0].a_oid_arc.name);
-	;
-    break;}
-case 11:
+	}
+    break;
+
+  case 12:
 #line 380 "asn1p_y.y"
-{					/* iso */
+    {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
-	;
-    break;}
-case 12:
+	}
+    break;
+
+  case 13:
 #line 384 "asn1p_y.y"
-{		/* iso(1) */
+    {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
-	;
-    break;}
-case 13:
+	}
+    break;
+
+  case 14:
 #line 388 "asn1p_y.y"
-{					/* 1 */
+    {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
-	;
-    break;}
-case 14:
+	}
+    break;
+
+  case 15:
 #line 398 "asn1p_y.y"
-{ yyval.a_module_flags = MSF_NOFLAGS; ;
-    break;}
-case 15:
+    { yyval.a_module_flags = MSF_NOFLAGS; }
+    break;
+
+  case 16:
 #line 399 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
-	;
-    break;}
-case 16:
+	}
+    break;
+
+  case 17:
 #line 408 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
-	;
-    break;}
-case 17:
+	}
+    break;
+
+  case 18:
 #line 411 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
-	;
-    break;}
-case 18:
+	}
+    break;
+
+  case 19:
 #line 420 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
-	;
-    break;}
-case 19:
+	}
+    break;
+
+  case 20:
 #line 423 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
-	;
-    break;}
-case 20:
+	}
+    break;
+
+  case 21:
 #line 426 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
-	;
-    break;}
-case 21:
+	}
+    break;
+
+  case 22:
 #line 429 "asn1p_y.y"
-{
+    {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
-	;
-    break;}
-case 22:
+	}
+    break;
+
+  case 23:
 #line 438 "asn1p_y.y"
-{ yyval.a_module = 0; ;
-    break;}
-case 23:
+    { yyval.a_module = 0; }
+    break;
+
+  case 24:
 #line 439 "asn1p_y.y"
-{
+    {
 		assert(yyvsp[0].a_module);
 		yyval.a_module = yyvsp[0].a_module;
-	;
-    break;}
-case 24:
+	}
+    break;
+
+  case 25:
 #line 449 "asn1p_y.y"
-{
+    {
 		yyval.a_module = yyvsp[0].a_module;
-	;
-    break;}
-case 25:
+	}
+    break;
+
+  case 26:
 #line 452 "asn1p_y.y"
-{
+    {
 		yyval.a_module = yyvsp[-1].a_module;
 
 #ifdef	MY_IMPORT
@@ -1494,17 +1905,19 @@
 		MY_IMPORT(members, next);
 #undef	MY_IMPORT
 
-	;
-    break;}
-case 26:
+	}
+    break;
+
+  case 27:
 #line 478 "asn1p_y.y"
-{
+    {
 		yyval.a_module = yyvsp[0].a_module;
-	;
-    break;}
-case 27:
+	}
+    break;
+
+  case 28:
 #line 481 "asn1p_y.y"
-{
+    {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
 		if(yyvsp[0].a_xports) {
@@ -1512,250 +1925,280 @@
 		} else {
 			/* "EXPORTS ALL;" ? */
 		}
-	;
-    break;}
-case 28:
+	}
+    break;
+
+  case 29:
 #line 490 "asn1p_y.y"
-{
+    {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
 		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
 		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
 		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 29:
+	}
+    break;
+
+  case 30:
 #line 497 "asn1p_y.y"
-{
+    {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
 		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
 		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
 		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 30:
+	}
+    break;
+
+  case 31:
 #line 510 "asn1p_y.y"
-{
+    {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
 		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
 		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
 		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 31:
+	}
+    break;
+
+  case 32:
 #line 521 "asn1p_y.y"
-{
+    {
 		return yyerror(
 			"Attempt to redefine a standard basic type, "
 			"use -ftypesXY to switch back "
 			"to older version of ASN.1 standard");
-	;
-    break;}
-case 32:
+	}
+    break;
+
+  case 33:
 #line 535 "asn1p_y.y"
-{
+    {
 		yyval.a_module = yyvsp[-1].a_module;
-	;
-    break;}
-case 33:
+	}
+    break;
+
+  case 34:
 #line 541 "asn1p_y.y"
-{
+    {
 		return yyerror("Empty IMPORTS list");
-	;
-    break;}
-case 34:
+	}
+    break;
+
+  case 35:
 #line 547 "asn1p_y.y"
-{
+    {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
-	;
-    break;}
-case 35:
+	}
+    break;
+
+  case 36:
 #line 552 "asn1p_y.y"
-{
+    {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
-	;
-    break;}
-case 36:
+	}
+    break;
+
+  case 37:
 #line 559 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->from = yyvsp[-1].tv_str;
 		yyval.a_xports->from_oid = yyvsp[0].a_oid;
 		checkmem(yyval.a_xports);
-	;
-    break;}
-case 37:
+	}
+    break;
+
+  case 38:
 #line 568 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 38:
+	}
+    break;
+
+  case 39:
 #line 573 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 39:
+	}
+    break;
+
+  case 40:
 #line 580 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 		yyval.a_expr->expr_type = A1TC_REFERENCE;
-	;
-    break;}
-case 40:
+	}
+    break;
+
+  case 41:
 #line 586 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 		yyval.a_expr->expr_type = A1TC_REFERENCE;
-	;
-    break;}
-case 41:
+	}
+    break;
+
+  case 42:
 #line 595 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = yyvsp[-1].a_xports;
-	;
-    break;}
-case 42:
+	}
+    break;
+
+  case 43:
 #line 598 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = 0;
-	;
-    break;}
-case 43:
+	}
+    break;
+
+  case 44:
 #line 601 "asn1p_y.y"
-{
+    {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
-	;
-    break;}
-case 44:
+	}
+    break;
+
+  case 45:
 #line 609 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 45:
+	}
+    break;
+
+  case 46:
 #line 614 "asn1p_y.y"
-{
+    {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 46:
+	}
+    break;
+
+  case 47:
 #line 621 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
-	;
-    break;}
-case 47:
+	}
+    break;
+
+  case 48:
 #line 627 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
-	;
-    break;}
-case 48:
+	}
+    break;
+
+  case 49:
 #line 637 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
 		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
 		yyval.a_expr->meta_type = AMT_VALUESET;
 		// take care of optValueSetBody 
-	;
-    break;}
-case 49:
+	}
+    break;
+
+  case 50:
 #line 647 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->reference = yyvsp[0].a_ref;
 		yyval.a_expr->expr_type = A1TC_REFERENCE;
 		yyval.a_expr->meta_type = AMT_TYPEREF;
-	;
-    break;}
-case 50:
+	}
+    break;
+
+  case 51:
 #line 654 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = yyvsp[0].a_type;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 51:
+	}
+    break;
+
+  case 52:
 #line 663 "asn1p_y.y"
-{ ;
-    break;}
-case 52:
+    { }
+    break;
+
+  case 53:
 #line 664 "asn1p_y.y"
-{
-	;
-    break;}
-case 53:
+    {
+	}
+    break;
+
+  case 54:
 #line 680 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->tag = yyvsp[-1].a_tag;
 		yyval.a_expr->expr_type = A1TC_TYPEID;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 54:
+	}
+    break;
+
+  case 55:
 #line 688 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->tag = yyvsp[-1].a_tag;
 		assert(yyval.a_expr->expr_type);
 		assert(yyval.a_expr->meta_type);
-	;
-    break;}
-case 55:
+	}
+    break;
+
+  case 56:
 #line 695 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
 		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
 		assert(yyval.a_expr->meta_type == AMT_OBJECT);
-	;
-    break;}
-case 56:
+	}
+    break;
+
+  case 57:
 #line 712 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
 		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
 		yyval.a_expr->params = yyvsp[-3].a_plist;
 		yyval.a_expr->meta_type = AMT_PARAMTYPE;
-	;
-    break;}
-case 57:
+	}
+    break;
+
+  case 58:
 #line 722 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
 		checkmem(yyval.a_plist);
@@ -1763,150 +2206,168 @@
 		checkmem(ret == 0);
 		if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
 		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
-	;
-    break;}
-case 58:
+	}
+    break;
+
+  case 59:
 #line 731 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
 		ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
 		checkmem(ret == 0);
 		if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
 		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
-	;
-    break;}
-case 59:
+	}
+    break;
+
+  case 60:
 #line 742 "asn1p_y.y"
-{
+    {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
-	;
-    break;}
-case 60:
+	}
+    break;
+
+  case 61:
 #line 746 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
 		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
 		checkmem(ret == 0);
 		yyval.a_parg.argument = yyvsp[0].tv_str;
-	;
-    break;}
-case 61:
+	}
+    break;
+
+  case 62:
 #line 753 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
 		ret = asn1p_ref_add_component(yyval.a_parg.governor,
 			ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
 		checkmem(ret == 0);
 		yyval.a_parg.argument = yyvsp[0].tv_str;
-	;
-    break;}
-case 62:
+	}
+    break;
+
+  case 63:
 #line 764 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 63:
+	}
+    break;
+
+  case 64:
 #line 769 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 64:
+	}
+    break;
+
+  case 65:
 #line 776 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
-	;
-    break;}
-case 65:
+	}
+    break;
+
+  case 66:
 #line 779 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 		yyval.a_expr->expr_type = A1TC_REFERENCE;
 		yyval.a_expr->meta_type = AMT_VALUE;
-	;
-    break;}
-case 66:
+	}
+    break;
+
+  case 67:
 #line 792 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 67:
+	}
+    break;
+
+  case 68:
 #line 797 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 68:
+	}
+    break;
+
+  case 69:
 #line 804 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
 		yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
 		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
 		assert(yyval.a_expr->meta_type == AMT_OBJECT);
-	;
-    break;}
-case 69:
+	}
+    break;
+
+  case 70:
 #line 814 "asn1p_y.y"
-{ yyval.a_int = 0; ;
-    break;}
-case 70:
+    { yyval.a_int = 0; }
+    break;
+
+  case 71:
 #line 815 "asn1p_y.y"
-{ yyval.a_int = 1; ;
-    break;}
-case 71:
+    { yyval.a_int = 1; }
+    break;
+
+  case 72:
 #line 819 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = A1TC_CLASSDEF;
 		yyval.a_expr->meta_type = AMT_OBJECT;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 72:
+	}
+    break;
+
+  case 73:
 #line 826 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 73:
+	}
+    break;
+
+  case 74:
 #line 833 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
 		yyval.a_expr->expr_type = A1TC_CLASSFIELD;
 		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
 		yyval.a_expr->marker = yyvsp[0].a_marker;
-	;
-    break;}
-case 74:
+	}
+    break;
+
+  case 75:
 #line 841 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].a_refcomp.name;
 		yyval.a_expr->unique = yyvsp[0].a_int;
-	;
-    break;}
-case 75:
+	}
+    break;
+
+  case 76:
 #line 846 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1920,51 +2381,59 @@
 		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
 		yyval.a_expr->marker = yyvsp[-1].a_marker;
 		yyval.a_expr->unique = yyvsp[0].a_int;
-	;
-    break;}
-case 76:
+	}
+    break;
+
+  case 77:
 #line 864 "asn1p_y.y"
-{ yyval.a_wsynt = 0; ;
-    break;}
-case 77:
+    { yyval.a_wsynt = 0; }
+    break;
+
+  case 78:
 #line 865 "asn1p_y.y"
-{
+    {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
-	;
-    break;}
-case 78:
+	}
+    break;
+
+  case 79:
 #line 872 "asn1p_y.y"
-{ asn1p_lexer_hack_enable_with_syntax(); ;
-    break;}
-case 79:
+    { asn1p_lexer_hack_enable_with_syntax(); }
+    break;
+
+  case 80:
 #line 874 "asn1p_y.y"
-{
+    {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
-	;
-    break;}
-case 80:
+	}
+    break;
+
+  case 81:
 #line 880 "asn1p_y.y"
-{
+    {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
-	;
-    break;}
-case 81:
+	}
+    break;
+
+  case 82:
 #line 884 "asn1p_y.y"
-{
+    {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
-	;
-    break;}
-case 82:
+	}
+    break;
+
+  case 83:
 #line 891 "asn1p_y.y"
-{
+    {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
-	;
-    break;}
-case 83:
+	}
+    break;
+
+  case 84:
 #line 894 "asn1p_y.y"
-{
+    {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
@@ -1972,45 +2441,50 @@
 		ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
 		checkmem(ret == 0);
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
-	;
-    break;}
-case 84:
+	}
+    break;
+
+  case 85:
 #line 920 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
 		yyval.a_expr->Identifier = yyvsp[-1].tv_nametag.name;
 		yyval.a_expr->tag = yyvsp[-1].tv_nametag.tag;
-	;
-    break;}
-case 85:
+	}
+    break;
+
+  case 86:
 #line 926 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
-	;
-    break;}
-case 86:
+	}
+    break;
+
+  case 87:
 #line 932 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->constraints = yyvsp[-1].a_constr;
 		yyval.a_expr->marker = yyvsp[0].a_marker;
-	;
-    break;}
-case 87:
+	}
+    break;
+
+  case 88:
 #line 940 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = strdup("...");
 		checkmem(yyval.a_expr->Identifier);
 		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 88:
+	}
+    break;
+
+  case 89:
 #line 948 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = strdup("...");
@@ -2018,11 +2492,12 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 89:
+	}
+    break;
+
+  case 90:
 #line 957 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = strdup("...");
@@ -2030,34 +2505,38 @@
 		checkmem(yyval.a_expr->Identifier);
 		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 90:
+	}
+    break;
+
+  case 91:
 #line 969 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
-	;
-    break;}
-case 91:
+	}
+    break;
+
+  case 92:
 #line 972 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = yyvsp[0].a_type;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 92:
+	}
+    break;
+
+  case 93:
 #line 978 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[0].a_expr;
 		checkmem(yyval.a_expr);
 		assert(yyval.a_expr->meta_type);
-	;
-    break;}
-case 93:
+	}
+    break;
+
+  case 94:
 #line 986 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == 0);
@@ -2070,42 +2549,46 @@
 		free(yyvsp[-3].tv_str);
 		yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 94:
+	}
+    break;
+
+  case 95:
 #line 1010 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->reference = yyvsp[0].a_ref;
 		yyval.a_expr->expr_type = A1TC_REFERENCE;
 		yyval.a_expr->meta_type = AMT_TYPEREF;
-	;
-    break;}
-case 95:
+	}
+    break;
+
+  case 96:
 #line 1017 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->reference = yyvsp[0].a_ref;
 		yyval.a_expr->expr_type = A1TC_INSTANCE;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 96:
+	}
+    break;
+
+  case 97:
 #line 1032 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
 		checkmem(ret == 0);
 		free(yyvsp[0].tv_str);
-	;
-    break;}
-case 97:
+	}
+    break;
+
+  case 98:
 #line 1040 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
@@ -2114,11 +2597,12 @@
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
 		checkmem(ret == 0);
 		free(yyvsp[-2].tv_str);
-	;
-    break;}
-case 98:
+	}
+    break;
+
+  case 99:
 #line 1050 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
@@ -2127,22 +2611,24 @@
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
 		checkmem(ret == 0);
 		free(yyvsp[-2].tv_str);
-	;
-    break;}
-case 99:
+	}
+    break;
+
+  case 100:
 #line 1060 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
 		free(yyvsp[0].tv_str);
 		checkmem(ret == 0);
-	;
-    break;}
-case 100:
+	}
+    break;
+
+  case 101:
 #line 1068 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
@@ -2160,101 +2646,114 @@
 				* (yyval.a_ref->comp_count - 1));
 			yyval.a_ref->components[0] = tmp_comp;
 		}
-	;
-    break;}
-case 101:
+	}
+    break;
+
+  case 102:
 #line 1090 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
 		free(yyvsp[0].a_refcomp.name);
 		checkmem(ret == 0);
-	;
-    break;}
-case 102:
+	}
+    break;
+
+  case 103:
 #line 1098 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
 		free(yyvsp[0].a_refcomp.name);
 		checkmem(ret == 0);
-	;
-    break;}
-case 105:
+	}
+    break;
+
+  case 106:
 #line 1112 "asn1p_y.y"
-{
+    {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
-	;
-    break;}
-case 106:
+	}
+    break;
+
+  case 107:
 #line 1117 "asn1p_y.y"
-{
+    {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
-	;
-    break;}
-case 107:
+	}
+    break;
+
+  case 108:
 #line 1130 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->meta_type = AMT_VALUE;
 		yyval.a_expr->value = yyvsp[0].a_value;
-	;
-    break;}
-case 108:
+	}
+    break;
+
+  case 109:
 #line 1140 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
-    break;}
-case 109:
+    { asn1p_lexer_hack_push_opaque_state(); }
+    break;
+
+  case 110:
 #line 1141 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_UNPARSED;
-	;
-    break;}
-case 110:
+	}
+    break;
+
+  case 111:
 #line 1146 "asn1p_y.y"
-{
+    {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
-	;
-    break;}
-case 111:
+	}
+    break;
+
+  case 112:
 #line 1150 "asn1p_y.y"
-{
+    {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
-	;
-    break;}
-case 112:
+	}
+    break;
+
+  case 113:
 #line 1154 "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 113:
+	}
+    break;
+
+  case 114:
 #line 1158 "asn1p_y.y"
-{
+    {
 		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
-case 114:
+	}
+    break;
+
+  case 115:
 #line 1161 "asn1p_y.y"
-{
+    {
 		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
-case 115:
+	}
+    break;
+
+  case 116:
 #line 1167 "asn1p_y.y"
-{
+    {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
@@ -2264,11 +2763,12 @@
 		yyval.a_value = asn1p_value_fromref(ref, 0);
 		checkmem(yyval.a_value);
 		free(yyvsp[0].tv_str);
-	;
-    break;}
-case 116:
+	}
+    break;
+
+  case 117:
 #line 1178 "asn1p_y.y"
-{
+    {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
@@ -2281,11 +2781,12 @@
 		checkmem(yyval.a_value);
 		free(yyvsp[-2].tv_str);
 		free(yyvsp[0].tv_str);
-	;
-    break;}
-case 117:
+	}
+    break;
+
+  case 118:
 #line 1195 "asn1p_y.y"
-{
+    {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
 		checkmem(yyval.tv_opaque.buf);
@@ -2294,11 +2795,12 @@
 		memcpy(yyval.tv_opaque.buf + 2, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
 		yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
 		free(yyvsp[0].tv_opaque.buf);
-	;
-    break;}
-case 118:
+	}
+    break;
+
+  case 119:
 #line 1205 "asn1p_y.y"
-{
+    {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
 		checkmem(p);
@@ -2309,80 +2811,97 @@
 		free(yyvsp[0].tv_opaque.buf);
 		yyval.tv_opaque.buf = p;
 		yyval.tv_opaque.len = newsize;
-	;
-    break;}
-case 119:
+	}
+    break;
+
+  case 120:
 #line 1220 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
-    break;}
-case 120:
+    { yyval.a_type = ASN_BASIC_BOOLEAN; }
+    break;
+
+  case 121:
 #line 1221 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_NULL; ;
-    break;}
-case 121:
+    { yyval.a_type = ASN_BASIC_NULL; }
+    break;
+
+  case 122:
 #line 1222 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_REAL; ;
-    break;}
-case 122:
+    { yyval.a_type = ASN_BASIC_REAL; }
+    break;
+
+  case 123:
 #line 1223 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
-    break;}
-case 123:
+    { yyval.a_type = yyvsp[0].a_type; }
+    break;
+
+  case 124:
 #line 1224 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
-    break;}
-case 124:
+    { yyval.a_type = ASN_BASIC_OCTET_STRING; }
+    break;
+
+  case 125:
 #line 1225 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
-    break;}
-case 125:
+    { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
+    break;
+
+  case 126:
 #line 1226 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
-    break;}
-case 126:
+    { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
+    break;
+
+  case 127:
 #line 1227 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
-    break;}
-case 127:
+    { yyval.a_type = ASN_BASIC_EXTERNAL; }
+    break;
+
+  case 128:
 #line 1228 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
-    break;}
-case 128:
+    { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
+    break;
+
+  case 129:
 #line 1229 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
-    break;}
-case 129:
+    { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
+    break;
+
+  case 130:
 #line 1230 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_UTCTime; ;
-    break;}
-case 130:
+    { yyval.a_type = ASN_BASIC_UTCTime; }
+    break;
+
+  case 131:
 #line 1231 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
-    break;}
-case 131:
+    { yyval.a_type = ASN_BASIC_GeneralizedTime; }
+    break;
+
+  case 132:
 #line 1238 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_INTEGER; ;
-    break;}
-case 132:
+    { yyval.a_type = ASN_BASIC_INTEGER; }
+    break;
+
+  case 133:
 #line 1239 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
-    break;}
-case 133:
+    { yyval.a_type = ASN_BASIC_ENUMERATED; }
+    break;
+
+  case 134:
 #line 1240 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
-    break;}
-case 134:
+    { yyval.a_type = ASN_BASIC_BIT_STRING; }
+    break;
+
+  case 135:
 #line 1244 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = yyvsp[0].a_type;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 135:
+	}
+    break;
+
+  case 136:
 #line 1250 "asn1p_y.y"
-{
+    {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
 		} else {
@@ -2391,137 +2910,158 @@
 		}
 		yyval.a_expr->expr_type = yyvsp[-1].a_type;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 136:
+	}
+    break;
+
+  case 137:
 #line 1263 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_BMPString; ;
-    break;}
-case 137:
+    { yyval.a_type = ASN_STRING_BMPString; }
+    break;
+
+  case 138:
 #line 1264 "asn1p_y.y"
-{
+    {
 		yyval.a_type = ASN_STRING_GeneralString;
 		return yyerror("GeneralString is not supported");
-	;
-    break;}
-case 138:
+	}
+    break;
+
+  case 139:
 #line 1268 "asn1p_y.y"
-{
+    {
 		yyval.a_type = ASN_STRING_GraphicString;
 		return yyerror("GraphicString is not supported");
-	;
-    break;}
-case 139:
+	}
+    break;
+
+  case 140:
 #line 1272 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_IA5String; ;
-    break;}
-case 140:
+    { yyval.a_type = ASN_STRING_IA5String; }
+    break;
+
+  case 141:
 #line 1273 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_ISO646String; ;
-    break;}
-case 141:
+    { yyval.a_type = ASN_STRING_ISO646String; }
+    break;
+
+  case 142:
 #line 1274 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_NumericString; ;
-    break;}
-case 142:
+    { yyval.a_type = ASN_STRING_NumericString; }
+    break;
+
+  case 143:
 #line 1275 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_PrintableString; ;
-    break;}
-case 143:
+    { yyval.a_type = ASN_STRING_PrintableString; }
+    break;
+
+  case 144:
 #line 1276 "asn1p_y.y"
-{
+    {
 		yyval.a_type = ASN_STRING_T61String;
 		return yyerror("T61String not implemented yet");
-	;
-    break;}
-case 144:
+	}
+    break;
+
+  case 145:
 #line 1280 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_TeletexString; ;
-    break;}
-case 145:
+    { yyval.a_type = ASN_STRING_TeletexString; }
+    break;
+
+  case 146:
 #line 1281 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_UniversalString; ;
-    break;}
-case 146:
+    { yyval.a_type = ASN_STRING_UniversalString; }
+    break;
+
+  case 147:
 #line 1282 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_UTF8String; ;
-    break;}
-case 147:
+    { yyval.a_type = ASN_STRING_UTF8String; }
+    break;
+
+  case 148:
 #line 1283 "asn1p_y.y"
-{
+    {
 		yyval.a_type = ASN_STRING_VideotexString;
 		return yyerror("VideotexString is no longer supported");
-	;
-    break;}
-case 148:
+	}
+    break;
+
+  case 149:
 #line 1287 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_VisibleString; ;
-    break;}
-case 149:
+    { yyval.a_type = ASN_STRING_VisibleString; }
+    break;
+
+  case 150:
 #line 1288 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
-    break;}
-case 150:
+    { yyval.a_type = ASN_STRING_ObjectDescriptor; }
+    break;
+
+  case 151:
 #line 1292 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
 		yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 151:
+	}
+    break;
+
+  case 152:
 #line 1298 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
 		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 152:
+	}
+    break;
+
+  case 153:
 #line 1304 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
 		yyval.a_expr->expr_type = ASN_CONSTR_SET;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 153:
+	}
+    break;
+
+  case 154:
 #line 1310 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->constraints = yyvsp[-2].a_constr;
 		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
 		yyval.a_expr->meta_type = AMT_TYPE;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 154:
+	}
+    break;
+
+  case 155:
 #line 1318 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->constraints = yyvsp[-2].a_constr;
 		yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
 		yyval.a_expr->meta_type = AMT_TYPE;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 155:
+	}
+    break;
+
+  case 156:
 #line 1326 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = ASN_CONSTR_ANY;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 156:
+	}
+    break;
+
+  case 157:
 #line 1332 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
@@ -2531,19 +3071,22 @@
 		checkmem(ret == 0);
 		yyval.a_expr->expr_type = ASN_CONSTR_ANY;
 		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 157:
+	}
+    break;
+
+  case 158:
 #line 1349 "asn1p_y.y"
-{ yyval.a_constr = 0; ;
-    break;}
-case 158:
+    { yyval.a_constr = 0; }
+    break;
+
+  case 159:
 #line 1350 "asn1p_y.y"
-{ yyval.a_constr = yyvsp[0].a_constr; ;
-    break;}
-case 164:
+    { yyval.a_constr = yyvsp[0].a_constr; }
+    break;
+
+  case 165:
 #line 1358 "asn1p_y.y"
-{
+    {
 		/*
 		 * This is a special case, for compatibility purposes.
 		 * It goes without parenthesis.
@@ -2554,184 +3097,212 @@
 		yyval.a_constr->type = ACT_CT_SIZE;
 		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
 		checkmem(ret == 0);
-	;
-    break;}
-case 165:
+	}
+    break;
+
+  case 166:
 #line 1370 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
-	;
-    break;}
-case 166:
+	}
+    break;
+
+  case 167:
 #line 1373 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-1].a_constr, yyvsp[0].a_constr);
-	;
-    break;}
-case 167:
+	}
+    break;
+
+  case 168:
 #line 1379 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[-1].a_constr;
-	;
-    break;}
-case 168:
+	}
+    break;
+
+  case 169:
 #line 1385 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 169:
+	}
+    break;
+
+  case 170:
 #line 1388 "asn1p_y.y"
-{
+    {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
 		checkmem(ct);
 		ct->type = ACT_EL_EXT;
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
-	;
-    break;}
-case 170:
+	}
+    break;
+
+  case 171:
 #line 1395 "asn1p_y.y"
-{
+    {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
 		checkmem(ct);
 		ct->type = ACT_EL_EXT;
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, yyvsp[0].a_constr);
-	;
-    break;}
-case 171:
+	}
+    break;
+
+  case 172:
 #line 1403 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
-	;
-    break;}
-case 172:
+	}
+    break;
+
+  case 173:
 #line 1408 "asn1p_y.y"
-{
+    {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
 		checkmem(ct);
 		ct->type = ACT_EL_EXT;
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
-	;
-    break;}
-case 173:
+	}
+    break;
+
+  case 174:
 #line 1417 "asn1p_y.y"
-{ yyval.a_constr = yyvsp[0].a_constr; ;
-    break;}
-case 174:
+    { yyval.a_constr = yyvsp[0].a_constr; }
+    break;
+
+  case 175:
 #line 1420 "asn1p_y.y"
-{ yyval.a_constr = yyvsp[0].a_constr; ;
-    break;}
-case 175:
+    { yyval.a_constr = yyvsp[0].a_constr; }
+    break;
+
+  case 176:
 #line 1421 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
-	;
-    break;}
-case 176:
+	}
+    break;
+
+  case 177:
 #line 1427 "asn1p_y.y"
-{ yyval.a_constr = yyvsp[0].a_constr; ;
-    break;}
-case 177:
+    { yyval.a_constr = yyvsp[0].a_constr; }
+    break;
+
+  case 178:
 #line 1429 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
-	;
-    break;}
-case 178:
+	}
+    break;
+
+  case 179:
 #line 1435 "asn1p_y.y"
-{ yyval.a_constr = yyvsp[0].a_constr; ;
-    break;}
-case 179:
+    { yyval.a_constr = yyvsp[0].a_constr; }
+    break;
+
+  case 180:
 #line 1436 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
-	;
-    break;}
-case 180:
+	}
+    break;
+
+  case 181:
 #line 1442 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_VALUE;
 		yyval.a_constr->value = yyvsp[0].a_value;
-	;
-    break;}
-case 181:
+	}
+    break;
+
+  case 182:
 #line 1448 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = yyvsp[-1].a_ctype;
 		yyval.a_constr->range_start = yyvsp[-2].a_value;
 		yyval.a_constr->range_stop = yyvsp[0].a_value;
-	;
-    break;}
-case 182:
+	}
+    break;
+
+  case 183:
 #line 1455 "asn1p_y.y"
-{
+    {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = yyvsp[-3].a_ctype;
 		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
 		checkmem(ret == 0);
-	;
-    break;}
-case 183:
+	}
+    break;
+
+  case 184:
 #line 1463 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 184:
+	}
+    break;
+
+  case 185:
 #line 1466 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 185:
+	}
+    break;
+
+  case 186:
 #line 1472 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RANGE; ;
-    break;}
-case 186:
+    { yyval.a_ctype = ACT_EL_RANGE; }
+    break;
+
+  case 187:
 #line 1473 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RLRANGE; ;
-    break;}
-case 187:
+    { yyval.a_ctype = ACT_EL_RLRANGE; }
+    break;
+
+  case 188:
 #line 1474 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_LLRANGE; ;
-    break;}
-case 188:
+    { yyval.a_ctype = ACT_EL_LLRANGE; }
+    break;
+
+  case 189:
 #line 1475 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_ULRANGE; ;
-    break;}
-case 189:
+    { yyval.a_ctype = ACT_EL_ULRANGE; }
+    break;
+
+  case 190:
 #line 1479 "asn1p_y.y"
-{
+    {
 		yyval.a_ctype = ACT_CT_SIZE;
-	;
-    break;}
-case 190:
+	}
+    break;
+
+  case 191:
 #line 1482 "asn1p_y.y"
-{
+    {
 		yyval.a_ctype = ACT_CT_FROM;
-	;
-    break;}
-case 191:
+	}
+    break;
+
+  case 192:
 #line 1488 "asn1p_y.y"
-{
+    {
 		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
-case 192:
+	}
+    break;
+
+  case 193:
 #line 1491 "asn1p_y.y"
-{
+    {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
@@ -2741,124 +3312,142 @@
 		yyval.a_value = asn1p_value_fromref(ref, 0);
 		checkmem(yyval.a_value);
 		free(yyvsp[0].tv_str);
-	;
-    break;}
-case 193:
+	}
+    break;
+
+  case 194:
 #line 1502 "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 194:
+	}
+    break;
+
+  case 195:
 #line 1506 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_fromint(123);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_MIN;
-	;
-    break;}
-case 195:
+	}
+    break;
+
+  case 196:
 #line 1511 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_fromint(321);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_MAX;
-	;
-    break;}
-case 196:
+	}
+    break;
+
+  case 197:
 #line 1516 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
-	;
-    break;}
-case 197:
+	}
+    break;
+
+  case 198:
 #line 1521 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
-	;
-    break;}
-case 198:
+	}
+    break;
+
+  case 199:
 #line 1529 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
-	;
-    break;}
-case 199:
+	}
+    break;
+
+  case 200:
 #line 1535 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 200:
+	}
+    break;
+
+  case 201:
 #line 1538 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
-	;
-    break;}
-case 201:
+	}
+    break;
+
+  case 202:
 #line 1544 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
-	;
-    break;}
-case 202:
+	}
+    break;
+
+  case 203:
 #line 1549 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_VALUE;
 		yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
 		yyval.a_constr->presence = yyvsp[0].a_pres;
-	;
-    break;}
-case 203:
+	}
+    break;
+
+  case 204:
 #line 1562 "asn1p_y.y"
-{ yyval.a_pres = ACPRES_DEFAULT; ;
-    break;}
-case 204:
+    { yyval.a_pres = ACPRES_DEFAULT; }
+    break;
+
+  case 205:
 #line 1563 "asn1p_y.y"
-{ yyval.a_pres = yyvsp[0].a_pres; ;
-    break;}
-case 205:
+    { yyval.a_pres = yyvsp[0].a_pres; }
+    break;
+
+  case 206:
 #line 1567 "asn1p_y.y"
-{
+    {
 		yyval.a_pres = ACPRES_PRESENT;
-	;
-    break;}
-case 206:
+	}
+    break;
+
+  case 207:
 #line 1570 "asn1p_y.y"
-{
+    {
 		yyval.a_pres = ACPRES_ABSENT;
-	;
-    break;}
-case 207:
+	}
+    break;
+
+  case 208:
 #line 1573 "asn1p_y.y"
-{
+    {
 		yyval.a_pres = ACPRES_OPTIONAL;
-	;
-    break;}
-case 208:
+	}
+    break;
+
+  case 209:
 #line 1579 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 209:
+	}
+    break;
+
+  case 210:
 #line 1582 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 210:
+	}
+    break;
+
+  case 211:
 #line 1591 "asn1p_y.y"
-{
+    {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
 		int ret;
@@ -2869,37 +3458,41 @@
 		ct->type = ACT_EL_VALUE;
 		ct->value = asn1p_value_fromref(ref, 0);
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
-	;
-    break;}
-case 211:
+	}
+    break;
+
+  case 212:
 #line 1606 "asn1p_y.y"
-{
+    {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
-	;
-    break;}
-case 212:
+	}
+    break;
+
+  case 213:
 #line 1612 "asn1p_y.y"
-{
+    {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_VALUE;
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
-	;
-    break;}
-case 213:
+	}
+    break;
+
+  case 214:
 #line 1618 "asn1p_y.y"
-{
+    {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
 		checkmem(ct);
 		ct->type = ACT_EL_VALUE;
 		ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
-	;
-    break;}
-case 214:
+	}
+    break;
+
+  case 215:
 #line 1632 "asn1p_y.y"
-{
+    {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
 		*p = '@';
@@ -2909,11 +3502,12 @@
 		checkmem(ret == 0);
 		free(p);
 		free(yyvsp[0].tv_str);
-	;
-    break;}
-case 215:
+	}
+    break;
+
+  case 216:
 #line 1643 "asn1p_y.y"
-{
+    {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
 		p[0] = '@';
@@ -2924,17 +3518,19 @@
 		checkmem(ret == 0);
 		free(p);
 		free(yyvsp[0].tv_str);
-	;
-    break;}
-case 216:
+	}
+    break;
+
+  case 217:
 #line 1659 "asn1p_y.y"
-{
+    {
 		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 217:
+	}
+    break;
+
+  case 218:
 #line 1662 "asn1p_y.y"
-{
+    {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
 		yyval.tv_str = malloc(l1 + 1 + l3 + 1);
@@ -2942,436 +3538,468 @@
 		yyval.tv_str[l1] = '.';
 		memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
 		yyval.tv_str[l1 + 1 + l3] = '\0';
-	;
-    break;}
-case 218:
+	}
+    break;
+
+  case 219:
 #line 1680 "asn1p_y.y"
-{ yyval.a_marker = EM_NOMARK; ;
-    break;}
-case 219:
+    { yyval.a_marker = EM_NOMARK; }
+    break;
+
+  case 220:
 #line 1681 "asn1p_y.y"
-{ yyval.a_marker = yyvsp[0].a_marker; ;
-    break;}
-case 220:
+    { yyval.a_marker = yyvsp[0].a_marker; }
+    break;
+
+  case 221:
 #line 1685 "asn1p_y.y"
-{
+    {
 		yyval.a_marker = EM_OPTIONAL;
-	;
-    break;}
-case 221:
+	}
+    break;
+
+  case 222:
 #line 1688 "asn1p_y.y"
-{
+    {
 		yyval.a_marker = EM_DEFAULT;
 		/* FIXME: store DefaultValue somewhere */
-	;
-    break;}
-case 222:
+	}
+    break;
+
+  case 223:
 #line 1695 "asn1p_y.y"
-{
-	;
-    break;}
-case 223:
+    {
+	}
+    break;
+
+  case 224:
 #line 1697 "asn1p_y.y"
-{
-	;
-    break;}
-case 224:
+    {
+	}
+    break;
+
+  case 225:
 #line 1699 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
-    break;}
-case 225:
+    { asn1p_lexer_hack_push_opaque_state(); }
+    break;
+
+  case 226:
 #line 1699 "asn1p_y.y"
-{
-	;
-    break;}
-case 226:
+    {
+	}
+    break;
+
+  case 227:
 #line 1720 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
-	;
-    break;}
-case 227:
+	}
+    break;
+
+  case 228:
 #line 1724 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-1].a_expr;
-	;
-    break;}
-case 228:
+	}
+    break;
+
+  case 229:
 #line 1730 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 229:
+	}
+    break;
+
+  case 230:
 #line 1735 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
-	;
-    break;}
-case 230:
+	}
+    break;
+
+  case 231:
 #line 1742 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
 		yyval.a_expr->meta_type = AMT_VALUE;
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-	;
-    break;}
-case 231:
+	}
+    break;
+
+  case 232:
 #line 1749 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
 		yyval.a_expr->meta_type = AMT_VALUE;
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->value = yyvsp[-1].a_value;
-	;
-    break;}
-case 232:
+	}
+    break;
+
+  case 233:
 #line 1757 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
 		yyval.a_expr->meta_type = AMT_VALUE;
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->value = yyvsp[-1].a_value;
-	;
-    break;}
-case 233:
+	}
+    break;
+
+  case 234:
 #line 1765 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
 		yyval.a_expr->meta_type = AMT_VALUE;
 		yyval.a_expr->value = yyvsp[0].a_value;
-	;
-    break;}
-case 234:
+	}
+    break;
+
+  case 235:
 #line 1772 "asn1p_y.y"
-{
+    {
 		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->Identifier = strdup("...");
 		checkmem(yyval.a_expr->Identifier);
 		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
 		yyval.a_expr->meta_type = AMT_VALUE;
-	;
-    break;}
-case 235:
+	}
+    break;
+
+  case 236:
 #line 1783 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
-	;
-    break;}
-case 236:
+	}
+    break;
+
+  case 237:
 #line 1787 "asn1p_y.y"
-{
+    {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
-	;
-    break;}
-case 237:
+	}
+    break;
+
+  case 238:
 #line 1818 "asn1p_y.y"
-{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
-    break;}
-case 238:
+    { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
+    break;
+
+  case 239:
 #line 1819 "asn1p_y.y"
-{ yyval.a_tag = yyvsp[0].a_tag; ;
-    break;}
-case 239:
+    { yyval.a_tag = yyvsp[0].a_tag; }
+    break;
+
+  case 240:
 #line 1823 "asn1p_y.y"
-{
+    {
 		yyval.a_tag = yyvsp[0].a_tag;
 		yyval.a_tag.tag_mode = TM_DEFAULT;
-	;
-    break;}
-case 240:
+	}
+    break;
+
+  case 241:
 #line 1827 "asn1p_y.y"
-{
+    {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_IMPLICIT;
-	;
-    break;}
-case 241:
+	}
+    break;
+
+  case 242:
 #line 1831 "asn1p_y.y"
-{
+    {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_EXPLICIT;
-	;
-    break;}
-case 242:
+	}
+    break;
+
+  case 243:
 #line 1838 "asn1p_y.y"
-{
+    {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 243:
+	}
+    break;
+
+  case 244:
 #line 1842 "asn1p_y.y"
-{
+    {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 244:
+	}
+    break;
+
+  case 245:
 #line 1849 "asn1p_y.y"
-{
+    {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 245:
+	}
+    break;
+
+  case 246:
 #line 1856 "asn1p_y.y"
-{
+    {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
-case 246:
+	}
+    break;
+
+  case 247:
 #line 1863 "asn1p_y.y"
-{
+    {
 		memset(&yyval.tv_nametag, 0, sizeof(yyval.tv_nametag));
 		yyval.tv_nametag.name = yyvsp[0].tv_str;
-	;
-    break;}
-case 247:
+	}
+    break;
+
+  case 248:
 #line 1867 "asn1p_y.y"
-{
+    {
 		yyval.tv_nametag.name = yyvsp[-1].tv_str;
 		yyval.tv_nametag.tag = yyvsp[0].a_tag;
-	;
-    break;}
-}
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/share/bison.simple"
+	}
+    break;
+
+
+    }
+
+/* Line 1016 of /usr/local/share/bison/yacc.c.  */
+#line 3785 "y.tab.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
-#ifdef YYLSP_NEEDED
-  yylsp -= yylen;
-#endif
 
-#if YYDEBUG != 0
+
+#if YYDEBUG
   if (yydebug)
     {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "state stack now");
+      while (yyssp1 != yyssp)
+	YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
     }
 #endif
 
   *++yyvsp = yyval;
 
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
-#endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTBASE];
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
+#if YYERROR_VERBOSE
       yyn = yypact[yystate];
 
-      if (yyn > YYFLAG && yyn < YYLAST)
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
 	{
-	  int size = 0;
-	  char *msg;
-	  int x, count;
+	  YYSIZE_T yysize = 0;
+	  int yytype = YYTRANSLATE (yychar);
+	  char *yymsg;
+	  int yyx, yycount;
 
-	  count = 0;
-	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-	  for (x = (yyn < 0 ? -yyn : 0);
-	       x < (sizeof(yytname) / sizeof(char *)); x++)
-	    if (yycheck[x + yyn] == x)
-	      size += strlen(yytname[x]) + 15, count++;
-	  msg = (char *) malloc(size + 15);
-	  if (msg != 0)
+	  yycount = 0;
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  for (yyx = yyn < 0 ? -yyn : 0;
+	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+	  yysize += yystrlen ("parse error, unexpected ") + 1;
+	  yysize += yystrlen (yytname[yytype]);
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
 	    {
-	      strcpy(msg, "parse error");
+	      char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+	      yyp = yystpcpy (yyp, yytname[yytype]);
 
-	      if (count < 5)
+	      if (yycount < 5)
 		{
-		  count = 0;
-		  for (x = (yyn < 0 ? -yyn : 0);
-		       x < (sizeof(yytname) / sizeof(char *)); x++)
-		    if (yycheck[x + yyn] == x)
+		  yycount = 0;
+		  for (yyx = yyn < 0 ? -yyn : 0;
+		       yyx < (int) (sizeof (yytname) / sizeof (char *));
+		       yyx++)
+		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
+			const char *yyq = ! yycount ? ", expecting " : " or ";
+			yyp = yystpcpy (yyp, yyq);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yycount++;
 		      }
 		}
-	      yyerror(msg);
-	      free(msg);
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
 	    }
 	  else
-	    yyerror ("parse error; also virtual memory exceeded");
+	    yyerror ("parse error; also virtual memory exhausted");
 	}
       else
 #endif /* YYERROR_VERBOSE */
-	yyerror("parse error");
+	yyerror ("parse error");
     }
-
   goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
 
+
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action.  |
+`----------------------------------------------------*/
+yyerrlab1:
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
 
-      /* return failure if at end of input */
+      /* Return failure if at end of input.  */
       if (yychar == YYEOF)
-	YYABORT;
+        {
+	  /* Pop the error token.  */
+          YYPOPSTACK;
+	  /* Pop the rest of the stack.  */
+	  while (yyssp > yyss)
+	    {
+	      YYDPRINTF ((stderr, "Error: popping "));
+	      YYDSYMPRINT ((stderr,
+			    yystos[*yyssp],
+			    *yyvsp));
+	      YYDPRINTF ((stderr, "\n"));
+	      yydestruct (yystos[*yyssp], *yyvsp);
+	      YYPOPSTACK;
+	    }
+	  YYABORT;
+        }
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
+      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+		  yychar, yytname[yychar1]));
+      yydestruct (yychar1, yylval);
       yychar = YYEMPTY;
     }
 
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
 
-  yyerrstatus = 3;		/* Each real token shifted decrements this */
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
-  goto yyerrhandle;
-
-yyerrdefault:  /* current state does not do anything special for the error token. */
-
-#if 0
-  /* This is wrong; only states that explicitly want error tokens
-     should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
-#endif
-
-yyerrpop:   /* pop the current state because it cannot handle the error token */
-
-  if (yyssp == yyss) YYABORT;
-  yyvsp--;
-  yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
-  yylsp--;
-#endif
-
-#if YYDEBUG != 0
-  if (yydebug)
+  for (;;)
     {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
-    }
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+      YYDPRINTF ((stderr, "Error: popping "));
+      YYDSYMPRINT ((stderr,
+		    yystos[*yyssp], *yyvsp));
+      YYDPRINTF ((stderr, "\n"));
+
+      yydestruct (yystos[yystate], *yyvsp);
+      yyvsp--;
+      yystate = *--yyssp;
+
+
+#if YYDEBUG
+      if (yydebug)
+	{
+	  short *yyssp1 = yyss - 1;
+	  YYFPRINTF (stderr, "Error: state stack now");
+	  while (yyssp1 != yyssp)
+	    YYFPRINTF (stderr, " %d", *++yyssp1);
+	  YYFPRINTF (stderr, "\n");
+	}
 #endif
-
-yyerrhandle:
-
-  yyn = yypact[yystate];
-  if (yyn == YYFLAG)
-    goto yyerrdefault;
-
-  yyn += YYTERROR;
-  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-    goto yyerrdefault;
-
-  yyn = yytable[yyn];
-  if (yyn < 0)
-    {
-      if (yyn == YYFLAG)
-	goto yyerrpop;
-      yyn = -yyn;
-      goto yyreduce;
     }
-  else if (yyn == 0)
-    goto yyerrpop;
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
+  YYDPRINTF ((stderr, "Shifting error token, "));
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
-  *++yylsp = yylloc;
-#endif
+
 
   yystate = yyn;
   goto yynewstate;
 
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
 
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here.  |
+`----------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
 #endif
-    }
-  return 1;
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
 }
+
+
 #line 1874 "asn1p_y.y"
 
 
@@ -3482,3 +4110,4 @@
 }
 
 
+
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index 61679e3..09ace78 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -1,3 +1,239 @@
+/* A Bison parser, made from asn1p_y.y, by GNU bison 1.75.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+#ifndef BISON_Y_TAB_H
+# define BISON_Y_TAB_H
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TOK_PPEQ = 258,
+     TOK_opaque = 259,
+     TOK_bstring = 260,
+     TOK_cstring = 261,
+     TOK_hstring = 262,
+     TOK_identifier = 263,
+     TOK_number = 264,
+     TOK_number_negative = 265,
+     TOK_typereference = 266,
+     TOK_objectclassreference = 267,
+     TOK_typefieldreference = 268,
+     TOK_valuefieldreference = 269,
+     TOK_ABSENT = 270,
+     TOK_ABSTRACT_SYNTAX = 271,
+     TOK_ALL = 272,
+     TOK_ANY = 273,
+     TOK_APPLICATION = 274,
+     TOK_AUTOMATIC = 275,
+     TOK_BEGIN = 276,
+     TOK_BIT = 277,
+     TOK_BMPString = 278,
+     TOK_BOOLEAN = 279,
+     TOK_BY = 280,
+     TOK_CHARACTER = 281,
+     TOK_CHOICE = 282,
+     TOK_CLASS = 283,
+     TOK_COMPONENT = 284,
+     TOK_COMPONENTS = 285,
+     TOK_CONSTRAINED = 286,
+     TOK_CONTAINING = 287,
+     TOK_DEFAULT = 288,
+     TOK_DEFINITIONS = 289,
+     TOK_DEFINED = 290,
+     TOK_EMBEDDED = 291,
+     TOK_ENCODED = 292,
+     TOK_END = 293,
+     TOK_ENUMERATED = 294,
+     TOK_EXPLICIT = 295,
+     TOK_EXPORTS = 296,
+     TOK_EXTENSIBILITY = 297,
+     TOK_EXTERNAL = 298,
+     TOK_FALSE = 299,
+     TOK_FROM = 300,
+     TOK_GeneralizedTime = 301,
+     TOK_GeneralString = 302,
+     TOK_GraphicString = 303,
+     TOK_IA5String = 304,
+     TOK_IDENTIFIER = 305,
+     TOK_IMPLICIT = 306,
+     TOK_IMPLIED = 307,
+     TOK_IMPORTS = 308,
+     TOK_INCLUDES = 309,
+     TOK_INSTANCE = 310,
+     TOK_INTEGER = 311,
+     TOK_ISO646String = 312,
+     TOK_MAX = 313,
+     TOK_MIN = 314,
+     TOK_MINUS_INFINITY = 315,
+     TOK_NULL = 316,
+     TOK_NumericString = 317,
+     TOK_OBJECT = 318,
+     TOK_ObjectDescriptor = 319,
+     TOK_OCTET = 320,
+     TOK_OF = 321,
+     TOK_OPTIONAL = 322,
+     TOK_PATTERN = 323,
+     TOK_PDV = 324,
+     TOK_PLUS_INFINITY = 325,
+     TOK_PRESENT = 326,
+     TOK_PrintableString = 327,
+     TOK_PRIVATE = 328,
+     TOK_REAL = 329,
+     TOK_RELATIVE_OID = 330,
+     TOK_SEQUENCE = 331,
+     TOK_SET = 332,
+     TOK_SIZE = 333,
+     TOK_STRING = 334,
+     TOK_SYNTAX = 335,
+     TOK_T61String = 336,
+     TOK_TAGS = 337,
+     TOK_TeletexString = 338,
+     TOK_TRUE = 339,
+     TOK_TYPE_IDENTIFIER = 340,
+     TOK_UNIQUE = 341,
+     TOK_UNIVERSAL = 342,
+     TOK_UniversalString = 343,
+     TOK_UTCTime = 344,
+     TOK_UTF8String = 345,
+     TOK_VideotexString = 346,
+     TOK_VisibleString = 347,
+     TOK_WITH = 348,
+     TOK_UNION = 349,
+     TOK_INTERSECTION = 350,
+     TOK_EXCEPT = 351,
+     TOK_TwoDots = 352,
+     TOK_ThreeDots = 353,
+     TOK_tag = 354
+   };
+#endif
+#define TOK_PPEQ 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_number_negative 265
+#define TOK_typereference 266
+#define TOK_objectclassreference 267
+#define TOK_typefieldreference 268
+#define TOK_valuefieldreference 269
+#define TOK_ABSENT 270
+#define TOK_ABSTRACT_SYNTAX 271
+#define TOK_ALL 272
+#define TOK_ANY 273
+#define TOK_APPLICATION 274
+#define TOK_AUTOMATIC 275
+#define TOK_BEGIN 276
+#define TOK_BIT 277
+#define TOK_BMPString 278
+#define TOK_BOOLEAN 279
+#define TOK_BY 280
+#define TOK_CHARACTER 281
+#define TOK_CHOICE 282
+#define TOK_CLASS 283
+#define TOK_COMPONENT 284
+#define TOK_COMPONENTS 285
+#define TOK_CONSTRAINED 286
+#define TOK_CONTAINING 287
+#define TOK_DEFAULT 288
+#define TOK_DEFINITIONS 289
+#define TOK_DEFINED 290
+#define TOK_EMBEDDED 291
+#define TOK_ENCODED 292
+#define TOK_END 293
+#define TOK_ENUMERATED 294
+#define TOK_EXPLICIT 295
+#define TOK_EXPORTS 296
+#define TOK_EXTENSIBILITY 297
+#define TOK_EXTERNAL 298
+#define TOK_FALSE 299
+#define TOK_FROM 300
+#define TOK_GeneralizedTime 301
+#define TOK_GeneralString 302
+#define TOK_GraphicString 303
+#define TOK_IA5String 304
+#define TOK_IDENTIFIER 305
+#define TOK_IMPLICIT 306
+#define TOK_IMPLIED 307
+#define TOK_IMPORTS 308
+#define TOK_INCLUDES 309
+#define TOK_INSTANCE 310
+#define TOK_INTEGER 311
+#define TOK_ISO646String 312
+#define TOK_MAX 313
+#define TOK_MIN 314
+#define TOK_MINUS_INFINITY 315
+#define TOK_NULL 316
+#define TOK_NumericString 317
+#define TOK_OBJECT 318
+#define TOK_ObjectDescriptor 319
+#define TOK_OCTET 320
+#define TOK_OF 321
+#define TOK_OPTIONAL 322
+#define TOK_PATTERN 323
+#define TOK_PDV 324
+#define TOK_PLUS_INFINITY 325
+#define TOK_PRESENT 326
+#define TOK_PrintableString 327
+#define TOK_PRIVATE 328
+#define TOK_REAL 329
+#define TOK_RELATIVE_OID 330
+#define TOK_SEQUENCE 331
+#define TOK_SET 332
+#define TOK_SIZE 333
+#define TOK_STRING 334
+#define TOK_SYNTAX 335
+#define TOK_T61String 336
+#define TOK_TAGS 337
+#define TOK_TeletexString 338
+#define TOK_TRUE 339
+#define TOK_TYPE_IDENTIFIER 340
+#define TOK_UNIQUE 341
+#define TOK_UNIVERSAL 342
+#define TOK_UniversalString 343
+#define TOK_UTCTime 344
+#define TOK_UTF8String 345
+#define TOK_VideotexString 346
+#define TOK_VisibleString 347
+#define TOK_WITH 348
+#define TOK_UNION 349
+#define TOK_INTERSECTION 350
+#define TOK_EXCEPT 351
+#define TOK_TwoDots 352
+#define TOK_ThreeDots 353
+#define TOK_tag 354
+
+
+
+
+#ifndef YYSTYPE
+#line 57 "asn1p_y.y"
 typedef union {
 	asn1p_t			*a_grammar;
 	asn1p_module_flags_e	 a_module_flags;
@@ -29,104 +265,14 @@
 		char *name;
 		struct asn1p_type_tag_s tag;
 	} 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_number_negative	264
-#define	TOK_typereference	265
-#define	TOK_objectclassreference	266
-#define	TOK_typefieldreference	267
-#define	TOK_valuefieldreference	268
-#define	TOK_ABSENT	269
-#define	TOK_ABSTRACT_SYNTAX	270
-#define	TOK_ALL	271
-#define	TOK_ANY	272
-#define	TOK_APPLICATION	273
-#define	TOK_AUTOMATIC	274
-#define	TOK_BEGIN	275
-#define	TOK_BIT	276
-#define	TOK_BMPString	277
-#define	TOK_BOOLEAN	278
-#define	TOK_BY	279
-#define	TOK_CHARACTER	280
-#define	TOK_CHOICE	281
-#define	TOK_CLASS	282
-#define	TOK_COMPONENT	283
-#define	TOK_COMPONENTS	284
-#define	TOK_CONSTRAINED	285
-#define	TOK_CONTAINING	286
-#define	TOK_DEFAULT	287
-#define	TOK_DEFINITIONS	288
-#define	TOK_DEFINED	289
-#define	TOK_EMBEDDED	290
-#define	TOK_ENCODED	291
-#define	TOK_END	292
-#define	TOK_ENUMERATED	293
-#define	TOK_EXPLICIT	294
-#define	TOK_EXPORTS	295
-#define	TOK_EXTENSIBILITY	296
-#define	TOK_EXTERNAL	297
-#define	TOK_FALSE	298
-#define	TOK_FROM	299
-#define	TOK_GeneralizedTime	300
-#define	TOK_GeneralString	301
-#define	TOK_GraphicString	302
-#define	TOK_IA5String	303
-#define	TOK_IDENTIFIER	304
-#define	TOK_IMPLICIT	305
-#define	TOK_IMPLIED	306
-#define	TOK_IMPORTS	307
-#define	TOK_INCLUDES	308
-#define	TOK_INSTANCE	309
-#define	TOK_INTEGER	310
-#define	TOK_ISO646String	311
-#define	TOK_MAX	312
-#define	TOK_MIN	313
-#define	TOK_MINUS_INFINITY	314
-#define	TOK_NULL	315
-#define	TOK_NumericString	316
-#define	TOK_OBJECT	317
-#define	TOK_ObjectDescriptor	318
-#define	TOK_OCTET	319
-#define	TOK_OF	320
-#define	TOK_OPTIONAL	321
-#define	TOK_PATTERN	322
-#define	TOK_PDV	323
-#define	TOK_PLUS_INFINITY	324
-#define	TOK_PRESENT	325
-#define	TOK_PrintableString	326
-#define	TOK_PRIVATE	327
-#define	TOK_REAL	328
-#define	TOK_RELATIVE_OID	329
-#define	TOK_SEQUENCE	330
-#define	TOK_SET	331
-#define	TOK_SIZE	332
-#define	TOK_STRING	333
-#define	TOK_SYNTAX	334
-#define	TOK_T61String	335
-#define	TOK_TAGS	336
-#define	TOK_TeletexString	337
-#define	TOK_TRUE	338
-#define	TOK_TYPE_IDENTIFIER	339
-#define	TOK_UNIQUE	340
-#define	TOK_UNIVERSAL	341
-#define	TOK_UniversalString	342
-#define	TOK_UTCTime	343
-#define	TOK_UTF8String	344
-#define	TOK_VideotexString	345
-#define	TOK_VisibleString	346
-#define	TOK_WITH	347
-#define	TOK_UNION	348
-#define	TOK_INTERSECTION	349
-#define	TOK_EXCEPT	350
-#define	TOK_TwoDots	351
-#define	TOK_ThreeDots	352
-#define	TOK_tag	353
-
+} yystype;
+/* Line 1281 of /usr/local/share/bison/yacc.c.  */
+#line 271 "y.tab.h"
+# define YYSTYPE yystype
+#endif
 
 extern YYSTYPE asn1p_lval;
+
+
+#endif /* not BISON_Y_TAB_H */
+
