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

#line 1 "asn1p_y.y"


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

#include "asn1parser.h"

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

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

/*
 * Process directives as <ASN1C:RepresentAsPointer>
 */
extern int asn1p_as_pointer;

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

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

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

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


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

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



#define	YYFINAL		445
#define	YYFLAG		-32768
#define	YYNTBASE	120

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

static const char yytranslate[] = {     0,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   116,     2,     2,     2,     2,     2,     2,   109,
   110,     2,     2,   112,     2,   117,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,   113,   111,   118,
     2,     2,     2,   119,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   114,     2,   115,   101,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   107,   103,   108,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     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,    99,   100,   102,   104,   105,   106
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     2,     4,     7,    16,    17,    19,    23,    26,    28,
    31,    33,    38,    40,    41,    43,    45,    48,    51,    54,
    57,    60,    63,    64,    66,    68,    71,    73,    75,    77,
    79,    81,    82,    86,    88,    92,    95,    97,   100,   101,
   103,   108,   110,   114,   116,   120,   122,   126,   130,   133,
   135,   139,   141,   145,   147,   148,   155,   157,   159,   163,
   167,   174,   176,   180,   182,   186,   190,   194,   196,   200,
   202,   204,   205,   207,   209,   213,   217,   220,   224,   226,
   228,   232,   235,   237,   239,   245,   246,   248,   250,   254,
   257,   262,   266,   270,   274,   278,   282,   283,   285,   286,
   293,   295,   298,   300,   302,   304,   308,   310,   314,   318,
   322,   323,   326,   328,   333,   338,   343,   350,   357,   359,
   364,   369,   371,   375,   377,   381,   385,   389,   391,   395,
   397,   401,   403,   405,   407,   409,   413,   417,   419,   424,
   428,   429,   433,   435,   437,   439,   441,   443,   445,   447,
   449,   451,   455,   457,   459,   461,   463,   466,   468,   470,
   472,   474,   477,   480,   482,   484,   487,   490,   492,   494,
   496,   498,   500,   503,   505,   508,   510,   512,   514,   516,
   518,   520,   522,   524,   526,   528,   530,   532,   534,   536,
   538,   540,   542,   544,   546,   547,   549,   551,   556,   560,
   565,   567,   571,   577,   579,   583,   587,   591,   595,   600,
   604,   606,   608,   612,   616,   620,   624,   626,   628,   629,
   635,   637,   640,   643,   647,   649,   651,   653,   655,   657,
   659,   661,   663,   667,   673,   675,   679,   681,   685,   686,
   688,   690,   692,   694,   696,   698,   702,   707,   709,   713,
   716,   720,   722,   726,   727,   729,   731,   734,   737,   741,
   743,   747,   749,   754,   759,   761,   763,   765,   767,   768,
   770,   773,   778,   779,   781,   783,   785,   786,   788,   790,
   792,   794,   796,   797,   799
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   321,   327,   333,   349,   374,   376,   379,   383,   388,   395,
   403,   408,   412,   421,   423,   431,   435,   443,   447,   450,
   453,   457,   477,   479,   487,   491,   523,   527,   536,   543,
   556,   563,   565,   577,   589,   600,   605,   611,   617,   619,
   622,   633,   639,   645,   652,   658,   666,   670,   673,   680,
   686,   692,   699,   705,   714,   716,   725,   733,   747,   757,
   773,   782,   792,   802,   807,   814,   821,   831,   837,   843,
   847,   870,   872,   874,   880,   886,   894,   900,   907,   912,
   918,   924,   930,   933,   939,   949,   951,   954,   962,   969,
   982,   993,  1003,  1014,  1024,  1035,  1046,  1048,  1053,  1057,
  1062,  1067,  1073,  1078,  1081,  1085,  1090,  1099,  1108,  1119,
  1141,  1148,  1167,  1171,  1177,  1183,  1189,  1199,  1209,  1215,
  1229,  1253,  1260,  1274,  1283,  1293,  1303,  1313,  1321,  1342,
  1351,  1360,  1362,  1369,  1376,  1382,  1386,  1392,  1412,  1422,
  1430,  1430,  1435,  1440,  1445,  1450,  1454,  1458,  1461,  1464,
  1469,  1481,  1498,  1503,  1508,  1541,  1551,  1565,  1567,  1568,
  1569,  1570,  1571,  1572,  1573,  1574,  1575,  1576,  1577,  1578,
  1584,  1586,  1587,  1590,  1597,  1609,  1611,  1615,  1619,  1620,
  1621,  1622,  1623,  1627,  1628,  1629,  1630,  1634,  1635,  1642,
  1642,  1643,  1643,  1644,  1646,  1648,  1653,  1657,  1666,  1670,
  1675,  1679,  1685,  1695,  1699,  1702,  1705,  1708,  1713,  1722,
  1730,  1736,  1742,  1749,  1757,  1765,  1774,  1777,  1780,  1781,
  1791,  1793,  1794,  1795,  1798,  1802,  1807,  1813,  1818,  1821,
  1824,  1837,  1851,  1855,  1860,  1864,  1869,  1876,  1889,  1891,
  1894,  1898,  1901,  1906,  1910,  1918,  1933,  1939,  1946,  1959,
  1971,  1986,  1990,  2007,  2012,  2015,  2020,  2042,  2047,  2052,
  2058,  2064,  2072,  2080,  2088,  2095,  2105,  2110,  2140,  2142,
  2145,  2152,  2158,  2160,  2161,  2162,  2165,  2167,  2168,  2171,
  2176,  2183,  2190,  2192,  2197
};
#endif


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

static const char * const yytname[] = {   "$","error","$undefined.","TOK_PPEQ",
"TOK_whitespace","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_Literal",
"TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC",
"TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER",
"TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED",
"TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED",
"TOK_ENCODED","TOK_ENCODING_CONTROL","TOK_END","TOK_ENUMERATED","TOK_EXPLICIT",
"TOK_EXPORTS","TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime",
"TOK_GeneralString","TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT",
"TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS",
"TOK_INTEGER","TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL",
"TOK_NumericString","TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF",
"TOK_OPTIONAL","TOK_PATTERN","TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString",
"TOK_PRIVATE","TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE",
"TOK_STRING","TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE",
"TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime",
"TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT",
"'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'",
"'}'","'('","')'","';'","','","':'","'['","']'","'!'","'.'","'<'","'@'","ParsedGrammar",
"ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
"ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition",
"ImportsBundleSet","AssignedIdentifier","ImportsBundle","ImportsList","ImportsElement",
"ExportsDefinition","ExportsBody","ExportsElement","ValueSetDefinition","@2",
"DefinedTypeRef","DataTypeReference","ParameterArgumentList","ParameterArgumentName",
"ActualParameterList","ActualParameter","optComponentTypeLists","ComponentTypeLists",
"ComponentType","AlternativeTypeLists","AlternativeType","ObjectClass","optUnique",
"FieldSpec","ClassField","optWithSyntax","WithSyntax","@3","WithSyntaxList",
"WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration",
"TypeDeclarationSet","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
"PrimitiveFieldReference","FieldName","DefinedObjectClass","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,
   120,   121,   121,   122,   123,   123,   124,   124,   125,   125,
   126,   126,   126,   127,   127,   128,   128,   129,   129,   129,
   129,   129,   130,   130,   131,   131,   132,   132,   132,   132,
   132,   133,   132,   132,   134,   134,   135,   135,   136,   136,
   137,   138,   138,   139,   139,   139,   140,   140,   140,   141,
   141,   142,   142,   142,   144,   143,   145,   145,   146,   146,
   146,   147,   147,   148,   148,   148,   148,   149,   149,   150,
   150,   151,   151,   152,   152,   153,   153,   153,   153,   154,
   154,   155,   155,   155,   156,   157,   157,   158,   158,   159,
   159,   159,   159,   159,   159,   159,   160,   160,   162,   161,
   163,   163,   164,   164,   164,   164,   165,   165,   165,   166,
   167,   168,   169,   169,   169,   169,   169,   169,   169,   169,
   169,   169,   169,   170,   170,   170,   170,   170,   170,   171,
   171,   172,   173,   173,   174,   174,   174,   175,   176,   177,
   178,   177,   177,   177,   177,   177,   177,   177,   177,   177,
   179,   179,   180,   180,   180,   181,   181,   182,   182,   182,
   182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
   183,   183,   183,   184,   184,   185,   185,   185,   185,   185,
   185,   185,   185,   185,   185,   185,   185,   185,   185,   186,
   186,   187,   187,   188,   189,   189,   190,   190,   191,   191,
   192,   192,   192,   193,   193,   193,   193,   193,   194,   194,
   194,   194,   194,   194,   194,   194,   194,   194,   195,   194,
   196,   196,   196,   196,   197,   197,   198,   198,   198,   198,
   198,   199,   200,   200,   201,   201,   202,   202,   203,   203,
   204,   204,   204,   205,   205,   206,   207,   208,   208,   209,
   209,   210,   210,   211,   211,   212,   212,   213,   213,   214,
   214,   215,   215,   215,   215,   215,   216,   216,   217,   217,
   218,   219,   220,   220,   220,   220,   221,   221,   221,   222,
   222,   223,   224,   224,   225
};

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

static const short yydefgoto[] = {   443,
     3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
    56,    57,   107,    58,    74,   183,    75,    76,    77,    59,
    69,    70,    60,   212,   100,    61,   130,   131,   312,   313,
   297,   298,   299,   290,   291,   119,   281,   186,   187,   285,
   286,   413,   429,   430,   300,   301,   147,   148,   196,   101,
   161,   162,   431,   222,   223,    62,   176,   214,   177,   253,
   270,   102,   103,   200,   104,   332,   333,   335,   204,   205,
   206,   254,   255,   256,   400,   321,   257,   258,   259,   260,
   403,   404,   436,   437,   261,   262,   263,   383,   384,   409,
   224,   225,   240,   308,   309,   264,   121,   122,   123,   146,
   151,   265,   105,   355,   266
};

static const short yypact[] = {   223,
-32768,-32768,   223,-32768,   -76,-32768,    30,    24,-32768,-32768,
-32768,-32768,    34,-32768,   -61,   247,-32768,-32768,    61,    27,
    71,    84,   145,   118,   210,   247,-32768,   109,-32768,-32768,
-32768,-32768,-32768,   199,-32768,-32768,   428,-32768,   212,    49,
-32768,-32768,-32768,   154,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   186,   428,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   352,   581,-32768,   129,-32768,   174,-32768,
   157,-32768,-32768,    59,-32768,   -26,-32768,   159,-32768,-32768,
-32768,   -15,   152,-32768,   193,-32768,   204,   218,-32768,-32768,
-32768,-32768,-32768,   262,   217,-32768,-32768,-32768,   657,   337,
-32768,-32768,-32768,-32768,   220,   343,-32768,-32768,-32768,   286,
   244,-32768,-32768,   223,   286,   249,   256,     3,-32768,-32768,
-32768,-32768,    45,   286,-32768,-32768,-32768,-32768,-32768,   -23,
-32768,   251,   255,   263,   294,   184,-32768,-32768,   -76,-32768,
-32768,   297,-32768,-32768,-32768,   359,   505,    57,-32768,-32768,
-32768,-32768,-32768,   368,   657,   363,   286,-32768,-32768,-32768,
   259,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   260,
   268,-32768,-32768,   168,    37,    32,-32768,   258,    48,   276,
   345,   278,   314,   116,   170,-32768,-32768,-32768,   280,-32768,
   281,   282,   166,-32768,-32768,   285,   275,-32768,-32768,-32768,
-32768,   385,   312,   385,   363,   184,-32768,-32768,   184,-32768,
    98,    94,    98,-32768,-32768,   303,    94,    98,   298,   297,
-32768,   369,     7,   328,    16,   330,    16,   335,    56,-32768,
    14,   166,   310,   380,-32768,-32768,   -25,-32768,-32768,   315,
   223,   166,-32768,   301,   203,   324,   316,   -25,-32768,-32768,
-32768,   305,-32768,-32768,-32768,-32768,   166,-32768,-32768,   421,
-32768,   421,-32768,-32768,-32768,-32768,   334,-32768,-32768,-32768,
    98,-32768,-32768,   341,-32768,-32768,-32768,   363,   313,    35,
-32768,-32768,-32768,   275,-32768,   356,   323,   322,-32768,-32768,
    98,   275,   363,   327,   363,-32768,-32768,    74,-32768,-32768,
   329,   131,-32768,-32768,-32768,   326,   309,   333,   336,   339,
   235,   342,   338,   344,   346,-32768,-32768,-32768,-32768,-32768,
   347,   309,   309,-32768,   309,   166,   248,   348,   350,-32768,
-32768,-32768,-32768,   351,-32768,   317,-32768,     7,-32768,   275,
-32768,    12,-32768,    98,   275,-32768,-32768,   275,-32768,    68,
   317,-32768,    14,-32768,-32768,-32768,-32768,   353,-32768,-32768,
   285,     0,-32768,-32768,   349,-32768,-32768,-32768,   354,-32768,
-32768,     6,   141,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   355,   358,-32768,   385,
-32768,-32768,   155,-32768,    57,   166,-32768,   363,   340,-32768,
-32768,   348,    43,-32768,-32768,-32768,-32768,   421,-32768,     0,
    10,   232,   340,   363,-32768,-32768,-32768,    43,    38,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    18,-32768,
-32768,-32768,   462,   463,-32768
};

static const short yypgoto[] = {-32768,
-32768,   466,-32768,   360,-32768,   453,-32768,-32768,   446,-32768,
-32768,   417,-32768,-32768,-32768,-32768,   401,-32768,   361,-32768,
-32768,   367,-32768,-32768,   413,-32768,-32768,   332,-32768,   120,
   242,-32768,   132,-32768,   137,-32768,-32768,-32768,   264,-32768,
-32768,-32768,    60,  -327,  -228,   -80,-32768,   -34,-32768,  -137,
-32768,   277,  -115,   304,   307,-32768,   -31,-32768,  -207,  -109,
  -211,   -71,   357,-32768,    -5,-32768,-32768,-32768,  -187,-32768,
   171,  -133,    89,   -45,-32768,   239,-32768,  -242,-32768,-32768,
-32768,    80,-32768,-32768,-32768,-32768,-32768,-32768,    90,    93,
  -209,-32768,-32768,-32768,   143,  -125,  -148,-32768,-32768,-32768,
-32768,     1,-32768,   200,    -7
};


#define	YYLAST		755


static const short yytable[] = {    15,
     5,   120,   272,     5,   292,    15,   236,   238,    10,   197,
   179,   276,   278,   279,    10,    10,   117,   282,   283,   163,
    10,   426,    10,   114,    10,   143,   178,   132,   433,    65,
     7,    63,    72,   159,   160,   427,    79,    64,    10,    11,
    71,   426,    10,    11,    78,   296,   426,    19,    65,   296,
    63,   217,   218,   159,   160,   427,    64,    10,   159,   160,
   427,    16,     1,     2,    10,   168,    79,    10,   171,    67,
    28,   343,     1,     2,    78,   198,    10,   168,   370,   319,
   171,   144,   434,   132,   154,   115,   435,    29,   155,   149,
   179,   353,   320,   179,   381,   145,   295,   163,   118,   133,
   150,   441,    72,   221,   226,   402,   178,    79,   316,   178,
    71,   441,   289,   310,   139,    78,   153,   289,   325,   292,
   118,   289,   408,   -72,   152,   118,   268,   118,   181,   118,
   219,   428,   442,   339,   219,   164,   180,    12,   387,   229,
   202,    17,   347,   230,   393,   440,   348,   201,   209,   211,
   118,   428,   293,   397,  -280,   133,   428,   210,    30,    68,
   314,   306,    10,   307,   124,   203,   220,     1,     2,   112,
   220,    31,   166,   306,    10,   168,   169,   170,   171,     1,
     2,   359,   217,   218,   274,   360,   243,   275,   418,   165,
   166,   167,    10,   168,   169,   170,   171,     1,     2,   202,
   244,    32,   379,    73,   219,    33,   394,   273,   181,   395,
   277,   181,    34,   349,   245,   246,   180,   421,    36,   180,
   388,   354,   235,    37,   203,   294,    66,   302,    80,   302,
   247,   311,   172,   315,   310,   398,     1,     2,   362,   108,
   220,   166,   363,    10,   168,   169,   170,   171,   411,   248,
   173,   324,   412,   202,   166,   249,    10,   168,   169,   170,
   171,    20,   419,   111,   250,   116,   420,   293,   124,   391,
    21,   365,   251,   174,   252,  -254,   237,   125,   203,  -254,
   345,   118,   314,   245,   109,   110,   376,   377,   126,   378,
   175,    22,   127,    23,    10,   356,   245,   356,   369,     1,
     2,   129,    24,   327,   328,   329,   330,     1,     2,   159,
   160,   380,   184,   185,   331,   166,   128,    10,   168,   169,
   170,   171,     1,     2,   249,    10,   168,   159,   160,   171,
     1,     2,   327,   328,   329,   330,   135,   249,   389,   134,
   294,    83,    84,   244,   302,   136,   180,   322,   323,   341,
   342,   138,   311,   389,    82,   315,   141,   245,   246,   414,
   415,   180,   142,   156,   405,    83,    84,   157,   188,   158,
   207,    10,   231,   247,   410,   213,   215,    85,    38,    86,
   216,    87,  -281,   232,   233,   234,   239,   241,   118,   269,
   242,    88,   248,   267,   280,    89,   284,   288,   249,    90,
   410,   303,    91,    41,    42,    43,   305,   250,   318,   317,
   326,   338,   405,    92,    45,   251,   438,   252,    93,    46,
    94,    47,    95,   334,   336,   340,   344,   350,   346,    48,
   351,    96,    97,   352,   357,   364,    10,   361,    49,   366,
    50,     1,     2,   368,   372,    51,    98,    52,    53,    54,
   203,   373,   375,   367,    38,   374,   424,   386,    99,   385,
   406,   444,   445,   407,   416,    18,   382,   417,     6,    39,
   401,    35,    81,    40,   113,   140,   137,   106,   304,    41,
    42,    43,   399,   392,   390,    44,   208,   439,   227,   271,
    45,   228,   371,   287,   422,    46,   337,    47,   182,   432,
   423,   425,   396,   199,   358,    48,     0,     0,     0,     0,
     0,     0,     0,     0,    49,     0,    50,     0,   189,   190,
     0,    51,     0,    52,    53,    54,   191,     0,     0,     0,
    85,    38,    86,     0,    87,   192,     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,   193,     0,    92,    45,     0,     0,
     0,    93,    46,    94,    47,    95,     0,     0,     0,     0,
     0,     0,    48,     0,    96,    97,   194,   195,     0,     0,
     0,    49,     0,    50,    83,    84,     0,     0,    51,    98,
    52,    53,    54,     0,     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,     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,
     0,    82,   214,     3,   233,    13,   194,   195,     9,   147,
   136,   221,   222,   223,     9,     9,    32,   227,   228,   135,
     9,     4,     9,    50,     9,    23,   136,    99,    19,    37,
   107,    37,    40,    16,    17,    18,    44,    37,     9,    10,
    40,     4,     9,    10,    44,    34,     4,   109,    56,    34,
    56,    15,    16,    16,    17,    18,    56,     9,    16,    17,
    18,    38,    14,    15,     9,    10,    74,     9,    13,    21,
    10,   281,    14,    15,    74,   147,     9,    10,   321,   105,
    13,    79,    73,   155,   108,   112,    77,    61,   112,    45,
   216,   301,   118,   219,   337,    93,   234,   213,   114,    99,
    56,   429,   110,   184,   185,   106,   216,   115,   242,   219,
   110,   439,   106,   239,   114,   115,   124,   106,   252,   348,
   114,   106,   117,   108,   124,   114,   207,   114,   136,   114,
    37,   114,   115,   267,    37,   135,   136,   108,   346,   108,
    84,   108,   108,   112,   354,   108,   112,   147,   156,   157,
   114,   114,   233,   361,   107,   155,   114,   157,    88,   111,
   241,   106,     9,   108,   117,   109,    73,    14,    15,   111,
    73,    88,     7,   106,     9,    10,    11,    12,    13,    14,
    15,   108,    15,    16,   216,   112,    21,   219,   400,     6,
     7,     8,     9,    10,    11,    12,    13,    14,    15,    84,
    35,    57,   336,    50,    37,    88,   355,   215,   216,   358,
   117,   219,     3,   294,    49,    50,   216,   405,   110,   219,
   346,   302,   107,    25,   109,   233,    15,   235,    43,   237,
    65,   239,    49,   241,   360,   361,    14,    15,   108,   111,
    73,     7,   112,     9,    10,    11,    12,    13,   108,    84,
    67,   251,   112,    84,     7,    90,     9,    10,    11,    12,
    13,    15,   108,   107,    99,   107,   112,   348,   117,   350,
    24,   317,   107,    90,   109,   108,   107,    85,   109,   112,
   288,   114,   363,    49,   111,   112,   332,   333,    85,   335,
   107,    45,    75,    47,     9,   303,    49,   305,    64,    14,
    15,    85,    56,   101,   102,   103,   104,    14,    15,    16,
    17,    64,    16,    17,   112,     7,    55,     9,    10,    11,
    12,    13,    14,    15,    90,     9,    10,    16,    17,    13,
    14,    15,   101,   102,   103,   104,   117,    90,   346,     3,
   348,    14,    15,    35,   352,     3,   346,    33,    34,    16,
    17,   108,   360,   361,     3,   363,   108,    49,    50,   394,
   395,   361,   107,   113,   372,    14,    15,   113,    10,   107,
     3,     9,   115,    65,   382,   117,   117,    26,    27,    28,
   113,    30,   107,    39,   107,    72,   107,   107,   114,     5,
   109,    40,    84,   109,    92,    44,    99,    29,    90,    48,
   408,    72,    51,    52,    53,    54,    72,    99,    29,   100,
   110,   107,   420,    62,    63,   107,   424,   109,    67,    68,
    69,    70,    71,   100,   109,     5,    86,    72,   116,    78,
   108,    80,    81,   112,   108,   110,     9,   109,    87,   107,
    89,    14,    15,   105,   107,    94,    95,    96,    97,    98,
   109,   108,   106,   118,    27,   110,   117,   107,   107,   110,
   112,     0,     0,   110,   110,    13,   119,   110,     3,    42,
   118,    26,    56,    46,    74,   115,   110,    65,   237,    52,
    53,    54,   363,   352,   348,    58,   155,   428,   185,   213,
    63,   185,   322,   230,   406,    68,   258,    70,   139,   420,
   408,   412,   360,   147,   305,    78,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    87,    -1,    89,    -1,    14,    15,
    -1,    94,    -1,    96,    97,    98,    22,    -1,    -1,    -1,
    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,
    -1,    -1,    48,    -1,    -1,    51,    52,    53,    54,    -1,
    -1,    -1,    -1,    -1,    60,    -1,    62,    63,    -1,    -1,
    -1,    67,    68,    69,    70,    71,    -1,    -1,    -1,    -1,
    -1,    -1,    78,    -1,    80,    81,    82,    83,    -1,    -1,
    -1,    87,    -1,    89,    14,    15,    -1,    -1,    94,    95,
    96,    97,    98,    -1,    -1,    -1,    26,    27,    28,    -1,
    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40,    -1,    -1,    -1,    44,    -1,    -1,    -1,    48,    -1,
    -1,    51,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    62,    63,    -1,    -1,    -1,    67,    68,    69,
    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,
    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    -1,    89,
    14,    15,    -1,    -1,    94,    95,    96,    97,    98,    -1,
    -1,    -1,    26,    27,    28,    -1,    30,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,
    44,    -1,    -1,    -1,    48,    -1,    -1,    51,    52,    53,
    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
    -1,    -1,    -1,    67,    68,    69,    70,    71,    -1,    -1,
    -1,    -1,    -1,    -1,    78,    -1,    80,    81,    -1,    -1,
    -1,    -1,    -1,    87,    -1,    89,    -1,    -1,    -1,    -1,
    94,    95,    96,    97,    98
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/share/bison.simple"
/* This file comes from bison-1.28.  */

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

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

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

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

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

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

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

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

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

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

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#endif

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

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

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

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

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

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

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

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

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

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

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

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

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

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

#else /* __cplusplus */

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

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

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

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

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

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

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

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

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

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

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

  int yystacksize = YYINITDEPTH;
  int yyfree_stacks = 0;

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

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

  int yylen;

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

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

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

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

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

  *++yyssp = yystate;

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

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

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

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

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

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

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

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

  goto yybackup;
 yybackup:

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

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

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

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

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

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

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

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

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

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

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

  yyn = yytable[yyn];

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

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

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */

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

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

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

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

  yystate = yyn;
  goto yynewstate;

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

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

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

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

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

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


  switch (yyn) {

case 1:
#line 322 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 328 "asn1p_y.y"
{
		yyval.a_grammar = asn1p_new();
		checkmem(yyval.a_grammar);
		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
	;
    break;}
case 3:
#line 333 "asn1p_y.y"
{
		yyval.a_grammar = yyvsp[-1].a_grammar;
		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
	;
    break;}
case 4:
#line 354 "asn1p_y.y"
{

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

		yyval.a_module->ModuleName = yyvsp[-7].tv_str;
		yyval.a_module->module_oid = yyvsp[-6].a_oid;
		yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
	;
    break;}
case 5:
#line 375 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 376 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 380 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 383 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 389 "asn1p_y.y"
{
		yyval.a_oid = asn1p_oid_new();
		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
		if(yyvsp[0].a_oid_arc.name)
			free(yyvsp[0].a_oid_arc.name);
	;
    break;}
case 10:
#line 395 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
		if(yyvsp[0].a_oid_arc.name)
			free(yyvsp[0].a_oid_arc.name);
	;
    break;}
case 11:
#line 404 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 408 "asn1p_y.y"
{		/* iso(1) */
		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
		yyval.a_oid_arc.number = yyvsp[-1].a_int;
	;
    break;}
case 13:
#line 412 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 422 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 423 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 432 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 435 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 444 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 447 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 450 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 453 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 457 "asn1p_y.y"
{
		/* X.680Amd1 specifies TAG and XER */
		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
		 	yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
		} else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
		 	yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
		} else {
			fprintf(stderr,
				"WARNING: %s INSTRUCTIONS at line %d: "
				"Unrecognized encoding reference\n",
				yyvsp[-1].tv_str, yylineno);
		 	yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
		}
		free(yyvsp[-1].tv_str);
	;
    break;}
case 23:
#line 478 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 479 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 488 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 491 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;

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

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

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

	;
    break;}
case 27:
#line 524 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 527 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		if(yyvsp[0].a_xports) {
			TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
		} else {
			/* "EXPORTS ALL;" ? */
		}
	;
    break;}
case 29:
#line 536 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
	;
    break;}
case 30:
#line 543 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
	;
    break;}
case 31:
#line 556 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
	;
    break;}
case 32:
#line 564 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 565 "asn1p_y.y"
{
		fprintf(stderr,
			"WARNING: ENCODING-CONTROL %s "
			"specification at line %d ignored\n",
			yyvsp[-1].tv_str, yylineno);
		free(yyvsp[-1].tv_str);
		yyval.a_module = 0;
	;
    break;}
case 34:
#line 577 "asn1p_y.y"
{
		return yyerror(
			"Attempt to redefine a standard basic string type, "
			"please comment out or remove this type redefinition.");
	;
    break;}
case 35:
#line 590 "asn1p_y.y"
{
		if(!saved_aid && 0)
			return yyerror("Unterminated IMPORTS FROM, "
					"expected semicolon ';'");
		saved_aid = 0;
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 36:
#line 600 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 606 "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 611 "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 618 "asn1p_y.y"
{ memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
    break;}
case 40:
#line 619 "asn1p_y.y"
{ yyval.a_aid.oid = yyvsp[0].a_oid; ;
    break;}
case 41:
#line 623 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-3].a_xports;
		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
		yyval.a_xports->identifier = yyvsp[0].a_aid;
		/* This stupid thing is used for look-back hack. */
		saved_aid = yyval.a_xports->identifier.oid ? 0 : &(yyval.a_xports->identifier);
		checkmem(yyval.a_xports);
	;
    break;}
case 42:
#line 634 "asn1p_y.y"
{
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 43:
#line 639 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 44:
#line 646 "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 652 "asn1p_y.y"
{		/* Completely equivalent to above */
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 46:
#line 658 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 47:
#line 667 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 48:
#line 670 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 49:
#line 673 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 50:
#line 681 "asn1p_y.y"
{
		yyval.a_xports = asn1p_xports_new();
		assert(yyval.a_xports);
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 51:
#line 686 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 52:
#line 693 "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 699 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
	;
    break;}
case 54:
#line 705 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
	;
    break;}
case 55:
#line 716 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 56:
#line 716 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-4].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
		yyval.a_expr->meta_type = AMT_VALUESET;
		/* take care of ValueSet body */
	;
    break;}
case 57:
#line 726 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->reference = yyvsp[0].a_ref;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
		yyval.a_expr->meta_type = AMT_TYPEREF;
	;
    break;}
case 58:
#line 733 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = yyvsp[0].a_type;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 59:
#line 751 "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 60:
#line 757 "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_OBJECTCLASS);
	;
    break;}
case 61:
#line 773 "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 62:
#line 783 "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 63:
#line 792 "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 64:
#line 803 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 65:
#line 807 "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 814 "asn1p_y.y"
{
		int ret;
		yyval.a_parg.governor = asn1p_ref_new(yylineno);
		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
		checkmem(ret == 0);
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 67:
#line 821 "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 68:
#line 832 "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 69:
#line 837 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 70:
#line 844 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 71:
#line 847 "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 72:
#line 871 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
    break;}
case 73:
#line 872 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
    break;}
case 74:
#line 875 "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 75:
#line 880 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 76:
#line 887 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 77:
#line 894 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
		yyval.a_expr->marker = yyvsp[0].a_marker;
		_fixup_anonymous_identifier(yyval.a_expr);
	;
    break;}
case 78:
#line 900 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
		yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 79:
#line 907 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 80:
#line 913 "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 81:
#line 918 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 82:
#line 925 "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 83:
#line 930 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 84:
#line 933 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		_fixup_anonymous_identifier(yyval.a_expr);
	;
    break;}
case 85:
#line 940 "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_OBJECTCLASS);
	;
    break;}
case 86:
#line 950 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 87:
#line 951 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 88:
#line 955 "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_OBJECTCLASS;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 89:
#line 962 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 90:
#line 972 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS;	/* TypeFieldSpec */
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 91:
#line 982 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS;	/* FixedTypeValueFieldSpec */
		yyval.a_expr->unique = yyvsp[-1].a_int;
		yyval.a_expr->marker = yyvsp[0].a_marker;
		asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
	;
    break;}
case 92:
#line 993 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
		yyval.a_expr->reference = yyvsp[-1].a_ref;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 93:
#line 1003 "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->reference = yyvsp[-1].a_ref;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 94:
#line 1014 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
		yyval.a_expr->reference = yyvsp[-1].a_ref;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 95:
#line 1024 "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->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
		asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 96:
#line 1035 "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->reference = yyvsp[-1].a_ref;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 97:
#line 1047 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 98:
#line 1048 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 99:
#line 1055 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 100:
#line 1057 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 101:
#line 1063 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 102:
#line 1067 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 103:
#line 1074 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
		yyval.a_wchunk->type = WC_WHITESPACE;
	;
    break;}
case 104:
#line 1078 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0);
	;
    break;}
case 105:
#line 1081 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].a_refcomp.name, strlen(yyvsp[0].a_refcomp.name), 0);
		yyval.a_wchunk->type = WC_FIELD;
	;
    break;}
case 106:
#line 1085 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
	;
    break;}
case 107:
#line 1091 "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 108:
#line 1099 "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 109:
#line 1108 "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 110:
#line 1120 "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 111:
#line 1142 "asn1p_y.y"
{
		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
		asn1p_as_pointer = 0;
	;
    break;}
case 112:
#line 1149 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;

		if((yyval.a_expr->marker.flags & EM_INDIRECT)
		&& (yyval.a_expr->marker.flags & EM_OPTIONAL) != EM_OPTIONAL) {
			fprintf(stderr,
				"INFO: Directive <ASN1C:RepresentAsPointer> "
				"applied to %s at line %d\n",
				ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
					?  ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
					: "member",
				yyval.a_expr->_lineno
			);
		}
	;
    break;}
case 113:
#line 1168 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 114:
#line 1171 "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 115:
#line 1177 "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 116:
#line 1183 "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 117:
#line 1189 "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 118:
#line 1199 "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 119:
#line 1209 "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 120:
#line 1215 "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 121:
#line 1229 "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 122:
#line 1253 "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 123:
#line 1260 "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 124:
#line 1275 "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 125:
#line 1283 "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 126:
#line 1293 "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 127:
#line 1303 "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 128:
#line 1313 "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 129:
#line 1321 "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 130:
#line 1343 "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 131:
#line 1351 "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 133:
#line 1364 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 134:
#line 1369 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 135:
#line 1378 "asn1p_y.y"
{
		yyval.a_ref = asn1p_ref_new(yylineno);
		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
	;
    break;}
case 136:
#line 1382 "asn1p_y.y"
{
		yyval.a_ref = yyval.a_ref;
		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
	;
    break;}
case 137:
#line 1386 "asn1p_y.y"
{
		yyval.a_ref = yyval.a_ref;
		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
	;
    break;}
case 138:
#line 1393 "asn1p_y.y"
{
		yyval.a_ref = asn1p_ref_new(yylineno);
		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
	;
    break;}
case 139:
#line 1413 "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 140:
#line 1423 "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 141:
#line 1430 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 142:
#line 1430 "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 143:
#line 1435 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_NULL;
	;
    break;}
case 144:
#line 1440 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 145:
#line 1445 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 146:
#line 1450 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 147:
#line 1454 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 148:
#line 1458 "asn1p_y.y"
{
		yyval.a_value = yyval.a_value;
	;
    break;}
case 149:
#line 1461 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 150:
#line 1464 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 151:
#line 1470 "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 152:
#line 1481 "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 153:
#line 1499 "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 154:
#line 1503 "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 155:
#line 1508 "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 156:
#line 1542 "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 157:
#line 1551 "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 158:
#line 1566 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 159:
#line 1567 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 160:
#line 1568 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 161:
#line 1569 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 162:
#line 1570 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 163:
#line 1571 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 164:
#line 1572 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 165:
#line 1573 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 166:
#line 1574 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 167:
#line 1575 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 168:
#line 1576 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 169:
#line 1577 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 170:
#line 1578 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 171:
#line 1585 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 172:
#line 1586 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 173:
#line 1587 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 174:
#line 1591 "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 175:
#line 1597 "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 176:
#line 1610 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 177:
#line 1611 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
	;
    break;}
case 178:
#line 1615 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
	;
    break;}
case 179:
#line 1619 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 180:
#line 1620 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 181:
#line 1621 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 182:
#line 1622 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 183:
#line 1623 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		fprintf(stderr, "WARNING: T61String is not fully supported\n");
	;
    break;}
case 184:
#line 1627 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 185:
#line 1628 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 186:
#line 1629 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 187:
#line 1630 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
	;
    break;}
case 188:
#line 1634 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 189:
#line 1635 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 195:
#line 1647 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 196:
#line 1648 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 197:
#line 1654 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 198:
#line 1657 "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 199:
#line 1667 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 200:
#line 1670 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 201:
#line 1676 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 202:
#line 1679 "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 203:
#line 1685 "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 204:
#line 1696 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 205:
#line 1699 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
	;
    break;}
case 206:
#line 1702 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 207:
#line 1705 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 208:
#line 1708 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 209:
#line 1714 "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 210:
#line 1722 "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 211:
#line 1730 "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 212:
#line 1736 "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 213:
#line 1742 "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 214:
#line 1749 "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 215:
#line 1757 "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 216:
#line 1765 "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 217:
#line 1774 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 218:
#line 1777 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 219:
#line 1781 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 220:
#line 1781 "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 221:
#line 1792 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 222:
#line 1793 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 223:
#line 1794 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 224:
#line 1795 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 225:
#line 1799 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 226:
#line 1802 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 227:
#line 1808 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 228:
#line 1813 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 229:
#line 1818 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 230:
#line 1821 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 231:
#line 1824 "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 232:
#line 1838 "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 233:
#line 1852 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
	;
    break;}
case 234:
#line 1855 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 235:
#line 1861 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 236:
#line 1864 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 237:
#line 1870 "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 238:
#line 1876 "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 239:
#line 1890 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 240:
#line 1891 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 241:
#line 1895 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 242:
#line 1898 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 243:
#line 1901 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 244:
#line 1907 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 245:
#line 1910 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 246:
#line 1919 "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 247:
#line 1934 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 248:
#line 1940 "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 249:
#line 1946 "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 250:
#line 1960 "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 251:
#line 1971 "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 252:
#line 1987 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 253:
#line 1990 "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 254:
#line 2008 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_NOMARK;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 255:
#line 2012 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 256:
#line 2016 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 257:
#line 2020 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_DEFAULT;
		yyval.a_marker.default_value = yyvsp[0].a_value;
	;
    break;}
case 258:
#line 2043 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 259:
#line 2047 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 260:
#line 2053 "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 261:
#line 2058 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 262:
#line 2065 "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 263:
#line 2072 "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 264:
#line 2080 "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 265:
#line 2088 "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 266:
#line 2095 "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 267:
#line 2106 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 268:
#line 2110 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 269:
#line 2141 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 270:
#line 2142 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 271:
#line 2146 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
	;
    break;}
case 272:
#line 2153 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-2].a_tag;
		yyval.a_tag.tag_value = yyvsp[-1].a_int;
	;
    break;}
case 273:
#line 2159 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
    break;}
case 274:
#line 2160 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
    break;}
case 275:
#line 2161 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
    break;}
case 276:
#line 2162 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
    break;}
case 277:
#line 2166 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
    break;}
case 278:
#line 2167 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
    break;}
case 279:
#line 2168 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
    break;}
case 280:
#line 2172 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 281:
#line 2176 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 282:
#line 2184 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 283:
#line 2191 "asn1p_y.y"
{ yyval.tv_str = 0; ;
    break;}
case 284:
#line 2192 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 285:
#line 2198 "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 2204 "asn1p_y.y"



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

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

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

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

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

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

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

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

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

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

	return val;
}

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

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

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

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

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

