
/*  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 YYPARSE_PARAM_TYPE	void **
#define YYERROR_VERBOSE

int yylex(void);
int yyerror(const char *msg);
#ifdef	YYBYACC
int yyparse(void **param);	/* byacc does not produce a prototype */
#endif
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;

/*
 * Process modifiers as <asn1c:pointer>
 */
extern int asn1p_as_pointer;
static asn1p_expr_t *asn1p_last_type;
static void apply_nonstd_mods(void);

/*
 * This temporary variable is used to solve the shortcomings of 1-lookahead
 * parser.
 */
static struct AssignedIdentifier *saved_aid;

static asn1p_value_t *_convert_bitstring2binary(char *str, int base);
static void _fixup_anonymous_identifier(asn1p_expr_t *expr);

#define	checkmem(ptr)	do {						\
		if(!(ptr))						\
		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 74 "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 */
	struct AssignedIdentifier a_aid;	/* Assigned Identifier */
	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		434
#define	YYFLAG		-32768
#define	YYNTBASE	118

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

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,   101,
   103,   108,   110,   114,   116,   120,   122,   126,   130,   133,
   135,   139,   141,   145,   147,   148,   155,   157,   159,   164,
   168,   172,   179,   181,   185,   187,   191,   195,   199,   201,
   205,   207,   209,   210,   212,   214,   218,   222,   226,   228,
   231,   233,   237,   240,   242,   244,   250,   251,   253,   255,
   259,   262,   267,   272,   273,   275,   276,   283,   285,   288,
   290,   292,   294,   298,   302,   306,   307,   310,   312,   313,
   319,   320,   326,   327,   333,   340,   347,   349,   354,   359,
   361,   365,   367,   371,   375,   379,   381,   385,   387,   391,
   393,   395,   397,   399,   404,   408,   409,   413,   415,   417,
   419,   421,   423,   425,   427,   429,   431,   435,   437,   439,
   441,   443,   446,   448,   450,   452,   454,   457,   460,   462,
   464,   467,   470,   472,   474,   476,   478,   480,   483,   485,
   488,   490,   492,   494,   496,   498,   500,   502,   504,   506,
   508,   510,   512,   514,   516,   518,   520,   522,   524,   526,
   527,   529,   531,   536,   540,   545,   547,   551,   557,   559,
   563,   567,   571,   575,   580,   584,   586,   588,   592,   596,
   600,   604,   606,   608,   609,   615,   617,   620,   623,   627,
   629,   631,   633,   635,   637,   639,   641,   643,   647,   653,
   655,   659,   661,   665,   666,   668,   670,   672,   674,   676,
   678,   682,   687,   689,   693,   696,   700,   702,   706,   707,
   709,   711,   714,   717,   721,   723,   727,   729,   734,   739,
   741,   743,   745,   747,   748,   750,   753,   758,   759,   761,
   763,   765,   766,   768,   770,   772,   774,   776,   777,   779
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   321,   327,   333,   349,   374,   376,   379,   383,   388,   395,
   403,   408,   412,   421,   423,   431,   435,   443,   447,   450,
   453,   457,   477,   479,   487,   491,   523,   527,   536,   543,
   556,   563,   565,   577,   590,   601,   606,   612,   618,   620,
   623,   634,   640,   646,   653,   659,   667,   671,   674,   681,
   687,   693,   700,   706,   715,   717,   726,   734,   748,   760,
   766,   782,   791,   801,   811,   816,   823,   830,   840,   846,
   852,   856,   879,   881,   883,   889,   895,   902,   909,   912,
   919,   925,   931,   937,   940,   946,   956,   958,   961,   969,
   975,   984,   990,  1007,  1009,  1014,  1018,  1023,  1028,  1034,
  1038,  1049,  1058,  1067,  1078,  1101,  1102,  1106,  1110,  1110,
  1116,  1116,  1122,  1122,  1128,  1138,  1148,  1154,  1168,  1192,
  1199,  1213,  1222,  1232,  1242,  1252,  1260,  1281,  1290,  1299,
  1300,  1302,  1309,  1321,  1331,  1339,  1339,  1344,  1349,  1354,
  1359,  1363,  1367,  1370,  1373,  1378,  1390,  1407,  1412,  1417,
  1450,  1460,  1474,  1476,  1477,  1478,  1479,  1480,  1481,  1482,
  1483,  1484,  1485,  1486,  1487,  1493,  1495,  1496,  1499,  1506,
  1518,  1520,  1524,  1528,  1529,  1530,  1531,  1532,  1536,  1537,
  1538,  1539,  1543,  1544,  1551,  1551,  1552,  1552,  1553,  1555,
  1557,  1562,  1566,  1575,  1579,  1584,  1588,  1594,  1604,  1608,
  1611,  1614,  1617,  1622,  1631,  1639,  1645,  1651,  1658,  1666,
  1674,  1683,  1686,  1689,  1690,  1700,  1702,  1703,  1704,  1707,
  1711,  1716,  1722,  1727,  1730,  1733,  1746,  1760,  1764,  1769,
  1773,  1778,  1785,  1798,  1800,  1803,  1807,  1810,  1815,  1819,
  1827,  1842,  1848,  1855,  1868,  1880,  1895,  1899,  1916,  1921,
  1924,  1929,  1951,  1956,  1961,  1967,  1973,  1981,  1989,  1997,
  2004,  2014,  2019,  2049,  2051,  2054,  2061,  2067,  2069,  2070,
  2071,  2074,  2076,  2077,  2080,  2085,  2092,  2099,  2101,  2106
};
#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","AssignedIdentifier",
"ImportsBundle","ImportsList","ImportsElement","ExportsDefinition","ExportsBody",
"ExportsElement","ValueSetDefinition","@2","DefinedTypeRef","DataTypeReference",
"ParameterArgumentList","ParameterArgumentName","ActualParameterList","ActualParameter",
"optComponentTypeLists","ComponentTypeLists","ComponentType","AlternativeTypeLists",
"AlternativeType","ClassDeclaration","optUnique","ClassFieldList","ClassField",
"optWithSyntax","WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken",
"ExtensionAndException","Type","TypeDeclaration","@4","TypeDeclarationSet","@5",
"@6","@7","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@8","DefinedValue",
"RestrictedCharacterStringValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
"@9","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,   134,
   135,   136,   136,   137,   137,   137,   138,   138,   138,   139,
   139,   140,   140,   140,   142,   141,   143,   143,   144,   144,
   144,   144,   145,   145,   146,   146,   146,   146,   147,   147,
   148,   148,   149,   149,   150,   150,   151,   151,   151,   151,
   152,   152,   153,   153,   153,   154,   155,   155,   156,   156,
   157,   157,   157,   158,   158,   160,   159,   161,   161,   162,
   162,   163,   163,   163,   164,   166,   165,   167,   168,   167,
   169,   167,   170,   167,   167,   167,   167,   167,   167,   167,
   167,   171,   171,   171,   171,   171,   171,   172,   172,   173,
   174,   175,   175,   176,   177,   178,   177,   177,   177,   177,
   177,   177,   177,   177,   177,   179,   179,   180,   180,   180,
   181,   181,   182,   182,   182,   182,   182,   182,   182,   182,
   182,   182,   182,   182,   182,   183,   183,   183,   184,   184,
   185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
   185,   185,   185,   185,   186,   186,   187,   187,   188,   189,
   189,   190,   190,   191,   191,   192,   192,   192,   193,   193,
   193,   193,   193,   194,   194,   194,   194,   194,   194,   194,
   194,   194,   194,   195,   194,   196,   196,   196,   196,   197,
   197,   198,   198,   198,   198,   198,   199,   200,   200,   201,
   201,   202,   202,   203,   203,   204,   204,   204,   205,   205,
   206,   207,   208,   208,   209,   209,   210,   210,   211,   211,
   212,   212,   213,   213,   214,   214,   215,   215,   215,   215,
   215,   216,   216,   217,   217,   218,   219,   220,   220,   220,
   220,   221,   221,   221,   222,   222,   223,   224,   224,   225
};

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

static const short yydefgoto[] = {   432,
     3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
    56,    57,   107,    58,    74,   184,    75,    76,    77,    59,
    69,    70,    60,   213,   100,    61,   130,   131,   327,   328,
   312,   313,   314,   305,   306,   119,   277,   185,   186,   272,
   273,   406,   420,   421,   315,   316,   148,   149,   202,   360,
   363,   369,   101,   162,   163,   187,   188,    62,   177,   215,
   178,   239,   266,   102,   103,   206,   104,   295,   296,   298,
   192,   193,   194,   240,   241,   242,   377,   284,   243,   244,
   245,   246,   380,   381,   427,   428,   247,   248,   249,   354,
   355,   386,   224,   225,   262,   323,   324,   250,   226,   122,
   123,   146,   152,   251,   105,   367,   252
};

static const short yypact[] = {   194,
-32768,-32768,   194,-32768,   -46,-32768,    47,    35,-32768,-32768,
-32768,-32768,    55,-32768,   -34,   133,-32768,-32768,    69,    34,
    14,    26,    71,    53,   170,   133,-32768,    80,-32768,-32768,
-32768,-32768,-32768,   167,-32768,-32768,   422,-32768,   208,     4,
-32768,-32768,-32768,    66,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   188,   422,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   347,   574,-32768,   126,-32768,    49,-32768,
   138,-32768,-32768,    33,-32768,   -21,-32768,   146,-32768,-32768,
-32768,   -17,   140,-32768,   190,-32768,   199,   204,-32768,-32768,
-32768,-32768,-32768,   232,   203,-32768,-32768,-32768,   649,   285,
-32768,-32768,-32768,-32768,   176,   289,-32768,-32768,-32768,   198,
   189,-32768,-32768,   194,   198,   191,   200,     5,-32768,-32768,
   215,-32768,   -18,   198,-32768,-32768,-32768,-32768,-32768,    28,
-32768,   195,   196,   205,   256,   312,-32768,-32768,   -46,-32768,
-32768,   260,-32768,-32768,-32768,   299,-32768,   -10,   499,-32768,
-32768,-32768,-32768,-32768,   306,   649,   304,   198,-32768,-32768,
-32768,   202,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   214,   217,-32768,-32768,    65,-32768,    27,-32768,   212,   209,
   186,-32768,-32768,   223,    67,   226,   295,   229,   265,   -22,
   -13,-32768,-32768,-32768,   233,-32768,   236,   221,-32768,-32768,
-32768,-32768,   336,   260,   336,   304,   312,   245,   260,   312,
-32768,   253,   253,-32768,-32768,-32768,-32768,   186,   246,   318,
-32768,-32768,    90,-32768,-32768,   235,   194,   186,-32768,   239,
   145,   255,   242,    90,-32768,-32768,-32768,   249,-32768,-32768,
-32768,-32768,   186,   328,     7,   266,     3,   292,     3,   293,
    42,-32768,     2,-32768,-32768,   360,-32768,   360,-32768,-32768,
   283,-32768,-32768,-32768,-32768,-32768,    -1,    -1,   261,   251,
   269,   262,   267,   154,   273,   276,   277,   274,-32768,-32768,
-32768,-32768,-32768,   280,   251,   251,-32768,   251,   186,   448,
   271,   279,   304,   278,   281,-32768,-32768,-32768,   221,-32768,
   322,-32768,   291,-32768,-32768,    -1,   221,   304,-32768,   304,
-32768,-32768,    75,-32768,-32768,   288,   108,-32768,-32768,-32768,
-32768,   298,-32768,-32768,-32768,-32768,-32768,-32768,   290,-32768,
-32768,   223,    11,-32768,-32768,   300,-32768,-32768,-32768,   297,
-32768,-32768,     8,   111,-32768,-32768,-32768,   218,     7,   282,
-32768,   221,   303,     6,-32768,    -1,   221,-32768,   305,   221,
-32768,    36,   218,-32768,     2,-32768,   336,-32768,-32768,   114,
-32768,   -10,   186,-32768,   304,   307,-32768,-32768,   271,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   310,   311,-32768,   187,   360,-32768,    11,    15,
   201,   307,   304,-32768,-32768,-32768,-32768,-32768,-32768,    24,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   421,   424,-32768
};

static const short yypgoto[] = {-32768,
-32768,   419,-32768,   294,-32768,   414,-32768,-32768,   402,-32768,
-32768,   373,-32768,-32768,-32768,-32768,   357,-32768,   323,-32768,
-32768,   327,-32768,-32768,   379,-32768,-32768,   308,-32768,    70,
   192,-32768,    82,-32768,    89,-32768,   227,-32768,   230,-32768,
-32768,-32768,-32768,    41,  -235,   -81,  -370,-32768,-32768,-32768,
-32768,-32768,  -140,-32768,   241,  -183,  -113,-32768,  -115,-32768,
  -292,   -68,  -210,   -24,   314,-32768,    20,-32768,-32768,-32768,
  -193,-32768,   168,   -84,    84,  -112,-32768,   224,-32768,  -196,
-32768,-32768,-32768,    56,-32768,-32768,-32768,-32768,-32768,-32768,
    81,    86,  -225,-32768,-32768,-32768,    97,  -133,   -80,-32768,
-32768,-32768,-32768,    21,-32768,   155,    -7
};


#define	YYLAST		745


static const short yytable[] = {    15,
   120,   121,   180,   223,   268,    15,   258,   260,   203,    10,
    10,    10,   117,    10,    10,    10,     1,     2,    10,   307,
     5,   164,    67,     5,   150,   143,   114,   419,   415,    65,
   416,   424,    72,   220,   311,   151,    79,   311,   160,   161,
    10,   160,   161,    10,   169,     1,     2,   172,    65,    10,
   169,   333,   334,   172,    10,    11,    63,    64,     7,   190,
    71,   220,    10,    11,    78,   390,    79,   179,   190,   221,
    16,   190,    19,    10,   132,    63,    64,    28,     1,     2,
   403,   144,   257,   180,   191,   425,   180,   341,   115,   426,
   365,   259,    29,   191,    78,   145,   191,   221,   118,    30,
   164,   270,    72,   352,   275,   222,   304,    79,   -73,   304,
   304,    31,    68,    73,   379,   310,   154,   118,   118,   133,
   385,   118,   118,   307,   204,    32,   264,   325,   182,   430,
    71,   132,  -249,   155,   139,    78,  -249,   156,    33,   321,
   398,   112,   118,   279,   153,   321,    20,   322,   179,   210,
   212,   179,    12,   288,    21,   165,   181,   109,   110,   167,
    17,    10,   169,   170,   171,   172,   407,   336,   302,   207,
   218,  -275,    34,   308,   219,    22,   133,    23,   211,   124,
   371,   329,   347,   348,   372,   349,    24,    36,   410,    37,
   419,   167,   282,    10,   169,   170,   171,   172,     1,     2,
   231,   160,   161,   283,   229,    10,     1,     2,   269,   182,
     1,     2,   182,   374,   350,   340,   388,   375,   230,   408,
   389,    66,   422,   409,   391,    10,   169,   361,    80,   172,
     1,     2,   231,   232,   108,   366,   422,   181,   325,   404,
   181,   235,   111,   290,   291,   292,   293,   309,   233,   317,
   116,   317,   124,   326,   294,   330,   167,   287,    10,   169,
   170,   171,   172,     1,     2,   285,   286,   234,     1,     2,
   160,   161,   125,   235,   160,   161,   127,   308,    83,    84,
   395,   126,   236,   230,   128,   129,   399,   134,   135,   401,
   237,   136,   238,   329,   138,   357,   141,   231,   232,   290,
   291,   292,   293,   147,   142,   157,   158,   189,   208,   159,
   368,    10,   368,   233,   214,   228,   166,   167,   168,    10,
   169,   170,   171,   172,     1,     2,   216,   217,   227,   253,
  -276,   254,   234,   255,   256,   382,   118,   261,   235,   265,
   263,   271,   276,   280,   281,   387,   289,   236,   299,    82,
   392,   309,   297,   301,   303,   237,   317,   238,   173,    83,
    84,   318,   320,   331,   326,   392,   332,   330,   335,   339,
    85,    38,    86,   337,    87,   338,   174,   387,   181,   191,
   343,   345,   344,   346,    88,   353,   356,   394,    89,   358,
   359,   362,    90,   181,   373,    91,    41,    42,    43,   175,
   364,   382,   376,   378,   384,   429,    92,    45,   396,   383,
   400,    93,    46,    94,    47,    95,   176,   417,   418,   413,
   433,     6,    48,   434,    96,    97,    18,    35,    81,    10,
   113,    49,   183,    50,     1,     2,   137,   140,    51,    98,
    52,    53,    54,   106,   405,   397,    38,   393,   274,   278,
   319,    99,   342,   167,   267,    10,   169,   170,   171,   172,
   431,    39,   205,   209,   423,    40,   411,   300,   402,   414,
   412,    41,    42,    43,   370,     0,     0,    44,     0,     0,
     0,     0,    45,     0,     0,     0,     0,    46,     0,    47,
     0,     0,     0,     0,   231,     0,     0,    48,     0,     0,
     0,     0,     0,     0,     0,     0,    49,     0,    50,   351,
     0,   195,   196,    51,     0,    52,    53,    54,   197,     0,
     0,     0,    85,    38,    86,     0,    87,   198,     0,     0,
     0,     0,     0,     0,     0,   235,    88,     0,     0,     0,
    89,     0,     0,     0,    90,     0,     0,    91,    41,    42,
    43,     0,     0,     0,     0,     0,   199,     0,    92,    45,
     0,     0,     0,    93,    46,    94,    47,    95,     0,     0,
     0,     0,     0,     0,    48,     0,    96,    97,   200,   201,
     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,
    82,    82,   136,   187,   215,    13,   200,   201,   149,     8,
     8,     8,    30,     8,     8,     8,    13,    14,     8,   255,
     0,   135,    19,     3,    43,    21,    48,     4,   399,    37,
   401,    17,    40,    35,    32,    54,    44,    32,    15,    16,
     8,    15,    16,     8,     9,    13,    14,    12,    56,     8,
     9,   277,   278,    12,     8,     9,    37,    37,   105,    82,
    40,    35,     8,     9,    44,   358,    74,   136,    82,    71,
    36,    82,   107,     8,    99,    56,    56,     9,    13,    14,
   373,    77,   105,   217,   107,    71,   220,   284,   110,    75,
   316,   105,    59,   107,    74,    91,   107,    71,   116,    86,
   214,   217,   110,   300,   220,   187,   104,   115,   106,   104,
   104,    86,   109,    48,   104,   256,   124,   116,   116,    99,
   113,   116,   116,   359,   149,    55,   208,   261,   136,   106,
   110,   156,   106,   106,   114,   115,   110,   110,    86,   104,
   366,   109,   116,   228,   124,   104,    14,   106,   217,   157,
   158,   220,   106,   238,    22,   135,   136,   109,   110,     6,
   106,     8,     9,    10,    11,    12,   377,   280,   253,   149,
   106,   105,     3,   255,   110,    43,   156,    45,   158,   113,
   106,   263,   295,   296,   110,   298,    54,   108,   382,    23,
     4,     6,   103,     8,     9,    10,    11,    12,    13,    14,
    47,    15,    16,   114,    19,     8,    13,    14,   216,   217,
    13,    14,   220,   106,   299,    62,   106,   110,    33,   106,
   110,    14,   406,   110,   358,     8,     9,   309,    41,    12,
    13,    14,    47,    48,   109,   317,   420,   217,   372,   373,
   220,    88,   105,    99,   100,   101,   102,   255,    63,   257,
   105,   259,   113,   261,   110,   263,     6,   237,     8,     9,
    10,    11,    12,    13,    14,    31,    32,    82,    13,    14,
    15,    16,    83,    88,    15,    16,    73,   359,    13,    14,
   362,    83,    97,    33,    53,    83,   367,     3,   113,   370,
   105,     3,   107,   375,   106,   303,   106,    47,    48,    99,
   100,   101,   102,    89,   105,   111,   111,     9,     3,   105,
   318,     8,   320,    63,   113,   107,     5,     6,     7,     8,
     9,    10,    11,    12,    13,    14,   113,   111,   117,   107,
   105,    37,    82,   105,    70,   343,   116,   105,    88,     4,
   105,    97,    90,    98,    27,   353,   108,    97,   107,     3,
   358,   359,    98,   105,    27,   105,   364,   107,    47,    13,
    14,    70,    70,     4,   372,   373,    84,   375,   108,   103,
    24,    25,    26,   105,    28,   114,    65,   385,   358,   107,
   105,   108,   106,   104,    38,   115,   108,   106,    42,   112,
   110,    70,    46,   373,   107,    49,    50,    51,    52,    88,
   110,   409,   105,   114,   108,   413,    60,    61,   106,   110,
   106,    65,    66,    67,    68,    69,   105,   108,   108,   113,
     0,     3,    76,     0,    78,    79,    13,    26,    56,     8,
    74,    85,   139,    87,    13,    14,   110,   115,    92,    93,
    94,    95,    96,    65,   375,   364,    25,   359,   219,   223,
   259,   105,   285,     6,   214,     8,     9,    10,    11,    12,
   420,    40,   149,   156,   409,    44,   383,   244,   372,   389,
   385,    50,    51,    52,   320,    -1,    -1,    56,    -1,    -1,
    -1,    -1,    61,    -1,    -1,    -1,    -1,    66,    -1,    68,
    -1,    -1,    -1,    -1,    47,    -1,    -1,    76,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    62,
    -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,    88,    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 322 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 328 "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 333 "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 354 "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->ModuleName = 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 375 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 376 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 380 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 383 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 389 "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 395 "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 404 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 408 "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 412 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 422 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 423 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 432 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 435 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 444 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 447 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 450 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 453 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 457 "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 478 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 479 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 488 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 491 "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 524 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 527 "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 536 "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 543 "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 556 "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 564 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 565 "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 577 "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 591 "asn1p_y.y"
{
		if(!saved_aid && 0)
			return yyerror("Unterminated IMPORTS FROM, "
					"expected semicolon ';'");
		saved_aid = 0;
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 36:
#line 601 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 607 "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 612 "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 619 "asn1p_y.y"
{ memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
    break;}
case 40:
#line 620 "asn1p_y.y"
{ yyval.a_aid.oid = yyvsp[0].a_oid; ;
    break;}
case 41:
#line 624 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-3].a_xports;
		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
		yyval.a_xports->identifier = yyvsp[0].a_aid;
		/* This stupid thing is used for look-back hack. */
		saved_aid = yyval.a_xports->identifier.oid ? 0 : &(yyval.a_xports->identifier);
		checkmem(yyval.a_xports);
	;
    break;}
case 42:
#line 635 "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 43:
#line 640 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 44:
#line 647 "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 653 "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 46:
#line 659 "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 47:
#line 668 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 48:
#line 671 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 49:
#line 674 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 50:
#line 682 "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 51:
#line 687 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 52:
#line 694 "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 700 "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 54:
#line 706 "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 55:
#line 717 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 56:
#line 717 "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 ValueSet body
	;
    break;}
case 57:
#line 727 "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 58:
#line 734 "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 59:
#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 60:
#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 61:
#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 62:
#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 63:
#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 64:
#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 65:
#line 812 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 66:
#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 67:
#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 68:
#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 69:
#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 70:
#line 846 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 71:
#line 853 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 72:
#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 73:
#line 880 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
    break;}
case 74:
#line 881 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
    break;}
case 75:
#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 76:
#line 889 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 77:
#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 78:
#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 79:
#line 909 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 80:
#line 912 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		yyval.a_expr->marker = yyvsp[0].a_marker;
		_fixup_anonymous_identifier(yyval.a_expr);
	;
    break;}
case 81:
#line 920 "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 82:
#line 925 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 83:
#line 932 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
	;
    break;}
case 84:
#line 937 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 85:
#line 940 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		_fixup_anonymous_identifier(yyval.a_expr);
	;
    break;}
case 86:
#line 947 "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 87:
#line 957 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 88:
#line 958 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 89:
#line 962 "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 90:
#line 969 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 91:
#line 976 "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 92:
#line 984 "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 93:
#line 990 "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 94:
#line 1008 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 95:
#line 1009 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 96:
#line 1016 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 97:
#line 1018 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 98:
#line 1024 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 99:
#line 1028 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 100:
#line 1035 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
	;
    break;}
case 101:
#line 1038 "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 102:
#line 1050 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 103:
#line 1058 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->value = yyvsp[0].a_value;
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 104:
#line 1067 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = strdup("...");
		yyval.a_expr->value = yyvsp[0].a_value;
		checkmem(yyval.a_expr->Identifier);
		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 105:
#line 1079 "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;
			}
		}
		asn1p_last_type = yyval.a_expr;
	;
    break;}
case 106:
#line 1102 "asn1p_y.y"
{apply_nonstd_mods();;
    break;}
case 107:
#line 1102 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 108:
#line 1107 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 109:
#line 1110 "asn1p_y.y"
{apply_nonstd_mods();;
    break;}
case 110:
#line 1110 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].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 111:
#line 1116 "asn1p_y.y"
{apply_nonstd_mods();;
    break;}
case 112:
#line 1116 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].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 113:
#line 1122 "asn1p_y.y"
{apply_nonstd_mods();;
    break;}
case 114:
#line 1122 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].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 115:
#line 1128 "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 116:
#line 1138 "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 117:
#line 1148 "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 118:
#line 1154 "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 119:
#line 1168 "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 120:
#line 1192 "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 121:
#line 1199 "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 122:
#line 1214 "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 123:
#line 1222 "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 124:
#line 1232 "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 125:
#line 1242 "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 126:
#line 1252 "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 127:
#line 1260 "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 128:
#line 1282 "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 129:
#line 1290 "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 132:
#line 1304 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 133:
#line 1309 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 134:
#line 1322 "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 135:
#line 1332 "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 136:
#line 1339 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 137:
#line 1339 "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 138:
#line 1344 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_NULL;
	;
    break;}
case 139:
#line 1349 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 140:
#line 1354 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 141:
#line 1359 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 142:
#line 1363 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 143:
#line 1367 "asn1p_y.y"
{
		yyval.a_value = yyval.a_value;
	;
    break;}
case 144:
#line 1370 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 145:
#line 1373 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 146:
#line 1379 "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 147:
#line 1390 "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 148:
#line 1408 "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 149:
#line 1412 "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 150:
#line 1417 "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 151:
#line 1451 "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 152:
#line 1460 "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 153:
#line 1475 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 154:
#line 1476 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 155:
#line 1477 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 156:
#line 1478 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 157:
#line 1479 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 158:
#line 1480 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 159:
#line 1481 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 160:
#line 1482 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 161:
#line 1483 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 162:
#line 1484 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 163:
#line 1485 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 164:
#line 1486 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 165:
#line 1487 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 166:
#line 1494 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 167:
#line 1495 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 168:
#line 1496 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 169:
#line 1500 "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 170:
#line 1506 "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 171:
#line 1519 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 172:
#line 1520 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
	;
    break;}
case 173:
#line 1524 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
	;
    break;}
case 174:
#line 1528 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 175:
#line 1529 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 176:
#line 1530 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 177:
#line 1531 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 178:
#line 1532 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		fprintf(stderr, "WARNING: T61String is not fully supported\n");
	;
    break;}
case 179:
#line 1536 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 180:
#line 1537 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 181:
#line 1538 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 182:
#line 1539 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
	;
    break;}
case 183:
#line 1543 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 184:
#line 1544 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 190:
#line 1556 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 191:
#line 1557 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 192:
#line 1563 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 193:
#line 1566 "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 194:
#line 1576 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 195:
#line 1579 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 196:
#line 1585 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 197:
#line 1588 "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 198:
#line 1594 "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 199:
#line 1605 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 200:
#line 1608 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
	;
    break;}
case 201:
#line 1611 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 202:
#line 1614 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 203:
#line 1617 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 204:
#line 1623 "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 205:
#line 1631 "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 206:
#line 1639 "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 207:
#line 1645 "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 208:
#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 = yyvsp[0].a_value;
	;
    break;}
case 209:
#line 1658 "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 210:
#line 1666 "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 211:
#line 1674 "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 212:
#line 1683 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 213:
#line 1686 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 214:
#line 1690 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 215:
#line 1690 "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 216:
#line 1701 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 217:
#line 1702 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 218:
#line 1703 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 219:
#line 1704 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 220:
#line 1708 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 221:
#line 1711 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 222:
#line 1717 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 223:
#line 1722 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 224:
#line 1727 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 225:
#line 1730 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 226:
#line 1733 "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 227:
#line 1747 "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 228:
#line 1761 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
	;
    break;}
case 229:
#line 1764 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 230:
#line 1770 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 231:
#line 1773 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 232:
#line 1779 "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 233:
#line 1785 "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 234:
#line 1799 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 235:
#line 1800 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 236:
#line 1804 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 237:
#line 1807 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 238:
#line 1810 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 239:
#line 1816 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 240:
#line 1819 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 241:
#line 1828 "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 242:
#line 1843 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 243:
#line 1849 "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 244:
#line 1855 "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 245:
#line 1869 "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 246:
#line 1880 "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 247:
#line 1896 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 248:
#line 1899 "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 249:
#line 1917 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_NOMARK;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 250:
#line 1921 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 251:
#line 1925 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_OPTIONAL;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 252:
#line 1929 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_DEFAULT;
		yyval.a_marker.default_value = yyvsp[0].a_value;
	;
    break;}
case 253:
#line 1952 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 254:
#line 1956 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 255:
#line 1962 "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 256:
#line 1967 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 257:
#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[0].tv_str;
	;
    break;}
case 258:
#line 1981 "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 259:
#line 1989 "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 260:
#line 1997 "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 261:
#line 2004 "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 262:
#line 2015 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 263:
#line 2019 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 264:
#line 2050 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 265:
#line 2051 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 266:
#line 2055 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
	;
    break;}
case 267:
#line 2062 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-2].a_tag;
		yyval.a_tag.tag_value = yyvsp[-1].a_int;
	;
    break;}
case 268:
#line 2068 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
    break;}
case 269:
#line 2069 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
    break;}
case 270:
#line 2070 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
    break;}
case 271:
#line 2071 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
    break;}
case 272:
#line 2075 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
    break;}
case 273:
#line 2076 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
    break;}
case 274:
#line 2077 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
    break;}
case 275:
#line 2081 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 276:
#line 2085 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 277:
#line 2093 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 278:
#line 2100 "asn1p_y.y"
{ yyval.tv_str = 0; ;
    break;}
case 279:
#line 2101 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 280:
#line 2107 "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 < (int)(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 < (int)(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 2113 "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;
}

/*
 * For unnamed types (used in old X.208 compliant modules)
 * generate some sort of interim names, to not to force human being to fix
 * the specification's compliance to modern ASN.1 standards.
 */
static void
_fixup_anonymous_identifier(asn1p_expr_t *expr) {
	char *p;
	assert(expr->Identifier == 0);

	/*
	 * Try to figure out the type name
	 * without going too much into details
	 */
	expr->Identifier = ASN_EXPR_TYPE2STR(expr->expr_type);
	if(expr->reference && expr->reference->comp_count > 0)
		expr->Identifier = expr->reference->components[0].name;

	fprintf(stderr,
		"WARNING: Line %d: expected lower-case member identifier, "
		"found an unnamed %s.\n"
		"WARNING: Obsolete X.208 syntax detected, "
		"please give the member a name.\n",
		yylineno, expr->Identifier ? expr->Identifier : "type");

	if(!expr->Identifier)
		expr->Identifier = "unnamed";
	expr->Identifier = strdup(expr->Identifier);
	assert(expr->Identifier);
	/* Make a lowercase identifier from the type name */
	for(p = expr->Identifier; *p; p++) {
		switch(*p) {
		case 'A' ... 'Z': *p += 32; break;
		case ' ': *p = '_'; break;
		case '-': *p = '_'; break;
		}
	}
	fprintf(stderr, "NOTE: Assigning temporary identifier \"%s\". "
			"Name clash may occur later.\n",
		expr->Identifier);
}

static void
apply_nonstd_mods() {
	if(!asn1p_as_pointer) return;
	asn1p_as_pointer = 0;

	if(asn1p_last_type) {
		asn1p_last_type->marker.flags |= EM_INDIRECT;
		fprintf(stderr, "INFO: Modifier <asn1c:pointer> "
			"applied to \"%s\" at line %d\n",
			asn1p_last_type->Identifier
				?  asn1p_last_type->Identifier : "<anonymous>",
			asn1p_last_type->_lineno);
		asn1p_last_type = 0;
	}
}

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;
}


