
/*  A Bison parser, made from asn1p_y.y
    by GNU Bison version 1.28  */

#define YYBISON 1  /* Identify Bison output.  */

#define yyparse asn1p_parse
#define yylex asn1p_lex
#define yyerror asn1p_error
#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_tuple	264
#define	TOK_quadruple	265
#define	TOK_number_negative	266
#define	TOK_typereference	267
#define	TOK_capitalreference	268
#define	TOK_typefieldreference	269
#define	TOK_valuefieldreference	270
#define	TOK_ABSENT	271
#define	TOK_ABSTRACT_SYNTAX	272
#define	TOK_ALL	273
#define	TOK_ANY	274
#define	TOK_APPLICATION	275
#define	TOK_AUTOMATIC	276
#define	TOK_BEGIN	277
#define	TOK_BIT	278
#define	TOK_BMPString	279
#define	TOK_BOOLEAN	280
#define	TOK_BY	281
#define	TOK_CHARACTER	282
#define	TOK_CHOICE	283
#define	TOK_CLASS	284
#define	TOK_COMPONENT	285
#define	TOK_COMPONENTS	286
#define	TOK_CONSTRAINED	287
#define	TOK_CONTAINING	288
#define	TOK_DEFAULT	289
#define	TOK_DEFINITIONS	290
#define	TOK_DEFINED	291
#define	TOK_EMBEDDED	292
#define	TOK_ENCODED	293
#define	TOK_ENCODING_CONTROL	294
#define	TOK_END	295
#define	TOK_ENUMERATED	296
#define	TOK_EXPLICIT	297
#define	TOK_EXPORTS	298
#define	TOK_EXTENSIBILITY	299
#define	TOK_EXTERNAL	300
#define	TOK_FALSE	301
#define	TOK_FROM	302
#define	TOK_GeneralizedTime	303
#define	TOK_GeneralString	304
#define	TOK_GraphicString	305
#define	TOK_IA5String	306
#define	TOK_IDENTIFIER	307
#define	TOK_IMPLICIT	308
#define	TOK_IMPLIED	309
#define	TOK_IMPORTS	310
#define	TOK_INCLUDES	311
#define	TOK_INSTANCE	312
#define	TOK_INSTRUCTIONS	313
#define	TOK_INTEGER	314
#define	TOK_ISO646String	315
#define	TOK_MAX	316
#define	TOK_MIN	317
#define	TOK_MINUS_INFINITY	318
#define	TOK_NULL	319
#define	TOK_NumericString	320
#define	TOK_OBJECT	321
#define	TOK_ObjectDescriptor	322
#define	TOK_OCTET	323
#define	TOK_OF	324
#define	TOK_OPTIONAL	325
#define	TOK_PATTERN	326
#define	TOK_PDV	327
#define	TOK_PLUS_INFINITY	328
#define	TOK_PRESENT	329
#define	TOK_PrintableString	330
#define	TOK_PRIVATE	331
#define	TOK_REAL	332
#define	TOK_RELATIVE_OID	333
#define	TOK_SEQUENCE	334
#define	TOK_SET	335
#define	TOK_SIZE	336
#define	TOK_STRING	337
#define	TOK_SYNTAX	338
#define	TOK_T61String	339
#define	TOK_TAGS	340
#define	TOK_TeletexString	341
#define	TOK_TRUE	342
#define	TOK_TYPE_IDENTIFIER	343
#define	TOK_UNIQUE	344
#define	TOK_UNIVERSAL	345
#define	TOK_UniversalString	346
#define	TOK_UTCTime	347
#define	TOK_UTF8String	348
#define	TOK_VideotexString	349
#define	TOK_VisibleString	350
#define	TOK_WITH	351
#define	TOK_EXCEPT	352
#define	TOK_INTERSECTION	353
#define	TOK_UNION	354
#define	TOK_TwoDots	355
#define	TOK_ThreeDots	356

#line 1 "asn1p_y.y"


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <assert.h>

#include "asn1parser.h"

#define YYPARSE_PARAM	param
#define YYERROR_VERBOSE

int yylex(void);
int yyerror(const char *msg);
void asn1p_lexer_hack_push_opaque_state(void);
void asn1p_lexer_hack_enable_with_syntax(void);
void asn1p_lexer_hack_push_encoding_control(void);
#define	yylineno	asn1p_lineno
extern int asn1p_lineno;


static asn1p_value_t *
	_convert_bitstring2binary(char *str, int base);

#define	checkmem(ptr)	do {					\
		if(!(ptr))					\
		return yyerror("Memory failure");		\
	} while(0)

#define	CONSTRAINT_INSERT(root, constr_type, arg1, arg2) do {	\
		if(arg1->type != constr_type) {			\
			int __ret;				\
			root = asn1p_constraint_new(yylineno);	\
			checkmem(root);				\
			root->type = constr_type;		\
			__ret = asn1p_constraint_insert(root,	\
				arg1);				\
			checkmem(__ret == 0);			\
		} else {					\
			root = arg1;				\
		}						\
		if(arg2) {					\
			int __ret				\
			= asn1p_constraint_insert(root, arg2);	\
			checkmem(__ret == 0);			\
		}						\
	} while(0)


#line 58 "asn1p_y.y"
typedef union {
	asn1p_t			*a_grammar;
	asn1p_module_flags_e	 a_module_flags;
	asn1p_module_t		*a_module;
	asn1p_expr_type_e	 a_type;	/* ASN.1 Type */
	asn1p_expr_t		*a_expr;	/* Constructed collection */
	asn1p_constraint_t	*a_constr;	/* Constraint */
	enum asn1p_constraint_type_e	a_ctype;/* Constraint type */
	asn1p_xports_t		*a_xports;	/* IMports/EXports */
	asn1p_oid_t		*a_oid;		/* Object Identifier */
	asn1p_oid_arc_t		 a_oid_arc;	/* Single OID's arc */
	struct asn1p_type_tag_s	 a_tag;		/* A tag */
	asn1p_ref_t		*a_ref;		/* Reference to custom type */
	asn1p_wsyntx_t		*a_wsynt;	/* WITH SYNTAX contents */
	asn1p_wsyntx_chunk_t	*a_wchunk;	/* WITH SYNTAX chunk */
	struct asn1p_ref_component_s a_refcomp;	/* Component of a reference */
	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
	struct asn1p_param_s	 a_parg;	/* A parameter argument */
	asn1p_paramlist_t	*a_plist;	/* A pargs list */
	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
	asn1c_integer_t		 a_int;
	char	*tv_str;
	struct {
		char *buf;
		int len;
	}	tv_opaque;
	struct {
		char *name;
		struct asn1p_type_tag_s tag;
	} tv_nametag;
} YYSTYPE;
#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		431
#define	YYFLAG		-32768
#define	YYNTBASE	118

#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 222)

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,   112,     2,     2,     2,     2,     2,     2,   107,
   108,     2,     2,   110,     2,   113,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,   111,   109,   114,
     2,     2,     2,   115,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   116,     2,   117,    99,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   105,   101,   106,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     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,    94,    95,    96,
    97,    98,   100,   102,   103,   104
};

#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,    63,    64,    66,    68,    71,    73,    75,    77,
    79,    81,    82,    86,    88,    92,    95,    97,   100,   105,
   107,   111,   113,   117,   119,   123,   127,   130,   132,   136,
   138,   142,   144,   151,   153,   155,   156,   158,   160,   164,
   166,   168,   173,   177,   181,   188,   190,   194,   196,   200,
   204,   208,   210,   214,   216,   218,   219,   221,   223,   227,
   231,   235,   237,   239,   243,   246,   248,   254,   255,   257,
   259,   263,   266,   271,   276,   277,   279,   280,   287,   289,
   292,   294,   296,   298,   302,   306,   310,   312,   317,   322,
   327,   334,   341,   343,   348,   353,   355,   359,   361,   365,
   369,   373,   375,   379,   381,   385,   387,   389,   391,   393,
   398,   402,   403,   407,   409,   411,   413,   415,   417,   419,
   421,   423,   425,   429,   431,   433,   435,   437,   440,   442,
   444,   446,   448,   451,   454,   456,   458,   461,   464,   466,
   468,   470,   472,   474,   477,   479,   482,   484,   486,   488,
   490,   492,   494,   496,   498,   500,   502,   504,   506,   508,
   510,   512,   514,   516,   518,   520,   521,   523,   525,   530,
   534,   539,   541,   545,   551,   553,   557,   561,   565,   569,
   574,   578,   580,   582,   586,   590,   594,   598,   600,   602,
   603,   609,   611,   614,   617,   621,   623,   625,   627,   629,
   631,   633,   635,   637,   641,   647,   649,   653,   655,   659,
   660,   662,   664,   666,   668,   670,   672,   676,   681,   683,
   687,   690,   694,   696,   700,   701,   703,   705,   708,   711,
   715,   717,   721,   723,   728,   733,   735,   737,   739,   741,
   742,   744,   747,   752,   753,   755,   757,   759,   760,   762,
   764,   766,   768,   770,   771,   773
};

static const short yyrhs[] = {   119,
     0,   120,     0,   119,   120,     0,   218,   121,    36,   125,
     3,    23,   128,    41,     0,     0,   122,     0,   105,   123,
   106,     0,   105,   106,     0,   124,     0,   123,   124,     0,
   221,     0,   221,   107,     9,   108,     0,     9,     0,     0,
   126,     0,   127,     0,   126,   127,     0,    43,    86,     0,
    54,    86,     0,    22,    86,     0,    45,    55,     0,    14,
    59,     0,     0,   129,     0,   130,     0,   129,   130,     0,
   132,     0,   137,     0,   145,     0,   172,     0,   140,     0,
     0,    40,    14,   131,     0,   181,     0,    56,   133,   109,
     0,    56,    48,     0,   134,     0,   133,   134,     0,   135,
    48,   218,   121,     0,   136,     0,   135,   110,   136,     0,
   218,     0,   218,   105,   106,     0,   221,     0,    44,   138,
   109,     0,    44,    19,   109,     0,    44,   109,     0,   139,
     0,   138,   110,   139,     0,   218,     0,   218,   105,   106,
     0,   221,     0,   218,   141,     3,   105,   142,   106,     0,
   167,     0,   178,     0,     0,   143,     0,   144,     0,   143,
   110,   144,     0,   104,     0,   189,     0,   218,     3,   213,
    89,     0,   218,     3,   165,     0,   218,     3,   155,     0,
   218,   105,   146,   106,     3,   165,     0,   147,     0,   146,
   110,   147,     0,   218,     0,   218,   111,   221,     0,   218,
   111,   218,     0,   178,   111,   221,     0,   149,     0,   148,
   110,   149,     0,   165,     0,   221,     0,     0,   151,     0,
   152,     0,   151,   110,   152,     0,   221,   165,   207,     0,
    32,    70,   165,     0,   164,     0,   154,     0,   153,   110,
   154,     0,   221,   165,     0,   164,     0,    30,   105,   157,
   106,   159,     0,     0,    90,     0,   158,     0,   157,   110,
   158,     0,   170,   207,     0,   170,   165,   156,   207,     0,
   170,   170,   156,   207,     0,     0,   160,     0,     0,    97,
    84,   105,   161,   162,   106,     0,   163,     0,   162,   163,
     0,     4,     0,   170,     0,   104,     0,   104,   112,   175,
     0,   104,   112,   212,     0,   213,   166,   185,     0,   180,
     0,    29,   105,   153,   106,     0,    80,   105,   150,   106,
     0,    81,   105,   150,   106,     0,    80,   185,    70,   220,
   213,   166,     0,    81,   185,    70,   220,   213,   166,     0,
    20,     0,    20,    37,    27,   221,     0,   218,   105,   148,
   106,     0,   167,     0,    58,    70,   167,     0,    13,     0,
    13,   113,   218,     0,   219,   113,   218,     0,    13,   113,
   221,     0,   219,     0,   219,   113,   168,     0,   169,     0,
   168,   113,   169,     0,   171,     0,   171,     0,    15,     0,
    16,     0,   221,   141,     3,   173,     0,   221,   111,   173,
     0,     0,   105,   174,   177,     0,    65,     0,    47,     0,
    88,     0,     5,     0,     7,     0,   176,     0,   212,     0,
   175,     0,   221,     0,   218,   113,   221,     0,     6,     0,
    10,     0,    11,     0,     4,     0,   177,     4,     0,    26,
     0,    65,     0,    78,     0,   179,     0,    69,    83,     0,
    67,    53,     0,    79,     0,    46,     0,    38,    73,     0,
    28,    83,     0,    93,     0,    49,     0,   181,     0,    60,
     0,    42,     0,    24,    83,     0,   178,     0,   179,   209,
     0,    25,     0,    50,     0,    51,     0,    52,     0,    61,
     0,    66,     0,    76,     0,    85,     0,    87,     0,    92,
     0,    94,     0,    95,     0,    96,     0,    68,     0,   101,
     0,   102,     0,    99,     0,   100,     0,    98,     0,     0,
   186,     0,   187,     0,    82,   107,   188,   108,     0,   107,
   188,   108,     0,   187,   107,   188,   108,     0,   189,     0,
   189,   110,   104,     0,   189,   110,   104,   110,   189,     0,
   190,     0,    19,    98,   190,     0,   189,   182,   190,     0,
   189,   183,   190,     0,   190,   184,   190,     0,   193,   107,
   188,   108,     0,   107,   188,   108,     0,   194,     0,   195,
     0,   194,   192,   194,     0,    63,   192,   194,     0,   194,
   192,    62,     0,    63,   192,    62,     0,   201,     0,   196,
     0,     0,    33,    27,   105,   191,   177,     0,   103,     0,
   103,   114,     0,   114,   103,     0,   114,   103,   114,     0,
    82,     0,    48,     0,    47,     0,    88,     0,   212,     0,
   176,     0,   221,     0,   218,     0,    97,    31,   187,     0,
    97,    32,   105,   197,   106,     0,   198,     0,   197,   110,
   198,     0,   104,     0,   221,   185,   199,     0,     0,   200,
     0,    75,     0,    17,     0,    71,     0,   202,     0,   203,
     0,   105,   218,   106,     0,   202,   105,   204,   106,     0,
   205,     0,   204,   110,   205,     0,   115,   206,     0,   115,
   113,   206,     0,   221,     0,   206,   113,   221,     0,     0,
   208,     0,    71,     0,    35,   173,     0,   105,   106,     0,
   105,   210,   106,     0,   211,     0,   210,   110,   211,     0,
   221,     0,   221,   107,   212,   108,     0,   221,   107,   175,
   108,     0,   212,     0,   104,     0,     9,     0,    12,     0,
     0,   214,     0,   215,   217,     0,   116,   216,     9,   117,
     0,     0,    91,     0,    21,     0,    77,     0,     0,    54,
     0,    43,     0,    13,     0,    14,     0,    14,     0,     0,
   221,     0,     8,     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   305,   311,   317,   333,   358,   360,   363,   367,   372,   379,
   387,   392,   396,   405,   407,   415,   419,   427,   431,   434,
   437,   441,   461,   463,   471,   475,   507,   511,   520,   527,
   540,   547,   549,   561,   574,   581,   586,   592,   598,   607,
   613,   619,   626,   632,   640,   644,   647,   654,   660,   666,
   673,   679,   688,   698,   706,   714,   716,   726,   729,   733,
   736,   748,   760,   766,   782,   791,   801,   811,   816,   823,
   830,   840,   846,   852,   856,   879,   881,   883,   889,   895,
   902,   909,   914,   920,   926,   932,   937,   947,   949,   952,
   960,   966,   975,   981,   998,  1000,  1005,  1009,  1014,  1019,
  1025,  1029,  1040,  1049,  1058,  1069,  1091,  1095,  1101,  1107,
  1113,  1123,  1133,  1139,  1153,  1177,  1184,  1198,  1207,  1217,
  1227,  1237,  1245,  1266,  1275,  1284,  1285,  1287,  1294,  1306,
  1316,  1324,  1324,  1329,  1334,  1339,  1344,  1348,  1352,  1355,
  1358,  1363,  1375,  1392,  1397,  1402,  1435,  1445,  1459,  1461,
  1462,  1463,  1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,
  1472,  1478,  1480,  1481,  1484,  1491,  1503,  1505,  1509,  1513,
  1514,  1515,  1516,  1517,  1521,  1522,  1523,  1524,  1528,  1529,
  1536,  1536,  1537,  1537,  1538,  1540,  1542,  1547,  1551,  1560,
  1564,  1569,  1573,  1579,  1589,  1593,  1596,  1599,  1602,  1607,
  1616,  1624,  1630,  1636,  1643,  1651,  1659,  1668,  1671,  1674,
  1675,  1685,  1687,  1688,  1689,  1692,  1696,  1701,  1707,  1712,
  1715,  1718,  1731,  1745,  1749,  1754,  1758,  1763,  1770,  1783,
  1785,  1788,  1792,  1795,  1800,  1804,  1812,  1827,  1833,  1840,
  1853,  1865,  1880,  1884,  1901,  1906,  1909,  1914,  1936,  1941,
  1946,  1952,  1958,  1966,  1974,  1982,  1989,  1999,  2004,  2034,
  2036,  2039,  2046,  2052,  2054,  2055,  2056,  2059,  2061,  2062,
  2065,  2070,  2077,  2084,  2086,  2090
};
#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_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference",
"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_ENCODING_CONTROL",
"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_INSTRUCTIONS","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_EXCEPT","'^'","TOK_INTERSECTION",
"'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'","'}'","'('","')'","';'",
"','","':'","'!'","'.'","'<'","'@'","'['","']'","ParsedGrammar","ModuleList",
"ModuleSpecification","optObjectIdentifier","ObjectIdentifier","ObjectIdentifierBody",
"ObjectIdentifierElement","optModuleSpecificationFlags","ModuleSpecificationFlags",
"ModuleSpecificationFlag","optModuleSpecificationBody","ModuleSpecificationBody",
"ModuleSpecificationElement","@1","ImportsDefinition","ImportsBundleSet","ImportsBundle",
"ImportsList","ImportsElement","ExportsDefinition","ExportsBody","ExportsElement",
"ValueSetDefinition","DefinedTypeRef","optValueSetBody","ValueSetBody","ValueSetElement",
"DataTypeReference","ParameterArgumentList","ParameterArgumentName","ActualParameterList",
"ActualParameter","optComponentTypeLists","ComponentTypeLists","ComponentType",
"AlternativeTypeLists","AlternativeType","ClassDeclaration","optUnique","ClassFieldList",
"ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken",
"ExtensionAndException","Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
"Value","@3","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
"ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec","ConstraintSpec",
"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
};
#endif

static const short yyr1[] = {     0,
   118,   119,   119,   120,   121,   121,   122,   122,   123,   123,
   124,   124,   124,   125,   125,   126,   126,   127,   127,   127,
   127,   127,   128,   128,   129,   129,   130,   130,   130,   130,
   130,   131,   130,   130,   132,   132,   133,   133,   134,   135,
   135,   136,   136,   136,   137,   137,   137,   138,   138,   139,
   139,   139,   140,   141,   141,   142,   142,   143,   143,   144,
   144,   145,   145,   145,   145,   146,   146,   147,   147,   147,
   147,   148,   148,   149,   149,   150,   150,   151,   151,   152,
   152,   152,   153,   153,   154,   154,   155,   156,   156,   157,
   157,   158,   158,   158,   159,   159,   161,   160,   162,   162,
   163,   163,   164,   164,   164,   165,   166,   166,   166,   166,
   166,   166,   166,   166,   166,   166,   166,   167,   167,   167,
   167,   167,   167,   168,   168,   169,   170,   171,   171,   172,
   173,   174,   173,   173,   173,   173,   173,   173,   173,   173,
   173,   175,   175,   176,   176,   176,   177,   177,   178,   178,
   178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
   178,   179,   179,   179,   180,   180,   181,   181,   181,   181,
   181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
   182,   182,   183,   183,   184,   185,   185,   186,   186,   187,
   187,   188,   188,   188,   189,   189,   189,   189,   189,   190,
   190,   190,   190,   190,   190,   190,   190,   190,   190,   191,
   190,   192,   192,   192,   192,   193,   193,   194,   194,   194,
   194,   194,   195,   196,   196,   197,   197,   198,   198,   199,
   199,   200,   200,   200,   201,   201,   202,   203,   204,   204,
   205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
   210,   210,   211,   211,   211,   211,   211,   212,   212,   213,
   213,   214,   215,   216,   216,   216,   216,   217,   217,   217,
   218,   218,   219,   220,   220,   221
};

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,     2,     0,     1,     1,     2,     1,     1,     1,     1,
     1,     0,     3,     1,     3,     2,     1,     2,     4,     1,
     3,     1,     3,     1,     3,     3,     2,     1,     3,     1,
     3,     1,     6,     1,     1,     0,     1,     1,     3,     1,
     1,     4,     3,     3,     6,     1,     3,     1,     3,     3,
     3,     1,     3,     1,     1,     0,     1,     1,     3,     3,
     3,     1,     1,     3,     2,     1,     5,     0,     1,     1,
     3,     2,     4,     4,     0,     1,     0,     6,     1,     2,
     1,     1,     1,     3,     3,     3,     1,     4,     4,     4,
     6,     6,     1,     4,     4,     1,     3,     1,     3,     3,
     3,     1,     3,     1,     3,     1,     1,     1,     1,     4,
     3,     0,     3,     1,     1,     1,     1,     1,     1,     1,
     1,     1,     3,     1,     1,     1,     1,     2,     1,     1,
     1,     1,     2,     2,     1,     1,     2,     2,     1,     1,
     1,     1,     1,     2,     1,     2,     1,     1,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1,     1,     1,     1,     1,     0,     1,     1,     4,     3,
     4,     1,     3,     5,     1,     3,     3,     3,     3,     4,
     3,     1,     1,     3,     3,     3,     3,     1,     1,     0,
     5,     1,     2,     2,     3,     1,     1,     1,     1,     1,
     1,     1,     1,     3,     5,     1,     3,     1,     3,     0,
     1,     1,     1,     1,     1,     1,     3,     4,     1,     3,
     2,     3,     1,     3,     0,     1,     1,     2,     2,     3,
     1,     3,     1,     4,     4,     1,     1,     1,     1,     0,
     1,     2,     4,     0,     1,     1,     1,     0,     1,     1,
     1,     1,     1,     0,     1,     1
};

static const short yydefact[] = {     0,
   271,   272,     1,     2,     5,     3,     0,     0,     6,   276,
    13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
     0,     0,     0,     0,     0,    15,    16,     0,    22,    20,
    18,    21,    19,     0,    17,    12,    23,   167,     0,     0,
   168,   169,   170,     0,   171,   172,   180,   173,   174,   175,
   176,   177,   178,   179,     0,    24,    25,    27,    28,    31,
    29,    30,    34,     0,     0,    32,     0,    47,     0,    48,
    50,    52,    36,     0,    37,     0,    40,    42,    44,     4,
    26,   260,   118,   273,     0,   149,     0,     0,   163,   156,
   160,   162,   150,     0,     0,   151,   155,   159,     0,     0,
    54,    55,   152,   161,   122,     0,    33,    46,    45,     0,
     0,    35,    38,     0,     0,     0,     0,   264,    64,    63,
     0,   261,   268,     0,   164,   158,   157,   154,   153,     0,
    66,     0,    68,     0,     0,     0,    49,    51,     5,    41,
    43,     0,   266,   267,   265,     0,   118,   273,   113,     0,
     0,   186,   186,    62,   186,   116,   165,   152,   107,     0,
   270,   269,   262,   119,   121,     0,     0,     0,     0,    56,
   128,   129,   123,   124,   126,   120,   137,   144,   138,   258,
   145,   146,   259,   135,   134,   136,   132,   130,   141,   139,
   140,     0,   142,    39,     0,    90,   260,   127,     0,     0,
     0,     0,     0,    76,     0,     0,   187,   188,    76,     0,
   106,     0,   166,   260,   260,    67,    71,    70,    69,     0,
     0,   218,   217,     0,   216,   219,     0,    60,     0,     0,
     0,    57,    58,   221,    61,   195,     0,   202,   203,   209,
   208,   235,   236,   220,   223,   222,     0,     0,     0,     0,
    95,     0,     0,   247,    88,    88,    92,   246,     0,   263,
     0,   103,     0,    83,    86,   260,   117,     0,     0,     0,
    77,    78,    82,   260,     0,   192,   274,     0,     0,   274,
   257,   249,     0,   251,   256,   253,     0,    72,    74,    75,
    65,     0,     0,   212,     0,     0,     0,     0,     0,     0,
    53,     0,   183,   184,   181,   182,     0,     0,   185,     0,
     0,     0,     0,   125,   147,   133,   143,   131,     0,    87,
    96,    91,   248,    89,   245,   245,   114,     0,   108,     0,
    85,     0,   260,   109,     0,   245,   190,     0,   260,   275,
     0,   110,   260,   250,     0,     0,   115,   260,   196,   210,
   213,   214,   207,   205,   224,     0,   237,   201,    59,   197,
   198,   199,     0,   206,   204,     0,     0,   239,   148,     0,
    93,    94,   104,   105,   142,    84,   189,    81,    79,    80,
   193,     0,   191,     0,   252,     0,     0,    73,     0,   215,
   228,     0,   226,   186,   200,     0,   241,   243,   238,     0,
    97,     0,   111,   112,   255,   254,   211,   225,     0,   230,
   242,     0,   240,     0,   194,   227,   233,   234,   232,   229,
   231,   244,   101,     0,    99,   102,    98,   100,     0,     0,
     0
};

static const short yydefgoto[] = {   429,
     3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
    56,    57,   107,    58,    74,    75,    76,    77,    59,    69,
    70,    60,   100,   231,   232,   233,    61,   130,   131,   287,
   288,   270,   271,   272,   263,   264,   119,   325,   195,   196,
   320,   321,   414,   424,   425,   273,   289,   155,   156,   173,
   174,   197,   198,    62,   188,   248,   189,   234,   316,   157,
   103,   159,   104,   307,   308,   310,   206,   207,   208,   275,
   276,   236,   389,   296,   237,   238,   239,   240,   392,   393,
   420,   421,   241,   242,   243,   367,   368,   397,   257,   258,
   213,   283,   284,   244,   259,   122,   123,   146,   163,   245,
   105,   339,   246
};

static const short yypact[] = {   166,
-32768,-32768,   166,-32768,   -69,-32768,    32,    14,-32768,-32768,
-32768,-32768,    60,-32768,   -62,   132,-32768,-32768,    55,    42,
   -13,    58,    65,    64,   125,   132,-32768,    96,-32768,-32768,
-32768,-32768,-32768,   135,-32768,-32768,   507,-32768,   158,     9,
-32768,-32768,-32768,    38,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   122,   507,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   357,   736,-32768,   100,-32768,    80,-32768,
   146,-32768,-32768,    34,-32768,   -17,-32768,   147,-32768,-32768,
-32768,    -4,   140,-32768,   178,-32768,   184,   159,-32768,-32768,
-32768,-32768,-32768,   215,   188,-32768,-32768,-32768,   811,   269,
-32768,-32768,-32768,-32768,   170,   282,-32768,-32768,-32768,   168,
   180,-32768,-32768,   166,   168,   182,   186,     8,-32768,-32768,
   584,-32768,    44,   168,-32768,-32768,-32768,-32768,-32768,   -10,
-32768,   189,   191,   198,   225,   465,-32768,-32768,   -69,-32768,
-32768,   204,-32768,-32768,-32768,   280,    -8,   199,   256,   200,
   238,   -25,   -24,-32768,   -44,-32768,-32768,   205,-32768,   206,
-32768,-32768,-32768,-32768,-32768,   309,   811,   305,   168,   202,
-32768,-32768,   201,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   207,   208,-32768,    50,-32768,    39,-32768,   209,   290,
    12,   217,   211,     7,   268,   252,-32768,   218,     7,   254,
-32768,    53,-32768,     5,   213,-32768,-32768,-32768,-32768,   229,
   303,-32768,-32768,    -1,-32768,-32768,   216,-32768,   166,   268,
   226,   224,-32768,-32768,   156,   237,   230,    -1,-32768,-32768,
-32768,   231,-32768,-32768,-32768,-32768,   204,   336,   305,   465,
   245,   204,   465,-32768,   253,   253,-32768,-32768,   661,-32768,
   305,   233,    81,-32768,-32768,   213,-32768,   268,   276,   241,
   242,-32768,-32768,   213,   243,    68,   305,   268,   247,   305,
-32768,-32768,    82,-32768,-32768,   248,    89,-32768,-32768,-32768,
-32768,   455,   249,   244,   258,   286,   250,   259,   257,   260,
-32768,   202,-32768,-32768,-32768,-32768,   455,   455,-32768,   455,
   268,   448,   251,-32768,-32768,   363,-32768,-32768,   285,-32768,
-32768,-32768,-32768,-32768,     0,     0,-32768,   214,-32768,    12,
-32768,   264,   213,-32768,     7,     0,-32768,   272,   213,-32768,
   270,-32768,   213,-32768,    67,   214,-32768,     5,-32768,-32768,
-32768,   263,-32768,-32768,   218,    19,-32768,-32768,-32768,-32768,
-32768,-32768,   271,-32768,-32768,     6,   119,-32768,-32768,   275,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   274,   661,-32768,   661,-32768,   278,   279,-32768,   336,-32768,
-32768,   127,-32768,   -44,-32768,   305,   277,-32768,-32768,   251,
-32768,   268,-32768,-32768,-32768,-32768,   363,-32768,    19,    17,
   277,   305,-32768,   149,   156,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,    28,-32768,-32768,-32768,-32768,   388,   391,
-32768
};

static const short yypgoto[] = {-32768,
-32768,   389,   255,-32768,-32768,   380,-32768,-32768,   370,-32768,
-32768,   341,-32768,-32768,-32768,   327,-32768,   289,-32768,-32768,
   300,-32768,   346,-32768,-32768,   110,-32768,-32768,   246,-32768,
    66,   210,-32768,    85,-32768,    86,-32768,   165,-32768,   163,
-32768,-32768,-32768,-32768,     3,  -189,   -73,  -186,   -54,-32768,
   181,  -190,  -114,-32768,   -47,-32768,  -251,  -118,    40,   -40,
  -120,-32768,    33,-32768,-32768,-32768,  -150,-32768,   133,  -164,
  -166,  -201,-32768,   193,-32768,  -218,-32768,-32768,-32768,    23,
-32768,-32768,-32768,-32768,-32768,-32768,    37,    43,  -152,-32768,
-32768,-32768,    93,  -128,   -80,-32768,-32768,-32768,-32768,    16,
-32768,   154,    -7
};


#define	YYLAST		907


static const short yytable[] = {    15,
   158,   121,   210,   235,   211,    15,   256,   191,   120,   101,
   101,   265,    10,    10,    10,     5,    10,   190,     5,    10,
   175,     1,     2,   102,   102,   117,    10,    67,   143,    65,
   114,   423,    72,   417,   253,     7,    79,   203,   269,    10,
    11,    10,   171,   172,    19,    10,     1,     2,    65,    16,
     1,     2,    64,   171,   172,    71,   203,   203,   132,    78,
    10,   180,   205,    28,   183,   300,    79,    10,    11,    63,
   254,    64,    30,   253,    10,   180,   373,   354,   183,   204,
   209,   205,   205,   285,   144,    73,   161,   418,    63,    78,
   349,   419,   115,   365,   386,   166,  -271,   162,   145,   167,
    29,   294,    72,   332,   124,   360,   361,    79,   362,   254,
   262,   118,   295,   341,   133,   262,   165,    68,   396,    32,
   118,   191,   391,   255,   191,    71,   132,    34,   193,   139,
    78,   190,   175,   427,   190,   235,   160,    12,   158,   164,
   265,   291,   112,    31,  -245,    20,   363,   267,  -245,    33,
   176,   192,   423,    21,   118,   251,   281,    37,   282,   252,
   217,   219,    80,   171,   172,    17,   303,   304,   305,   306,
   281,    66,   371,   372,    22,    10,    23,   338,     1,     2,
     1,     2,   133,   380,   218,    24,   329,   344,   109,   110,
   330,   345,   331,   266,   347,   403,   274,   404,   348,   374,
   336,   274,   318,    36,   286,   323,   290,   178,   108,    10,
   180,   181,   182,   183,     1,     2,   285,   387,   171,   172,
   220,    10,   180,   426,   399,   183,     1,     2,   400,    83,
    84,   127,   408,   426,   221,   415,   409,     1,     2,   171,
   172,   317,   193,   410,   299,   193,   297,   298,   222,   223,
   111,   116,   124,   327,   303,   304,   305,   306,   382,   378,
   125,   158,   384,   158,   224,   192,   126,   128,   192,   340,
   129,   134,   340,   178,   160,    10,   180,   181,   182,   183,
     1,     2,   135,   225,   136,   138,   220,   141,   199,   226,
   142,   178,   200,    10,   180,   181,   182,   183,   227,   168,
   221,   169,   170,  -272,   201,   228,   229,   202,   230,   212,
   214,   215,    10,   247,   222,   223,   261,   268,   250,   249,
   375,   277,   266,   280,   278,   260,   292,   274,   118,   293,
   224,   301,   222,   302,   309,   313,   311,   286,   375,   315,
   290,   319,   324,   192,   328,   333,   334,   353,   394,   225,
   337,   335,   342,   350,   346,   226,   205,   351,   398,    82,
   352,   192,   357,   356,   227,   366,   369,   358,   370,    83,
    84,   377,   229,   226,   230,   381,   390,   383,   395,   401,
    85,    38,    86,   402,    87,   405,   406,   430,   398,   412,
   431,     6,    18,   194,    88,    35,    81,   160,    89,   160,
   113,   394,    90,   140,   422,    91,    41,    42,    43,   137,
   106,   359,   216,   388,   322,   376,    92,    45,   279,   379,
   326,    93,    46,    94,    47,    95,   428,   314,   407,   355,
   312,   416,    48,   343,    96,    97,   413,   385,   411,     0,
     0,    49,     0,    50,     0,     0,     0,     0,    51,    98,
    52,    53,    54,   178,     0,    10,   180,   181,   182,   183,
   178,    99,    10,   180,   181,   182,   183,     1,     2,   177,
   178,   179,    10,   180,   181,   182,   183,     1,     2,     0,
     0,     0,     0,     0,     0,     0,     0,   221,     0,     0,
     0,     0,     0,     0,   222,     0,     0,     0,     0,     0,
     0,   222,   223,     0,     0,     0,     0,     0,     0,   364,
     0,   184,     0,     0,    10,     0,     0,   224,     0,     1,
     2,     0,     0,     0,     0,     0,     0,     0,     0,   185,
     0,    38,     0,     0,     0,   226,   225,     0,     0,     0,
     0,     0,   226,     0,     0,     0,    39,     0,     0,     0,
    40,   227,   186,     0,     0,     0,    41,    42,    43,   229,
     0,   230,    44,     0,     0,     0,     0,    45,     0,   187,
     0,     0,    46,     0,    47,     0,     0,     0,     0,     0,
     0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
     0,    49,     0,    50,     0,     0,   147,   148,    51,     0,
    52,    53,    54,   149,     0,     0,     0,    85,    38,    86,
     0,    87,   150,     0,     0,     0,     0,     0,     0,     0,
     0,    88,     0,     0,     0,    89,     0,     0,     0,    90,
     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
     0,   151,     0,    92,    45,     0,     0,     0,    93,    46,
    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
     0,    96,    97,   152,   153,     0,     0,     0,    49,     0,
    50,     0,   154,   147,   148,    51,    98,    52,    53,    54,
   149,     0,     0,     0,    85,    38,    86,     0,    87,   150,
     0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     0,     0,    89,     0,     0,     0,    90,     0,     0,    91,
    41,    42,    43,     0,     0,     0,     0,     0,   151,     0,
    92,    45,     0,     0,     0,    93,    46,    94,    47,    95,
     0,     0,     0,     0,     0,     0,    48,     0,    96,    97,
   152,   153,     0,     0,     0,    49,     0,    50,    83,    84,
     0,     0,    51,    98,    52,    53,    54,     0,     0,    85,
    38,    86,     0,    87,     0,     0,     0,     0,     0,     0,
     0,     0,     0,    88,     0,     0,     0,    89,     0,     0,
     0,    90,     0,     0,    91,    41,    42,    43,     0,     0,
     0,     0,     0,     0,     0,    92,    45,     0,     0,     0,
    93,    46,    94,    47,    95,     0,     0,     0,     0,     0,
     0,    48,     0,    96,    97,     0,     0,     0,     0,     0,
    49,     0,    50,     1,     2,     0,     0,    51,    98,    52,
    53,    54,     0,     0,    85,    38,    86,     0,    87,     0,
     0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     0,     0,    89,     0,     0,     0,    90,     0,     0,    91,
    41,    42,    43,     0,     0,     0,     0,     0,     0,     0,
    92,    45,     0,     0,     0,    93,    46,    94,    47,    95,
     0,     0,     0,     0,     0,     0,    48,     0,    96,    97,
     0,     0,     0,     0,     0,    49,     0,    50,     0,     0,
     0,     0,    51,    98,    52,    53,    54
};

static const short yycheck[] = {     7,
   121,    82,   153,   170,   155,    13,   197,   136,    82,    64,
    65,   201,     8,     8,     8,     0,     8,   136,     3,     8,
   135,    13,    14,    64,    65,    30,     8,    19,    21,    37,
    48,     4,    40,    17,    35,   105,    44,    82,    32,     8,
     9,     8,    15,    16,   107,     8,    13,    14,    56,    36,
    13,    14,    37,    15,    16,    40,    82,    82,    99,    44,
     8,     9,   107,     9,    12,   230,    74,     8,     9,    37,
    71,    56,    86,    35,     8,     9,   328,   296,    12,   105,
   105,   107,   107,   212,    77,    48,    43,    71,    56,    74,
   292,    75,   110,   312,   346,   106,   105,    54,    91,   110,
    59,   103,   110,   268,   113,   307,   308,   115,   310,    71,
   104,   116,   114,   278,    99,   104,   124,   109,   113,    55,
   116,   250,   104,   197,   253,   110,   167,     3,   136,   114,
   115,   250,   247,   106,   253,   302,   121,   106,   259,   124,
   330,   215,   109,    86,   106,    14,   311,   202,   110,    86,
   135,   136,     4,    22,   116,   106,   104,    23,   106,   110,
   168,   169,    41,    15,    16,   106,    99,   100,   101,   102,
   104,    14,   325,   326,    43,     8,    45,   110,    13,    14,
    13,    14,   167,   336,   169,    54,   106,   106,   109,   110,
   110,   110,   266,   201,   106,   382,   204,   384,   110,   328,
   274,   209,   250,   108,   212,   253,   214,     6,   109,     8,
     9,    10,    11,    12,    13,    14,   345,   346,    15,    16,
    19,     8,     9,   414,   106,    12,    13,    14,   110,    13,
    14,    73,   106,   424,    33,   402,   110,    13,    14,    15,
    16,   249,   250,   394,   229,   253,    31,    32,    47,    48,
   105,   105,   113,   261,    99,   100,   101,   102,   339,   333,
    83,   382,   343,   384,    63,   250,    83,    53,   253,   277,
    83,     3,   280,     6,   259,     8,     9,    10,    11,    12,
    13,    14,   113,    82,     3,   106,    19,   106,     9,    88,
   105,     6,    37,     8,     9,    10,    11,    12,    97,   111,
    33,   111,   105,   105,   105,   104,   105,    70,   107,   105,
   105,     3,     8,   113,    47,    48,    27,   107,   111,   113,
   328,    70,   330,    70,   107,   117,    98,   335,   116,    27,
    63,   106,    47,   110,    98,   105,   107,   345,   346,     4,
   348,    97,    90,   328,   112,    70,   106,    62,   356,    82,
   108,   110,   106,   105,   107,    88,   107,   114,   366,     3,
   103,   346,   106,   105,    97,   115,     4,   108,    84,    13,
    14,   108,   105,    88,   107,   104,   114,   108,   108,   105,
    24,    25,    26,   110,    28,   108,   108,     0,   396,   113,
     0,     3,    13,   139,    38,    26,    56,   382,    42,   384,
    74,   409,    46,   115,   412,    49,    50,    51,    52,   110,
    65,   302,   167,   348,   252,   330,    60,    61,   209,   335,
   256,    65,    66,    67,    68,    69,   424,   247,   389,   297,
   238,   409,    76,   280,    78,    79,   400,   345,   396,    -1,
    -1,    85,    -1,    87,    -1,    -1,    -1,    -1,    92,    93,
    94,    95,    96,     6,    -1,     8,     9,    10,    11,    12,
     6,   105,     8,     9,    10,    11,    12,    13,    14,     5,
     6,     7,     8,     9,    10,    11,    12,    13,    14,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,
    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
    -1,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    62,
    -1,    47,    -1,    -1,     8,    -1,    -1,    63,    -1,    13,
    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
    -1,    25,    -1,    -1,    -1,    88,    82,    -1,    -1,    -1,
    -1,    -1,    88,    -1,    -1,    -1,    40,    -1,    -1,    -1,
    44,    97,    88,    -1,    -1,    -1,    50,    51,    52,   105,
    -1,   107,    56,    -1,    -1,    -1,    -1,    61,    -1,   105,
    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    85,    -1,    87,    -1,    -1,    13,    14,    92,    -1,
    94,    95,    96,    20,    -1,    -1,    -1,    24,    25,    26,
    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,
    -1,    58,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    -1,    78,    79,    80,    81,    -1,    -1,    -1,    85,    -1,
    87,    -1,    89,    13,    14,    92,    93,    94,    95,    96,
    20,    -1,    -1,    -1,    24,    25,    26,    -1,    28,    29,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,
    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,    49,
    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    58,    -1,
    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,    79,
    80,    81,    -1,    -1,    -1,    85,    -1,    87,    13,    14,
    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    24,
    25,    26,    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,
    -1,    46,    -1,    -1,    49,    50,    51,    52,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    -1,    76,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,
    85,    -1,    87,    13,    14,    -1,    -1,    92,    93,    94,
    95,    96,    -1,    -1,    24,    25,    26,    -1,    28,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,
    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,    49,
    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,    79,
    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    -1,    -1,
    -1,    -1,    92,    93,    94,    95,    96
};
/* -*-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
#else
#define YYSTACK_ALLOC malloc
#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.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	goto yyacceptlab
#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.
   Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(token, value) \
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    { yychar = (token), yylval = (value);			\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
while (0)

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#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

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
				/*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
				/*  symbol				*/
#endif

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	*/

#ifndef	YYINITDEPTH
#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).  */

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#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

/* 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;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#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 *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   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 */

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
#ifdef YYPARSE_PARAM
int yyparse (void *);
#else
int yyparse (void);
#endif
#endif

int
yyparse(YYPARSE_PARAM_ARG)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  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;

#ifdef YYPURE
  int yychar;
  YYSTYPE yylval;
  int yynerrs;
#ifdef YYLSP_NEEDED
  YYLTYPE yylloc;
#endif
#endif

  YYSTYPE yyval;		/*  the variable used to return		*/
				/*  semantic values from the action	*/
				/*  routines				*/

  int yylen;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Starting parse\n");
#endif

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;		/* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss - 1;
  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:

  *++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;

#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

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* 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;
	}
      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
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto yybackup;
 yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      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
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || 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 == YYFLAG)
	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

  /* 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--;

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

      fprintf (stderr, "Reducing via rule %d (line %d), ",
	       yyn, 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]]);
    }
#endif


  switch (yyn) {

case 1:
#line 306 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 312 "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:
#line 317 "asn1p_y.y"
{
		yyval.a_grammar = yyvsp[-1].a_grammar;
		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
	;
    break;}
case 4:
#line 338 "asn1p_y.y"
{

		if(yyvsp[-1].a_module) {
			yyval.a_module = yyvsp[-1].a_module;
		} else {
			/* There's a chance that a module is just plain empty */
			yyval.a_module = asn1p_module_new();
		}
		checkmem(yyval.a_module);

		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:
#line 359 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 360 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 364 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 367 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 373 "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:
#line 379 "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:
#line 388 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 392 "asn1p_y.y"
{		/* iso(1) */
		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
		yyval.a_oid_arc.number = yyvsp[-1].a_int;
	;
    break;}
case 13:
#line 396 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 406 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 407 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 416 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 419 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 428 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 431 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 434 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 437 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 441 "asn1p_y.y"
{
		/* X.680Amd1 specifies TAG and XER */
		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
		 	yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
		} else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
		 	yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
		} else {
			fprintf(stderr,
				"WARNING: %s INSTRUCTIONS at line %d: "
				"Unrecognized encoding reference\n",
				yyvsp[-1].tv_str, yylineno);
		 	yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
		}
		free(yyvsp[-1].tv_str);
	;
    break;}
case 23:
#line 462 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 463 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 472 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 475 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;

		/* Behave well when one of them is skipped. */
		if(!(yyvsp[-1].a_module)) {
			if(yyvsp[0].a_module) yyval.a_module = yyvsp[0].a_module;
			break;
		}

#ifdef	MY_IMPORT
#error	MY_IMPORT DEFINED ELSEWHERE!
#endif
#define	MY_IMPORT(foo,field)	do {				\
		while(TQ_FIRST(&(yyvsp[0].a_module->foo))) {			\
			TQ_ADD(&(yyval.a_module->foo),			\
				TQ_REMOVE(&(yyvsp[0].a_module->foo), field),	\
				field);				\
		}						\
		assert(TQ_FIRST(&(yyvsp[0].a_module->foo)) == 0);		\
	} while(0)

		MY_IMPORT(imports, xp_next);
		MY_IMPORT(exports, xp_next);
		MY_IMPORT(members, next);
#undef	MY_IMPORT

	;
    break;}
case 27:
#line 508 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 511 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		if(yyvsp[0].a_xports) {
			TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
		} else {
			/* "EXPORTS ALL;" ? */
		}
	;
    break;}
case 29:
#line 520 "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:
#line 527 "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:
#line 540 "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 32:
#line 548 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 549 "asn1p_y.y"
{
		fprintf(stderr,
			"WARNING: ENCODING-CONTROL %s "
			"specification at line %d ignored\n",
			yyvsp[-1].tv_str, yylineno);
		free(yyvsp[-1].tv_str);
		yyval.a_module = 0;
	;
    break;}
case 34:
#line 561 "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 35:
#line 575 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 36:
#line 581 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 587 "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 38:
#line 592 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
	;
    break;}
case 39:
#line 599 "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 40:
#line 608 "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 41:
#line 613 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 42:
#line 620 "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 43:
#line 626 "asn1p_y.y"
{		/* Completely equivalent to above */
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 44:
#line 632 "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 45:
#line 641 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 46:
#line 644 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 47:
#line 647 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 48:
#line 655 "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 49:
#line 660 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 50:
#line 667 "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 51:
#line 673 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
	;
    break;}
case 52:
#line 679 "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 53:
#line 689 "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 54:
#line 699 "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 55:
#line 706 "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 56:
#line 715 "asn1p_y.y"
{ ;
    break;}
case 57:
#line 716 "asn1p_y.y"
{
	;
    break;}
case 58:
#line 727 "asn1p_y.y"
{
	;
    break;}
case 59:
#line 729 "asn1p_y.y"
{
	;
    break;}
case 60:
#line 734 "asn1p_y.y"
{
	;
    break;}
case 61:
#line 736 "asn1p_y.y"
{
	;
    break;}
case 62:
#line 752 "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 63:
#line 760 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		assert(yyval.a_expr->expr_type);
		assert(yyval.a_expr->meta_type);
	;
    break;}
case 64:
#line 766 "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 65:
#line 782 "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 66:
#line 792 "asn1p_y.y"
{
		int ret;
		yyval.a_plist = asn1p_paramlist_new(yylineno);
		checkmem(yyval.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 67:
#line 801 "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 68:
#line 812 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 69:
#line 816 "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 70:
#line 823 "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 71:
#line 830 "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 72:
#line 841 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 73:
#line 846 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 74:
#line 853 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 75:
#line 856 "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 76:
#line 880 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
    break;}
case 77:
#line 881 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
    break;}
case 78:
#line 884 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 79:
#line 889 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 80:
#line 896 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 81:
#line 902 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
		yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 82:
#line 909 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 83:
#line 915 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 84:
#line 920 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 85:
#line 927 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
	;
    break;}
case 86:
#line 932 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 87:
#line 938 "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 88:
#line 948 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 89:
#line 949 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 90:
#line 953 "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;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 91:
#line 960 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 92:
#line 967 "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 93:
#line 975 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
		yyval.a_expr->marker = yyvsp[0].a_marker;
		yyval.a_expr->unique = yyvsp[-1].a_int;
	;
    break;}
case 94:
#line 981 "asn1p_y.y"
{
		int ret;
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
		yyval.a_expr->reference = asn1p_ref_new(yylineno);
		checkmem(yyval.a_expr->reference);
		ret = asn1p_ref_add_component(yyval.a_expr->reference,
				yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
		checkmem(ret == 0);
		yyval.a_expr->expr_type = A1TC_CLASSFIELD;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->marker = yyvsp[0].a_marker;
		yyval.a_expr->unique = yyvsp[-1].a_int;
	;
    break;}
case 95:
#line 999 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 96:
#line 1000 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 97:
#line 1007 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 98:
#line 1009 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 99:
#line 1015 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 100:
#line 1019 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 101:
#line 1026 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
	;
    break;}
case 102:
#line 1029 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		int ret;
		ref = asn1p_ref_new(yylineno);
		checkmem(ref);
		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 103:
#line 1041 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 104:
#line 1049 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->value = yyvsp[0].a_value;
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 105:
#line 1058 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		yyval.a_expr->value = yyvsp[0].a_value;
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 106:
#line 1070 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		yyval.a_expr->tag = yyvsp[-2].a_tag;
		/*
		 * Outer constraint for SEQUENCE OF and SET OF applies
		 * to the inner type.
		 */
		if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
		|| yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
			assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
			TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
		} else {
			if(yyval.a_expr->constraints) {
				assert(!yyvsp[-1].a_expr);
			} else {
				yyval.a_expr->constraints = yyvsp[0].a_constr;
			}
		}
	;
    break;}
case 107:
#line 1092 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 108:
#line 1095 "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 109:
#line 1101 "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 110:
#line 1107 "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 111:
#line 1113 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->constraints = yyvsp[-4].a_constr;
		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
		yyval.a_expr->meta_type = AMT_TYPE;
		yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
		yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 112:
#line 1123 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->constraints = yyvsp[-4].a_constr;
		yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
		yyval.a_expr->meta_type = AMT_TYPE;
		yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
		yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 113:
#line 1133 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = ASN_TYPE_ANY;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 114:
#line 1139 "asn1p_y.y"
{
		int ret;
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->reference = asn1p_ref_new(yylineno);
		ret = asn1p_ref_add_component(yyval.a_expr->reference,
			yyvsp[0].tv_str, RLT_lowercase);
		checkmem(ret == 0);
		yyval.a_expr->expr_type = ASN_TYPE_ANY;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 115:
#line 1153 "asn1p_y.y"
{
		int ret;
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->expr_type == 0);
		assert(yyval.a_expr->meta_type == 0);
		assert(yyval.a_expr->reference == 0);
		yyval.a_expr->reference = asn1p_ref_new(yylineno);
		checkmem(yyval.a_expr->reference);
		ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		free(yyvsp[-3].tv_str);
		yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 116:
#line 1177 "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 117:
#line 1184 "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 118:
#line 1199 "asn1p_y.y"
{
		int ret;
		yyval.a_ref = asn1p_ref_new(yylineno);
		checkmem(yyval.a_ref);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		free(yyvsp[0].tv_str);
	;
    break;}
case 119:
#line 1207 "asn1p_y.y"
{
		int ret;
		yyval.a_ref = asn1p_ref_new(yylineno);
		checkmem(yyval.a_ref);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		free(yyvsp[-2].tv_str);
	;
    break;}
case 120:
#line 1217 "asn1p_y.y"
{
		int ret;
		yyval.a_ref = asn1p_ref_new(yylineno);
		checkmem(yyval.a_ref);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		free(yyvsp[-2].tv_str);
	;
    break;}
case 121:
#line 1227 "asn1p_y.y"
{
		int ret;
		yyval.a_ref = asn1p_ref_new(yylineno);
		checkmem(yyval.a_ref);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
		checkmem(ret == 0);
		free(yyvsp[-2].tv_str);
	;
    break;}
case 122:
#line 1237 "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 123:
#line 1245 "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);
		free(yyvsp[-2].tv_str);
		checkmem(ret == 0);
		/*
		 * Move the last element infront.
		 */
		{
			struct asn1p_ref_component_s tmp_comp;
			tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
			memmove(&yyval.a_ref->components[1],
				&yyval.a_ref->components[0],
				sizeof(yyval.a_ref->components[0])
				* (yyval.a_ref->comp_count - 1));
			yyval.a_ref->components[0] = tmp_comp;
		}
	;
    break;}
case 124:
#line 1267 "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 125:
#line 1275 "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 128:
#line 1289 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 129:
#line 1294 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 130:
#line 1307 "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 131:
#line 1317 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
		yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
	;
    break;}
case 132:
#line 1324 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 133:
#line 1324 "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 134:
#line 1329 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_NULL;
	;
    break;}
case 135:
#line 1334 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 136:
#line 1339 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 137:
#line 1344 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 138:
#line 1348 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 139:
#line 1352 "asn1p_y.y"
{
		yyval.a_value = yyval.a_value;
	;
    break;}
case 140:
#line 1355 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 141:
#line 1358 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 142:
#line 1364 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		int ret;
		ref = asn1p_ref_new(yylineno);
		checkmem(ref);
		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
		checkmem(ret == 0);
		yyval.a_value = asn1p_value_fromref(ref, 0);
		checkmem(yyval.a_value);
		free(yyvsp[0].tv_str);
	;
    break;}
case 143:
#line 1375 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		int ret;
		ref = asn1p_ref_new(yylineno);
		checkmem(ref);
		ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
		checkmem(ret == 0);
		yyval.a_value = asn1p_value_fromref(ref, 0);
		checkmem(yyval.a_value);
		free(yyvsp[-2].tv_str);
		free(yyvsp[0].tv_str);
	;
    break;}
case 144:
#line 1393 "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 145:
#line 1397 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TUPLE;
	;
    break;}
case 146:
#line 1402 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_QUADRUPLE;
	;
    break;}
case 147:
#line 1436 "asn1p_y.y"
{
		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
		checkmem(yyval.tv_opaque.buf);
		yyval.tv_opaque.buf[0] = '{';
		memcpy(yyval.tv_opaque.buf + 1, 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 148:
#line 1445 "asn1p_y.y"
{
		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
		char *p = malloc(newsize + 1);
		checkmem(p);
		memcpy(p         , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
		memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
		p[newsize] = '\0';
		free(yyvsp[-1].tv_opaque.buf);
		free(yyvsp[0].tv_opaque.buf);
		yyval.tv_opaque.buf = p;
		yyval.tv_opaque.len = newsize;
	;
    break;}
case 149:
#line 1460 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 150:
#line 1461 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 151:
#line 1462 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 152:
#line 1463 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 153:
#line 1464 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 154:
#line 1465 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 155:
#line 1466 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 156:
#line 1467 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 157:
#line 1468 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 158:
#line 1469 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 159:
#line 1470 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 160:
#line 1471 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 161:
#line 1472 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 162:
#line 1479 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 163:
#line 1480 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 164:
#line 1481 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 165:
#line 1485 "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 166:
#line 1491 "asn1p_y.y"
{
		if(yyvsp[0].a_expr) {
			yyval.a_expr = yyvsp[0].a_expr;
		} else {
			yyval.a_expr = asn1p_expr_new(yylineno);
			checkmem(yyval.a_expr);
		}
		yyval.a_expr->expr_type = yyvsp[-1].a_type;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 167:
#line 1504 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 168:
#line 1505 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
	;
    break;}
case 169:
#line 1509 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
	;
    break;}
case 170:
#line 1513 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 171:
#line 1514 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 172:
#line 1515 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 173:
#line 1516 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 174:
#line 1517 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		fprintf(stderr, "WARNING: T61String is not fully supported\n");
	;
    break;}
case 175:
#line 1521 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 176:
#line 1522 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 177:
#line 1523 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 178:
#line 1524 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
	;
    break;}
case 179:
#line 1528 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 180:
#line 1529 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 186:
#line 1541 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 187:
#line 1542 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 188:
#line 1548 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 189:
#line 1551 "asn1p_y.y"
{
		/*
		 * This is a special case, for compatibility purposes.
		 * It goes without parentheses.
		 */
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
	;
    break;}
case 190:
#line 1561 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 191:
#line 1564 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 192:
#line 1570 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 193:
#line 1573 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		ct->type = ACT_EL_EXT;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
	;
    break;}
case 194:
#line 1579 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		ct->type = ACT_EL_EXT;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
		ct = yyval.a_constr;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
	;
    break;}
case 195:
#line 1590 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 196:
#line 1593 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
	;
    break;}
case 197:
#line 1596 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 198:
#line 1599 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 199:
#line 1602 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 200:
#line 1608 "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 201:
#line 1616 "asn1p_y.y"
{
		int ret;
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_CA_SET;
		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
		checkmem(ret == 0);
	;
    break;}
case 202:
#line 1624 "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 203:
#line 1630 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_EL_TYPE;
		yyval.a_constr->containedSubtype = yyvsp[0].a_value;
	;
    break;}
case 204:
#line 1636 "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 205:
#line 1643 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = yyvsp[-1].a_ctype;
		yyval.a_constr->range_start = asn1p_value_fromint(-123);
		yyval.a_constr->range_stop = yyvsp[0].a_value;
		yyval.a_constr->range_start->type = ATV_MIN;
	;
    break;}
case 206:
#line 1651 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = yyvsp[-1].a_ctype;
		yyval.a_constr->range_start = yyvsp[-2].a_value;
		yyval.a_constr->range_stop = asn1p_value_fromint(321);
		yyval.a_constr->range_stop->type = ATV_MAX;
	;
    break;}
case 207:
#line 1659 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = yyvsp[-1].a_ctype;
		yyval.a_constr->range_start = asn1p_value_fromint(-123);
		yyval.a_constr->range_stop = asn1p_value_fromint(321);
		yyval.a_constr->range_start->type = ATV_MIN;
		yyval.a_constr->range_stop->type = ATV_MAX;
	;
    break;}
case 208:
#line 1668 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 209:
#line 1671 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 210:
#line 1675 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 211:
#line 1675 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_CT_CTDBY;
		yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
		checkmem(yyval.a_constr->value);
		yyval.a_constr->value->type = ATV_UNPARSED;
	;
    break;}
case 212:
#line 1686 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 213:
#line 1687 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 214:
#line 1688 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 215:
#line 1689 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 216:
#line 1693 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 217:
#line 1696 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 218:
#line 1702 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 219:
#line 1707 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 220:
#line 1712 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 221:
#line 1715 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 222:
#line 1718 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		int ret;
		ref = asn1p_ref_new(yylineno);
		checkmem(ref);
		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
		checkmem(ret == 0);
		yyval.a_value = asn1p_value_fromref(ref, 0);
		checkmem(yyval.a_value);
		free(yyvsp[0].tv_str);
	;
    break;}
case 223:
#line 1732 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		int ret;
		ref = asn1p_ref_new(yylineno);
		checkmem(ref);
		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		yyval.a_value = asn1p_value_fromref(ref, 0);
		checkmem(yyval.a_value);
		free(yyvsp[0].tv_str);
	;
    break;}
case 224:
#line 1746 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
	;
    break;}
case 225:
#line 1749 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 226:
#line 1755 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 227:
#line 1758 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 228:
#line 1764 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_EL_EXT;
		yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
	;
    break;}
case 229:
#line 1770 "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;
		if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 230:
#line 1784 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 231:
#line 1785 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 232:
#line 1789 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 233:
#line 1792 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 234:
#line 1795 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 235:
#line 1801 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 236:
#line 1804 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 237:
#line 1813 "asn1p_y.y"
{
		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
		asn1p_constraint_t *ct;
		int ret;
		ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
		checkmem(ret == 0);
		ct = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		ct->type = ACT_EL_VALUE;
		ct->value = asn1p_value_fromref(ref, 0);
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
	;
    break;}
case 238:
#line 1828 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 239:
#line 1834 "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 240:
#line 1840 "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 241:
#line 1854 "asn1p_y.y"
{
		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
		int ret;
		*p = '@';
		strcpy(p + 1, yyvsp[0].tv_str);
		yyval.a_ref = asn1p_ref_new(yylineno);
		ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
		checkmem(ret == 0);
		free(p);
		free(yyvsp[0].tv_str);
	;
    break;}
case 242:
#line 1865 "asn1p_y.y"
{
		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
		int ret;
		p[0] = '@';
		p[1] = '.';
		strcpy(p + 2, yyvsp[0].tv_str);
		yyval.a_ref = asn1p_ref_new(yylineno);
		ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
		checkmem(ret == 0);
		free(p);
		free(yyvsp[0].tv_str);
	;
    break;}
case 243:
#line 1881 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 244:
#line 1884 "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);
		memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
		yyval.tv_str[l1] = '.';
		memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
		yyval.tv_str[l1 + 1 + l3] = '\0';
	;
    break;}
case 245:
#line 1902 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_NOMARK;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 246:
#line 1906 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 247:
#line 1910 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_OPTIONAL;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 248:
#line 1914 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_DEFAULT;
		yyval.a_marker.default_value = yyvsp[0].a_value;
	;
    break;}
case 249:
#line 1937 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 250:
#line 1941 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 251:
#line 1947 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 252:
#line 1952 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 253:
#line 1959 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
		yyval.a_expr->meta_type = AMT_VALUE;
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
	;
    break;}
case 254:
#line 1966 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
		yyval.a_expr->meta_type = AMT_VALUE;
		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
		yyval.a_expr->value = yyvsp[-1].a_value;
	;
    break;}
case 255:
#line 1974 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
		yyval.a_expr->meta_type = AMT_VALUE;
		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
		yyval.a_expr->value = yyvsp[-1].a_value;
	;
    break;}
case 256:
#line 1982 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
		yyval.a_expr->meta_type = AMT_VALUE;
		yyval.a_expr->value = yyvsp[0].a_value;
	;
    break;}
case 257:
#line 1989 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_VALUE;
	;
    break;}
case 258:
#line 2000 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 259:
#line 2004 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 260:
#line 2035 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 261:
#line 2036 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 262:
#line 2040 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
	;
    break;}
case 263:
#line 2047 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-2].a_tag;
		yyval.a_tag.tag_value = yyvsp[-1].a_int;
	;
    break;}
case 264:
#line 2053 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
    break;}
case 265:
#line 2054 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
    break;}
case 266:
#line 2055 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
    break;}
case 267:
#line 2056 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
    break;}
case 268:
#line 2060 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
    break;}
case 269:
#line 2061 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
    break;}
case 270:
#line 2062 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
    break;}
case 271:
#line 2066 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 272:
#line 2070 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 273:
#line 2078 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 274:
#line 2085 "asn1p_y.y"
{ yyval.tv_str = 0; ;
    break;}
case 275:
#line 2086 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 276:
#line 2091 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (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.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;

yyerrlab:   /* here on detecting error */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {
	      strcpy(msg, "parse error");

	      if (count < 5)
		{
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (ssize_t)(sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)
		      {
			strcat(msg, count == 0 ? ", expecting `" : " or `");
			strcat(msg, yytname[x]);
			strcat(msg, "'");
			count++;
		      }
		}
	      yyerror(msg);
	      free(msg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exceeded");
	}
      else
#endif /* YYERROR_VERBOSE */
	yyerror("parse error");
    }

  goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

  if (yyerrstatus == 3)
    {
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
	YYABORT;

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      yychar = YYEMPTY;
    }

  /* Else will try to reuse lookahead token
     after shifting the error token.  */

  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)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "Error: state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (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

  *++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);
#endif
    }
  return 1;
}
#line 2097 "asn1p_y.y"



/*
 * Convert Xstring ('0101'B or '5'H) to the binary vector.
 */
static asn1p_value_t *
_convert_bitstring2binary(char *str, int base) {
	asn1p_value_t *val;
	int slen;
	int memlen;
	int baselen;
	int bits;
	uint8_t *binary_vector;
	uint8_t *bv_ptr;
	uint8_t cur_val;

	assert(str);
	assert(str[0] == '\'');

	switch(base) {
	case 'B':
		baselen = 1;
		break;
	case 'H':
		baselen = 4;
		break;
	default:
		assert(base == 'B' || base == 'H');
		errno = EINVAL;
		return NULL;
	}

	slen = strlen(str);
	assert(str[slen - 1] == base);
	assert(str[slen - 2] == '\'');

	memlen = slen / (8 / baselen);	/* Conservative estimate */

	bv_ptr = binary_vector = malloc(memlen + 1);
	if(bv_ptr == NULL)
		/* ENOMEM */
		return NULL;

	cur_val = 0;
	bits = 0;
	while(*(++str) != '\'') {
		switch(baselen) {
		case 1:
			switch(*str) {
			case '1':
				cur_val |= 1 << (7 - (bits % 8));
			case '0':
				break;
			default:
				assert(!"_y UNREACH1");
			case ' ': case '\r': case '\n':
				continue;
			}
			break;
		case 4:
			switch(*str) {
			case '0': case '1': case '2': case '3': case '4':
			case '5': case '6': case '7': case '8': case '9':
				cur_val |= (*str - '0') << (4 - (bits % 8));
				break;
			case 'A': case 'B': case 'C':
			case 'D': case 'E': case 'F':
				cur_val |= ((*str - 'A') + 10)
					<< (4 - (bits % 8));
				break;
			default:
				assert(!"_y UNREACH2");
			case ' ': case '\r': case '\n':
				continue;
			}
			break;
		}

		bits += baselen;
		if((bits % 8) == 0) {
			*bv_ptr++ = cur_val;
			cur_val = 0;
		}
	}

	*bv_ptr = cur_val;
	assert((bv_ptr - binary_vector) <= memlen);

	val = asn1p_value_frombits(binary_vector, bits, 0);
	if(val == NULL) {
		free(binary_vector);
	}

	return val;
}

extern char *asn1p_text;

int
yyerror(const char *msg) {
	fprintf(stderr,
		"ASN.1 grammar parse error "
		"near line %d (token \"%s\"): %s\n",
		yylineno, asn1p_text, msg);
	return -1;
}


