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

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

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

#line 1 "asn1p_y.y"


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

#include "asn1parser.h"

#define YYPARSE_PARAM	param
#define YYERROR_VERBOSE

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


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

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

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


#line 57 "asn1p_y.y"
typedef union {
	asn1p_t			*a_grammar;
	asn1p_module_flags_e	 a_module_flags;
	asn1p_module_t		*a_module;
	asn1p_expr_type_e	 a_type;	/* ASN.1 Type */
	asn1p_expr_t		*a_expr;	/* Constructed collection */
	asn1p_constraint_t	*a_constr;	/* Constraint */
	enum asn1p_constraint_type_e	a_ctype;/* Constraint type */
	asn1p_xports_t		*a_xports;	/* IMports/EXports */
	asn1p_oid_t		*a_oid;		/* Object Identifier */
	asn1p_oid_arc_t		 a_oid_arc;	/* Single OID's arc */
	struct asn1p_type_tag_s	 a_tag;		/* A tag */
	asn1p_ref_t		*a_ref;		/* Reference to custom type */
	asn1p_wsyntx_t		*a_wsynt;	/* WITH SYNTAX contents */
	asn1p_wsyntx_chunk_t	*a_wchunk;	/* WITH SYNTAX chunk */
	struct asn1p_ref_component_s a_refcomp;	/* Component of a reference */
	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
	struct asn1p_param_s	 a_parg;	/* A parameter argument */
	asn1p_paramlist_t	*a_plist;	/* A pargs list */
	enum asn1p_expr_marker_e a_marker;	/* OPTIONAL/DEFAULT */
	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
	asn1_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		375
#define	YYFLAG		-32768
#define	YYNTBASE	113

#define YYTRANSLATE(x) ((unsigned)(x) <= 353 ? yytranslate[x] : 211)

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,   109,     2,     2,     2,     2,     2,     2,   104,
   105,     2,     2,   107,     2,   110,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,   108,   106,   111,
     2,     2,     2,   112,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,    96,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,   102,    94,   103,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     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,    95,    97,    98,
    99,   100,   101
};

#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,    61,    63,    65,    68,    70,    72,    74,    76,
    78,    80,    84,    87,    89,    92,    97,    99,   103,   105,
   107,   111,   115,   118,   120,   124,   126,   128,   135,   137,
   139,   140,   142,   147,   152,   156,   163,   165,   169,   171,
   175,   179,   181,   185,   187,   189,   191,   195,   201,   202,
   204,   206,   210,   213,   217,   222,   223,   225,   226,   233,
   235,   238,   240,   242,   245,   247,   251,   253,   257,   261,
   263,   265,   267,   272,   274,   278,   280,   284,   288,   290,
   294,   296,   300,   302,   304,   306,   308,   313,   314,   318,
   320,   322,   324,   326,   328,   330,   334,   336,   339,   341,
   343,   345,   347,   350,   353,   355,   357,   360,   363,   365,
   367,   369,   371,   374,   376,   379,   381,   383,   385,   387,
   389,   391,   393,   395,   397,   399,   401,   403,   405,   407,
   412,   417,   422,   427,   432,   434,   439,   440,   442,   444,
   446,   448,   450,   452,   457,   459,   462,   466,   468,   472,
   478,   480,   484,   486,   488,   492,   494,   498,   500,   504,
   506,   510,   515,   517,   519,   521,   524,   527,   531,   533,
   535,   537,   539,   541,   543,   545,   547,   549,   555,   557,
   561,   563,   567,   568,   570,   572,   574,   576,   578,   580,
   584,   589,   591,   595,   598,   602,   604,   608,   609,   611,
   613,   616,   618,   620,   621,   625,   628,   632,   634,   638,
   640,   645,   650,   652,   654,   656,   658,   659,   661,   663,
   666,   669,   671,   673,   675,   677,   679
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   297,   303,   309,   325,   350,   352,   355,   359,   364,   371,
   379,   384,   388,   397,   399,   407,   411,   419,   423,   426,
   429,   437,   439,   448,   452,   478,   482,   491,   498,   511,
   522,   535,   542,   547,   553,   559,   568,   574,   580,   587,
   595,   599,   602,   609,   615,   621,   628,   637,   647,   655,
   663,   665,   677,   689,   696,   712,   722,   732,   742,   747,
   754,   764,   770,   776,   780,   792,   798,   804,   814,   816,
   819,   827,   833,   842,   847,   864,   866,   871,   875,   880,
   885,   891,   895,   920,   927,   932,   940,   949,   958,   969,
   973,   979,   987,  1011,  1018,  1032,  1041,  1051,  1061,  1069,
  1090,  1099,  1108,  1109,  1111,  1118,  1130,  1140,  1142,  1147,
  1151,  1155,  1159,  1162,  1167,  1179,  1195,  1206,  1220,  1222,
  1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,  1231,  1232,
  1238,  1240,  1241,  1244,  1251,  1263,  1265,  1269,  1273,  1274,
  1275,  1276,  1277,  1281,  1282,  1283,  1284,  1288,  1289,  1292,
  1299,  1305,  1311,  1319,  1327,  1333,  1349,  1351,  1354,  1354,
  1355,  1355,  1356,  1358,  1371,  1374,  1379,  1385,  1389,  1396,
  1405,  1410,  1419,  1421,  1423,  1428,  1430,  1436,  1438,  1443,
  1450,  1457,  1465,  1468,  1473,  1475,  1476,  1477,  1480,  1484,
  1489,  1493,  1504,  1508,  1513,  1518,  1523,  1530,  1536,  1540,
  1545,  1551,  1563,  1565,  1568,  1572,  1575,  1580,  1584,  1592,
  1607,  1613,  1620,  1633,  1645,  1660,  1664,  1681,  1683,  1686,
  1690,  1696,  1699,  1701,  1701,  1721,  1726,  1731,  1737,  1743,
  1751,  1759,  1767,  1774,  1784,  1789,  1819,  1821,  1824,  1829,
  1833,  1839,  1844,  1850,  1857,  1864,  1869
};
#endif


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

static const char * const yytname[] = {   "$","error","$undefined.","TOK_PPEQ",
"TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
"TOK_number_negative","TOK_typereference","TOK_objectclassreference","TOK_typefieldreference",
"TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY",
"TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN",
"TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS",
"TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED",
"TOK_EMBEDDED","TOK_ENCODED","TOK_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_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_UNION","'^'",
"TOK_INTERSECTION","TOK_EXCEPT","TOK_TwoDots","TOK_ThreeDots","TOK_tag","'{'",
"'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'","ParsedGrammar",
"ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
"ModuleSpecificationBody","ModuleSpecificationElement","ImportsDefinition","ImportsBundleSet",
"ImportsBundle","ImportsList","ImportsElement","ExportsDefinition","ExportsBody",
"ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody","DataTypeReference",
"ParameterArgumentList","ParameterArgumentName","ActualParameterList","ActualParameter",
"ConstructedDataTypeDefinition","ClassDeclaration","optUnique","ClassFieldList",
"ClassField","optWithSyntax","WithSyntax","@1","WithSyntaxFormat","WithSyntaxFormatToken",
"DataTypeMember","ConstrainedTypeDeclaration","ExtensionAndException","TypeDeclaration",
"ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
"ClassFieldIdentifier","ClassFieldName","ValueDefinition","InlineOrDefinedValue",
"@2","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
"BasicType","BasicString","ConstructedType","optConstraints","Union","Intersection",
"Except","Constraints","SingleConstraint","ConstraintElementSet","ConstraintElement",
"ConstraintElementUnion","ConstraintElementIntersection","ConstraintElementException",
"ConstraintSubtypeElement","ConstraintRangeSpec","ConstraintSpec","ConstraintValue",
"WithComponents","WithComponentsList","WithComponentsElement","optPresenceConstraint",
"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
"DefaultValue","@3","UniverationDefinition","UniverationList","UniverationElement",
"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","Identifier",
"TaggedIdentifier", NULL
};
#endif

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

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,     0,     1,     1,     2,     1,     1,     1,     1,     1,
     1,     3,     2,     1,     2,     4,     1,     3,     1,     1,
     3,     3,     2,     1,     3,     1,     1,     6,     1,     1,
     0,     1,     4,     4,     3,     6,     1,     3,     1,     3,
     3,     1,     3,     1,     1,     1,     3,     5,     0,     1,
     1,     3,     2,     3,     4,     0,     1,     0,     6,     1,
     2,     1,     1,     2,     1,     3,     1,     3,     3,     1,
     1,     1,     4,     1,     3,     1,     3,     3,     1,     3,
     1,     3,     1,     1,     1,     1,     4,     0,     3,     1,
     1,     1,     1,     1,     1,     3,     1,     2,     1,     1,
     1,     1,     2,     2,     1,     1,     2,     2,     1,     1,
     1,     1,     2,     1,     2,     1,     1,     1,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
     4,     4,     4,     4,     1,     4,     0,     1,     1,     1,
     1,     1,     1,     4,     1,     2,     3,     1,     3,     5,
     1,     3,     1,     1,     3,     1,     3,     1,     3,     1,
     3,     4,     1,     1,     1,     2,     2,     3,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     5,     1,     3,
     1,     3,     0,     1,     1,     1,     1,     1,     1,     3,
     4,     1,     3,     2,     3,     1,     3,     0,     1,     1,
     2,     1,     1,     0,     3,     2,     3,     1,     3,     1,
     4,     4,     1,     1,     1,     1,     0,     1,     1,     2,
     2,     1,     1,     1,     1,     1,     2
};

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

static const short yydefgoto[] = {   373,
     3,     4,     8,     9,    13,    14,    24,    25,    26,    52,
    53,    54,    55,    70,    71,    72,    73,    56,    65,    66,
    57,    96,   207,    58,   120,   121,   255,   256,   235,   111,
   291,   174,   175,   283,   284,   359,   368,   369,   236,   141,
   237,   142,   143,   159,   160,   176,   177,    59,   168,   223,
   169,   280,   144,   145,   146,   147,   148,   184,   267,   270,
   272,   185,   186,   208,   209,   210,   211,   212,   213,   276,
   214,   215,   216,   337,   338,   364,   365,   217,   218,   219,
   322,   323,   344,   231,   232,   289,   326,   191,   251,   252,
   220,   112,   113,   149,   100,   221,   239
};

static const short yypact[] = {    81,
-32768,-32768,    81,-32768,   -45,-32768,    23,    70,-32768,-32768,
-32768,-32768,    47,-32768,    31,   190,-32768,-32768,   132,    61,
    69,   108,    86,   176,   190,-32768,    76,-32768,-32768,-32768,
-32768,   166,-32768,-32768,   442,-32768,    32,-32768,-32768,-32768,
   121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   168,   442,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   179,   732,   103,-32768,    52,-32768,-32768,-32768,-32768,    39,
-32768,    16,-32768,-32768,-32768,-32768,-32768,   -11,   111,-32768,
   150,-32768,   152,   142,-32768,-32768,-32768,-32768,-32768,   184,
   159,-32768,-32768,-32768,   748,   240,-32768,-32768,-32768,   135,
   243,-32768,-32768,   141,-32768,-32768,    81,   141,   145,    60,
-32768,   599,-32768,   141,-32768,-32768,-32768,-32768,-32768,    -1,
-32768,   143,   144,   147,   206,    68,-32768,   -45,-32768,   206,
-32768,-32768,   -42,   148,   221,   161,   198,    40,    53,-32768,
-32768,   -37,-32768,-32768,   163,-32768,-32768,-32768,   164,-32768,
-32768,   264,   748,   261,   261,   155,-32768,-32768,   160,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
   162,-32768,-32768,    64,-32768,   524,-32768,   246,    21,   212,
   169,    21,   155,   208,   171,-32768,    21,   210,     2,    17,
-32768,   383,   674,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   247,   172,    81,   175,-32768,   173,   133,
   140,   185,-32768,   178,    35,-32768,-32768,   182,-32768,-32768,
-32768,   206,   281,   261,   193,   206,   301,-32768,   202,     2,
-32768,-32768,   261,   181,    66,-32768,-32768,   191,   674,-32768,
   155,    71,   186,   674,-32768,    89,   674,-32768,-32768,-32768,
    90,-32768,-32768,   189,    91,-32768,-32768,-32768,-32768,   192,
   309,   194,-32768,   196,-32768,-32768,   309,-32768,-32768,   309,
-32768,   309,   155,   187,   205,    78,   200,-32768,-32768,   297,
-32768,   225,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,   202,-32768,   250,-32768,    21,-32768,-32768,   201,-32768,
-32768,-32768,-32768,-32768,-32768,    56,   250,-32768,   383,    25,
-32768,-32768,   209,   140,   185,-32768,   215,-32768,   211,-32768,
     6,   101,-32768,-32768,   219,   281,-32768,-32768,-32768,-32768,
-32768,-32768,   223,   224,-32768,-32768,   109,-32768,   -37,   309,
-32768,-32768,   261,   203,-32768,-32768,   200,-32768,   297,-32768,
-32768,-32768,    25,    24,-32768,   203,   261,-32768,   126,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,     9,-32768,-32768,
-32768,-32768,   324,   326,-32768
};

static const short yypgoto[] = {-32768,
-32768,   327,   204,-32768,-32768,   318,-32768,-32768,   308,-32768,
-32768,   282,-32768,-32768,   268,-32768,   226,-32768,-32768,   235,
-32768,   279,-32768,-32768,-32768,   195,-32768,    33,  -129,-32768,
    51,-32768,   123,-32768,-32768,-32768,-32768,   -17,    59,  -156,
-32768,  -185,   -52,-32768,   130,  -173,  -109,-32768,-32768,-32768,
  -209,    30,   -50,   -43,-32768,    46,-32768,  -137,-32768,-32768,
-32768,-32768,   180,  -159,  -246,-32768,    94,    88,    97,-32768,
-32768,  -206,-32768,-32768,    10,-32768,-32768,-32768,-32768,-32768,
-32768,    26,    27,  -141,-32768,-32768,-32768,-32768,-32768,    65,
  -118,-32768,   134,     1,-32768,    -7,-32768
};


#define	YYLAST		837


static const short yytable[] = {    15,
     5,   188,   230,     5,   189,    15,   257,   170,    97,    97,
    98,    98,   367,    10,   311,   161,   109,    99,    99,   229,
   288,   157,   158,   243,    10,   165,   166,    62,    10,    68,
    10,    11,    10,    75,   227,    61,   259,    67,   361,    10,
   181,    74,     1,     2,   122,    62,    10,   248,    63,     1,
     2,    99,   242,    61,    10,    11,     7,   246,   302,  -242,
   107,   304,    75,    10,   165,   166,   183,   114,   228,   320,
    74,   253,   162,   163,   164,    10,   165,   166,     1,     2,
    60,   299,   298,   197,   328,    10,   165,   166,   292,   110,
   362,     1,     2,   355,   363,   123,    68,   333,    60,   131,
    75,   152,   122,    16,    67,   153,   151,   128,    74,    99,
   132,   371,   161,   317,   150,   343,   249,   181,   172,   250,
   234,   198,   108,   257,   336,    12,   171,   240,    10,   367,
   181,     1,     2,   274,    19,   200,   201,    64,   157,   158,
    27,   182,    28,   183,   105,   275,   195,   196,    10,    17,
    29,     1,     2,   123,   187,   249,   183,   103,   104,    30,
   197,   203,    10,   165,   166,    69,   225,    31,   295,   167,
   226,   238,   296,   300,   238,   329,   287,   296,    32,   238,
    34,    78,   254,    99,   258,   370,    35,   253,   334,    79,
    80,   303,   305,   308,   370,   296,   306,   309,   198,   199,
    81,   354,    82,   346,    83,    76,   262,   347,   102,    20,
   117,   352,   200,   201,    84,   353,   281,    85,   157,   158,
   114,    86,    79,    80,    87,   293,   265,   266,   115,    21,
   116,    22,   202,   118,    88,   268,   269,   119,   203,    89,
    23,    90,   124,    91,   125,   126,   130,   204,   156,  -243,
   154,   155,    92,    93,   205,   178,   206,    10,   165,   166,
     1,     2,   179,   180,   190,   192,   193,    94,    10,   222,
   233,   224,   241,   244,   183,   247,   260,   263,   261,   264,
    95,   273,   271,   277,   279,   282,   172,   290,   238,   294,
   301,   110,   307,   310,   171,   313,   312,   318,   254,   172,
   324,   258,   339,   319,   325,   331,   197,   171,    10,   165,
   166,   321,   357,   345,   197,   340,    10,   165,   166,   341,
   348,   342,    81,   374,    82,   375,    83,   350,   351,     6,
    18,   173,    33,   129,    77,   345,    84,   106,   127,    85,
   101,   335,   327,    86,   198,   339,    87,   194,   285,   366,
   372,   278,   198,   199,   330,   349,    88,   315,   200,   201,
   314,    89,   360,    90,   245,    91,   200,   201,   316,   356,
   332,   297,   358,     0,    92,    93,     0,     0,     0,     0,
     0,     0,     0,     0,   203,     0,   202,     0,     0,    94,
    10,     0,   203,   133,   134,     0,     0,     0,     0,     0,
   135,   204,   286,     0,    81,    36,    82,     0,    83,   136,
   206,     0,     0,     0,     0,     0,     0,     0,    84,     0,
     0,    85,     0,     0,     0,    86,     0,     0,    87,    38,
    39,    40,     0,     0,     0,     0,     0,   137,    88,    42,
     0,     0,     0,    89,    43,    90,    44,    91,     0,    10,
     0,     0,     1,     2,    45,     0,    92,    93,   138,   139,
     0,     0,     0,    46,    36,    47,     0,     0,     0,     0,
    48,    94,    49,    50,    51,     0,     0,     0,     0,     0,
     0,     0,    37,     0,     0,     0,     0,     0,    38,    39,
    40,     0,     0,     0,    41,     0,     0,     0,    42,     0,
     0,     0,     0,    43,     0,    44,     0,     0,     0,     0,
     0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
     0,     0,    46,     0,    47,     0,     0,     0,     0,    48,
     0,    49,    50,    51,   133,   134,   157,   158,     0,     0,
     0,   135,     0,     0,     0,    81,    36,    82,     0,    83,
   136,     0,     0,     0,     0,     0,   227,     0,     0,    84,
     0,     0,    85,     0,     0,     0,    86,     0,     0,    87,
    38,    39,    40,     0,     0,     0,     0,     0,   137,    88,
    42,     0,     0,     0,    89,    43,    90,    44,    91,     0,
   228,     0,     0,     0,     0,    45,     0,    92,    93,   138,
   139,     0,     0,     0,    46,     0,    47,     0,     0,   133,
   134,    48,    94,    49,    50,    51,   135,     0,     0,     0,
    81,    36,    82,     0,    83,   136,     0,     0,     0,     0,
     0,     0,     0,     0,    84,     0,     0,    85,     0,     0,
     0,    86,     0,     0,    87,    38,    39,    40,     0,     0,
     0,     0,     0,   137,    88,    42,     0,     0,     0,    89,
    43,    90,    44,    91,     0,     0,     0,     0,     0,     0,
    45,     0,    92,    93,   138,   139,     0,     0,     0,    46,
     0,    47,     0,   140,   133,   134,    48,    94,    49,    50,
    51,   135,     0,     0,     0,    81,    36,    82,     0,    83,
   136,     0,     0,     0,     0,     0,     0,     0,     0,    84,
     0,     0,    85,     0,     0,     0,    86,     0,     0,    87,
    38,    39,    40,     0,     0,     0,     0,     0,   137,    88,
    42,     0,     0,     0,    89,    43,    90,    44,    91,     0,
     0,     0,    79,    80,     0,    45,     0,    92,    93,   138,
   139,     0,     0,    81,    46,    82,    47,    83,     1,     2,
     0,    48,    94,    49,    50,    51,     0,    84,     0,    81,
    85,    82,     0,    83,    86,     0,     0,    87,     0,     0,
     0,     0,     0,    84,     0,     0,    85,    88,     0,     0,
    86,     0,    89,    87,    90,     0,    91,     0,     0,     0,
     0,     0,     0,    88,     0,    92,    93,     0,    89,     0,
    90,     0,    91,     0,     0,     0,     0,     0,     0,     0,
    94,    92,    93,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,    94
};

static const short yycheck[] = {     7,
     0,   139,   176,     3,   142,    13,   192,   126,    61,    62,
    61,    62,     4,     8,   261,   125,    28,    61,    62,   176,
   227,    13,    14,   183,     8,     9,    10,    35,     8,    37,
     8,     9,     8,    41,    33,    35,   193,    37,    15,     8,
    78,    41,    11,    12,    95,    53,     8,   189,    17,    11,
    12,    95,   182,    53,     8,     9,   102,   187,   244,   102,
    45,   247,    70,     8,     9,    10,   104,   110,    67,   276,
    70,   190,     5,     6,     7,     8,     9,    10,    11,    12,
    35,   241,   239,     6,   294,     8,     9,    10,   230,   101,
    67,    11,    12,   340,    71,    95,   104,   307,    53,    40,
   108,   103,   153,    34,   104,   107,   114,   107,   108,   153,
    51,   103,   222,   273,   114,   110,   100,    78,   126,   103,
   100,    44,   107,   309,   100,   103,   126,   180,     8,     4,
    78,    11,    12,    99,   104,    58,    59,   106,    13,    14,
     9,   102,    82,   104,   106,   111,   154,   155,     8,   103,
    82,    11,    12,   153,   102,   100,   104,   106,   107,    52,
     6,    84,     8,     9,    10,    45,   103,    82,   103,   102,
   107,   179,   107,   103,   182,   294,   227,   107,     3,   187,
   105,     3,   190,   227,   192,   359,    21,   306,   307,    11,
    12,   103,   103,   103,   368,   107,   107,   107,    44,    45,
    22,   339,    24,   103,    26,    38,   206,   107,   106,    20,
    69,   103,    58,    59,    36,   107,   224,    39,    13,    14,
   110,    43,    11,    12,    46,   233,    94,    95,    79,    40,
    79,    42,    78,    50,    56,    96,    97,    79,    84,    61,
    51,    63,     3,    65,   110,     3,   102,    93,   102,   102,
   108,   108,    74,    75,   100,    35,   102,     8,     9,    10,
    11,    12,   102,    66,   102,   102,     3,    89,     8,   110,
    25,   110,   104,    66,   104,    66,    30,   103,   107,   107,
   102,   104,    98,   102,     4,    93,   294,    86,   296,   109,
   105,   101,   104,   102,   294,   100,   103,   111,   306,   307,
     4,   309,   310,    99,    80,   105,     6,   307,     8,     9,
    10,   112,   110,   321,     6,   107,     8,     9,    10,   105,
   102,   111,    22,     0,    24,     0,    26,   105,   105,     3,
    13,   128,    25,   108,    53,   343,    36,    70,   104,    39,
    62,   309,   292,    43,    44,   353,    46,   153,   226,   357,
   368,   222,    44,    45,   296,   326,    56,   270,    58,    59,
   267,    61,   353,    63,   185,    65,    58,    59,   272,   343,
   306,   238,   347,    -1,    74,    75,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    84,    -1,    78,    -1,    -1,    89,
     8,    -1,    84,    11,    12,    -1,    -1,    -1,    -1,    -1,
    18,    93,   102,    -1,    22,    23,    24,    -1,    26,    27,
   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,    47,
    48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,    57,
    -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,     8,
    -1,    -1,    11,    12,    72,    -1,    74,    75,    76,    77,
    -1,    -1,    -1,    81,    23,    83,    -1,    -1,    -1,    -1,
    88,    89,    90,    91,    92,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    48,
    49,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,
    -1,    -1,    -1,    62,    -1,    64,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    81,    -1,    83,    -1,    -1,    -1,    -1,    88,
    -1,    90,    91,    92,    11,    12,    13,    14,    -1,    -1,
    -1,    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
    27,    -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,    36,
    -1,    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,
    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,
    57,    -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,
    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
    77,    -1,    -1,    -1,    81,    -1,    83,    -1,    -1,    11,
    12,    88,    89,    90,    91,    92,    18,    -1,    -1,    -1,
    22,    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,
    -1,    43,    -1,    -1,    46,    47,    48,    49,    -1,    -1,
    -1,    -1,    -1,    55,    56,    57,    -1,    -1,    -1,    61,
    62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    -1,
    72,    -1,    74,    75,    76,    77,    -1,    -1,    -1,    81,
    -1,    83,    -1,    85,    11,    12,    88,    89,    90,    91,
    92,    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
    -1,    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    46,
    47,    48,    49,    -1,    -1,    -1,    -1,    -1,    55,    56,
    57,    -1,    -1,    -1,    61,    62,    63,    64,    65,    -1,
    -1,    -1,    11,    12,    -1,    72,    -1,    74,    75,    76,
    77,    -1,    -1,    22,    81,    24,    83,    26,    11,    12,
    -1,    88,    89,    90,    91,    92,    -1,    36,    -1,    22,
    39,    24,    -1,    26,    43,    -1,    -1,    46,    -1,    -1,
    -1,    -1,    -1,    36,    -1,    -1,    39,    56,    -1,    -1,
    43,    -1,    61,    46,    63,    -1,    65,    -1,    -1,    -1,
    -1,    -1,    -1,    56,    -1,    74,    75,    -1,    61,    -1,
    63,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    89,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    89
};
/* -*-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 298 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 304 "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 309 "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 330 "asn1p_y.y"
{

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

		yyval.a_module->Identifier = yyvsp[-7].tv_str;
		yyval.a_module->module_oid = yyvsp[-6].a_oid;
		yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
	;
    break;}
case 5:
#line 351 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 352 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 356 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 359 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 365 "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 371 "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 380 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 384 "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 388 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 398 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 399 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 408 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 411 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 420 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 423 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 426 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 429 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 438 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 23:
#line 439 "asn1p_y.y"
{
		assert(yyvsp[0].a_module);
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 24:
#line 449 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 452 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;

#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 26:
#line 479 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 27:
#line 482 "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 28:
#line 491 "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 29:
#line 498 "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 511 "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 522 "asn1p_y.y"
{
		return yyerror(
			"Attempt to redefine a standard basic type, "
			"use -ftypesXY to switch back "
			"to older version of ASN.1 standard");
	;
    break;}
case 32:
#line 536 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 33:
#line 542 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 34:
#line 548 "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 35:
#line 553 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
	;
    break;}
case 36:
#line 560 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-3].a_xports;
		yyval.a_xports->from = yyvsp[-1].tv_str;
		yyval.a_xports->from_oid = yyvsp[0].a_oid;
		checkmem(yyval.a_xports);
	;
    break;}
case 37:
#line 569 "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 38:
#line 574 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 39:
#line 581 "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 40:
#line 587 "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 41:
#line 596 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 42:
#line 599 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 43:
#line 602 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 44:
#line 610 "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 45:
#line 615 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 46:
#line 622 "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 47:
#line 628 "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 48:
#line 638 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-4].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
		yyval.a_expr->meta_type = AMT_VALUESET;
		// take care of optValueSetBody 
	;
    break;}
case 49:
#line 648 "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 50:
#line 655 "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 51:
#line 664 "asn1p_y.y"
{ ;
    break;}
case 52:
#line 665 "asn1p_y.y"
{
	;
    break;}
case 53:
#line 681 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
		yyval.a_expr->tag = yyvsp[-1].a_tag;
		yyval.a_expr->expr_type = A1TC_TYPEID;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 54:
#line 689 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
		yyval.a_expr->tag = yyvsp[-1].a_tag;
		assert(yyval.a_expr->expr_type);
		assert(yyval.a_expr->meta_type);
	;
    break;}
case 55:
#line 696 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
		assert(yyval.a_expr->meta_type == AMT_OBJECT);
	;
    break;}
case 56:
#line 713 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
		yyval.a_expr->params = yyvsp[-3].a_plist;
		yyval.a_expr->meta_type = AMT_PARAMTYPE;
	;
    break;}
case 57:
#line 723 "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 58:
#line 732 "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 59:
#line 743 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 60:
#line 747 "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 61:
#line 754 "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 62:
#line 765 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 63:
#line 770 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 64:
#line 777 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 65:
#line 780 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
		yyval.a_expr->meta_type = AMT_VALUE;
	;
    break;}
case 66:
#line 793 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 67:
#line 798 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 68:
#line 805 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		checkmem(yyval.a_expr);
		yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
		assert(yyval.a_expr->meta_type == AMT_OBJECT);
	;
    break;}
case 69:
#line 815 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 70:
#line 816 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 71:
#line 820 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = A1TC_CLASSDEF;
		yyval.a_expr->meta_type = AMT_OBJECT;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 72:
#line 827 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 73:
#line 834 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
		yyval.a_expr->expr_type = A1TC_CLASSFIELD;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 74:
#line 842 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
		yyval.a_expr->Identifier = yyvsp[-2].a_refcomp.name;
		yyval.a_expr->unique = yyvsp[0].a_int;
	;
    break;}
case 75:
#line 847 "asn1p_y.y"
{
		int ret;
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
		yyval.a_expr->reference = asn1p_ref_new(yylineno);
		checkmem(yyval.a_expr->reference);
		ret = asn1p_ref_add_component(yyval.a_expr->reference,
				yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
		checkmem(ret == 0);
		yyval.a_expr->expr_type = A1TC_CLASSFIELD;
		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
		yyval.a_expr->marker = yyvsp[-1].a_marker;
		yyval.a_expr->unique = yyvsp[0].a_int;
	;
    break;}
case 76:
#line 865 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 77:
#line 866 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 78:
#line 873 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 79:
#line 875 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 80:
#line 881 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 81:
#line 885 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 82:
#line 892 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
	;
    break;}
case 83:
#line 895 "asn1p_y.y"
{
		asn1p_ref_t *ref;
		int ret;
		ref = asn1p_ref_new(yylineno);
		checkmem(ref);
		ret = asn1p_ref_add_component(ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
		checkmem(ret == 0);
		yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
	;
    break;}
case 84:
#line 921 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		assert(yyval.a_expr->Identifier == 0);
		yyval.a_expr->Identifier = yyvsp[-1].tv_nametag.name;
		yyval.a_expr->tag = yyvsp[-1].tv_nametag.tag;
	;
    break;}
case 85:
#line 927 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 86:
#line 933 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		yyval.a_expr->constraints = yyvsp[-1].a_constr;
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 87:
#line 941 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 88:
#line 949 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 89:
#line 958 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 90:
#line 970 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 91:
#line 973 "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 92:
#line 979 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		checkmem(yyval.a_expr);
		assert(yyval.a_expr->meta_type);
	;
    break;}
case 93:
#line 987 "asn1p_y.y"
{
		int ret;
		yyval.a_expr = yyvsp[-1].a_expr;
		assert(yyval.a_expr->expr_type == 0);
		assert(yyval.a_expr->meta_type == 0);
		assert(yyval.a_expr->reference == 0);
		yyval.a_expr->reference = asn1p_ref_new(yylineno);
		checkmem(yyval.a_expr->reference);
		ret = asn1p_ref_add_component(yyval.a_expr->reference, yyvsp[-3].tv_str, RLT_UNKNOWN);
		checkmem(ret == 0);
		free(yyvsp[-3].tv_str);
		yyval.a_expr->expr_type = A1TC_PARAMETRIZED;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 94:
#line 1011 "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 95:
#line 1018 "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 96:
#line 1033 "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 97:
#line 1041 "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 98:
#line 1051 "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 99:
#line 1061 "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 100:
#line 1069 "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 101:
#line 1091 "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 102:
#line 1099 "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 105:
#line 1113 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 106:
#line 1118 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 107:
#line 1131 "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 108:
#line 1141 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 109:
#line 1142 "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 110:
#line 1147 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 111:
#line 1151 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 112:
#line 1155 "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 113:
#line 1159 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 114:
#line 1162 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 115:
#line 1168 "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 116:
#line 1179 "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 117:
#line 1196 "asn1p_y.y"
{
		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
		checkmem(yyval.tv_opaque.buf);
		yyval.tv_opaque.buf[0] = '{';
		yyval.tv_opaque.buf[1] = ' ';
		memcpy(yyval.tv_opaque.buf + 2, 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 118:
#line 1206 "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 119:
#line 1221 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 120:
#line 1222 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 121:
#line 1223 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 122:
#line 1224 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 123:
#line 1225 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 124:
#line 1226 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 125:
#line 1227 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 126:
#line 1228 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 127:
#line 1229 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 128:
#line 1230 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 129:
#line 1231 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 130:
#line 1232 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 131:
#line 1239 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 132:
#line 1240 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 133:
#line 1241 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 134:
#line 1245 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = yyvsp[0].a_type;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 135:
#line 1251 "asn1p_y.y"
{
		if(yyvsp[0].a_expr) {
			yyval.a_expr = yyvsp[0].a_expr;
		} else {
			yyval.a_expr = asn1p_expr_new(asn1p_lineno);
			checkmem(yyval.a_expr);
		}
		yyval.a_expr->expr_type = yyvsp[-1].a_type;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 136:
#line 1264 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 137:
#line 1265 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		return yyerror("GeneralString is not supported");
	;
    break;}
case 138:
#line 1269 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		return yyerror("GraphicString is not supported");
	;
    break;}
case 139:
#line 1273 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 140:
#line 1274 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 141:
#line 1275 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 142:
#line 1276 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 143:
#line 1277 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		return yyerror("T61String not implemented yet");
	;
    break;}
case 144:
#line 1281 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 145:
#line 1282 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 146:
#line 1283 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 147:
#line 1284 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		return yyerror("VideotexString is no longer supported");
	;
    break;}
case 148:
#line 1288 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 149:
#line 1289 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 150:
#line 1293 "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 151:
#line 1299 "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 152:
#line 1305 "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 153:
#line 1311 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->constraints = yyvsp[-2].a_constr;
		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
		yyval.a_expr->meta_type = AMT_TYPE;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 154:
#line 1319 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->constraints = yyvsp[-2].a_constr;
		yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
		yyval.a_expr->meta_type = AMT_TYPE;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 155:
#line 1327 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->expr_type = ASN_CONSTR_ANY;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 156:
#line 1333 "asn1p_y.y"
{
		int ret;
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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_CONSTR_ANY;
		yyval.a_expr->meta_type = AMT_TYPE;
	;
    break;}
case 157:
#line 1350 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 158:
#line 1351 "asn1p_y.y"
{ yyval.a_constr = yyvsp[0].a_constr; ;
    break;}
case 164:
#line 1359 "asn1p_y.y"
{
		/*
		 * This is a special case, for compatibility purposes.
		 * It goes without parenthesis.
		 */
		int ret;
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_CT_SIZE;
		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
		checkmem(ret == 0);
	;
    break;}
case 165:
#line 1371 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 166:
#line 1374 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-1].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 167:
#line 1380 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 168:
#line 1386 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 169:
#line 1389 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		checkmem(ct);
		ct->type = ACT_EL_EXT;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
	;
    break;}
case 170:
#line 1396 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		checkmem(ct);
		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 171:
#line 1405 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_EL_EXT;
	;
    break;}
case 172:
#line 1410 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		checkmem(ct);
		ct->type = ACT_EL_EXT;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
	;
    break;}
case 173:
#line 1419 "asn1p_y.y"
{ yyval.a_constr = yyvsp[0].a_constr; ;
    break;}
case 174:
#line 1422 "asn1p_y.y"
{ yyval.a_constr = yyvsp[0].a_constr; ;
    break;}
case 175:
#line 1423 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 176:
#line 1429 "asn1p_y.y"
{ yyval.a_constr = yyvsp[0].a_constr; ;
    break;}
case 177:
#line 1431 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 178:
#line 1437 "asn1p_y.y"
{ yyval.a_constr = yyvsp[0].a_constr; ;
    break;}
case 179:
#line 1438 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 180:
#line 1444 "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 181:
#line 1450 "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 182:
#line 1457 "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 183:
#line 1465 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 184:
#line 1468 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 185:
#line 1474 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 186:
#line 1475 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 187:
#line 1476 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 188:
#line 1477 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 189:
#line 1481 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 190:
#line 1484 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 191:
#line 1490 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 192:
#line 1493 "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 193:
#line 1504 "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 194:
#line 1508 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(123);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_MIN;
	;
    break;}
case 195:
#line 1513 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(321);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_MAX;
	;
    break;}
case 196:
#line 1518 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 197:
#line 1523 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 198:
#line 1531 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 199:
#line 1537 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 200:
#line 1540 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 201:
#line 1546 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_EL_EXT;
	;
    break;}
case 202:
#line 1551 "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;
	;
    break;}
case 203:
#line 1564 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 204:
#line 1565 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 205:
#line 1569 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 206:
#line 1572 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 207:
#line 1575 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 208:
#line 1581 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 209:
#line 1584 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 210:
#line 1593 "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 211:
#line 1608 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 212:
#line 1614 "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 213:
#line 1620 "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 214:
#line 1634 "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 215:
#line 1645 "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 216:
#line 1661 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 217:
#line 1664 "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 218:
#line 1682 "asn1p_y.y"
{ yyval.a_marker = EM_NOMARK; ;
    break;}
case 219:
#line 1683 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 220:
#line 1687 "asn1p_y.y"
{
		yyval.a_marker = EM_OPTIONAL;
	;
    break;}
case 221:
#line 1690 "asn1p_y.y"
{
		yyval.a_marker = EM_DEFAULT;
		/* FIXME: store DefaultValue somewhere */
	;
    break;}
case 222:
#line 1697 "asn1p_y.y"
{
	;
    break;}
case 223:
#line 1699 "asn1p_y.y"
{
	;
    break;}
case 224:
#line 1701 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 225:
#line 1701 "asn1p_y.y"
{
	;
    break;}
case 226:
#line 1722 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 227:
#line 1726 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 228:
#line 1732 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 229:
#line 1737 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 230:
#line 1744 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 231:
#line 1751 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 232:
#line 1759 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 233:
#line 1767 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 234:
#line 1774 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		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 235:
#line 1785 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 236:
#line 1789 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 237:
#line 1820 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 238:
#line 1821 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 239:
#line 1825 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[0].a_tag;
		yyval.a_tag.tag_mode = TM_DEFAULT;
	;
    break;}
case 240:
#line 1829 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = TM_IMPLICIT;
	;
    break;}
case 241:
#line 1833 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = TM_EXPLICIT;
	;
    break;}
case 242:
#line 1840 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 243:
#line 1844 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 244:
#line 1851 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 245:
#line 1858 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 246:
#line 1865 "asn1p_y.y"
{
		memset(&yyval.tv_nametag, 0, sizeof(yyval.tv_nametag));
		yyval.tv_nametag.name = yyvsp[0].tv_str;
	;
    break;}
case 247:
#line 1869 "asn1p_y.y"
{
		yyval.tv_nametag.name = yyvsp[-1].tv_str;
		yyval.tv_nametag.tag = yyvsp[0].a_tag;
	;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 543 "/usr/share/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

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

  *++yyvsp = yyval;

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

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

  yyn = yyr1[yyn];

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

  goto yynewstate;

yyerrlab:   /* here on detecting error */

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

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

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

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

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

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

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

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

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

      yychar = YYEMPTY;
    }

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

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

  goto yyerrhandle;

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

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

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

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

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

yyerrhandle:

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

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

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

  if (yyn == YYFINAL)
    YYACCEPT;

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

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

  yystate = yyn;
  goto yynewstate;

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

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



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

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

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

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

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

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

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

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

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

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

	return val;
}

extern char *asn1p_text;

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


