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

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

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

#line 1 "asn1p_y.y"


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

#include "asn1parser.h"

#define YYPARSE_PARAM	param
#define YYERROR_VERBOSE

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


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

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

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


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

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



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

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

static const char yytranslate[] = {     0,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   112,     2,     2,     2,     2,     2,     2,   107,
   108,     2,     2,   110,     2,   113,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,   111,   109,   114,
     2,     2,     2,   115,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   116,     2,   117,    99,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   105,   101,   106,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
    97,    98,   100,   102,   103,   104
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     2,     4,     7,    16,    17,    19,    23,    26,    28,
    31,    33,    38,    40,    41,    43,    45,    48,    51,    54,
    57,    60,    63,    64,    66,    68,    71,    73,    75,    77,
    79,    81,    82,    86,    88,    92,    95,    97,   100,   105,
   107,   111,   113,   117,   119,   123,   127,   130,   132,   136,
   138,   142,   144,   145,   152,   154,   156,   161,   165,   169,
   176,   178,   182,   184,   188,   192,   196,   198,   202,   204,
   206,   207,   209,   211,   215,   219,   223,   225,   227,   231,
   234,   236,   242,   243,   245,   247,   251,   254,   259,   264,
   265,   267,   268,   275,   277,   280,   282,   284,   286,   290,
   294,   298,   300,   305,   310,   315,   322,   329,   331,   336,
   341,   343,   347,   349,   353,   357,   361,   363,   367,   369,
   373,   375,   377,   379,   381,   386,   390,   391,   395,   397,
   399,   401,   403,   405,   407,   409,   411,   413,   417,   419,
   421,   423,   425,   428,   430,   432,   434,   436,   439,   442,
   444,   446,   449,   452,   454,   456,   458,   460,   462,   465,
   467,   470,   472,   474,   476,   478,   480,   482,   484,   486,
   488,   490,   492,   494,   496,   498,   500,   502,   504,   506,
   508,   509,   511,   513,   518,   522,   527,   529,   533,   539,
   541,   545,   549,   553,   557,   562,   566,   568,   570,   574,
   578,   582,   586,   588,   590,   591,   597,   599,   602,   605,
   609,   611,   613,   615,   617,   619,   621,   623,   625,   629,
   635,   637,   641,   643,   647,   648,   650,   652,   654,   656,
   658,   660,   664,   669,   671,   675,   678,   682,   684,   688,
   689,   691,   693,   696,   699,   703,   705,   709,   711,   716,
   721,   723,   725,   727,   729,   730,   732,   735,   740,   741,
   743,   745,   747,   748,   750,   752,   754,   756,   758,   759,
   761
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   302,   308,   314,   330,   355,   357,   360,   364,   369,   376,
   384,   389,   393,   402,   404,   412,   416,   424,   428,   431,
   434,   438,   458,   460,   468,   472,   504,   508,   517,   524,
   537,   544,   546,   558,   571,   578,   583,   589,   595,   604,
   610,   616,   623,   629,   637,   641,   644,   651,   657,   663,
   670,   676,   685,   687,   696,   704,   718,   730,   736,   752,
   761,   771,   781,   786,   793,   800,   810,   816,   822,   826,
   849,   851,   853,   859,   865,   872,   879,   884,   890,   896,
   902,   907,   917,   919,   922,   930,   936,   945,   951,   968,
   970,   975,   979,   984,   989,   995,   999,  1010,  1019,  1028,
  1039,  1061,  1065,  1071,  1077,  1083,  1093,  1103,  1109,  1123,
  1147,  1154,  1168,  1177,  1187,  1197,  1207,  1215,  1236,  1245,
  1254,  1255,  1257,  1264,  1276,  1286,  1294,  1294,  1299,  1304,
  1309,  1314,  1318,  1322,  1325,  1328,  1333,  1345,  1362,  1367,
  1372,  1405,  1415,  1429,  1431,  1432,  1433,  1434,  1435,  1436,
  1437,  1438,  1439,  1440,  1441,  1442,  1448,  1450,  1451,  1454,
  1461,  1473,  1475,  1479,  1483,  1484,  1485,  1486,  1487,  1491,
  1492,  1493,  1494,  1498,  1499,  1506,  1506,  1507,  1507,  1508,
  1510,  1512,  1517,  1521,  1530,  1534,  1539,  1543,  1549,  1559,
  1563,  1566,  1569,  1572,  1577,  1586,  1594,  1600,  1606,  1613,
  1621,  1629,  1638,  1641,  1644,  1645,  1655,  1657,  1658,  1659,
  1662,  1666,  1671,  1677,  1682,  1685,  1688,  1701,  1715,  1719,
  1724,  1728,  1733,  1740,  1753,  1755,  1758,  1762,  1765,  1770,
  1774,  1782,  1797,  1803,  1810,  1823,  1835,  1850,  1854,  1871,
  1876,  1879,  1884,  1906,  1911,  1916,  1922,  1928,  1936,  1944,
  1952,  1959,  1969,  1974,  2004,  2006,  2009,  2016,  2022,  2024,
  2025,  2026,  2029,  2031,  2032,  2035,  2040,  2047,  2054,  2056,
  2060
};
#endif


#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)

static const char * const yytname[] = {   "$","error","$undefined.","TOK_PPEQ",
"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
"TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference",
"TOK_typefieldreference","TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX",
"TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT",
"TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS",
"TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT",
"TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL",
"TOK_END","TOK_ENUMERATED","TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY",
"TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString",
"TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED",
"TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS","TOK_INTEGER",
"TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL","TOK_NumericString",
"TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF","TOK_OPTIONAL","TOK_PATTERN",
"TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString","TOK_PRIVATE",
"TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE","TOK_STRING",
"TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE","TOK_TYPE_IDENTIFIER",
"TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime","TOK_UTF8String",
"TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT","'^'","TOK_INTERSECTION",
"'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'","'}'","'('","')'","';'",
"','","':'","'!'","'.'","'<'","'@'","'['","']'","ParsedGrammar","ModuleList",
"ModuleSpecification","optObjectIdentifier","ObjectIdentifier","ObjectIdentifierBody",
"ObjectIdentifierElement","optModuleSpecificationFlags","ModuleSpecificationFlags",
"ModuleSpecificationFlag","optModuleSpecificationBody","ModuleSpecificationBody",
"ModuleSpecificationElement","@1","ImportsDefinition","ImportsBundleSet","ImportsBundle",
"ImportsList","ImportsElement","ExportsDefinition","ExportsBody","ExportsElement",
"ValueSetDefinition","@2","DefinedTypeRef","DataTypeReference","ParameterArgumentList",
"ParameterArgumentName","ActualParameterList","ActualParameter","optComponentTypeLists",
"ComponentTypeLists","ComponentType","AlternativeTypeLists","AlternativeType",
"ClassDeclaration","optUnique","ClassFieldList","ClassField","optWithSyntax",
"WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
"Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
"Value","@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
"ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec","ConstraintSpec",
"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
};
#endif

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

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

static const short yydefgoto[] = {   423,
     3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
    56,    57,   107,    58,    74,    75,    76,    77,    59,    69,
    70,    60,   220,   100,    61,   130,   131,   283,   284,   244,
   245,   246,   237,   238,   119,   300,   195,   196,   295,   296,
   401,   411,   412,   247,   285,   155,   156,   173,   174,   197,
   198,    62,   188,   222,   189,   259,   289,   157,   103,   159,
   104,   327,   328,   330,   206,   207,   208,   260,   261,   262,
   384,   316,   263,   264,   265,   266,   387,   388,   418,   419,
   267,   268,   269,   374,   375,   393,   231,   232,   213,   279,
   280,   270,   233,   122,   123,   146,   163,   271,   105,   334,
   272
};

static const short yypact[] = {   228,
-32768,-32768,   228,-32768,   -83,-32768,    30,    43,-32768,-32768,
-32768,-32768,    36,-32768,   -14,   181,-32768,-32768,   132,    85,
    68,    73,   109,    95,   193,   181,-32768,    93,-32768,-32768,
-32768,-32768,-32768,   189,-32768,-32768,   429,-32768,   209,    21,
-32768,-32768,-32768,   144,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   184,   429,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   354,   658,-32768,   118,-32768,   190,-32768,
   134,-32768,-32768,    18,-32768,   -27,-32768,   156,-32768,-32768,
-32768,   -12,   150,-32768,   182,-32768,   204,   195,-32768,-32768,
-32768,-32768,-32768,   236,   212,-32768,-32768,-32768,   733,   299,
-32768,-32768,-32768,-32768,   205,   316,-32768,-32768,-32768,   185,
   216,-32768,-32768,   228,   185,   217,   219,    25,-32768,-32768,
   506,-32768,   117,   185,-32768,-32768,-32768,-32768,-32768,   -55,
-32768,   210,   214,   223,   266,    63,-32768,-32768,   -83,-32768,
-32768,   268,-32768,-32768,-32768,   321,    34,   226,   295,   232,
   269,   -18,   -17,-32768,    -2,-32768,-32768,   233,-32768,   235,
-32768,-32768,-32768,-32768,-32768,   338,   733,   334,   185,-32768,
-32768,-32768,   234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   237,   242,-32768,    81,-32768,    27,-32768,   231,   322,
    11,   240,   247,    49,   238,   285,-32768,   251,    49,   289,
-32768,    44,-32768,     7,   244,-32768,-32768,-32768,-32768,   358,
   268,   358,   334,    63,   267,   268,    63,-32768,   273,   273,
-32768,-32768,   583,-32768,   334,   253,    98,-32768,-32768,   244,
-32768,   238,   302,   270,   263,-32768,-32768,   244,   276,   348,
-32768,-32768,    64,-32768,-32768,   275,   228,   238,-32768,   279,
   130,   283,   277,    64,-32768,-32768,-32768,   272,-32768,-32768,
-32768,-32768,   334,   238,   284,   334,-32768,-32768,   100,-32768,
-32768,   286,   105,-32768,-32768,-32768,-32768,-32768,   379,-32768,
   379,-32768,-32768,   305,-32768,-32768,-32768,-32768,-32768,   -10,
   -10,-32768,   296,-32768,    11,-32768,   287,   244,-32768,    49,
   -10,   264,   293,   280,   288,   174,   292,   297,   301,   300,
-32768,-32768,-32768,-32768,-32768,   306,   264,   264,-32768,   264,
   238,   282,   294,   244,-32768,   303,-32768,   244,-32768,    51,
   296,-32768,     7,-32768,   307,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   304,-32768,
-32768,   251,    28,-32768,-32768,   314,-32768,-32768,-32768,   308,
-32768,-32768,     6,   112,-32768,   583,-32768,   583,-32768,   309,
   317,-32768,-32768,   358,-32768,-32768,   154,-32768,    -2,   238,
-32768,   334,   313,-32768,-32768,   294,-32768,-32768,-32768,-32768,
   159,   379,-32768,    28,    24,   215,   313,   334,-32768,-32768,
    12,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   413,   427,-32768
};

static const short yypgoto[] = {-32768,
-32768,   425,   290,-32768,-32768,   418,-32768,-32768,   408,-32768,
-32768,   380,-32768,-32768,-32768,   361,-32768,   323,-32768,-32768,
   330,-32768,-32768,   386,-32768,-32768,   278,-32768,   101,   243,
-32768,   143,-32768,   151,-32768,   225,-32768,   239,-32768,-32768,
-32768,-32768,    46,  -184,   -75,  -284,   -53,-32768,   241,  -192,
  -115,-32768,   -89,-32768,  -255,   -58,  -214,   -41,  -120,-32768,
    45,-32768,-32768,-32768,  -151,-32768,   141,   -86,    70,  -216,
-32768,   197,-32768,  -225,-32768,-32768,-32768,    59,-32768,-32768,
-32768,-32768,-32768,-32768,    71,    72,  -111,-32768,-32768,-32768,
   126,  -127,   -79,-32768,-32768,-32768,-32768,    10,-32768,   192,
    -7
};


#define	YYLAST		829


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

static const short yycheck[] = {     7,
   121,   153,    82,   155,   197,    13,    82,   222,   136,     0,
    64,    65,     3,     8,     8,     4,   201,    30,     8,   135,
    48,   105,    64,    65,    35,     8,    15,    16,     8,    37,
    13,    14,    40,    13,    14,     8,    44,     8,     9,    19,
    17,    15,    16,     8,     9,    21,    37,   303,    56,    40,
   106,     8,     9,    44,   110,    12,     8,    99,     8,     9,
    71,    35,    12,    82,    82,    56,    74,     5,     6,     7,
     8,     9,    10,    11,    12,    13,    14,   136,    36,    82,
    32,    37,   110,    74,   212,   341,   105,   105,   107,   107,
   316,   376,   107,   378,    71,   312,   224,    71,    75,   227,
    56,    77,   110,   116,   107,   221,   332,   115,    99,    47,
   327,   328,   233,   330,   104,    91,   124,   106,   113,   110,
   305,   197,   116,   114,   115,   167,   109,    65,   136,   109,
   121,   104,   106,   124,   224,   106,   110,   227,   105,   215,
     9,   106,   116,    59,   135,   136,   113,   104,   202,   106,
    88,     8,   104,    86,   104,   242,    13,    14,    86,    43,
   168,   169,     4,    55,   240,   224,   103,   105,   227,   384,
    54,   258,   248,    15,    16,   303,   167,   114,   169,     6,
    86,     8,     9,    10,    11,    12,   106,   274,   300,   301,
   110,    48,     8,   201,    14,     3,   204,    13,    14,   311,
   108,   209,    22,   106,   212,   106,   214,   110,   401,   110,
   106,    23,   340,   341,   110,   223,   224,   106,   411,   227,
    47,   110,    14,    43,    41,    45,   109,   235,    99,   100,
   101,   102,   308,   224,    54,    62,   227,   389,   105,   110,
    13,    14,   233,     6,   331,     8,     9,    10,    11,    12,
    13,    14,    13,    14,   334,   376,    19,   378,   338,   106,
   105,    88,   113,   110,    83,   273,   257,    73,   276,     6,
    33,     8,     9,    10,    11,    12,    13,    14,    13,    14,
    15,    16,    15,    16,    47,    48,    83,     6,    53,     8,
     9,    10,    11,    12,    83,   303,    33,   305,   109,   110,
    63,     3,   310,     8,     9,    31,    32,    12,    13,    14,
    47,    48,   303,    99,   100,   101,   102,   113,     3,    82,
   111,   106,   106,   105,   111,    88,    63,   105,    47,     9,
   105,    37,   340,   341,    97,   343,   105,   105,    70,   105,
     3,     8,   105,    62,   107,    82,   113,   117,    27,   113,
   341,    88,   111,   107,    70,   363,     3,   107,    70,   116,
    97,     4,    90,    97,   112,   373,    13,    14,   105,    88,
   107,    70,   110,    98,    27,   106,   105,    24,    25,    26,
    98,    28,     4,   107,   392,   376,   108,   378,    84,   106,
   103,    38,   107,   114,   108,    42,   404,   105,   107,    46,
   408,   105,    49,    50,    51,    52,   106,   108,   115,   104,
   108,   105,     0,    60,    61,   108,   108,   114,    65,    66,
    67,    68,    69,   110,   108,   113,     0,     3,   139,    76,
    13,    78,    79,    26,    74,    56,     8,   115,    85,   110,
    87,    13,    14,   343,   167,    92,    93,    94,    95,    96,
    65,   209,   310,    25,   230,   305,   411,   317,   105,   390,
   264,   221,   404,   392,   226,   340,   396,   276,    40,    -1,
    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    50,    51,
    52,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,    61,
    -1,    -1,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    85,    -1,    87,    -1,    -1,    13,    14,
    92,    -1,    94,    95,    96,    20,    -1,    -1,    -1,    24,
    25,    26,    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,
    -1,    46,    -1,    -1,    49,    50,    51,    52,    -1,    -1,
    -1,    -1,    -1,    58,    -1,    60,    61,    -1,    -1,    -1,
    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    -1,    76,    -1,    78,    79,    80,    81,    -1,    -1,    -1,
    85,    -1,    87,    -1,    89,    13,    14,    92,    93,    94,
    95,    96,    20,    -1,    -1,    -1,    24,    25,    26,    -1,
    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,
    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,
    58,    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,
    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
    78,    79,    80,    81,    -1,    -1,    -1,    85,    -1,    87,
    13,    14,    -1,    -1,    92,    93,    94,    95,    96,    -1,
    -1,    24,    25,    26,    -1,    28,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,
    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,
    -1,    -1,    65,    66,    67,    68,    69,    -1,    -1,    -1,
    -1,    -1,    -1,    76,    -1,    78,    79,    -1,    -1,    -1,
    -1,    -1,    85,    -1,    87,    13,    14,    -1,    -1,    92,
    93,    94,    95,    96,    -1,    -1,    24,    25,    26,    -1,
    28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,
    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,
    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
    78,    79,    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,
    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/bison.simple"
/* This file comes from bison-1.28.  */

/* Skeleton output parser for bison,
   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

/* As a special exception, when this file is copied by Bison into a
   Bison output file, you may use that output file without restriction.
   This special exception was added by the Free Software Foundation
   in version 1.24 of Bison.  */

/* This is the parser code that is written into each bison parser
  when the %semantic_parser declaration is not specified in the grammar.
  It was written by Richard Stallman by simplifying the hairy parser
  used when %semantic_parser is specified.  */

#ifndef YYSTACK_USE_ALLOCA
#ifdef alloca
#define YYSTACK_USE_ALLOCA
#else /* alloca not defined */
#ifdef __GNUC__
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
#define YYSTACK_USE_ALLOCA
#include <alloca.h>
#else /* not sparc */
/* We think this test detects Watcom and Microsoft C.  */
/* This used to test MSDOS, but that is a bad idea
   since that symbol is in the user namespace.  */
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
#if 0 /* No need for malloc.h, which pollutes the namespace;
	 instead, just don't use alloca.  */
#include <malloc.h>
#endif
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
/* I don't know what this was needed for, but it pollutes the namespace.
   So I turned it off.   rms, 2 May 1997.  */
/* #include <malloc.h>  */
 #pragma alloca
#define YYSTACK_USE_ALLOCA
#else /* not MSDOS, or __TURBOC__, or _AIX */
#if 0
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
		 and on HPUX 10.  Eventually we can turn this on.  */
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#endif /* __hpux */
#endif
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc */
#endif /* not GNU C */
#endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */

#ifdef YYSTACK_USE_ALLOCA
#define YYSTACK_ALLOC alloca
#else
#define YYSTACK_ALLOC malloc
#endif

/* Note: there must be only one dollar sign in this file.
   It is replaced by the list of actions, each action
   as one case of the switch.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	goto yyacceptlab
#define YYABORT 	goto yyabortlab
#define YYERROR		goto yyerrlab1
/* Like YYERROR except do call yyerror.
   This remains here temporarily to ease the
   transition to the new meaning of YYERROR, for GCC.
   Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(token, value) \
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    { yychar = (token), yylval = (value);			\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
while (0)

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#endif

#ifdef YYPURE
#ifdef YYLSP_NEEDED
#ifdef YYLEX_PARAM
#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
#else
#define YYLEX		yylex(&yylval, &yylloc)
#endif
#else /* not YYLSP_NEEDED */
#ifdef YYLEX_PARAM
#define YYLEX		yylex(&yylval, YYLEX_PARAM)
#else
#define YYLEX		yylex(&yylval)
#endif
#endif /* not YYLSP_NEEDED */
#endif

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

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

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

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
/* Since this is uninitialized, it does not stop multiple parsers
   from coexisting.  */
#endif

/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

/*  YYMAXDEPTH is the maximum size the stacks can grow to
    (effective only if the built-in stack extension method is used).  */

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

/* Define __yy_memcpy.  Note that the size argument
   should be passed with type unsigned int, because that is what the non-GCC
   definitions require.  With GCC, __builtin_memcpy takes an arg
   of type size_t, but it can handle unsigned int.  */

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_memcpy (to, from, count)
     char *to;
     char *from;
     unsigned int count;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

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

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_memcpy (char *to, char *from, unsigned int count)
{
  register char *t = to;
  register char *f = from;
  register int i = count;

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

#endif
#endif

#line 217 "/usr/share/bison.simple"

/* The user can define YYPARSE_PARAM as the name of an argument to be passed
   into yyparse.  The argument should have type void *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   to the proper pointer type.  */

#ifdef YYPARSE_PARAM
#ifdef __cplusplus
#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#else /* not __cplusplus */
#define YYPARSE_PARAM_ARG YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#endif /* not __cplusplus */
#else /* not YYPARSE_PARAM */
#define YYPARSE_PARAM_ARG
#define YYPARSE_PARAM_DECL
#endif /* not YYPARSE_PARAM */

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

int
yyparse(YYPARSE_PARAM_ARG)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register YYSTYPE *yyvsp;
  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;

#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

  int yystacksize = YYINITDEPTH;
  int yyfree_stacks = 0;

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

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

  int yylen;

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

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

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

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

/* Push a new state, which is found in  yystate  .  */
/* In all cases, when you get here, the value and location stacks
   have just been pushed. so pushing a state here evens the stacks.  */
yynewstate:

  *++yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Give user a chance to reallocate the stack */
      /* Use copies of these so that the &'s don't force the real ones into memory. */
      YYSTYPE *yyvs1 = yyvs;
      short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
	 the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* This used to be a conditional around just the two extra args,
	 but that might be undefined if yyoverflow is a macro.  */
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yyls1, size * sizeof (*yylsp),
		 &yystacksize);
#else
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	{
	  yyerror("parser stack overflow");
	  if (yyfree_stacks)
	    {
	      free (yyss);
	      free (yyvs);
#ifdef YYLSP_NEEDED
	      free (yyls);
#endif
	    }
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
#ifndef YYSTACK_USE_ALLOCA
      yyfree_stacks = 1;
#endif
      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
      __yy_memcpy ((char *)yyss, (char *)yyss1,
		   size * (unsigned int) sizeof (*yyssp));
      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
		   size * (unsigned int) sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
      __yy_memcpy ((char *)yyls, (char *)yyls1,
		   size * (unsigned int) sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

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

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

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

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

  goto yybackup;
 yybackup:

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

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

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

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

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

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

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

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

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise meaning
	     of a token, for further debugging info.  */
#ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
#endif
	  fprintf (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

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

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* count tokens shifted since error; after three, turn off error status.  */
  if (yyerrstatus) yyerrstatus--;

  yystate = yyn;
  goto yynewstate;

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

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

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

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

      fprintf (stderr, "Reducing via rule %d (line %d), ",
	       yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif


  switch (yyn) {

case 1:
#line 303 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 309 "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 314 "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 335 "asn1p_y.y"
{

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

		yyval.a_module->Identifier = yyvsp[-7].tv_str;
		yyval.a_module->module_oid = yyvsp[-6].a_oid;
		yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
	;
    break;}
case 5:
#line 356 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 357 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 361 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 364 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 370 "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 376 "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 385 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 389 "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 393 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 403 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 404 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 413 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 416 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 425 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 428 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 431 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 434 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 438 "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 459 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 460 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 469 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 472 "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 505 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 508 "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 517 "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 524 "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 537 "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 545 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 546 "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 558 "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 572 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 36:
#line 578 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 584 "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 589 "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 596 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-3].a_xports;
		yyval.a_xports->from = yyvsp[-1].tv_str;
		yyval.a_xports->from_oid = yyvsp[0].a_oid;
		checkmem(yyval.a_xports);
	;
    break;}
case 40:
#line 605 "asn1p_y.y"
{
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 41:
#line 610 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 42:
#line 617 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 43:
#line 623 "asn1p_y.y"
{		/* Completely equivalent to above */
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 44:
#line 629 "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 638 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 46:
#line 641 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 47:
#line 644 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 48:
#line 652 "asn1p_y.y"
{
		yyval.a_xports = asn1p_xports_new();
		assert(yyval.a_xports);
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 49:
#line 657 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 50:
#line 664 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
	;
    break;}
case 51:
#line 670 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
	;
    break;}
case 52:
#line 676 "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 687 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 54:
#line 687 "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 55:
#line 697 "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 56:
#line 704 "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 57:
#line 722 "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 58:
#line 730 "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 59:
#line 736 "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 60:
#line 752 "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 61:
#line 762 "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 62:
#line 771 "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 63:
#line 782 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 64:
#line 786 "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 65:
#line 793 "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 66:
#line 800 "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 67:
#line 811 "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 68:
#line 816 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 69:
#line 823 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 70:
#line 826 "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 71:
#line 850 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
    break;}
case 72:
#line 851 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
    break;}
case 73:
#line 854 "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 74:
#line 859 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 75:
#line 866 "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 76:
#line 872 "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 77:
#line 879 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 78:
#line 885 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 79:
#line 890 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 80:
#line 897 "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 81:
#line 902 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 82:
#line 908 "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 83:
#line 918 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 84:
#line 919 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 85:
#line 923 "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 86:
#line 930 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 87:
#line 937 "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 88:
#line 945 "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 89:
#line 951 "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 90:
#line 969 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 91:
#line 970 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 92:
#line 977 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 93:
#line 979 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 94:
#line 985 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 95:
#line 989 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 96:
#line 996 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
	;
    break;}
case 97:
#line 999 "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 98:
#line 1011 "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 99:
#line 1019 "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 100:
#line 1028 "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 101:
#line 1040 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		yyval.a_expr->tag = yyvsp[-2].a_tag;
		/*
		 * Outer constraint for SEQUENCE OF and SET OF applies
		 * to the inner type.
		 */
		if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
		|| yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
			assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
			TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
		} else {
			if(yyval.a_expr->constraints) {
				assert(!yyvsp[-1].a_expr);
			} else {
				yyval.a_expr->constraints = yyvsp[0].a_constr;
			}
		}
	;
    break;}
case 102:
#line 1062 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 103:
#line 1065 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->expr_type == A1TC_INVALID);
		yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 104:
#line 1071 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->expr_type == A1TC_INVALID);
		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 105:
#line 1077 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->expr_type == A1TC_INVALID);
		yyval.a_expr->expr_type = ASN_CONSTR_SET;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 106:
#line 1083 "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 107:
#line 1093 "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 108:
#line 1103 "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 109:
#line 1109 "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 110:
#line 1123 "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 111:
#line 1147 "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 112:
#line 1154 "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 113:
#line 1169 "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 114:
#line 1177 "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 115:
#line 1187 "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 116:
#line 1197 "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 117:
#line 1207 "asn1p_y.y"
{
		int ret;
		yyval.a_ref = asn1p_ref_new(yylineno);
		checkmem(yyval.a_ref);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
		free(yyvsp[0].tv_str);
		checkmem(ret == 0);
	;
    break;}
case 118:
#line 1215 "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 119:
#line 1237 "asn1p_y.y"
{
		int ret;
		yyval.a_ref = asn1p_ref_new(yylineno);
		checkmem(yyval.a_ref);
		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
		free(yyvsp[0].a_refcomp.name);
		checkmem(ret == 0);
	;
    break;}
case 120:
#line 1245 "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 123:
#line 1259 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 124:
#line 1264 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 125:
#line 1277 "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 126:
#line 1287 "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 127:
#line 1294 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 128:
#line 1294 "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 129:
#line 1299 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_NULL;
	;
    break;}
case 130:
#line 1304 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 131:
#line 1309 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 132:
#line 1314 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 133:
#line 1318 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 134:
#line 1322 "asn1p_y.y"
{
		yyval.a_value = yyval.a_value;
	;
    break;}
case 135:
#line 1325 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 136:
#line 1328 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 137:
#line 1334 "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 138:
#line 1345 "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 139:
#line 1363 "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 140:
#line 1367 "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 141:
#line 1372 "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 142:
#line 1406 "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 143:
#line 1415 "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 144:
#line 1430 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 145:
#line 1431 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 146:
#line 1432 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 147:
#line 1433 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 148:
#line 1434 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 149:
#line 1435 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 150:
#line 1436 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 151:
#line 1437 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 152:
#line 1438 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 153:
#line 1439 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 154:
#line 1440 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 155:
#line 1441 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 156:
#line 1442 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 157:
#line 1449 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 158:
#line 1450 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 159:
#line 1451 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 160:
#line 1455 "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 161:
#line 1461 "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 162:
#line 1474 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 163:
#line 1475 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
	;
    break;}
case 164:
#line 1479 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
	;
    break;}
case 165:
#line 1483 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 166:
#line 1484 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 167:
#line 1485 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 168:
#line 1486 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 169:
#line 1487 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		fprintf(stderr, "WARNING: T61String is not fully supported\n");
	;
    break;}
case 170:
#line 1491 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 171:
#line 1492 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 172:
#line 1493 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 173:
#line 1494 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
	;
    break;}
case 174:
#line 1498 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 175:
#line 1499 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 181:
#line 1511 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 182:
#line 1512 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 183:
#line 1518 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 184:
#line 1521 "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 185:
#line 1531 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 186:
#line 1534 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 187:
#line 1540 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 188:
#line 1543 "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 189:
#line 1549 "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 190:
#line 1560 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 191:
#line 1563 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
	;
    break;}
case 192:
#line 1566 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 193:
#line 1569 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 194:
#line 1572 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 195:
#line 1578 "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 196:
#line 1586 "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 197:
#line 1594 "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 198:
#line 1600 "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 199:
#line 1606 "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 200:
#line 1613 "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 201:
#line 1621 "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 202:
#line 1629 "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 203:
#line 1638 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 204:
#line 1641 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 205:
#line 1645 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 206:
#line 1645 "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 207:
#line 1656 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 208:
#line 1657 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 209:
#line 1658 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 210:
#line 1659 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 211:
#line 1663 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 212:
#line 1666 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 213:
#line 1672 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 214:
#line 1677 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 215:
#line 1682 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 216:
#line 1685 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 217:
#line 1688 "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 218:
#line 1702 "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 219:
#line 1716 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
	;
    break;}
case 220:
#line 1719 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 221:
#line 1725 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 222:
#line 1728 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 223:
#line 1734 "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 224:
#line 1740 "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 225:
#line 1754 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 226:
#line 1755 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 227:
#line 1759 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 228:
#line 1762 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 229:
#line 1765 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 230:
#line 1771 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 231:
#line 1774 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 232:
#line 1783 "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 233:
#line 1798 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 234:
#line 1804 "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 235:
#line 1810 "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 236:
#line 1824 "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 237:
#line 1835 "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 238:
#line 1851 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 239:
#line 1854 "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 240:
#line 1872 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_NOMARK;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 241:
#line 1876 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 242:
#line 1880 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_OPTIONAL;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 243:
#line 1884 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_DEFAULT;
		yyval.a_marker.default_value = yyvsp[0].a_value;
	;
    break;}
case 244:
#line 1907 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 245:
#line 1911 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 246:
#line 1917 "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 247:
#line 1922 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 248:
#line 1929 "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 249:
#line 1936 "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 250:
#line 1944 "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 251:
#line 1952 "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 252:
#line 1959 "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 253:
#line 1970 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 254:
#line 1974 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 255:
#line 2005 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 256:
#line 2006 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 257:
#line 2010 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
	;
    break;}
case 258:
#line 2017 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-2].a_tag;
		yyval.a_tag.tag_value = yyvsp[-1].a_int;
	;
    break;}
case 259:
#line 2023 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
    break;}
case 260:
#line 2024 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
    break;}
case 261:
#line 2025 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
    break;}
case 262:
#line 2026 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
    break;}
case 263:
#line 2030 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
    break;}
case 264:
#line 2031 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
    break;}
case 265:
#line 2032 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
    break;}
case 266:
#line 2036 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 267:
#line 2040 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 268:
#line 2048 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 269:
#line 2055 "asn1p_y.y"
{ yyval.tv_str = 0; ;
    break;}
case 270:
#line 2056 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 271:
#line 2061 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#endif

  /* Now "shift" the result of the reduction.
     Determine what state that goes to,
     based on the state we popped back to
     and the rule number reduced by.  */

  yyn = yyr1[yyn];

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

  goto yynewstate;

yyerrlab:   /* here on detecting error */

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

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

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

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

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

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

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

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

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

      yychar = YYEMPTY;
    }

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

  yyerrstatus = 3;		/* Each real token shifted decrements this */

  goto yyerrhandle;

yyerrdefault:  /* current state does not do anything special for the error token. */

#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

  if (yyssp == yyss) YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#ifdef YYLSP_NEEDED
  yylsp--;
#endif

#if YYDEBUG != 0
  if (yydebug)
    {
      short *ssp1 = yyss - 1;
      fprintf (stderr, "Error: state stack now");
      while (ssp1 != yyssp)
	fprintf (stderr, " %d", *++ssp1);
      fprintf (stderr, "\n");
    }
#endif

yyerrhandle:

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

  yyn += YYTERROR;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
    goto yyerrdefault;

  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;

  if (yyn == YYFINAL)
    YYACCEPT;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting error token, ");
#endif

  *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  yystate = yyn;
  goto yynewstate;

 yyacceptlab:
  /* YYACCEPT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 0;

 yyabortlab:
  /* YYABORT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 1;
}
#line 2067 "asn1p_y.y"



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

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

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

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

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

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

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

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

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

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

	return val;
}

extern char *asn1p_text;

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


