
/*  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		448
#define	YYFLAG		-32768
#define	YYNTBASE	120

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

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,   151,   156,   158,   160,   165,
   169,   173,   180,   187,   189,   193,   195,   199,   203,   207,
   211,   213,   217,   219,   221,   223,   225,   226,   228,   230,
   234,   238,   241,   245,   247,   249,   253,   256,   258,   260,
   266,   267,   269,   271,   275,   278,   283,   287,   291,   295,
   299,   303,   304,   306,   307,   314,   316,   319,   321,   323,
   325,   329,   331,   335,   339,   343,   344,   347,   349,   354,
   359,   364,   371,   378,   380,   385,   389,   391,   395,   399,
   403,   405,   409,   411,   415,   417,   419,   421,   423,   427,
   431,   433,   438,   440,   442,   446,   447,   451,   453,   455,
   457,   459,   461,   463,   465,   467,   471,   473,   475,   477,
   479,   482,   484,   486,   488,   490,   493,   496,   498,   500,
   503,   506,   508,   510,   512,   514,   516,   519,   521,   524,
   526,   528,   530,   532,   534,   536,   538,   540,   542,   544,
   546,   548,   550,   552,   554,   556,   558,   560,   562,   563,
   565,   567,   572,   576,   581,   583,   585,   589,   595,   597,
   601,   605,   609,   613,   618,   622,   624,   626,   630,   634,
   638,   642,   644,   646,   647,   653,   655,   658,   661,   665,
   667,   669,   671,   673,   675,   677,   679,   681,   685,   691,
   693,   697,   699,   703,   704,   706,   708,   710,   712,   714,
   716,   720,   725,   727,   731,   734,   738,   740,   744,   745,
   747,   749,   752,   755,   759,   761,   765,   767,   772,   777,
   779,   781,   783,   785,   786,   788,   791,   796,   797,   799,
   801,   803,   804,   806,   808,   810,   812,   814,   815,   817
};

static const short yyrhs[] = {   121,
     0,   122,     0,   121,   122,     0,   223,   123,    38,   127,
     3,    25,   130,    43,     0,     0,   124,     0,   107,   125,
   108,     0,   107,   108,     0,   126,     0,   125,   126,     0,
   226,     0,   226,   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,   144,     0,
     0,    42,    15,   133,     0,   186,     0,    58,   135,   111,
     0,    58,    50,     0,   137,     0,   135,   137,     0,     0,
   124,     0,   138,    50,   223,   136,     0,   139,     0,   138,
   112,   139,     0,   223,     0,   223,   107,   108,     0,   226,
     0,    46,   141,   111,     0,    46,    21,   111,     0,    46,
   111,     0,   142,     0,   141,   112,   142,     0,   223,     0,
   223,   107,   108,     0,   226,     0,   107,   193,   108,     0,
   223,   145,     3,   143,     0,   185,     0,   170,     0,   170,
   107,   149,   108,     0,   223,     3,   166,     0,   223,     3,
   156,     0,   223,   107,   147,   108,     3,   166,     0,   223,
   107,   147,   108,     3,   156,     0,   148,     0,   147,   112,
   148,     0,   223,     0,   223,   113,   226,     0,   223,   113,
   223,     0,   183,   113,   226,     0,   183,   113,   223,     0,
   150,     0,   149,   112,   150,     0,   166,     0,   179,     0,
   226,     0,   143,     0,     0,   152,     0,   153,     0,   152,
   112,   153,     0,   226,   166,   212,     0,   166,   212,     0,
    34,    72,   166,     0,   165,     0,   155,     0,   154,   112,
   155,     0,   226,   166,     0,   165,     0,   166,     0,    32,
   107,   158,   108,   160,     0,     0,    92,     0,   159,     0,
   158,   112,   159,     0,    16,   212,     0,    17,   166,   157,
   212,     0,    17,   174,   212,     0,    17,   175,   212,     0,
    16,   174,   212,     0,    16,   166,   212,     0,    16,   175,
   212,     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,   180,     0,   106,   116,   217,     0,   218,   168,
   190,     0,     0,   167,   169,     0,   145,     0,    31,   107,
   154,   108,     0,    82,   107,   151,   108,     0,    83,   107,
   151,   108,     0,    82,   190,    72,   225,   218,   168,     0,
    83,   190,    72,   225,   218,   168,     0,    22,     0,    22,
    39,    29,   226,     0,    60,    72,   170,     0,    14,     0,
    14,   117,   223,     0,   224,   117,   223,     0,    14,   117,
   226,     0,   224,     0,   224,   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,   226,   145,     3,   177,     0,   179,     0,   180,
     0,   226,   113,   177,     0,     0,   107,   178,   182,     0,
    67,     0,    49,     0,    90,     0,     6,     0,     8,     0,
   181,     0,   217,     0,   226,     0,   223,   117,   226,     0,
     7,     0,    11,     0,    12,     0,     5,     0,   182,     5,
     0,    28,     0,    67,     0,    80,     0,   184,     0,    71,
    85,     0,    69,    55,     0,    81,     0,    48,     0,    40,
    75,     0,    30,    85,     0,    95,     0,    51,     0,   186,
     0,    62,     0,    44,     0,    26,    85,     0,   183,     0,
   184,   214,     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,   191,     0,   192,     0,    84,   109,   193,   110,
     0,   109,   193,   110,     0,   192,   109,   193,   110,     0,
   106,     0,   194,     0,   194,   112,   106,     0,   194,   112,
   106,   112,   194,     0,   195,     0,    21,   100,   195,     0,
   194,   187,   195,     0,   194,   188,   195,     0,   195,   189,
   195,     0,   198,   109,   193,   110,     0,   109,   193,   110,
     0,   199,     0,   200,     0,   199,   197,   199,     0,    65,
   197,   199,     0,   199,   197,    64,     0,    65,   197,    64,
     0,   206,     0,   201,     0,     0,    35,    29,   107,   196,
   182,     0,   105,     0,   105,   118,     0,   118,   105,     0,
   118,   105,   118,     0,    84,     0,    50,     0,    49,     0,
    90,     0,   217,     0,   181,     0,   226,     0,   223,     0,
    99,    33,   192,     0,    99,    34,   107,   202,   108,     0,
   203,     0,   202,   112,   203,     0,   106,     0,   226,   190,
   204,     0,     0,   205,     0,    77,     0,    19,     0,    73,
     0,   207,     0,   208,     0,   107,   223,   108,     0,   207,
   107,   209,   108,     0,   210,     0,   209,   112,   210,     0,
   119,   211,     0,   119,   117,   211,     0,   226,     0,   211,
   117,   226,     0,     0,   213,     0,    73,     0,    37,   177,
     0,   107,   108,     0,   107,   215,   108,     0,   216,     0,
   215,   112,   216,     0,   226,     0,   226,   109,   217,   110,
     0,   226,   109,   180,   110,     0,   217,     0,   106,     0,
    10,     0,    13,     0,     0,   219,     0,   220,   222,     0,
   114,   221,    10,   115,     0,     0,    93,     0,    23,     0,
    79,     0,     0,    56,     0,    45,     0,    14,     0,    15,
     0,    15,     0,     0,   226,     0,     9,     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   323,   329,   335,   351,   376,   378,   381,   385,   390,   397,
   405,   410,   414,   423,   425,   433,   437,   445,   449,   452,
   455,   459,   479,   481,   489,   493,   525,   529,   538,   545,
   558,   565,   567,   579,   591,   602,   607,   613,   619,   621,
   624,   635,   641,   647,   654,   660,   668,   672,   675,   682,
   688,   694,   701,   707,   716,   718,   728,   742,   752,   768,
   778,   794,   800,   807,   817,   827,   832,   839,   846,   854,
   864,   870,   876,   880,   888,   899,   921,   923,   925,   931,
   937,   945,   951,   958,   963,   969,   975,   981,   984,   990,
  1000,  1002,  1005,  1013,  1020,  1033,  1044,  1054,  1065,  1075,
  1086,  1097,  1099,  1104,  1108,  1113,  1118,  1124,  1129,  1132,
  1136,  1141,  1150,  1159,  1170,  1192,  1199,  1218,  1222,  1228,
  1234,  1240,  1250,  1260,  1266,  1277,  1291,  1300,  1310,  1320,
  1330,  1338,  1359,  1368,  1377,  1379,  1386,  1393,  1399,  1403,
  1409,  1429,  1439,  1441,  1442,  1449,  1449,  1454,  1461,  1467,
  1472,  1476,  1480,  1483,  1488,  1500,  1517,  1522,  1527,  1560,
  1570,  1584,  1586,  1587,  1588,  1589,  1590,  1591,  1592,  1593,
  1594,  1595,  1596,  1597,  1603,  1605,  1606,  1609,  1616,  1628,
  1630,  1634,  1638,  1639,  1640,  1641,  1642,  1646,  1647,  1648,
  1649,  1653,  1654,  1661,  1661,  1662,  1662,  1663,  1665,  1667,
  1672,  1676,  1685,  1689,  1694,  1699,  1702,  1708,  1718,  1722,
  1725,  1728,  1731,  1736,  1745,  1753,  1759,  1765,  1772,  1780,
  1788,  1797,  1800,  1803,  1804,  1814,  1816,  1817,  1818,  1821,
  1825,  1830,  1836,  1841,  1844,  1847,  1860,  1874,  1878,  1883,
  1887,  1892,  1899,  1912,  1914,  1917,  1921,  1924,  1929,  1933,
  1941,  1956,  1962,  1969,  1982,  1994,  2009,  2013,  2030,  2035,
  2038,  2043,  2065,  2070,  2075,  2081,  2087,  2095,  2103,  2111,
  2118,  2128,  2133,  2163,  2165,  2168,  2175,  2181,  2183,  2184,
  2185,  2188,  2190,  2191,  2194,  2199,  2206,  2213,  2215,  2220
};
#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","ValueSet","ValueSetTypeAssignment",
"DefinedType","DataTypeReference","ParameterArgumentList","ParameterArgumentName",
"ActualParameterList","ActualParameter","optComponentTypeLists","ComponentTypeLists",
"ComponentType","AlternativeTypeLists","AlternativeType","ObjectClass","optUnique",
"FieldSpec","ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxList",
"WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration",
"TypeDeclarationSet","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
"PrimitiveFieldReference","FieldName","DefinedObjectClass","ValueDefinition",
"Value","@3","SimpleValue","DefinedValue","RestrictedCharacterStringValue","Opaque",
"BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString",
"Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints",
"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec",
"ConstraintSpec","SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
};
#endif

static const short yyr1[] = {     0,
   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,   143,   144,   145,   145,   145,   146,
   146,   146,   146,   147,   147,   148,   148,   148,   148,   148,
   149,   149,   150,   150,   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,   170,   170,   170,   170,
   170,   170,   171,   171,   172,   173,   173,   174,   174,   174,
   175,   176,   177,   177,   177,   178,   177,   177,   179,   179,
   179,   179,   179,   179,   180,   180,   181,   181,   181,   182,
   182,   183,   183,   183,   183,   183,   183,   183,   183,   183,
   183,   183,   183,   183,   184,   184,   184,   185,   185,   186,
   186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
   186,   186,   186,   187,   187,   188,   188,   189,   190,   190,
   191,   191,   192,   192,   193,   193,   193,   193,   194,   194,
   194,   194,   194,   195,   195,   195,   195,   195,   195,   195,
   195,   195,   195,   196,   195,   197,   197,   197,   197,   198,
   198,   199,   199,   199,   199,   199,   200,   201,   201,   202,
   202,   203,   203,   204,   204,   205,   205,   205,   206,   206,
   207,   208,   209,   209,   210,   210,   211,   211,   212,   212,
   213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
   216,   217,   217,   218,   218,   219,   220,   221,   221,   221,
   221,   222,   222,   222,   223,   223,   224,   225,   225,   226
};

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

static const short yydefgoto[] = {   446,
     3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
    56,    57,   108,    58,    74,   202,    75,    76,    77,    59,
    69,    70,   174,    60,   100,    61,   131,   132,   175,   176,
   341,   342,   343,   334,   335,   120,   325,   205,   206,   329,
   330,   426,   439,   440,   344,   345,   152,   153,   214,   101,
   190,   191,   441,   265,   266,    62,   196,   257,   197,   198,
   237,   316,   102,   103,   104,   105,   302,   303,   305,   217,
   218,   219,   238,   239,   240,   396,   291,   241,   242,   243,
   244,   399,   400,   433,   434,   245,   246,   247,   371,   372,
   405,   267,   268,   139,   184,   185,   248,   122,   123,   124,
   151,   156,   249,   106,   390,   250
};

static const short yypact[] = {   200,
-32768,-32768,   200,-32768,   -45,-32768,    43,    34,-32768,-32768,
-32768,-32768,    50,-32768,   -19,   235,-32768,-32768,    86,   122,
    22,   106,   139,   120,   236,   235,-32768,   134,-32768,-32768,
-32768,-32768,-32768,   197,-32768,-32768,   457,-32768,   234,    56,
-32768,-32768,-32768,    49,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   214,   457,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   341,   618,-32768,   163,-32768,   181,-32768,
   206,-32768,-32768,    65,-32768,   -14,-32768,   216,-32768,-32768,
-32768,    57,   210,-32768,   256,-32768,   258,   274,-32768,-32768,
-32768,-32768,-32768,   295,   266,-32768,-32768,-32768,   694,   349,
   250,-32768,   251,-32768,-32768,   242,   357,-32768,-32768,-32768,
   226,   253,-32768,-32768,   200,   226,   254,   257,    85,-32768,
-32768,-32768,-32768,     5,   226,-32768,-32768,-32768,-32768,-32768,
    -5,-32768,   252,-32768,   259,   263,    75,    82,-32768,   303,
   219,-32768,-32768,   -45,-32768,-32768,   305,-32768,-32768,-32768,
   356,   542,    18,-32768,-32768,-32768,-32768,-32768,   372,   694,
   226,   226,   188,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,    67,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,    99,-32768,-32768,   268,-32768,-32768,   261,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   267,   270,
-32768,-32768,   169,    90,   112,-32768,   271,   348,   283,   319,
   103,   109,-32768,-32768,   290,   188,-32768,-32768,   291,    57,
-32768,-32768,-32768,-32768,-32768,   301,   373,-32768,-32768,   -74,
-32768,-32768,   299,-32768,   200,   188,-32768,   297,   204,   306,
   298,   -74,-32768,-32768,-32768,   307,-32768,-32768,-32768,-32768,
-32768,    75,-32768,     7,   275,   318,   410,   407,   219,-32768,
-32768,   219,-32768,    41,    74,    41,-32768,-32768,   326,    74,
    41,   321,   305,-32768,   394,    14,   322,    60,   352,    60,
   353,   188,   316,   188,-32768,-32768,   440,   320,   311,   327,
   433,   324,   334,   323,   346,-32768,-32768,-32768,-32768,-32768,
   328,   440,   440,-32768,   440,   188,   452,   338,-32768,-32768,
   350,   358,-32768,-32768,-32768,   453,-32768,-32768,-32768,-32768,
   329,-32768,-32768,-32768,    41,-32768,-32768,   381,-32768,-32768,
-32768,   407,   354,   146,-32768,-32768,-32768,   355,-32768,   401,
   366,   364,-32768,-32768,    41,   355,   407,   369,   407,   368,
-32768,   370,-32768,-32768,-32768,   361,-32768,-32768,   291,    17,
-32768,-32768,   371,-32768,-32768,-32768,   375,-32768,-32768,    23,
   158,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   374,-32768,
   275,-32768,    14,-32768,   355,-32768,    42,-32768,    41,   355,
-32768,-32768,   355,-32768,-32768,   410,-32768,-32768,   203,-32768,
    18,   289,-32768,   407,   376,-32768,-32768,   338,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,   453,-32768,    17,
   140,   227,   376,   407,-32768,    38,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,    38,    11,-32768,
-32768,    30,-32768,-32768,-32768,   486,   487,-32768
};

static const short yypgoto[] = {-32768,
-32768,   485,-32768,   347,-32768,   479,-32768,-32768,   468,-32768,
-32768,   439,-32768,-32768,-32768,-32768,   422,-32768,   382,-32768,
-32768,   389,   377,-32768,   -55,-32768,-32768,   342,-32768,   255,
   224,-32768,   119,-32768,   125,   292,-32768,-32768,   241,-32768,
-32768,-32768,    79,  -270,  -268,   -71,-32768,   -69,-32768,   244,
-32768,   262,  -135,   315,   325,-32768,   -82,-32768,  -130,  -246,
  -102,   126,   -59,   -31,-32768,   -13,-32768,-32768,-32768,  -209,
-32768,   239,   -63,   124,   -41,-32768,   286,-32768,  -121,-32768,
-32768,-32768,   113,-32768,-32768,-32768,-32768,-32768,-32768,   128,
   130,  -252,-32768,-32768,-32768,   278,  -116,  -114,-32768,-32768,
-32768,-32768,     1,-32768,   189,    -7
};


#define	YYLAST		792


static const short yytable[] = {    15,
     5,   279,   281,     5,   192,    15,   178,   336,   311,   107,
   121,   320,   322,   323,   436,    10,   168,   326,   327,   171,
   180,   186,    10,    63,   180,    10,   188,   189,   437,    65,
   289,    10,    72,   436,   179,   115,    79,    64,   179,   133,
    71,   436,    63,   290,    78,   188,   189,   437,    65,   154,
    10,    10,    11,   188,   189,   437,    64,    10,    10,    11,
   155,     7,     1,     2,    10,   177,    79,   134,    10,     1,
     2,    16,   378,    10,    78,   340,    67,   262,     1,     2,
   165,   166,   167,    10,   168,   169,   170,   171,   118,    19,
    10,   168,   388,   340,   171,    28,   213,   116,    73,   135,
   133,   215,   159,    72,   260,   261,   160,   148,    79,    30,
   262,    71,   182,   263,   336,   144,    78,   158,   443,   333,
   192,   178,   398,   172,   438,   157,   216,   119,   134,   181,
   187,   264,   269,   200,   410,   180,   415,   186,   312,   404,
   193,   199,   180,   438,   445,   180,   263,   333,   286,   179,
    12,   438,   283,   223,   225,   119,   179,    17,   430,   179,
   135,   222,   224,   149,   173,   333,    68,   -77,   444,   358,
   119,   444,   295,   119,   251,   113,   318,   150,   252,   319,
   177,   163,    29,   260,   261,   369,   215,   182,   119,   183,
   321,   421,   215,    31,   166,    32,    10,   168,   169,   170,
   171,     1,     2,   119,   337,   262,   253,    33,   226,   278,
   254,   216,   431,     1,     2,   280,   432,   216,   350,   272,
   352,    37,   227,   273,   165,   166,   167,    10,   168,   169,
   170,   171,     1,     2,    10,   294,   228,   229,    34,     1,
     2,   263,   367,    36,   181,   353,   187,   313,    66,    20,
   317,   200,   230,   382,   200,   199,    80,   383,    21,   199,
   364,   365,   199,   366,   411,   407,   384,   172,   338,   408,
   346,   231,   346,   109,   389,   416,  -259,   232,   417,    22,
  -259,    23,   119,    10,   168,   194,   233,   171,     1,     2,
    24,   110,   111,   234,   235,   166,   236,    10,   168,   169,
   170,   171,     1,     2,   297,   298,   299,   300,   173,   226,
   419,   337,   112,   413,   420,   301,     1,     2,   188,   189,
   203,   204,   117,   227,   380,   195,   125,   297,   298,   299,
   300,   292,   293,   188,   189,    83,    84,   228,   229,   391,
   126,   391,   127,    82,   376,   377,   427,   428,   128,   129,
   130,   136,   401,   230,    83,    84,   137,   138,   140,   141,
   143,   146,   406,   147,   161,   207,    85,    38,    86,   163,
    87,   162,   231,   313,   220,   338,   255,   256,   232,   346,
    88,   199,   259,   258,    89,   274,   275,   233,    90,   276,
   277,    91,    41,    42,    43,   235,   406,   236,   282,   284,
   287,   288,    92,    45,   296,   304,   306,    93,    46,    94,
    47,    95,   401,   308,   315,    10,   435,   324,    48,   328,
    96,    97,   332,   347,   349,   351,   354,    49,   355,    50,
   361,   356,   216,   363,    51,    98,    52,    53,    54,   166,
   360,    10,   168,   169,   170,   171,   166,    99,    10,   168,
   169,   170,   171,     1,     2,   362,   370,   375,   166,   373,
    10,   168,   169,   170,   171,    10,   379,   374,   119,   381,
     1,     2,   385,   386,   227,   387,   392,   394,   397,   395,
   409,   228,   402,    38,   403,   447,   448,     6,   228,   229,
   201,    18,   424,    35,    81,   114,   357,   145,    39,   142,
   228,   221,    40,   348,   230,   414,   309,   412,    41,    42,
    43,   285,   164,   331,    44,   368,   442,   314,   270,    45,
   339,   418,   232,   231,    46,   422,    47,   307,   271,   232,
   359,   310,   429,   423,    48,   425,     0,   393,   233,     0,
     0,   232,     0,    49,     0,    50,   235,     0,   236,     0,
    51,     0,    52,    53,    54,    83,    84,     0,     0,     0,
     0,     0,     0,   208,     0,     0,     0,    85,    38,    86,
     0,    87,   209,     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,   210,     0,    92,    45,     0,     0,     0,    93,    46,
    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
     0,    96,    97,   211,   212,     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,   211,   212,     3,   140,    13,   137,   276,   255,    65,
    82,   264,   265,   266,     4,     9,    10,   270,   271,    13,
   137,   138,     9,    37,   141,     9,    16,    17,    18,    37,
   105,     9,    40,     4,   137,    50,    44,    37,   141,    99,
    40,     4,    56,   118,    44,    16,    17,    18,    56,    45,
     9,     9,    10,    16,    17,    18,    56,     9,     9,    10,
    56,   107,    14,    15,     9,   137,    74,    99,     9,    14,
    15,    38,   325,     9,    74,    34,    21,    37,    14,    15,
     6,     7,     8,     9,    10,    11,    12,    13,    32,   109,
     9,    10,   345,    34,    13,    10,   152,   112,    50,    99,
   160,    84,   108,   111,    15,    16,   112,    23,   116,    88,
    37,   111,   106,    73,   383,   115,   116,   125,   108,   106,
   256,   252,   106,    49,   114,   125,   109,   114,   160,   137,
   138,   203,   204,   141,   381,   252,   389,   254,   255,   117,
   140,   141,   259,   114,   115,   262,    73,   106,   220,   252,
   108,   114,   216,   161,   162,   114,   259,   108,    19,   262,
   160,   161,   162,    79,    90,   106,   111,   108,   439,   291,
   114,   442,   236,   114,   108,   111,   259,    93,   112,   262,
   252,   107,    61,    15,    16,   307,    84,   106,   114,   108,
   117,   401,    84,    88,     7,    57,     9,    10,    11,    12,
    13,    14,    15,   114,   276,    37,   108,    88,    21,   107,
   112,   109,    73,    14,    15,   107,    77,   109,   282,   108,
   284,    25,    35,   112,     6,     7,     8,     9,    10,    11,
    12,    13,    14,    15,     9,   235,    49,    50,     3,    14,
    15,    73,   306,   110,   252,   287,   254,   255,    15,    15,
   258,   259,    65,   108,   262,   255,    43,   112,    24,   259,
   302,   303,   262,   305,   381,   108,   338,    49,   276,   112,
   278,    84,   280,   111,   346,   390,   108,    90,   393,    45,
   112,    47,   114,     9,    10,    67,    99,    13,    14,    15,
    56,   111,   112,   106,   107,     7,   109,     9,    10,    11,
    12,    13,    14,    15,   101,   102,   103,   104,    90,    21,
   108,   383,   107,   385,   112,   112,    14,    15,    16,    17,
    16,    17,   107,    35,   332,   107,   117,   101,   102,   103,
   104,    33,    34,    16,    17,    14,    15,    49,    50,   347,
    85,   349,    85,     3,    16,    17,   416,   417,    75,    55,
    85,     3,   360,    65,    14,    15,   107,   107,   117,     3,
   108,   108,   370,   107,   113,    10,    26,    27,    28,   107,
    30,   113,    84,   381,     3,   383,   109,   117,    90,   387,
    40,   381,   113,   117,    44,   115,    39,    99,    48,   107,
    72,    51,    52,    53,    54,   107,   404,   109,   109,   109,
   100,    29,    62,    63,   108,   100,   109,    67,    68,    69,
    70,    71,   420,   107,     5,     9,   424,    92,    78,    99,
    80,    81,    29,    72,    72,   110,   107,    87,   118,    89,
   108,   105,   109,   106,    94,    95,    96,    97,    98,     7,
   107,     9,    10,    11,    12,    13,     7,   107,     9,    10,
    11,    12,    13,    14,    15,   110,   119,     5,     7,   110,
     9,    10,    11,    12,    13,     9,    86,   110,   114,   116,
    14,    15,    72,   108,    35,   112,   108,   110,   118,   110,
   107,    49,   112,    27,   110,     0,     0,     3,    49,    50,
   144,    13,   117,    26,    56,    74,    64,   116,    42,   111,
    49,   160,    46,   280,    65,   387,   252,   383,    52,    53,
    54,   220,   136,   273,    58,    64,   438,   256,   204,    63,
   277,   396,    90,    84,    68,   402,    70,   242,   204,    90,
   292,   254,   420,   404,    78,   408,    -1,   349,    99,    -1,
    -1,    90,    -1,    87,    -1,    89,   107,    -1,   109,    -1,
    94,    -1,    96,    97,    98,    14,    15,    -1,    -1,    -1,
    -1,    -1,    -1,    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 324 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 330 "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 335 "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 356 "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 377 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 378 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 382 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 385 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 391 "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 397 "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 406 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 410 "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 414 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 424 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 425 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 434 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 437 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 446 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 449 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 452 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 455 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 459 "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 480 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 481 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 490 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 493 "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 526 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 529 "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 538 "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 545 "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 558 "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 566 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 567 "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 579 "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 592 "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 602 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 608 "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 613 "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 620 "asn1p_y.y"
{ memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
    break;}
case 40:
#line 621 "asn1p_y.y"
{ yyval.a_aid.oid = yyvsp[0].a_oid; ;
    break;}
case 41:
#line 625 "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 636 "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 641 "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 648 "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 654 "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 660 "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 669 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 48:
#line 672 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 49:
#line 675 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 50:
#line 683 "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 688 "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 695 "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 701 "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 707 "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"
{ yyval.a_constr = yyvsp[-1].a_constr; ;
    break;}
case 56:
#line 719 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
		yyval.a_expr->meta_type = AMT_VALUESET;
		yyval.a_expr->constraints = yyvsp[0].a_constr;
	;
    break;}
case 57:
#line 729 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 58:
#line 742 "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 59:
#line 752 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->reference = yyvsp[-3].a_ref;
		yyval.a_expr->rhs_pspecs = yyvsp[-1].a_expr;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
		yyval.a_expr->meta_type = AMT_TYPEREF;
	;
    break;}
case 60:
#line 772 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		assert(yyval.a_expr->expr_type);
		assert(yyval.a_expr->meta_type);
	;
    break;}
case 61:
#line 778 "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 62:
#line 794 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
	;
    break;}
case 63:
#line 800 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
	;
    break;}
case 64:
#line 808 "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 65:
#line 817 "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 66:
#line 828 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 67:
#line 832 "asn1p_y.y"
{
		int ret;
		yyval.a_parg.governor = asn1p_ref_new(yylineno);
		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
		checkmem(ret == 0);
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 68:
#line 839 "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 69:
#line 846 "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 70:
#line 854 "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 71:
#line 865 "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 72:
#line 870 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 73:
#line 877 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 74:
#line 880 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = "?";
		yyval.a_expr->expr_type = A1TC_REFERENCE;
		yyval.a_expr->meta_type = AMT_VALUE;
		yyval.a_expr->value = yyvsp[0].a_value;
	;
    break;}
case 75:
#line 888 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		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;
		ref = asn1p_ref_new(yylineno);
		asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
		yyval.a_expr->value = asn1p_value_fromref(ref, 0);
	;
    break;}
case 76:
#line 899 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		yyval.a_expr->expr_type = A1TC_VALUESET;
		yyval.a_expr->meta_type = AMT_VALUESET;
		yyval.a_expr->constraints = yyvsp[0].a_constr;
	;
    break;}
case 77:
#line 922 "asn1p_y.y"
{ yyval.a_expr = asn1p_expr_new(yylineno); ;
    break;}
case 78:
#line 923 "asn1p_y.y"
{ yyval.a_expr = yyvsp[0].a_expr; ;
    break;}
case 79:
#line 926 "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 80:
#line 931 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 81:
#line 938 "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 82:
#line 945 "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 83:
#line 951 "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 84:
#line 958 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 85:
#line 964 "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 86:
#line 969 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 87:
#line 976 "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 88:
#line 981 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 89:
#line 984 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		_fixup_anonymous_identifier(yyval.a_expr);
	;
    break;}
case 90:
#line 991 "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 91:
#line 1001 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 92:
#line 1002 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 93:
#line 1006 "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 94:
#line 1013 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 95:
#line 1023 "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 96:
#line 1033 "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 97:
#line 1044 "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 98:
#line 1054 "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 99:
#line 1065 "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 100:
#line 1075 "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 101:
#line 1086 "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 102:
#line 1098 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 103:
#line 1099 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 104:
#line 1106 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 105:
#line 1108 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 106:
#line 1114 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 107:
#line 1118 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 108:
#line 1125 "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 109:
#line 1129 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0);
	;
    break;}
case 110:
#line 1132 "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 111:
#line 1136 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
	;
    break;}
case 112:
#line 1142 "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 113:
#line 1150 "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 114:
#line 1159 "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 115:
#line 1171 "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 116:
#line 1193 "asn1p_y.y"
{
		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
		asn1p_as_pointer = 0;
	;
    break;}
case 117:
#line 1200 "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 118:
#line 1219 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 119:
#line 1222 "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 120:
#line 1228 "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 121:
#line 1234 "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 122:
#line 1240 "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 123:
#line 1250 "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 124:
#line 1260 "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 125:
#line 1266 "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 126:
#line 1277 "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 127:
#line 1292 "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 128:
#line 1300 "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 129:
#line 1310 "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 130:
#line 1320 "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 131:
#line 1330 "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 132:
#line 1338 "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 133:
#line 1360 "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 134:
#line 1368 "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 136:
#line 1381 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 137:
#line 1386 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 138:
#line 1395 "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 139:
#line 1399 "asn1p_y.y"
{
		yyval.a_ref = yyval.a_ref;
		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
	;
    break;}
case 140:
#line 1403 "asn1p_y.y"
{
		yyval.a_ref = yyval.a_ref;
		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
	;
    break;}
case 141:
#line 1410 "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 142:
#line 1430 "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 145:
#line 1442 "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 146:
#line 1449 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 147:
#line 1449 "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 148:
#line 1454 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_NULL;
	;
    break;}
case 149:
#line 1462 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 150:
#line 1467 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 151:
#line 1472 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 152:
#line 1476 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 153:
#line 1480 "asn1p_y.y"
{
		yyval.a_value = yyval.a_value;
	;
    break;}
case 154:
#line 1483 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 155:
#line 1489 "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 156:
#line 1500 "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 157:
#line 1518 "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 158:
#line 1522 "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 159:
#line 1527 "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 160:
#line 1561 "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 161:
#line 1570 "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 162:
#line 1585 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 163:
#line 1586 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 164:
#line 1587 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 165:
#line 1588 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 166:
#line 1589 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 167:
#line 1590 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 168:
#line 1591 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 169:
#line 1592 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 170:
#line 1593 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 171:
#line 1594 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 172:
#line 1595 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 173:
#line 1596 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 174:
#line 1597 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 175:
#line 1604 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 176:
#line 1605 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 177:
#line 1606 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 178:
#line 1610 "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 179:
#line 1616 "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 180:
#line 1629 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 181:
#line 1630 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
	;
    break;}
case 182:
#line 1634 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
	;
    break;}
case 183:
#line 1638 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 184:
#line 1639 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 185:
#line 1640 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 186:
#line 1641 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 187:
#line 1642 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		fprintf(stderr, "WARNING: T61String is not fully supported\n");
	;
    break;}
case 188:
#line 1646 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 189:
#line 1647 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 190:
#line 1648 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 191:
#line 1649 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
	;
    break;}
case 192:
#line 1653 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 193:
#line 1654 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 199:
#line 1666 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 200:
#line 1667 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 201:
#line 1673 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 202:
#line 1676 "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 203:
#line 1686 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 204:
#line 1689 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 205:
#line 1695 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		yyval.a_constr->type = ACT_EL_EXT;
	;
    break;}
case 206:
#line 1699 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 207:
#line 1702 "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 208:
#line 1708 "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 209:
#line 1719 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 210:
#line 1722 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
	;
    break;}
case 211:
#line 1725 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 212:
#line 1728 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 213:
#line 1731 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 214:
#line 1737 "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 215:
#line 1745 "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 216:
#line 1753 "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 217:
#line 1759 "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 218:
#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 = yyvsp[-2].a_value;
		yyval.a_constr->range_stop = yyvsp[0].a_value;
	;
    break;}
case 219:
#line 1772 "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 220:
#line 1780 "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 221:
#line 1788 "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 222:
#line 1797 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 223:
#line 1800 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 224:
#line 1804 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 225:
#line 1804 "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 226:
#line 1815 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 227:
#line 1816 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 228:
#line 1817 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 229:
#line 1818 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 230:
#line 1822 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 231:
#line 1825 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 232:
#line 1831 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 233:
#line 1836 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 234:
#line 1841 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 235:
#line 1844 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 236:
#line 1847 "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 237:
#line 1861 "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 238:
#line 1875 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
	;
    break;}
case 239:
#line 1878 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 240:
#line 1884 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 241:
#line 1887 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 242:
#line 1893 "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 243:
#line 1899 "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 244:
#line 1913 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 245:
#line 1914 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 246:
#line 1918 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 247:
#line 1921 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 248:
#line 1924 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 249:
#line 1930 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 250:
#line 1933 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 251:
#line 1942 "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 252:
#line 1957 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 253:
#line 1963 "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 254:
#line 1969 "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 255:
#line 1983 "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 256:
#line 1994 "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 257:
#line 2010 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 258:
#line 2013 "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 259:
#line 2031 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_NOMARK;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 260:
#line 2035 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 261:
#line 2039 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
		yyval.a_marker.default_value = 0;
	;
    break;}
case 262:
#line 2043 "asn1p_y.y"
{
		yyval.a_marker.flags = EM_DEFAULT;
		yyval.a_marker.default_value = yyvsp[0].a_value;
	;
    break;}
case 263:
#line 2066 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 264:
#line 2070 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 265:
#line 2076 "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 266:
#line 2081 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
	;
    break;}
case 267:
#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->Identifier = yyvsp[0].tv_str;
	;
    break;}
case 268:
#line 2095 "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 269:
#line 2103 "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 270:
#line 2111 "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 271:
#line 2118 "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 272:
#line 2129 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 273:
#line 2133 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 274:
#line 2164 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 275:
#line 2165 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 276:
#line 2169 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
	;
    break;}
case 277:
#line 2176 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-2].a_tag;
		yyval.a_tag.tag_value = yyvsp[-1].a_int;
	;
    break;}
case 278:
#line 2182 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
    break;}
case 279:
#line 2183 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
    break;}
case 280:
#line 2184 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_APPLICATION; ;
    break;}
case 281:
#line 2185 "asn1p_y.y"
{ yyval.a_tag.tag_class = TC_PRIVATE; ;
    break;}
case 282:
#line 2189 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
    break;}
case 283:
#line 2190 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
    break;}
case 284:
#line 2191 "asn1p_y.y"
{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
    break;}
case 285:
#line 2195 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 286:
#line 2199 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 287:
#line 2207 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 288:
#line 2214 "asn1p_y.y"
{ yyval.tv_str = 0; ;
    break;}
case 289:
#line 2215 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 290:
#line 2221 "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 2227 "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;
}

