
/*  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_capitalreference	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_ENCODING_CONTROL	292
#define	TOK_END	293
#define	TOK_ENUMERATED	294
#define	TOK_EXPLICIT	295
#define	TOK_EXPORTS	296
#define	TOK_EXTENSIBILITY	297
#define	TOK_EXTERNAL	298
#define	TOK_FALSE	299
#define	TOK_FROM	300
#define	TOK_GeneralizedTime	301
#define	TOK_GeneralString	302
#define	TOK_GraphicString	303
#define	TOK_IA5String	304
#define	TOK_IDENTIFIER	305
#define	TOK_IMPLICIT	306
#define	TOK_IMPLIED	307
#define	TOK_IMPORTS	308
#define	TOK_INCLUDES	309
#define	TOK_INSTANCE	310
#define	TOK_INSTRUCTIONS	311
#define	TOK_INTEGER	312
#define	TOK_ISO646String	313
#define	TOK_MAX	314
#define	TOK_MIN	315
#define	TOK_MINUS_INFINITY	316
#define	TOK_NULL	317
#define	TOK_NumericString	318
#define	TOK_OBJECT	319
#define	TOK_ObjectDescriptor	320
#define	TOK_OCTET	321
#define	TOK_OF	322
#define	TOK_OPTIONAL	323
#define	TOK_PATTERN	324
#define	TOK_PDV	325
#define	TOK_PLUS_INFINITY	326
#define	TOK_PRESENT	327
#define	TOK_PrintableString	328
#define	TOK_PRIVATE	329
#define	TOK_REAL	330
#define	TOK_RELATIVE_OID	331
#define	TOK_SEQUENCE	332
#define	TOK_SET	333
#define	TOK_SIZE	334
#define	TOK_STRING	335
#define	TOK_SYNTAX	336
#define	TOK_T61String	337
#define	TOK_TAGS	338
#define	TOK_TeletexString	339
#define	TOK_TRUE	340
#define	TOK_TYPE_IDENTIFIER	341
#define	TOK_UNIQUE	342
#define	TOK_UNIVERSAL	343
#define	TOK_UniversalString	344
#define	TOK_UTCTime	345
#define	TOK_UTF8String	346
#define	TOK_VideotexString	347
#define	TOK_VisibleString	348
#define	TOK_WITH	349
#define	TOK_EXCEPT	350
#define	TOK_INTERSECTION	351
#define	TOK_UNION	352
#define	TOK_TwoDots	353
#define	TOK_ThreeDots	354
#define	TOK_tag	355

#line 1 "asn1p_y.y"


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

#include "asn1parser.h"

#define YYPARSE_PARAM	param
#define YYERROR_VERBOSE

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


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

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

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


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

#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 212)

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

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     2,     4,     7,    16,    17,    19,    23,    26,    28,
    31,    33,    38,    40,    41,    43,    45,    48,    51,    54,
    57,    60,    63,    64,    66,    68,    71,    73,    75,    77,
    79,    81,    82,    86,    88,    92,    95,    97,   100,   105,
   107,   111,   113,   115,   119,   123,   126,   128,   132,   134,
   136,   143,   145,   147,   148,   150,   155,   160,   164,   171,
   173,   177,   179,   183,   187,   189,   193,   195,   197,   199,
   203,   209,   210,   212,   214,   218,   221,   225,   230,   231,
   233,   234,   241,   243,   246,   248,   250,   253,   255,   259,
   261,   263,   267,   271,   273,   275,   277,   282,   284,   288,
   290,   294,   298,   300,   304,   306,   310,   312,   314,   316,
   318,   323,   324,   328,   330,   332,   334,   336,   338,   340,
   344,   346,   349,   351,   353,   355,   357,   360,   363,   365,
   367,   370,   373,   375,   377,   379,   381,   384,   386,   389,
   391,   393,   395,   397,   399,   401,   403,   405,   407,   409,
   411,   413,   415,   417,   422,   427,   432,   437,   442,   444,
   449,   451,   453,   455,   457,   459,   460,   462,   464,   469,
   473,   478,   480,   484,   490,   492,   496,   500,   504,   509,
   513,   515,   519,   523,   527,   531,   533,   535,   537,   540,
   543,   547,   549,   551,   553,   555,   557,   559,   561,   567,
   569,   573,   575,   579,   580,   582,   584,   586,   588,   590,
   592,   596,   601,   603,   607,   610,   614,   616,   620,   621,
   623,   625,   628,   630,   632,   633,   637,   640,   644,   646,
   650,   652,   657,   662,   664,   666,   668,   670,   671,   673,
   675,   678,   681,   683,   685,   687,   689,   691
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   298,   304,   310,   326,   351,   353,   356,   360,   365,   372,
   380,   385,   389,   398,   400,   408,   412,   420,   424,   427,
   430,   434,   454,   456,   464,   468,   500,   504,   513,   520,
   533,   540,   542,   554,   567,   574,   579,   585,   591,   600,
   606,   612,   619,   627,   631,   634,   641,   647,   653,   660,
   669,   679,   687,   695,   697,   709,   721,   728,   744,   754,
   764,   774,   779,   786,   796,   802,   808,   812,   824,   830,
   836,   846,   848,   851,   859,   865,   874,   879,   896,   898,
   903,   907,   912,   917,   923,   927,   952,   959,   964,   974,
   982,   991,  1000,  1011,  1015,  1021,  1029,  1053,  1060,  1074,
  1083,  1093,  1103,  1111,  1132,  1141,  1150,  1151,  1153,  1160,
  1172,  1182,  1184,  1189,  1193,  1197,  1201,  1204,  1209,  1221,
  1237,  1248,  1262,  1264,  1265,  1266,  1267,  1268,  1269,  1270,
  1271,  1272,  1273,  1274,  1280,  1282,  1283,  1286,  1293,  1305,
  1307,  1311,  1315,  1316,  1317,  1318,  1319,  1323,  1324,  1325,
  1326,  1330,  1331,  1335,  1344,  1354,  1361,  1367,  1373,  1379,
  1395,  1395,  1396,  1396,  1397,  1399,  1401,  1406,  1410,  1419,
  1423,  1428,  1432,  1438,  1448,  1452,  1455,  1458,  1463,  1472,
  1480,  1486,  1493,  1501,  1509,  1518,  1521,  1526,  1528,  1529,
  1530,  1533,  1537,  1542,  1546,  1557,  1562,  1567,  1574,  1580,
  1584,  1589,  1595,  1607,  1609,  1612,  1616,  1619,  1624,  1628,
  1636,  1651,  1657,  1664,  1677,  1689,  1704,  1708,  1725,  1727,
  1730,  1734,  1740,  1743,  1745,  1745,  1765,  1770,  1775,  1781,
  1787,  1795,  1803,  1811,  1818,  1828,  1833,  1863,  1865,  1868,
  1873,  1877,  1883,  1888,  1895,  1902,  1909,  1914
};
#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_capitalreference","TOK_typefieldreference",
"TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY",
"TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN",
"TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS",
"TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED",
"TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL","TOK_END","TOK_ENUMERATED",
"TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE",
"TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString","TOK_GraphicString","TOK_IA5String",
"TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE",
"TOK_INSTRUCTIONS","TOK_INTEGER","TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY",
"TOK_NULL","TOK_NumericString","TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET",
"TOK_OF","TOK_OPTIONAL","TOK_PATTERN","TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT",
"TOK_PrintableString","TOK_PRIVATE","TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE",
"TOK_SET","TOK_SIZE","TOK_STRING","TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString",
"TOK_TRUE","TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString",
"TOK_UTCTime","TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH",
"TOK_EXCEPT","'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots",
"TOK_tag","'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'",
"ParsedGrammar","ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
"ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition",
"ImportsBundleSet","ImportsBundle","ImportsList","ImportsElement","ExportsDefinition",
"ExportsBody","ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody",
"DataTypeReference","ParameterArgumentList","ParameterArgumentName","ActualParameterList",
"ActualParameter","ConstructedDataTypeDefinition","ClassDeclaration","optUnique",
"ClassFieldList","ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxFormat",
"WithSyntaxFormatToken","DataTypeMember","ConstrainedTypeDeclaration","ExtensionAndException",
"UnconstrainedTypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
"InlineOrDefinedValue","@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
"BasicType","BasicString","ConstructedTypeConstrained","ConstructedType","Union",
"Intersection","Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
"ElementSetSpec","ConstraintSubtypeElement","ConstraintRangeSpec","ConstraintSpec",
"ConstraintValue","WithComponents","WithComponentsList","WithComponentsElement",
"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
"optMarker","Marker","DefaultValue","@4","UniverationDefinition","UniverationList",
"UniverationElement","SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference",
"Identifier","TaggedIdentifier", NULL
};
#endif

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

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

static const short yydefgoto[] = {   383,
     3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
    56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
    70,    60,   100,   212,    61,   125,   126,   259,   260,   237,
   116,   296,   180,   181,   288,   289,   369,   378,   379,   238,
   146,   239,   147,   148,   165,   166,   182,   183,    62,   174,
   225,   175,   285,   149,   150,   151,   152,   153,   154,   276,
   277,   279,   190,   191,   192,   213,   214,   215,   266,   216,
   217,   218,   348,   349,   374,   375,   219,   220,   221,   331,
   332,   354,   233,   234,   294,   335,   197,   253,   254,   222,
   117,   118,   155,   104,   223,   241
};

static const short yypact[] = {    62,
-32768,-32768,    62,-32768,   -36,-32768,    11,    56,-32768,-32768,
-32768,-32768,    26,-32768,   -13,   202,-32768,-32768,    87,    52,
    66,    99,   108,   101,   116,   202,-32768,    81,-32768,-32768,
-32768,-32768,-32768,   149,-32768,-32768,   375,-32768,   185,    10,
-32768,-32768,-32768,    58,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   163,   375,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   140,   673,-32768,    96,-32768,    86,-32768,
-32768,-32768,-32768,    20,-32768,    -4,-32768,-32768,-32768,-32768,
-32768,   -11,    98,-32768,   134,-32768,   137,   156,-32768,-32768,
-32768,-32768,-32768,   187,   139,-32768,-32768,-32768,   690,   269,
-32768,-32768,-32768,   165,   272,-32768,-32768,-32768,   218,-32768,
-32768,    62,   218,   179,    94,-32768,   536,-32768,   218,-32768,
-32768,-32768,-32768,-32768,   -65,-32768,   175,   176,   183,   199,
    53,-32768,   -36,-32768,   199,-32768,-32768,    70,   184,   255,
   192,   229,    61,    65,-32768,-32768,   -27,-32768,-32768,   194,
-32768,-32768,-32768,-32768,   195,-32768,-32768,   301,   690,   299,
   299,   215,-32768,-32768,   197,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   203,-32768,-32768,    63,
-32768,   459,-32768,   286,    21,   235,   210,    21,   215,   250,
-32768,   214,    21,   256,    15,    42,-32768,   314,   613,-32768,
-32768,-32768,-32768,-32768,-32768,   -12,-32768,-32768,   297,    62,
   215,   223,-32768,   142,   233,   225,   -12,-32768,-32768,   230,
-32768,-32768,-32768,   199,   329,   299,   240,   199,   226,-32768,
   251,    15,-32768,-32768,   299,   231,    91,-32768,-32768,   241,
   613,-32768,   215,   128,   236,   613,   215,   144,   613,-32768,
-32768,-32768,   158,-32768,-32768,   239,   243,   244,   159,-32768,
-32768,-32768,-32768,   238,   248,    77,   249,   252,   245,-32768,
-32768,-32768,-32768,-32768,   253,   215,   215,-32768,   215,   215,
    89,   254,-32768,-32768,   355,-32768,   283,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   251,-32768,   247,-32768,
    21,-32768,-32768,   259,-32768,-32768,-32768,   260,-32768,-32768,
-32768,    46,   247,-32768,   314,-32768,   258,-32768,-32768,    28,
-32768,-32768,   265,-32768,-32768,-32768,   262,-32768,-32768,    -1,
   160,-32768,-32768,   271,   329,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,   275,   277,-32768,-32768,-32768,   169,-32768,   -27,
   215,-32768,   299,   264,-32768,-32768,   254,-32768,   355,-32768,
-32768,-32768,    28,     8,   182,   264,   299,-32768,   125,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,    12,-32768,-32768,
-32768,-32768,   385,   389,-32768
};

static const short yypgoto[] = {-32768,
-32768,   391,   263,-32768,-32768,   382,-32768,-32768,   374,-32768,
-32768,   345,-32768,-32768,-32768,   328,-32768,   290,-32768,-32768,
   300,-32768,   346,-32768,-32768,-32768,   257,-32768,    95,   -67,
-32768,   115,-32768,   186,-32768,-32768,-32768,-32768,    37,   117,
   -40,-32768,  -188,   -50,-32768,   196,  -179,   -91,-32768,-32768,
-32768,  -219,    84,   -56,   -52,-32768,    35,-32768,-32768,-32768,
-32768,-32768,  -142,-32768,-32768,  -165,    71,  -121,   204,-32768,
  -141,-32768,-32768,    64,-32768,-32768,-32768,-32768,-32768,-32768,
    69,    75,  -124,-32768,-32768,-32768,-32768,-32768,   118,  -120,
-32768,   191,     1,-32768,    -7,-32768
};


#define	YYLAST		781


static const short yytable[] = {    15,
     5,   194,   232,     5,   195,    15,    10,   102,   102,   261,
   176,   103,   103,   101,   101,   377,   114,    10,    10,    11,
     1,     2,   371,   245,   163,   164,    67,    10,    10,    65,
     1,     2,    72,    10,    11,    10,    79,    64,   167,   158,
    71,   112,   127,   159,    78,   269,   103,   229,    65,    10,
   171,   172,   187,    10,   171,   172,    64,   168,   169,   170,
    10,   171,   172,     1,     2,    10,    79,     7,     1,     2,
   250,    63,     1,     2,    78,   255,   372,   304,   189,   337,
   373,   308,   203,   230,    10,   171,   172,   293,   264,    16,
    63,   115,    19,   343,   203,    28,    10,   171,   172,   128,
   265,    72,   127,    73,   113,    79,   103,   297,    29,    71,
   353,   157,   133,    78,   327,    12,   381,    68,    34,   156,
   244,   204,   236,   178,   319,   248,   261,   110,   377,   347,
    17,   177,   167,   204,   136,   242,   318,   163,   164,   329,
   187,   231,    82,   251,   187,   137,   252,   251,   328,    30,
    83,    84,   201,   202,   324,   325,   173,   326,   263,   128,
    32,    85,   208,    86,   188,    87,   189,   227,   193,    37,
   189,   228,   292,  -243,   208,    88,   103,   240,   338,    89,
   240,   119,    31,    90,    33,   240,    91,    36,   256,   380,
   262,   255,   344,   108,   109,   300,    66,    92,   380,   301,
   303,    80,    93,   107,    94,   307,    95,   364,   310,   119,
   268,   163,   164,    20,   120,    96,    97,   121,   286,   124,
   203,    21,    10,   171,   172,    10,   122,   298,     1,     2,
    98,   203,   305,    10,   171,   172,   301,   123,   271,   272,
   273,   274,    22,    99,    23,    83,    84,    85,   309,    86,
   275,    87,   301,    24,    10,   171,   172,     1,     2,   204,
   205,    88,   311,   314,   356,    89,   312,   315,   357,    90,
   204,   129,    91,   362,   131,   206,   130,   363,   271,   272,
   273,   274,   135,    92,   160,   161,   162,  -244,    93,   184,
    94,   178,    95,   240,   207,   185,   186,   196,   198,   177,
   208,    96,    97,   199,   256,   178,    10,   262,   224,   209,
   235,   208,   350,   177,   226,   243,    98,   246,   210,   247,
   211,    10,   355,   249,   138,   139,   267,   270,   278,   291,
   280,   140,   284,   282,   287,    85,    38,    86,   295,    87,
   141,   299,   306,   115,   313,   355,   188,   193,   317,    88,
   316,   322,   320,    89,   323,   350,   321,    90,   333,   376,
    91,    41,    42,    43,   334,   340,   341,   330,   352,   142,
   346,    92,    45,   351,   358,   367,    93,    46,    94,    47,
    95,   360,    10,   361,   384,     1,     2,    48,   385,    96,
    97,   257,   258,     6,    18,   179,    49,    38,    50,    35,
    81,   111,   134,    51,    98,    52,    53,    54,   132,   345,
   105,   336,    39,   290,   382,   200,    40,   339,   359,   283,
   281,   365,    41,    42,    43,   368,   370,   366,    44,   342,
   302,     0,     0,    45,     0,     0,     0,     0,    46,     0,
    47,     0,     0,     0,     0,     0,     0,     0,    48,     0,
     0,     0,     0,     0,     0,     0,     0,    49,     0,    50,
     0,     0,     0,     0,    51,     0,    52,    53,    54,   138,
   139,   163,   164,     0,     0,     0,   140,     0,     0,     0,
    85,    38,    86,     0,    87,   141,     0,     0,     0,     0,
     0,   229,     0,     0,    88,     0,     0,     0,    89,     0,
     0,     0,    90,     0,     0,    91,    41,    42,    43,     0,
     0,     0,     0,     0,   142,     0,    92,    45,     0,     0,
     0,    93,    46,    94,    47,    95,     0,   230,     0,     0,
     0,     0,    48,     0,    96,    97,   143,   144,     0,     0,
     0,    49,     0,    50,     0,     0,   138,   139,    51,    98,
    52,    53,    54,   140,     0,     0,     0,    85,    38,    86,
     0,    87,   141,     0,     0,     0,     0,     0,     0,     0,
     0,    88,     0,     0,     0,    89,     0,     0,     0,    90,
     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
     0,   142,     0,    92,    45,     0,     0,     0,    93,    46,
    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
     0,    96,    97,   143,   144,     0,     0,     0,    49,     0,
    50,     0,   145,   138,   139,    51,    98,    52,    53,    54,
   140,     0,     0,     0,    85,    38,    86,     0,    87,   141,
     0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     0,     0,    89,     0,     0,     0,    90,     0,     0,    91,
    41,    42,    43,     0,     0,     0,     0,     0,   142,     0,
    92,    45,     0,     0,     0,    93,    46,    94,    47,    95,
     0,     0,     0,    83,    84,     0,    48,     0,    96,    97,
   143,   144,     0,     0,    85,    49,    86,    50,    87,     0,
     1,     2,    51,    98,    52,    53,    54,     0,    88,     0,
     0,    85,    89,    86,     0,    87,    90,     0,     0,    91,
     0,     0,     0,     0,     0,    88,     0,     0,     0,    89,
    92,     0,     0,    90,     0,    93,    91,    94,     0,    95,
     0,     0,     0,     0,     0,     0,     0,    92,    96,    97,
     0,     0,    93,     0,    94,     0,    95,     0,     0,     0,
     0,     0,     0,    98,     0,    96,    97,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    98
};

static const short yycheck[] = {     7,
     0,   144,   182,     3,   147,    13,     8,    64,    65,   198,
   131,    64,    65,    64,    65,     4,    28,     8,     8,     9,
    11,    12,    15,   189,    13,    14,    17,     8,     8,    37,
    11,    12,    40,     8,     9,     8,    44,    37,   130,   105,
    40,    46,    99,   109,    44,   211,    99,    33,    56,     8,
     9,    10,    80,     8,     9,    10,    56,     5,     6,     7,
     8,     9,    10,    11,    12,     8,    74,   104,    11,    12,
   195,    37,    11,    12,    74,   196,    69,   243,   106,   299,
    73,   247,     6,    69,     8,     9,    10,   229,   101,    34,
    56,   103,   106,   313,     6,     9,     8,     9,    10,    99,
   113,   109,   159,    46,   109,   113,   159,   232,    57,   109,
   112,   119,   112,   113,   280,   105,   105,   108,     3,   119,
   188,    45,   102,   131,   266,   193,   315,   108,     4,   102,
   105,   131,   224,    45,    41,   186,    60,    13,    14,   281,
    80,   182,     3,   102,    80,    52,   105,   102,    60,    84,
    11,    12,   160,   161,   276,   277,   104,   279,   199,   159,
    53,    22,    86,    24,   104,    26,   106,   105,   104,    21,
   106,   109,   229,   104,    86,    36,   229,   185,   299,    40,
   188,   112,    84,    44,    84,   193,    47,   107,   196,   369,
   198,   312,   313,   108,   109,   105,    12,    58,   378,   109,
   241,    39,    63,   108,    65,   246,    67,   350,   249,   112,
   210,    13,    14,    12,    81,    76,    77,    81,   226,    81,
     6,    20,     8,     9,    10,     8,    71,   235,    11,    12,
    91,     6,   105,     8,     9,    10,   109,    51,    97,    98,
    99,   100,    41,   104,    43,    11,    12,    22,   105,    24,
   109,    26,   109,    52,     8,     9,    10,    11,    12,    45,
    46,    36,   105,   105,   105,    40,   109,   109,   109,    44,
    45,     3,    47,   105,     3,    61,   112,   109,    97,    98,
    99,   100,   104,    58,   110,   110,   104,   104,    63,    35,
    65,   299,    67,   301,    80,   104,    68,   104,   104,   299,
    86,    76,    77,     3,   312,   313,     8,   315,   112,    95,
    25,    86,   320,   313,   112,   106,    91,    68,   104,   106,
   106,     8,   330,    68,    11,    12,    30,   105,    96,   104,
   106,    18,     4,   104,    95,    22,    23,    24,    88,    26,
    27,   111,   107,   103,   106,   353,   104,   104,   101,    36,
   113,   107,   104,    40,   102,   363,   105,    44,     4,   367,
    47,    48,    49,    50,    82,   107,   107,   114,   107,    56,
   113,    58,    59,   109,   104,   112,    63,    64,    65,    66,
    67,   107,     8,   107,     0,    11,    12,    74,     0,    76,
    77,    78,    79,     3,    13,   133,    83,    23,    85,    26,
    56,    74,   113,    90,    91,    92,    93,    94,   109,   315,
    65,   297,    38,   228,   378,   159,    42,   301,   335,   224,
   217,   351,    48,    49,    50,   357,   363,   353,    54,   312,
   240,    -1,    -1,    59,    -1,    -1,    -1,    -1,    64,    -1,
    66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,
    -1,    -1,    -1,    -1,    90,    -1,    92,    93,    94,    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,    -1,    40,    -1,
    -1,    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,
    -1,    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,
    -1,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
    -1,    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,
    -1,    83,    -1,    85,    -1,    -1,    11,    12,    90,    91,
    92,    93,    94,    18,    -1,    -1,    -1,    22,    23,    24,
    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,
    -1,    -1,    47,    48,    49,    50,    -1,    -1,    -1,    -1,
    -1,    56,    -1,    58,    59,    -1,    -1,    -1,    63,    64,
    65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
    -1,    76,    77,    78,    79,    -1,    -1,    -1,    83,    -1,
    85,    -1,    87,    11,    12,    90,    91,    92,    93,    94,
    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,    27,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,    47,
    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    56,    -1,
    58,    59,    -1,    -1,    -1,    63,    64,    65,    66,    67,
    -1,    -1,    -1,    11,    12,    -1,    74,    -1,    76,    77,
    78,    79,    -1,    -1,    22,    83,    24,    85,    26,    -1,
    11,    12,    90,    91,    92,    93,    94,    -1,    36,    -1,
    -1,    22,    40,    24,    -1,    26,    44,    -1,    -1,    47,
    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,
    58,    -1,    -1,    44,    -1,    63,    47,    65,    -1,    67,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    76,    77,
    -1,    -1,    63,    -1,    65,    -1,    67,    -1,    -1,    -1,
    -1,    -1,    -1,    91,    -1,    76,    77,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    91
};
/* -*-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 299 "asn1p_y.y"
{
		*(void **)param = yyvsp[0].a_grammar;
	;
    break;}
case 2:
#line 305 "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 310 "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 331 "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 352 "asn1p_y.y"
{ yyval.a_oid = 0; ;
    break;}
case 6:
#line 353 "asn1p_y.y"
{ yyval.a_oid = yyvsp[0].a_oid; ;
    break;}
case 7:
#line 357 "asn1p_y.y"
{
		yyval.a_oid = yyvsp[-1].a_oid;
	;
    break;}
case 8:
#line 360 "asn1p_y.y"
{
		yyval.a_oid = 0;
	;
    break;}
case 9:
#line 366 "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 372 "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 381 "asn1p_y.y"
{					/* iso */
		yyval.a_oid_arc.name = yyvsp[0].tv_str;
		yyval.a_oid_arc.number = -1;
	;
    break;}
case 12:
#line 385 "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 389 "asn1p_y.y"
{					/* 1 */
		yyval.a_oid_arc.name = 0;
		yyval.a_oid_arc.number = yyvsp[0].a_int;
	;
    break;}
case 14:
#line 399 "asn1p_y.y"
{ yyval.a_module_flags = MSF_NOFLAGS; ;
    break;}
case 15:
#line 400 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 16:
#line 409 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[0].a_module_flags;
	;
    break;}
case 17:
#line 412 "asn1p_y.y"
{
		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
	;
    break;}
case 18:
#line 421 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
	;
    break;}
case 19:
#line 424 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
	;
    break;}
case 20:
#line 427 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
	;
    break;}
case 21:
#line 430 "asn1p_y.y"
{
		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
	;
    break;}
case 22:
#line 434 "asn1p_y.y"
{
		/* X.680Amd1 specifies TAG and XER */
		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
		 	yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
		} else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
		 	yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
		} else {
			fprintf(stderr,
				"WARNING: %s INSTRUCTIONS at line %d: "
				"Unrecognized encoding reference\n",
				yyvsp[-1].tv_str, yylineno);
		 	yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
		}
		free(yyvsp[-1].tv_str);
	;
    break;}
case 23:
#line 455 "asn1p_y.y"
{ yyval.a_module = 0; ;
    break;}
case 24:
#line 456 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 25:
#line 465 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 26:
#line 468 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;

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

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

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

	;
    break;}
case 27:
#line 501 "asn1p_y.y"
{
		yyval.a_module = yyvsp[0].a_module;
	;
    break;}
case 28:
#line 504 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		if(yyvsp[0].a_xports) {
			TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
		} else {
			/* "EXPORTS ALL;" ? */
		}
	;
    break;}
case 29:
#line 513 "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 520 "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 533 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
	;
    break;}
case 32:
#line 541 "asn1p_y.y"
{ asn1p_lexer_hack_push_encoding_control(); ;
    break;}
case 33:
#line 542 "asn1p_y.y"
{
		fprintf(stderr,
			"WARNING: ENCODING-CONTROL %s "
			"specification at line %d ignored\n",
			yyvsp[-1].tv_str, yylineno);
		free(yyvsp[-1].tv_str);
		yyval.a_module = 0;
	;
    break;}
case 34:
#line 554 "asn1p_y.y"
{
		return yyerror(
			"Attempt to redefine a standard basic type, "
			"use -ftypesXY to switch back "
			"to older version of ASN.1 standard");
	;
    break;}
case 35:
#line 568 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
	;
    break;}
case 36:
#line 574 "asn1p_y.y"
{
		return yyerror("Empty IMPORTS list");
	;
    break;}
case 37:
#line 580 "asn1p_y.y"
{
		yyval.a_module = asn1p_module_new();
		checkmem(yyval.a_module);
		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
	;
    break;}
case 38:
#line 585 "asn1p_y.y"
{
		yyval.a_module = yyvsp[-1].a_module;
		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
	;
    break;}
case 39:
#line 592 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-3].a_xports;
		yyval.a_xports->from = yyvsp[-1].tv_str;
		yyval.a_xports->from_oid = yyvsp[0].a_oid;
		checkmem(yyval.a_xports);
	;
    break;}
case 40:
#line 601 "asn1p_y.y"
{
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 41:
#line 606 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 42:
#line 613 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_REFERENCE;
	;
    break;}
case 43:
#line 619 "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 44:
#line 628 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-1].a_xports;
	;
    break;}
case 45:
#line 631 "asn1p_y.y"
{
		yyval.a_xports = 0;
	;
    break;}
case 46:
#line 634 "asn1p_y.y"
{
		/* Empty EXPORTS clause effectively prohibits export. */
		yyval.a_xports = asn1p_xports_new();
		checkmem(yyval.a_xports);
	;
    break;}
case 47:
#line 642 "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 48:
#line 647 "asn1p_y.y"
{
		yyval.a_xports = yyvsp[-2].a_xports;
		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
	;
    break;}
case 49:
#line 654 "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 50:
#line 660 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(yylineno);
		checkmem(yyval.a_expr);
		yyval.a_expr->Identifier = yyvsp[0].tv_str;
		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
	;
    break;}
case 51:
#line 670 "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 52:
#line 680 "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 53:
#line 687 "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 54:
#line 696 "asn1p_y.y"
{ ;
    break;}
case 55:
#line 697 "asn1p_y.y"
{
	;
    break;}
case 56:
#line 713 "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 57:
#line 721 "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 58:
#line 728 "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 59:
#line 745 "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 60:
#line 755 "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 61:
#line 764 "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 62:
#line 775 "asn1p_y.y"
{
		yyval.a_parg.governor = NULL;
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 63:
#line 779 "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 64:
#line 786 "asn1p_y.y"
{
		int ret;
		yyval.a_parg.governor = asn1p_ref_new(yylineno);
		ret = asn1p_ref_add_component(yyval.a_parg.governor,
			ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
		checkmem(ret == 0);
		yyval.a_parg.argument = yyvsp[0].tv_str;
	;
    break;}
case 65:
#line 797 "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 66:
#line 802 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 67:
#line 809 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 68:
#line 812 "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 69:
#line 825 "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 70:
#line 830 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 71:
#line 837 "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 72:
#line 847 "asn1p_y.y"
{ yyval.a_int = 0; ;
    break;}
case 73:
#line 848 "asn1p_y.y"
{ yyval.a_int = 1; ;
    break;}
case 74:
#line 852 "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 75:
#line 859 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 76:
#line 866 "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 77:
#line 874 "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 78:
#line 879 "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 79:
#line 897 "asn1p_y.y"
{ yyval.a_wsynt = 0; ;
    break;}
case 80:
#line 898 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[0].a_wsynt;
	;
    break;}
case 81:
#line 905 "asn1p_y.y"
{ asn1p_lexer_hack_enable_with_syntax(); ;
    break;}
case 82:
#line 907 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
	;
    break;}
case 83:
#line 913 "asn1p_y.y"
{
		yyval.a_wsynt = asn1p_wsyntx_new();
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 84:
#line 917 "asn1p_y.y"
{
		yyval.a_wsynt = yyvsp[-1].a_wsynt;
		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
	;
    break;}
case 85:
#line 924 "asn1p_y.y"
{
		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
	;
    break;}
case 86:
#line 927 "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 87:
#line 953 "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 88:
#line 959 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 89:
#line 965 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		if(yyval.a_expr->constraints) {
			assert(!yyvsp[-1].a_constr);
		} else {
			yyval.a_expr->constraints = yyvsp[-1].a_constr;
		}
		yyval.a_expr->marker = yyvsp[0].a_marker;
	;
    break;}
case 90:
#line 974 "asn1p_y.y"
{
		/* This type includes constraints on its own */
		yyval.a_expr = yyvsp[0].a_expr;
		checkmem(yyval.a_expr);
		assert(yyval.a_expr->meta_type);
	;
    break;}
case 91:
#line 983 "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 92:
#line 991 "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 93:
#line 1000 "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 94:
#line 1012 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
	;
    break;}
case 95:
#line 1015 "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 96:
#line 1021 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[0].a_expr;
		checkmem(yyval.a_expr);
		assert(yyval.a_expr->meta_type);
	;
    break;}
case 97:
#line 1029 "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 98:
#line 1053 "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 99:
#line 1060 "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 100:
#line 1075 "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 101:
#line 1083 "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 102:
#line 1093 "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 103:
#line 1103 "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 104:
#line 1111 "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 105:
#line 1133 "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 106:
#line 1141 "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 109:
#line 1155 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 110:
#line 1160 "asn1p_y.y"
{
		yyval.a_refcomp.lex_type = RLT_Amplowercase;
		yyval.a_refcomp.name = yyvsp[0].tv_str;
	;
    break;}
case 111:
#line 1173 "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 112:
#line 1183 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 113:
#line 1184 "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 114:
#line 1189 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
		checkmem(yyval.a_value);
	;
    break;}
case 115:
#line 1193 "asn1p_y.y"
{
		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
		checkmem(yyval.a_value);
	;
    break;}
case 116:
#line 1197 "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 117:
#line 1201 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 118:
#line 1204 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 119:
#line 1210 "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 120:
#line 1221 "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 121:
#line 1238 "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 122:
#line 1248 "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 123:
#line 1263 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BOOLEAN; ;
    break;}
case 124:
#line 1264 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_NULL; ;
    break;}
case 125:
#line 1265 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_REAL; ;
    break;}
case 126:
#line 1266 "asn1p_y.y"
{ yyval.a_type = yyvsp[0].a_type; ;
    break;}
case 127:
#line 1267 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
    break;}
case 128:
#line 1268 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
    break;}
case 129:
#line 1269 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
    break;}
case 130:
#line 1270 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
    break;}
case 131:
#line 1271 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
    break;}
case 132:
#line 1272 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
    break;}
case 133:
#line 1273 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_UTCTime; ;
    break;}
case 134:
#line 1274 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
    break;}
case 135:
#line 1281 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_INTEGER; ;
    break;}
case 136:
#line 1282 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
    break;}
case 137:
#line 1283 "asn1p_y.y"
{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
    break;}
case 138:
#line 1287 "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 139:
#line 1293 "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 140:
#line 1306 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_BMPString; ;
    break;}
case 141:
#line 1307 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GeneralString;
		return yyerror("GeneralString is not supported");
	;
    break;}
case 142:
#line 1311 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_GraphicString;
		return yyerror("GraphicString is not supported");
	;
    break;}
case 143:
#line 1315 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_IA5String; ;
    break;}
case 144:
#line 1316 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ISO646String; ;
    break;}
case 145:
#line 1317 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_NumericString; ;
    break;}
case 146:
#line 1318 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_PrintableString; ;
    break;}
case 147:
#line 1319 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_T61String;
		return yyerror("T61String not implemented yet");
	;
    break;}
case 148:
#line 1323 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_TeletexString; ;
    break;}
case 149:
#line 1324 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UniversalString; ;
    break;}
case 150:
#line 1325 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_UTF8String; ;
    break;}
case 151:
#line 1326 "asn1p_y.y"
{
		yyval.a_type = ASN_STRING_VideotexString;
		return yyerror("VideotexString is no longer supported");
	;
    break;}
case 152:
#line 1330 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_VisibleString; ;
    break;}
case 153:
#line 1331 "asn1p_y.y"
{ yyval.a_type = ASN_STRING_ObjectDescriptor; ;
    break;}
case 154:
#line 1336 "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 155:
#line 1344 "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 156:
#line 1355 "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 157:
#line 1361 "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 158:
#line 1367 "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 159:
#line 1373 "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 160:
#line 1379 "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 166:
#line 1400 "asn1p_y.y"
{ yyval.a_constr = 0; ;
    break;}
case 167:
#line 1401 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 168:
#line 1407 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
	;
    break;}
case 169:
#line 1410 "asn1p_y.y"
{
		/*
		 * This is a special case, for compatibility purposes.
		 * It goes without parentheses.
		 */
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
	;
    break;}
case 170:
#line 1420 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[-1].a_constr;
	;
    break;}
case 171:
#line 1423 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 172:
#line 1429 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 173:
#line 1432 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		ct->type = ACT_EL_EXT;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
	;
    break;}
case 174:
#line 1438 "asn1p_y.y"
{
		asn1p_constraint_t *ct;
		ct = asn1p_constraint_new(yylineno);
		ct->type = ACT_EL_EXT;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
		ct = yyval.a_constr;
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
	;
    break;}
case 175:
#line 1449 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 176:
#line 1452 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 177:
#line 1455 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 178:
#line 1458 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 179:
#line 1464 "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 180:
#line 1472 "asn1p_y.y"
{
		int ret;
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_CA_SET;
		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
		checkmem(ret == 0);
	;
    break;}
case 181:
#line 1480 "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 182:
#line 1486 "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 183:
#line 1493 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = yyvsp[-1].a_ctype;
		yyval.a_constr->range_start = asn1p_value_fromint(-123);
		yyval.a_constr->range_stop = yyvsp[0].a_value;
		yyval.a_constr->range_start->type = ATV_MIN;
	;
    break;}
case 184:
#line 1501 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = yyvsp[-1].a_ctype;
		yyval.a_constr->range_start = yyvsp[-2].a_value;
		yyval.a_constr->range_stop = asn1p_value_fromint(321);
		yyval.a_constr->range_stop->type = ATV_MAX;
	;
    break;}
case 185:
#line 1509 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = yyvsp[-1].a_ctype;
		yyval.a_constr->range_start = asn1p_value_fromint(-123);
		yyval.a_constr->range_stop = asn1p_value_fromint(321);
		yyval.a_constr->range_start->type = ATV_MIN;
		yyval.a_constr->range_stop->type = ATV_MAX;
	;
    break;}
case 186:
#line 1518 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 187:
#line 1521 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 188:
#line 1527 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RANGE; ;
    break;}
case 189:
#line 1528 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_RLRANGE; ;
    break;}
case 190:
#line 1529 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_LLRANGE; ;
    break;}
case 191:
#line 1530 "asn1p_y.y"
{ yyval.a_ctype = ACT_EL_ULRANGE; ;
    break;}
case 192:
#line 1534 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_SIZE;
	;
    break;}
case 193:
#line 1537 "asn1p_y.y"
{
		yyval.a_ctype = ACT_CT_FROM;
	;
    break;}
case 194:
#line 1543 "asn1p_y.y"
{
		yyval.a_value = yyvsp[0].a_value;
	;
    break;}
case 195:
#line 1546 "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 196:
#line 1557 "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 197:
#line 1562 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(0);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_FALSE;
	;
    break;}
case 198:
#line 1567 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(1);
		checkmem(yyval.a_value);
		yyval.a_value->type = ATV_TRUE;
	;
    break;}
case 199:
#line 1575 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
	;
    break;}
case 200:
#line 1581 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 201:
#line 1584 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
	;
    break;}
case 202:
#line 1590 "asn1p_y.y"
{
		yyval.a_constr = asn1p_constraint_new(yylineno);
		checkmem(yyval.a_constr);
		yyval.a_constr->type = ACT_EL_EXT;
	;
    break;}
case 203:
#line 1595 "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 204:
#line 1608 "asn1p_y.y"
{ yyval.a_pres = ACPRES_DEFAULT; ;
    break;}
case 205:
#line 1609 "asn1p_y.y"
{ yyval.a_pres = yyvsp[0].a_pres; ;
    break;}
case 206:
#line 1613 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_PRESENT;
	;
    break;}
case 207:
#line 1616 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_ABSENT;
	;
    break;}
case 208:
#line 1619 "asn1p_y.y"
{
		yyval.a_pres = ACPRES_OPTIONAL;
	;
    break;}
case 209:
#line 1625 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 210:
#line 1628 "asn1p_y.y"
{
		yyval.a_constr = yyvsp[0].a_constr;
	;
    break;}
case 211:
#line 1637 "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 212:
#line 1652 "asn1p_y.y"
{
		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
	;
    break;}
case 213:
#line 1658 "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 214:
#line 1664 "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 215:
#line 1678 "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 216:
#line 1689 "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 217:
#line 1705 "asn1p_y.y"
{
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 218:
#line 1708 "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 219:
#line 1726 "asn1p_y.y"
{ yyval.a_marker = EM_NOMARK; ;
    break;}
case 220:
#line 1727 "asn1p_y.y"
{ yyval.a_marker = yyvsp[0].a_marker; ;
    break;}
case 221:
#line 1731 "asn1p_y.y"
{
		yyval.a_marker = EM_OPTIONAL;
	;
    break;}
case 222:
#line 1734 "asn1p_y.y"
{
		yyval.a_marker = EM_DEFAULT;
		/* FIXME: store DefaultValue somewhere */
	;
    break;}
case 223:
#line 1741 "asn1p_y.y"
{
	;
    break;}
case 224:
#line 1743 "asn1p_y.y"
{
	;
    break;}
case 225:
#line 1745 "asn1p_y.y"
{ asn1p_lexer_hack_push_opaque_state(); ;
    break;}
case 226:
#line 1745 "asn1p_y.y"
{
	;
    break;}
case 227:
#line 1766 "asn1p_y.y"
{
		yyval.a_expr = asn1p_expr_new(asn1p_lineno);
		checkmem(yyval.a_expr);
	;
    break;}
case 228:
#line 1770 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-1].a_expr;
	;
    break;}
case 229:
#line 1776 "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 230:
#line 1781 "asn1p_y.y"
{
		yyval.a_expr = yyvsp[-2].a_expr;
		TQ_ADD(&(yyval.a_expr->members), yyvsp[0].a_expr, next);
	;
    break;}
case 231:
#line 1788 "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 232:
#line 1795 "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 1803 "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 234:
#line 1811 "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 235:
#line 1818 "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 236:
#line 1829 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 237:
#line 1833 "asn1p_y.y"
{
		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
		checkmem(yyval.a_value);
	;
    break;}
case 238:
#line 1864 "asn1p_y.y"
{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
    break;}
case 239:
#line 1865 "asn1p_y.y"
{ yyval.a_tag = yyvsp[0].a_tag; ;
    break;}
case 240:
#line 1869 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[0].a_tag;
		yyval.a_tag.tag_mode = TM_DEFAULT;
	;
    break;}
case 241:
#line 1873 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = TM_IMPLICIT;
	;
    break;}
case 242:
#line 1877 "asn1p_y.y"
{
		yyval.a_tag = yyvsp[-1].a_tag;
		yyval.a_tag.tag_mode = TM_EXPLICIT;
	;
    break;}
case 243:
#line 1884 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 244:
#line 1888 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 245:
#line 1896 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 246:
#line 1903 "asn1p_y.y"
{
		checkmem(yyvsp[0].tv_str);
		yyval.tv_str = yyvsp[0].tv_str;
	;
    break;}
case 247:
#line 1910 "asn1p_y.y"
{
		memset(&yyval.tv_nametag, 0, sizeof(yyval.tv_nametag));
		yyval.tv_nametag.name = yyvsp[0].tv_str;
	;
    break;}
case 248:
#line 1914 "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 1921 "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;
}


