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

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

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

#line 1 "asn1p_y.y"


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

#include "asn1parser.h"

#define YYPARSE_PARAM	param
#define YYPARSE_PARAM_TYPE	void **
#define YYERROR_VERBOSE

int yylex(void);
int yyerror(const char *msg);
#ifdef	YYBYACC
int yyparse(void **param);	/* byacc does not produce a prototype */
#endif
void asn1p_lexer_hack_push_opaque_state(void);
void asn1p_lexer_hack_enable_with_syntax(void);
void asn1p_lexer_hack_push_encoding_control(void);
#define	yylineno	asn1p_lineno
extern int asn1p_lineno;


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 62 "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,
   306,   312,   318,   334,   359,   361,   364,   368,   373,   380,
   388,   393,   397,   406,   408,   416,   420,   428,   432,   435,
   438,   442,   462,   464,   472,   476,   508,   512,   521,   528,
   541,   548,   550,   562,   575,   582,   587,   593,   599,   608,
   614,   620,   627,   633,   641,   645,   648,   655,   661,   667,
   674,   680,   689,   691,   700,   708,   722,   734,   740,   756,
   765,   775,   785,   790,   797,   804,   814,   820,   826,   830,
   853,   855,   857,   863,   869,   876,   883,   888,   894,   900,
   906,   911,   921,   923,   926,   934,   940,   949,   955,   972,
   974,   979,   983,   988,   993,   999,  1003,  1014,  1023,  1032,
  1043,  1065,  1069,  1075,  1081,  1087,  1097,  1107,  1113,  1127,
  1151,  1158,  1172,  1181,  1191,  1201,  1211,  1219,  1240,  1249,
  1258,  1259,  1261,  1268,  1280,  1290,  1298,  1298,  1303,  1308,
  1313,  1318,  1322,  1326,  1329,  1332,  1337,  1349,  1366,  1371,
  1376,  1409,  1419,  1433,  1435,  1436,  1437,  1438,  1439,  1440,
  1441,  1442,  1443,  1444,  1445,  1446,  1452,  1454,  1455,  1458,
  1465,  1477,  1479,  1483,  1487,  1488,  1489,  1490,  1491,  1495,
  1496,  1497,  1498,  1502,  1503,  1510,  1510,  1511,  1511,  1512,
  1514,  1516,  1521,  1525,  1534,  1538,  1543,  1547,  1553,  1563,
  1567,  1570,  1573,  1576,  1581,  1590,  1598,  1604,  1610,  1617,
  1625,  1633,  1642,  1645,  1648,  1649,  1659,  1661,  1662,  1663,
  1666,  1670,  1675,  1681,  1686,  1689,  1692,  1705,  1719,  1723,
  1728,  1732,  1737,  1744,  1757,  1759,  1762,  1766,  1769,  1774,
  1778,  1786,  1801,  1807,  1814,  1827,  1839,  1854,  1858,  1875,
  1880,  1883,  1888,  1910,  1915,  1920,  1926,  1932,  1940,  1948,
  1956,  1963,  1973,  1978,  2008,  2010,  2013,  2020,  2026,  2028,
  2029,  2030,  2033,  2035,  2036,  2039,  2044,  2051,  2058,  2060,
  2065
};
#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 307 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 313 "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 318 "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 339 "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 360 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 361 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 365 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 368 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 374 "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 380 "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 389 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 393 "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 397 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 407 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 408 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 417 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 420 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 429 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 432 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 435 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 438 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 442 "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 463 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 464 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 473 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 476 "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 509 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 512 "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 521 "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 528 "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 541 "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 549 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 550 "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 562 "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 576 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 36:
#line 582 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 588 "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 593 "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 600 "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 609 "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 614 "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 621 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 43:
#line 627 "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 633 "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 642 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 46:
#line 645 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 47:
#line 648 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 48:
#line 656 "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 661 "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 668 "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 674 "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 680 "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 691 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 54:
#line 691 "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 701 "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 708 "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 726 "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 734 "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 740 "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 756 "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 766 "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 775 "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 786 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 64:
#line 790 "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 797 "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 804 "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 815 "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 820 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 69:
#line 827 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 70:
#line 830 "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 854 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
    break;}
case 72:
#line 855 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
    break;}
case 73:
#line 858 "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 863 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 75:
#line 870 "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 876 "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 883 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 78:
#line 889 "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 894 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 80:
#line 901 "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 906 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 82:
#line 912 "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 922 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 84:
#line 923 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 85:
#line 927 "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 934 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 87:
#line 941 "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 949 "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 955 "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 973 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 91:
#line 974 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 92:
#line 981 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 93:
#line 983 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 94:
#line 989 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 95:
#line 993 "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 1000 "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 1003 "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 1015 "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 1023 "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 1032 "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 1044 "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 1066 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 103:
#line 1069 "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 1075 "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 1081 "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 1087 "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 1097 "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 1107 "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 1113 "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 1127 "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 1151 "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 1158 "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 1173 "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 1181 "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 1191 "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 1201 "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 1211 "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 1219 "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 1241 "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 1249 "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 1263 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 124:
#line 1268 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 125:
#line 1281 "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 1291 "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 1298 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 128:
#line 1298 "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 1303 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_NULL;
	;
    break;}
case 130:
#line 1308 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 131:
#line 1313 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 132:
#line 1318 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 133:
#line 1322 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 134:
#line 1326 "asn1p_y.y"
{
		yyval.a_value = yyval.a_value;
	;
    break;}
case 135:
#line 1329 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 136:
#line 1332 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 137:
#line 1338 "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 1349 "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 1367 "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 1371 "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 1376 "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 1410 "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 1419 "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 1434 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 145:
#line 1435 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 146:
#line 1436 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 147:
#line 1437 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 148:
#line 1438 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 149:
#line 1439 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 150:
#line 1440 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 151:
#line 1441 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 152:
#line 1442 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 153:
#line 1443 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 154:
#line 1444 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 155:
#line 1445 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 156:
#line 1446 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 157:
#line 1453 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 158:
#line 1454 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 159:
#line 1455 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 160:
#line 1459 "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 1465 "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 1478 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 163:
#line 1479 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
	;
    break;}
case 164:
#line 1483 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
	;
    break;}
case 165:
#line 1487 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 166:
#line 1488 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 167:
#line 1489 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 168:
#line 1490 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 169:
#line 1491 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		fprintf(stderr, "WARNING: T61String is not fully supported\n");
	;
    break;}
case 170:
#line 1495 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 171:
#line 1496 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 172:
#line 1497 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 173:
#line 1498 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
	;
    break;}
case 174:
#line 1502 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 175:
#line 1503 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 181:
#line 1515 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 182:
#line 1516 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 183:
#line 1522 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 184:
#line 1525 "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 1535 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 186:
#line 1538 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 187:
#line 1544 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 188:
#line 1547 "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 1553 "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 1564 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 191:
#line 1567 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
	;
    break;}
case 192:
#line 1570 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 193:
#line 1573 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 194:
#line 1576 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 195:
#line 1582 "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 1590 "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 1598 "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 1604 "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 1610 "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 1617 "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 1625 "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 1633 "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 1642 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 204:
#line 1645 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 205:
#line 1649 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 206:
#line 1649 "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 1660 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 208:
#line 1661 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 209:
#line 1662 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 210:
#line 1663 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 211:
#line 1667 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 212:
#line 1670 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 213:
#line 1676 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 214:
#line 1681 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 215:
#line 1686 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 216:
#line 1689 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 217:
#line 1692 "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 1706 "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 1720 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
	;
    break;}
case 220:
#line 1723 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 221:
#line 1729 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 222:
#line 1732 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 223:
#line 1738 "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 1744 "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 1758 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 226:
#line 1759 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 227:
#line 1763 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 228:
#line 1766 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 229:
#line 1769 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 230:
#line 1775 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 231:
#line 1778 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 232:
#line 1787 "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 1802 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 234:
#line 1808 "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 1814 "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 1828 "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 1839 "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 1855 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 239:
#line 1858 "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 1876 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_NOMARK;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 241:
#line 1880 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 242:
#line 1884 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_OPTIONAL;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 243:
#line 1888 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_DEFAULT;
		yyval.a_marker.default_value = yyvsp[0].a_value;
	;
    break;}
case 244:
#line 1911 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 245:
#line 1915 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 246:
#line 1921 "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 1926 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 248:
#line 1933 "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 1940 "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 1948 "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 1956 "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 1963 "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 1974 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 254:
#line 1978 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 255:
#line 2009 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 256:
#line 2010 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 257:
#line 2014 "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 2021 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-2].a_tag;
		yyval.a_tag.tag_value = yyvsp[-1].a_int;
	;
    break;}
case 259:
#line 2027 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
    break;}
case 260:
#line 2028 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
    break;}
case 261:
#line 2029 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
    break;}
case 262:
#line 2030 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
    break;}
case 263:
#line 2034 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
    break;}
case 264:
#line 2035 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
    break;}
case 265:
#line 2036 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
    break;}
case 266:
#line 2040 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 267:
#line 2044 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 268:
#line 2052 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 269:
#line 2059 "asn1p_y.y"
{ yyval.tv_str = 0; ;
    break;}
case 270:
#line 2060 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 271:
#line 2066 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

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

  *++yyvsp = yyval;

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

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

  yyn = yyr1[yyn];

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

  goto yynewstate;

yyerrlab:   /* here on detecting error */

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

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

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

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

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

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

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

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

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

      yychar = YYEMPTY;
    }

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

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

  goto yyerrhandle;

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

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

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

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

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

yyerrhandle:

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

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

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

  if (yyn == YYFINAL)
    YYACCEPT;

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

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

  yystate = yyn;
  goto yynewstate;

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

 yyabortlab:
  /* YYABORT comes here.  */
  if (yyfree_stacks)
    {
      free (yyss);
      free (yyvs);
#ifdef YYLSP_NEEDED
      free (yyls);
#endif
    }
  return 1;
}
#line 2072 "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;
}


