1226031Sstas/* A Bison parser, made by GNU Bison 2.3.  */
2226031Sstas
3226031Sstas/* Skeleton implementation for Bison's Yacc-like parsers in C
4226031Sstas
5226031Sstas   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6226031Sstas   Free Software Foundation, Inc.
7226031Sstas
8226031Sstas   This program is free software; you can redistribute it and/or modify
9226031Sstas   it under the terms of the GNU General Public License as published by
10226031Sstas   the Free Software Foundation; either version 2, or (at your option)
11226031Sstas   any later version.
12226031Sstas
13226031Sstas   This program is distributed in the hope that it will be useful,
14226031Sstas   but WITHOUT ANY WARRANTY; without even the implied warranty of
15226031Sstas   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16226031Sstas   GNU General Public License for more details.
17226031Sstas
18226031Sstas   You should have received a copy of the GNU General Public License
19226031Sstas   along with this program; if not, write to the Free Software
20226031Sstas   Foundation, Inc., 51 Franklin Street, Fifth Floor,
21226031Sstas   Boston, MA 02110-1301, USA.  */
22226031Sstas
23226031Sstas/* As a special exception, you may create a larger work that contains
24226031Sstas   part or all of the Bison parser skeleton and distribute that work
25226031Sstas   under terms of your choice, so long as that work isn't itself a
26226031Sstas   parser generator using the skeleton or a modified version thereof
27226031Sstas   as a parser skeleton.  Alternatively, if you modify or redistribute
28226031Sstas   the parser skeleton itself, you may (at your option) remove this
29226031Sstas   special exception, which will cause the skeleton and the resulting
30226031Sstas   Bison output files to be licensed under the GNU General Public
31226031Sstas   License without this special exception.
32226031Sstas
33226031Sstas   This special exception was added by the Free Software Foundation in
34226031Sstas   version 2.2 of Bison.  */
35226031Sstas
36226031Sstas/* C LALR(1) parser skeleton written by Richard Stallman, by
37226031Sstas   simplifying the original so-called "semantic" parser.  */
38226031Sstas
39226031Sstas/* All symbols defined below should begin with yy or YY, to avoid
40226031Sstas   infringing on user name space.  This should be done even for local
41226031Sstas   variables, as they might otherwise be expanded by user macros.
42226031Sstas   There are some unavoidable exceptions within include files to
43226031Sstas   define necessary library symbols; they are noted "INFRINGES ON
44226031Sstas   USER NAME SPACE" below.  */
45226031Sstas
46226031Sstas/* Identify Bison output.  */
47226031Sstas#define YYBISON 1
48226031Sstas
49226031Sstas/* Bison version.  */
50226031Sstas#define YYBISON_VERSION "2.3"
51226031Sstas
52226031Sstas/* Skeleton name.  */
53226031Sstas#define YYSKELETON_NAME "yacc.c"
54226031Sstas
55226031Sstas/* Pure parsers.  */
56226031Sstas#define YYPURE 0
57226031Sstas
58226031Sstas/* Using locations.  */
59226031Sstas#define YYLSP_NEEDED 0
60226031Sstas
61226031Sstas
62226031Sstas
63226031Sstas/* Tokens.  */
64226031Sstas#ifndef YYTOKENTYPE
65226031Sstas# define YYTOKENTYPE
66226031Sstas   /* Put the tokens into the symbol table, so that GDB and other debuggers
67226031Sstas      know about them.  */
68226031Sstas   enum yytokentype {
69226031Sstas     kw_ABSENT = 258,
70226031Sstas     kw_ABSTRACT_SYNTAX = 259,
71226031Sstas     kw_ALL = 260,
72226031Sstas     kw_APPLICATION = 261,
73226031Sstas     kw_AUTOMATIC = 262,
74226031Sstas     kw_BEGIN = 263,
75226031Sstas     kw_BIT = 264,
76226031Sstas     kw_BMPString = 265,
77226031Sstas     kw_BOOLEAN = 266,
78226031Sstas     kw_BY = 267,
79226031Sstas     kw_CHARACTER = 268,
80226031Sstas     kw_CHOICE = 269,
81226031Sstas     kw_CLASS = 270,
82226031Sstas     kw_COMPONENT = 271,
83226031Sstas     kw_COMPONENTS = 272,
84226031Sstas     kw_CONSTRAINED = 273,
85226031Sstas     kw_CONTAINING = 274,
86226031Sstas     kw_DEFAULT = 275,
87226031Sstas     kw_DEFINITIONS = 276,
88226031Sstas     kw_EMBEDDED = 277,
89226031Sstas     kw_ENCODED = 278,
90226031Sstas     kw_END = 279,
91226031Sstas     kw_ENUMERATED = 280,
92226031Sstas     kw_EXCEPT = 281,
93226031Sstas     kw_EXPLICIT = 282,
94226031Sstas     kw_EXPORTS = 283,
95226031Sstas     kw_EXTENSIBILITY = 284,
96226031Sstas     kw_EXTERNAL = 285,
97226031Sstas     kw_FALSE = 286,
98226031Sstas     kw_FROM = 287,
99226031Sstas     kw_GeneralString = 288,
100226031Sstas     kw_GeneralizedTime = 289,
101226031Sstas     kw_GraphicString = 290,
102226031Sstas     kw_IA5String = 291,
103226031Sstas     kw_IDENTIFIER = 292,
104226031Sstas     kw_IMPLICIT = 293,
105226031Sstas     kw_IMPLIED = 294,
106226031Sstas     kw_IMPORTS = 295,
107226031Sstas     kw_INCLUDES = 296,
108226031Sstas     kw_INSTANCE = 297,
109226031Sstas     kw_INTEGER = 298,
110226031Sstas     kw_INTERSECTION = 299,
111226031Sstas     kw_ISO646String = 300,
112226031Sstas     kw_MAX = 301,
113226031Sstas     kw_MIN = 302,
114226031Sstas     kw_MINUS_INFINITY = 303,
115226031Sstas     kw_NULL = 304,
116226031Sstas     kw_NumericString = 305,
117226031Sstas     kw_OBJECT = 306,
118226031Sstas     kw_OCTET = 307,
119226031Sstas     kw_OF = 308,
120226031Sstas     kw_OPTIONAL = 309,
121226031Sstas     kw_ObjectDescriptor = 310,
122226031Sstas     kw_PATTERN = 311,
123226031Sstas     kw_PDV = 312,
124226031Sstas     kw_PLUS_INFINITY = 313,
125226031Sstas     kw_PRESENT = 314,
126226031Sstas     kw_PRIVATE = 315,
127226031Sstas     kw_PrintableString = 316,
128226031Sstas     kw_REAL = 317,
129226031Sstas     kw_RELATIVE_OID = 318,
130226031Sstas     kw_SEQUENCE = 319,
131226031Sstas     kw_SET = 320,
132226031Sstas     kw_SIZE = 321,
133226031Sstas     kw_STRING = 322,
134226031Sstas     kw_SYNTAX = 323,
135226031Sstas     kw_T61String = 324,
136226031Sstas     kw_TAGS = 325,
137226031Sstas     kw_TRUE = 326,
138226031Sstas     kw_TYPE_IDENTIFIER = 327,
139226031Sstas     kw_TeletexString = 328,
140226031Sstas     kw_UNION = 329,
141226031Sstas     kw_UNIQUE = 330,
142226031Sstas     kw_UNIVERSAL = 331,
143226031Sstas     kw_UTCTime = 332,
144226031Sstas     kw_UTF8String = 333,
145226031Sstas     kw_UniversalString = 334,
146226031Sstas     kw_VideotexString = 335,
147226031Sstas     kw_VisibleString = 336,
148226031Sstas     kw_WITH = 337,
149226031Sstas     RANGE = 338,
150226031Sstas     EEQUAL = 339,
151226031Sstas     ELLIPSIS = 340,
152226031Sstas     IDENTIFIER = 341,
153226031Sstas     referencename = 342,
154226031Sstas     STRING = 343,
155226031Sstas     NUMBER = 344
156226031Sstas   };
157226031Sstas#endif
158226031Sstas/* Tokens.  */
159226031Sstas#define kw_ABSENT 258
160226031Sstas#define kw_ABSTRACT_SYNTAX 259
161226031Sstas#define kw_ALL 260
162226031Sstas#define kw_APPLICATION 261
163226031Sstas#define kw_AUTOMATIC 262
164226031Sstas#define kw_BEGIN 263
165226031Sstas#define kw_BIT 264
166226031Sstas#define kw_BMPString 265
167226031Sstas#define kw_BOOLEAN 266
168226031Sstas#define kw_BY 267
169226031Sstas#define kw_CHARACTER 268
170226031Sstas#define kw_CHOICE 269
171226031Sstas#define kw_CLASS 270
172226031Sstas#define kw_COMPONENT 271
173226031Sstas#define kw_COMPONENTS 272
174226031Sstas#define kw_CONSTRAINED 273
175226031Sstas#define kw_CONTAINING 274
176226031Sstas#define kw_DEFAULT 275
177226031Sstas#define kw_DEFINITIONS 276
178226031Sstas#define kw_EMBEDDED 277
179226031Sstas#define kw_ENCODED 278
180226031Sstas#define kw_END 279
181226031Sstas#define kw_ENUMERATED 280
182226031Sstas#define kw_EXCEPT 281
183226031Sstas#define kw_EXPLICIT 282
184226031Sstas#define kw_EXPORTS 283
185226031Sstas#define kw_EXTENSIBILITY 284
186226031Sstas#define kw_EXTERNAL 285
187226031Sstas#define kw_FALSE 286
188226031Sstas#define kw_FROM 287
189226031Sstas#define kw_GeneralString 288
190226031Sstas#define kw_GeneralizedTime 289
191226031Sstas#define kw_GraphicString 290
192226031Sstas#define kw_IA5String 291
193226031Sstas#define kw_IDENTIFIER 292
194226031Sstas#define kw_IMPLICIT 293
195226031Sstas#define kw_IMPLIED 294
196226031Sstas#define kw_IMPORTS 295
197226031Sstas#define kw_INCLUDES 296
198226031Sstas#define kw_INSTANCE 297
199226031Sstas#define kw_INTEGER 298
200226031Sstas#define kw_INTERSECTION 299
201226031Sstas#define kw_ISO646String 300
202226031Sstas#define kw_MAX 301
203226031Sstas#define kw_MIN 302
204226031Sstas#define kw_MINUS_INFINITY 303
205226031Sstas#define kw_NULL 304
206226031Sstas#define kw_NumericString 305
207226031Sstas#define kw_OBJECT 306
208226031Sstas#define kw_OCTET 307
209226031Sstas#define kw_OF 308
210226031Sstas#define kw_OPTIONAL 309
211226031Sstas#define kw_ObjectDescriptor 310
212226031Sstas#define kw_PATTERN 311
213226031Sstas#define kw_PDV 312
214226031Sstas#define kw_PLUS_INFINITY 313
215226031Sstas#define kw_PRESENT 314
216226031Sstas#define kw_PRIVATE 315
217226031Sstas#define kw_PrintableString 316
218226031Sstas#define kw_REAL 317
219226031Sstas#define kw_RELATIVE_OID 318
220226031Sstas#define kw_SEQUENCE 319
221226031Sstas#define kw_SET 320
222226031Sstas#define kw_SIZE 321
223226031Sstas#define kw_STRING 322
224226031Sstas#define kw_SYNTAX 323
225226031Sstas#define kw_T61String 324
226226031Sstas#define kw_TAGS 325
227226031Sstas#define kw_TRUE 326
228226031Sstas#define kw_TYPE_IDENTIFIER 327
229226031Sstas#define kw_TeletexString 328
230226031Sstas#define kw_UNION 329
231226031Sstas#define kw_UNIQUE 330
232226031Sstas#define kw_UNIVERSAL 331
233226031Sstas#define kw_UTCTime 332
234226031Sstas#define kw_UTF8String 333
235226031Sstas#define kw_UniversalString 334
236226031Sstas#define kw_VideotexString 335
237226031Sstas#define kw_VisibleString 336
238226031Sstas#define kw_WITH 337
239226031Sstas#define RANGE 338
240226031Sstas#define EEQUAL 339
241226031Sstas#define ELLIPSIS 340
242226031Sstas#define IDENTIFIER 341
243226031Sstas#define referencename 342
244226031Sstas#define STRING 343
245226031Sstas#define NUMBER 344
246226031Sstas
247226031Sstas
248226031Sstas
249226031Sstas
250226031Sstas/* Copy the first part of user declarations.  */
251226031Sstas#line 38 "asn1parse.y"
252226031Sstas
253226031Sstas
254226031Sstas#include <config.h>
255226031Sstas
256226031Sstas#include <stdio.h>
257226031Sstas#include <stdlib.h>
258226031Sstas#include <string.h>
259226031Sstas#include "symbol.h"
260226031Sstas#include "lex.h"
261226031Sstas#include "gen_locl.h"
262226031Sstas#include "der.h"
263226031Sstas
264226031SstasRCSID("$Id$");
265226031Sstas
266226031Sstasstatic Type *new_type (Typetype t);
267226031Sstasstatic struct constraint_spec *new_constraint_spec(enum ctype);
268226031Sstasstatic Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype);
269226031Sstasvoid yyerror (const char *);
270226031Sstasstatic struct objid *new_objid(const char *label, int value);
271226031Sstasstatic void add_oid_to_tail(struct objid *, struct objid *);
272226031Sstasstatic void fix_labels(Symbol *s);
273226031Sstas
274226031Sstasstruct string_list {
275226031Sstas    char *string;
276226031Sstas    struct string_list *next;
277226031Sstas};
278226031Sstas
279226031Sstas/* Declarations for Bison */
280226031Sstas#define YYMALLOC malloc
281226031Sstas#define YYFREE   free
282226031Sstas
283226031Sstas
284226031Sstas
285226031Sstas/* Enabling traces.  */
286226031Sstas#ifndef YYDEBUG
287226031Sstas# define YYDEBUG 1
288226031Sstas#endif
289226031Sstas
290226031Sstas/* Enabling verbose error messages.  */
291226031Sstas#ifdef YYERROR_VERBOSE
292226031Sstas# undef YYERROR_VERBOSE
293226031Sstas# define YYERROR_VERBOSE 1
294226031Sstas#else
295226031Sstas# define YYERROR_VERBOSE 0
296226031Sstas#endif
297226031Sstas
298226031Sstas/* Enabling the token table.  */
299226031Sstas#ifndef YYTOKEN_TABLE
300226031Sstas# define YYTOKEN_TABLE 0
301226031Sstas#endif
302226031Sstas
303226031Sstas#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
304226031Sstastypedef union YYSTYPE
305226031Sstas#line 71 "asn1parse.y"
306226031Sstas{
307226031Sstas    int constant;
308226031Sstas    struct value *value;
309226031Sstas    struct range *range;
310226031Sstas    char *name;
311226031Sstas    Type *type;
312226031Sstas    Member *member;
313226031Sstas    struct objid *objid;
314226031Sstas    char *defval;
315226031Sstas    struct string_list *sl;
316226031Sstas    struct tagtype tag;
317226031Sstas    struct memhead *members;
318226031Sstas    struct constraint_spec *constraint_spec;
319226031Sstas}
320226031Sstas/* Line 193 of yacc.c.  */
321226031Sstas#line 322 "asn1parse.c"
322226031Sstas	YYSTYPE;
323226031Sstas# define yystype YYSTYPE /* obsolescent; will be withdrawn */
324226031Sstas# define YYSTYPE_IS_DECLARED 1
325226031Sstas# define YYSTYPE_IS_TRIVIAL 1
326226031Sstas#endif
327226031Sstas
328226031Sstas
329226031Sstas
330226031Sstas/* Copy the second part of user declarations.  */
331226031Sstas
332226031Sstas
333226031Sstas/* Line 216 of yacc.c.  */
334226031Sstas#line 335 "asn1parse.c"
335226031Sstas
336226031Sstas#ifdef short
337226031Sstas# undef short
338226031Sstas#endif
339226031Sstas
340226031Sstas#ifdef YYTYPE_UINT8
341226031Sstastypedef YYTYPE_UINT8 yytype_uint8;
342226031Sstas#else
343226031Sstastypedef unsigned char yytype_uint8;
344226031Sstas#endif
345226031Sstas
346226031Sstas#ifdef YYTYPE_INT8
347226031Sstastypedef YYTYPE_INT8 yytype_int8;
348226031Sstas#elif (defined __STDC__ || defined __C99__FUNC__ \
349226031Sstas     || defined __cplusplus || defined _MSC_VER)
350226031Sstastypedef signed char yytype_int8;
351226031Sstas#else
352226031Sstastypedef short int yytype_int8;
353226031Sstas#endif
354226031Sstas
355226031Sstas#ifdef YYTYPE_UINT16
356226031Sstastypedef YYTYPE_UINT16 yytype_uint16;
357226031Sstas#else
358226031Sstastypedef unsigned short int yytype_uint16;
359226031Sstas#endif
360226031Sstas
361226031Sstas#ifdef YYTYPE_INT16
362226031Sstastypedef YYTYPE_INT16 yytype_int16;
363226031Sstas#else
364226031Sstastypedef short int yytype_int16;
365226031Sstas#endif
366226031Sstas
367226031Sstas#ifndef YYSIZE_T
368226031Sstas# ifdef __SIZE_TYPE__
369226031Sstas#  define YYSIZE_T __SIZE_TYPE__
370226031Sstas# elif defined size_t
371226031Sstas#  define YYSIZE_T size_t
372226031Sstas# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
373226031Sstas     || defined __cplusplus || defined _MSC_VER)
374226031Sstas#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
375226031Sstas#  define YYSIZE_T size_t
376226031Sstas# else
377226031Sstas#  define YYSIZE_T unsigned int
378226031Sstas# endif
379226031Sstas#endif
380226031Sstas
381226031Sstas#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
382226031Sstas
383226031Sstas#ifndef YY_
384226031Sstas# if defined YYENABLE_NLS && YYENABLE_NLS
385226031Sstas#  if ENABLE_NLS
386226031Sstas#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
387226031Sstas#   define YY_(msgid) dgettext ("bison-runtime", msgid)
388226031Sstas#  endif
389226031Sstas# endif
390226031Sstas# ifndef YY_
391226031Sstas#  define YY_(msgid) msgid
392226031Sstas# endif
393226031Sstas#endif
394226031Sstas
395226031Sstas/* Suppress unused-variable warnings by "using" E.  */
396226031Sstas#if ! defined lint || defined __GNUC__
397226031Sstas# define YYUSE(e) ((void) (e))
398226031Sstas#else
399226031Sstas# define YYUSE(e) /* empty */
400226031Sstas#endif
401226031Sstas
402226031Sstas/* Identity function, used to suppress warnings about constant conditions.  */
403226031Sstas#ifndef lint
404226031Sstas# define YYID(n) (n)
405226031Sstas#else
406226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
407226031Sstas     || defined __cplusplus || defined _MSC_VER)
408226031Sstasstatic int
409226031SstasYYID (int i)
410226031Sstas#else
411226031Sstasstatic int
412226031SstasYYID (i)
413226031Sstas    int i;
414226031Sstas#endif
415226031Sstas{
416226031Sstas  return i;
417226031Sstas}
418226031Sstas#endif
419226031Sstas
420226031Sstas#if ! defined yyoverflow || YYERROR_VERBOSE
421226031Sstas
422226031Sstas/* The parser invokes alloca or malloc; define the necessary symbols.  */
423226031Sstas
424226031Sstas# ifdef YYSTACK_USE_ALLOCA
425226031Sstas#  if YYSTACK_USE_ALLOCA
426226031Sstas#   ifdef __GNUC__
427226031Sstas#    define YYSTACK_ALLOC __builtin_alloca
428226031Sstas#   elif defined __BUILTIN_VA_ARG_INCR
429226031Sstas#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
430226031Sstas#   elif defined _AIX
431226031Sstas#    define YYSTACK_ALLOC __alloca
432226031Sstas#   elif defined _MSC_VER
433226031Sstas#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
434226031Sstas#    define alloca _alloca
435226031Sstas#   else
436226031Sstas#    define YYSTACK_ALLOC alloca
437226031Sstas#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
438226031Sstas     || defined __cplusplus || defined _MSC_VER)
439226031Sstas#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
440226031Sstas#     ifndef _STDLIB_H
441226031Sstas#      define _STDLIB_H 1
442226031Sstas#     endif
443226031Sstas#    endif
444226031Sstas#   endif
445226031Sstas#  endif
446226031Sstas# endif
447226031Sstas
448226031Sstas# ifdef YYSTACK_ALLOC
449226031Sstas   /* Pacify GCC's `empty if-body' warning.  */
450226031Sstas#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
451226031Sstas#  ifndef YYSTACK_ALLOC_MAXIMUM
452226031Sstas    /* The OS might guarantee only one guard page at the bottom of the stack,
453226031Sstas       and a page size can be as small as 4096 bytes.  So we cannot safely
454226031Sstas       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
455226031Sstas       to allow for a few compiler-allocated temporary stack slots.  */
456226031Sstas#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
457226031Sstas#  endif
458226031Sstas# else
459226031Sstas#  define YYSTACK_ALLOC YYMALLOC
460226031Sstas#  define YYSTACK_FREE YYFREE
461226031Sstas#  ifndef YYSTACK_ALLOC_MAXIMUM
462226031Sstas#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
463226031Sstas#  endif
464226031Sstas#  if (defined __cplusplus && ! defined _STDLIB_H \
465226031Sstas       && ! ((defined YYMALLOC || defined malloc) \
466226031Sstas	     && (defined YYFREE || defined free)))
467226031Sstas#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
468226031Sstas#   ifndef _STDLIB_H
469226031Sstas#    define _STDLIB_H 1
470226031Sstas#   endif
471226031Sstas#  endif
472226031Sstas#  ifndef YYMALLOC
473226031Sstas#   define YYMALLOC malloc
474226031Sstas#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
475226031Sstas     || defined __cplusplus || defined _MSC_VER)
476226031Sstasvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
477226031Sstas#   endif
478226031Sstas#  endif
479226031Sstas#  ifndef YYFREE
480226031Sstas#   define YYFREE free
481226031Sstas#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
482226031Sstas     || defined __cplusplus || defined _MSC_VER)
483226031Sstasvoid free (void *); /* INFRINGES ON USER NAME SPACE */
484226031Sstas#   endif
485226031Sstas#  endif
486226031Sstas# endif
487226031Sstas#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
488226031Sstas
489226031Sstas
490226031Sstas#if (! defined yyoverflow \
491226031Sstas     && (! defined __cplusplus \
492226031Sstas	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
493226031Sstas
494226031Sstas/* A type that is properly aligned for any stack member.  */
495226031Sstasunion yyalloc
496226031Sstas{
497226031Sstas  yytype_int16 yyss;
498226031Sstas  YYSTYPE yyvs;
499226031Sstas  };
500226031Sstas
501226031Sstas/* The size of the maximum gap between one aligned stack and the next.  */
502226031Sstas# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
503226031Sstas
504226031Sstas/* The size of an array large to enough to hold all stacks, each with
505226031Sstas   N elements.  */
506226031Sstas# define YYSTACK_BYTES(N) \
507226031Sstas     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
508226031Sstas      + YYSTACK_GAP_MAXIMUM)
509226031Sstas
510226031Sstas/* Copy COUNT objects from FROM to TO.  The source and destination do
511226031Sstas   not overlap.  */
512226031Sstas# ifndef YYCOPY
513226031Sstas#  if defined __GNUC__ && 1 < __GNUC__
514226031Sstas#   define YYCOPY(To, From, Count) \
515226031Sstas      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
516226031Sstas#  else
517226031Sstas#   define YYCOPY(To, From, Count)		\
518226031Sstas      do					\
519226031Sstas	{					\
520226031Sstas	  YYSIZE_T yyi;				\
521226031Sstas	  for (yyi = 0; yyi < (Count); yyi++)	\
522226031Sstas	    (To)[yyi] = (From)[yyi];		\
523226031Sstas	}					\
524226031Sstas      while (YYID (0))
525226031Sstas#  endif
526226031Sstas# endif
527226031Sstas
528226031Sstas/* Relocate STACK from its old location to the new one.  The
529226031Sstas   local variables YYSIZE and YYSTACKSIZE give the old and new number of
530226031Sstas   elements in the stack, and YYPTR gives the new location of the
531226031Sstas   stack.  Advance YYPTR to a properly aligned location for the next
532226031Sstas   stack.  */
533226031Sstas# define YYSTACK_RELOCATE(Stack)					\
534226031Sstas    do									\
535226031Sstas      {									\
536226031Sstas	YYSIZE_T yynewbytes;						\
537226031Sstas	YYCOPY (&yyptr->Stack, Stack, yysize);				\
538226031Sstas	Stack = &yyptr->Stack;						\
539226031Sstas	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
540226031Sstas	yyptr += yynewbytes / sizeof (*yyptr);				\
541226031Sstas      }									\
542226031Sstas    while (YYID (0))
543226031Sstas
544226031Sstas#endif
545226031Sstas
546226031Sstas/* YYFINAL -- State number of the termination state.  */
547226031Sstas#define YYFINAL  6
548226031Sstas/* YYLAST -- Last index in YYTABLE.  */
549226031Sstas#define YYLAST   203
550226031Sstas
551226031Sstas/* YYNTOKENS -- Number of terminals.  */
552226031Sstas#define YYNTOKENS  98
553226031Sstas/* YYNNTS -- Number of nonterminals.  */
554226031Sstas#define YYNNTS  69
555226031Sstas/* YYNRULES -- Number of rules.  */
556226031Sstas#define YYNRULES  140
557226031Sstas/* YYNRULES -- Number of states.  */
558226031Sstas#define YYNSTATES  220
559226031Sstas
560226031Sstas/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
561226031Sstas#define YYUNDEFTOK  2
562226031Sstas#define YYMAXUTOK   344
563226031Sstas
564226031Sstas#define YYTRANSLATE(YYX)						\
565226031Sstas  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
566226031Sstas
567226031Sstas/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
568226031Sstasstatic const yytype_uint8 yytranslate[] =
569226031Sstas{
570226031Sstas       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
571226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
572226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
573226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
574226031Sstas      92,    93,     2,     2,    91,     2,     2,     2,     2,     2,
575226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,    90,
576226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
577226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
578226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
579226031Sstas       2,    96,     2,    97,     2,     2,     2,     2,     2,     2,
580226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
581226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
582226031Sstas       2,     2,     2,    94,     2,    95,     2,     2,     2,     2,
583226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
584226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
585226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
586226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
587226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
588226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
589226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
590226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
591226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
592226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
593226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
594226031Sstas       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
595226031Sstas       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
596226031Sstas       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
597226031Sstas      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
598226031Sstas      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
599226031Sstas      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
600226031Sstas      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
601226031Sstas      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
602226031Sstas      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
603226031Sstas      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
604226031Sstas      85,    86,    87,    88,    89
605226031Sstas};
606226031Sstas
607226031Sstas#if YYDEBUG
608226031Sstas/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
609226031Sstas   YYRHS.  */
610226031Sstasstatic const yytype_uint16 yyprhs[] =
611226031Sstas{
612226031Sstas       0,     0,     3,    13,    16,    19,    22,    23,    26,    27,
613226031Sstas      31,    32,    36,    37,    39,    40,    42,    45,    50,    54,
614226031Sstas      57,    58,    60,    63,    65,    67,    71,    73,    77,    79,
615226031Sstas      81,    83,    85,    87,    89,    91,    93,    95,    97,    99,
616226031Sstas     101,   103,   105,   107,   109,   111,   113,   119,   125,   131,
617226031Sstas     135,   137,   140,   145,   147,   151,   155,   160,   165,   167,
618226031Sstas     170,   176,   179,   183,   185,   186,   189,   194,   198,   203,
619226031Sstas     208,   212,   216,   221,   223,   225,   227,   229,   231,   234,
620226031Sstas     238,   240,   242,   244,   247,   251,   257,   262,   266,   271,
621226031Sstas     272,   274,   276,   278,   279,   281,   283,   288,   290,   292,
622226031Sstas     294,   296,   298,   300,   302,   304,   306,   308,   312,   316,
623226031Sstas     319,   321,   324,   328,   330,   334,   339,   341,   342,   346,
624226031Sstas     347,   350,   355,   357,   359,   361,   363,   365,   367,   369,
625226031Sstas     371,   373,   375,   377,   379,   381,   383,   385,   387,   389,
626226031Sstas     391
627226031Sstas};
628226031Sstas
629226031Sstas/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
630226031Sstasstatic const yytype_int16 yyrhs[] =
631226031Sstas{
632226031Sstas      99,     0,    -1,    86,   152,    21,   100,   101,    84,     8,
633226031Sstas     102,    24,    -1,    27,    70,    -1,    38,    70,    -1,     7,
634226031Sstas      70,    -1,    -1,    29,    39,    -1,    -1,   107,   103,   108,
635226031Sstas      -1,    -1,    40,   104,    90,    -1,    -1,   105,    -1,    -1,
636226031Sstas     106,    -1,   105,   106,    -1,   110,    32,    86,   152,    -1,
637226031Sstas      28,   110,    90,    -1,    28,     5,    -1,    -1,   109,    -1,
638226031Sstas     109,   108,    -1,   111,    -1,   144,    -1,    86,    91,   110,
639226031Sstas      -1,    86,    -1,    86,    84,   112,    -1,   113,    -1,   131,
640226031Sstas      -1,   134,    -1,   121,    -1,   114,    -1,   145,    -1,   130,
641226031Sstas      -1,   119,    -1,   116,    -1,   124,    -1,   122,    -1,   123,
642226031Sstas      -1,   126,    -1,   127,    -1,   128,    -1,   129,    -1,   140,
643226031Sstas      -1,    11,    -1,    92,   156,    83,   156,    93,    -1,    92,
644226031Sstas     156,    83,    46,    93,    -1,    92,    47,    83,   156,    93,
645226031Sstas      -1,    92,   156,    93,    -1,    43,    -1,    43,   115,    -1,
646226031Sstas      43,    94,   117,    95,    -1,   118,    -1,   117,    91,   118,
647226031Sstas      -1,   117,    91,    85,    -1,    86,    92,   164,    93,    -1,
648226031Sstas      25,    94,   120,    95,    -1,   117,    -1,     9,    67,    -1,
649226031Sstas       9,    67,    94,   150,    95,    -1,    51,    37,    -1,    52,
650226031Sstas      67,   125,    -1,    49,    -1,    -1,    66,   115,    -1,    64,
651226031Sstas      94,   147,    95,    -1,    64,    94,    95,    -1,    64,   125,
652226031Sstas      53,   112,    -1,    65,    94,   147,    95,    -1,    65,    94,
653226031Sstas      95,    -1,    65,    53,   112,    -1,    14,    94,   147,    95,
654226031Sstas      -1,   132,    -1,   133,    -1,    86,    -1,    34,    -1,    77,
655226031Sstas      -1,   112,   135,    -1,    92,   136,    93,    -1,   137,    -1,
656226031Sstas     138,    -1,   139,    -1,    19,   112,    -1,    23,    12,   156,
657226031Sstas      -1,    19,   112,    23,    12,   156,    -1,    18,    12,    94,
658226031Sstas      95,    -1,   141,   143,   112,    -1,    96,   142,    89,    97,
659226031Sstas      -1,    -1,    76,    -1,     6,    -1,    60,    -1,    -1,    27,
660226031Sstas      -1,    38,    -1,    86,   112,    84,   156,    -1,   146,    -1,
661226031Sstas      33,    -1,    73,    -1,    78,    -1,    61,    -1,    81,    -1,
662226031Sstas      36,    -1,    10,    -1,    79,    -1,   149,    -1,   147,    91,
663226031Sstas     149,    -1,   147,    91,    85,    -1,    86,   112,    -1,   148,
664226031Sstas      -1,   148,    54,    -1,   148,    20,   156,    -1,   151,    -1,
665226031Sstas     150,    91,   151,    -1,    86,    92,    89,    93,    -1,   153,
666226031Sstas      -1,    -1,    94,   154,    95,    -1,    -1,   155,   154,    -1,
667226031Sstas      86,    92,    89,    93,    -1,    86,    -1,    89,    -1,   157,
668226031Sstas      -1,   158,    -1,   162,    -1,   161,    -1,   163,    -1,   166,
669226031Sstas      -1,   165,    -1,   159,    -1,   160,    -1,    86,    -1,    88,
670226031Sstas      -1,    71,    -1,    31,    -1,   164,    -1,    89,    -1,    49,
671226031Sstas      -1,   153,    -1
672226031Sstas};
673226031Sstas
674226031Sstas/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
675226031Sstasstatic const yytype_uint16 yyrline[] =
676226031Sstas{
677226031Sstas       0,   239,   239,   246,   247,   249,   251,   254,   256,   259,
678226031Sstas     260,   263,   264,   267,   268,   271,   272,   275,   287,   293,
679226031Sstas     294,   297,   298,   301,   302,   305,   311,   319,   329,   330,
680226031Sstas     331,   334,   335,   336,   337,   338,   339,   340,   341,   342,
681226031Sstas     343,   344,   345,   346,   347,   350,   357,   367,   375,   383,
682226031Sstas     394,   399,   405,   413,   419,   424,   428,   441,   449,   452,
683226031Sstas     459,   467,   473,   482,   490,   491,   496,   502,   510,   519,
684226031Sstas     525,   533,   541,   548,   549,   552,   563,   568,   575,   591,
685226031Sstas     597,   600,   601,   604,   610,   618,   628,   634,   647,   656,
686226031Sstas     659,   663,   667,   674,   677,   681,   688,   699,   702,   707,
687226031Sstas     712,   717,   722,   727,   732,   737,   745,   751,   756,   767,
688226031Sstas     778,   784,   790,   798,   804,   811,   824,   825,   828,   835,
689226031Sstas     838,   849,   853,   864,   870,   871,   874,   875,   876,   877,
690226031Sstas     878,   881,   884,   887,   898,   906,   912,   920,   928,   931,
691226031Sstas     936
692226031Sstas};
693226031Sstas#endif
694226031Sstas
695226031Sstas#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
696226031Sstas/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
697226031Sstas   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
698226031Sstasstatic const char *const yytname[] =
699226031Sstas{
700226031Sstas  "$end", "error", "$undefined", "kw_ABSENT", "kw_ABSTRACT_SYNTAX",
701226031Sstas  "kw_ALL", "kw_APPLICATION", "kw_AUTOMATIC", "kw_BEGIN", "kw_BIT",
702226031Sstas  "kw_BMPString", "kw_BOOLEAN", "kw_BY", "kw_CHARACTER", "kw_CHOICE",
703226031Sstas  "kw_CLASS", "kw_COMPONENT", "kw_COMPONENTS", "kw_CONSTRAINED",
704226031Sstas  "kw_CONTAINING", "kw_DEFAULT", "kw_DEFINITIONS", "kw_EMBEDDED",
705226031Sstas  "kw_ENCODED", "kw_END", "kw_ENUMERATED", "kw_EXCEPT", "kw_EXPLICIT",
706226031Sstas  "kw_EXPORTS", "kw_EXTENSIBILITY", "kw_EXTERNAL", "kw_FALSE", "kw_FROM",
707226031Sstas  "kw_GeneralString", "kw_GeneralizedTime", "kw_GraphicString",
708226031Sstas  "kw_IA5String", "kw_IDENTIFIER", "kw_IMPLICIT", "kw_IMPLIED",
709226031Sstas  "kw_IMPORTS", "kw_INCLUDES", "kw_INSTANCE", "kw_INTEGER",
710226031Sstas  "kw_INTERSECTION", "kw_ISO646String", "kw_MAX", "kw_MIN",
711226031Sstas  "kw_MINUS_INFINITY", "kw_NULL", "kw_NumericString", "kw_OBJECT",
712226031Sstas  "kw_OCTET", "kw_OF", "kw_OPTIONAL", "kw_ObjectDescriptor", "kw_PATTERN",
713226031Sstas  "kw_PDV", "kw_PLUS_INFINITY", "kw_PRESENT", "kw_PRIVATE",
714226031Sstas  "kw_PrintableString", "kw_REAL", "kw_RELATIVE_OID", "kw_SEQUENCE",
715226031Sstas  "kw_SET", "kw_SIZE", "kw_STRING", "kw_SYNTAX", "kw_T61String", "kw_TAGS",
716226031Sstas  "kw_TRUE", "kw_TYPE_IDENTIFIER", "kw_TeletexString", "kw_UNION",
717226031Sstas  "kw_UNIQUE", "kw_UNIVERSAL", "kw_UTCTime", "kw_UTF8String",
718226031Sstas  "kw_UniversalString", "kw_VideotexString", "kw_VisibleString", "kw_WITH",
719226031Sstas  "RANGE", "EEQUAL", "ELLIPSIS", "IDENTIFIER", "referencename", "STRING",
720226031Sstas  "NUMBER", "';'", "','", "'('", "')'", "'{'", "'}'", "'['", "']'",
721226031Sstas  "$accept", "ModuleDefinition", "TagDefault", "ExtensionDefault",
722226031Sstas  "ModuleBody", "Imports", "SymbolsImported", "SymbolsFromModuleList",
723226031Sstas  "SymbolsFromModule", "Exports", "AssignmentList", "Assignment",
724226031Sstas  "referencenames", "TypeAssignment", "Type", "BuiltinType", "BooleanType",
725226031Sstas  "range", "IntegerType", "NamedNumberList", "NamedNumber",
726226031Sstas  "EnumeratedType", "Enumerations", "BitStringType",
727226031Sstas  "ObjectIdentifierType", "OctetStringType", "NullType", "size",
728226031Sstas  "SequenceType", "SequenceOfType", "SetType", "SetOfType", "ChoiceType",
729226031Sstas  "ReferencedType", "DefinedType", "UsefulType", "ConstrainedType",
730226031Sstas  "Constraint", "ConstraintSpec", "GeneralConstraint",
731226031Sstas  "ContentsConstraint", "UserDefinedConstraint", "TaggedType", "Tag",
732226031Sstas  "Class", "tagenv", "ValueAssignment", "CharacterStringType",
733226031Sstas  "RestrictedCharactedStringType", "ComponentTypeList", "NamedType",
734226031Sstas  "ComponentType", "NamedBitList", "NamedBit", "objid_opt", "objid",
735226031Sstas  "objid_list", "objid_element", "Value", "BuiltinValue",
736226031Sstas  "ReferencedValue", "DefinedValue", "Valuereference",
737226031Sstas  "CharacterStringValue", "BooleanValue", "IntegerValue", "SignedNumber",
738226031Sstas  "NullValue", "ObjectIdentifierValue", 0
739226031Sstas};
740226031Sstas#endif
741226031Sstas
742226031Sstas# ifdef YYPRINT
743226031Sstas/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
744226031Sstas   token YYLEX-NUM.  */
745226031Sstasstatic const yytype_uint16 yytoknum[] =
746226031Sstas{
747226031Sstas       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
748226031Sstas     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
749226031Sstas     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
750226031Sstas     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
751226031Sstas     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
752226031Sstas     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
753226031Sstas     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
754226031Sstas     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
755226031Sstas     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
756226031Sstas      59,    44,    40,    41,   123,   125,    91,    93
757226031Sstas};
758226031Sstas# endif
759226031Sstas
760226031Sstas/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
761226031Sstasstatic const yytype_uint8 yyr1[] =
762226031Sstas{
763226031Sstas       0,    98,    99,   100,   100,   100,   100,   101,   101,   102,
764226031Sstas     102,   103,   103,   104,   104,   105,   105,   106,   107,   107,
765226031Sstas     107,   108,   108,   109,   109,   110,   110,   111,   112,   112,
766226031Sstas     112,   113,   113,   113,   113,   113,   113,   113,   113,   113,
767226031Sstas     113,   113,   113,   113,   113,   114,   115,   115,   115,   115,
768226031Sstas     116,   116,   116,   117,   117,   117,   118,   119,   120,   121,
769226031Sstas     121,   122,   123,   124,   125,   125,   126,   126,   127,   128,
770226031Sstas     128,   129,   130,   131,   131,   132,   133,   133,   134,   135,
771226031Sstas     136,   137,   137,   138,   138,   138,   139,   140,   141,   142,
772226031Sstas     142,   142,   142,   143,   143,   143,   144,   145,   146,   146,
773226031Sstas     146,   146,   146,   146,   146,   146,   147,   147,   147,   148,
774226031Sstas     149,   149,   149,   150,   150,   151,   152,   152,   153,   154,
775226031Sstas     154,   155,   155,   155,   156,   156,   157,   157,   157,   157,
776226031Sstas     157,   158,   159,   160,   161,   162,   162,   163,   164,   165,
777226031Sstas     166
778226031Sstas};
779226031Sstas
780226031Sstas/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
781226031Sstasstatic const yytype_uint8 yyr2[] =
782226031Sstas{
783226031Sstas       0,     2,     9,     2,     2,     2,     0,     2,     0,     3,
784226031Sstas       0,     3,     0,     1,     0,     1,     2,     4,     3,     2,
785226031Sstas       0,     1,     2,     1,     1,     3,     1,     3,     1,     1,
786226031Sstas       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
787226031Sstas       1,     1,     1,     1,     1,     1,     5,     5,     5,     3,
788226031Sstas       1,     2,     4,     1,     3,     3,     4,     4,     1,     2,
789226031Sstas       5,     2,     3,     1,     0,     2,     4,     3,     4,     4,
790226031Sstas       3,     3,     4,     1,     1,     1,     1,     1,     2,     3,
791226031Sstas       1,     1,     1,     2,     3,     5,     4,     3,     4,     0,
792226031Sstas       1,     1,     1,     0,     1,     1,     4,     1,     1,     1,
793226031Sstas       1,     1,     1,     1,     1,     1,     1,     3,     3,     2,
794226031Sstas       1,     2,     3,     1,     3,     4,     1,     0,     3,     0,
795226031Sstas       2,     4,     1,     1,     1,     1,     1,     1,     1,     1,
796226031Sstas       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
797226031Sstas       1
798226031Sstas};
799226031Sstas
800226031Sstas/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
801226031Sstas   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
802226031Sstas   means the default is an error.  */
803226031Sstasstatic const yytype_uint8 yydefact[] =
804226031Sstas{
805226031Sstas       0,   117,     0,   119,     0,   116,     1,   122,   123,     0,
806226031Sstas     119,     6,     0,   118,   120,     0,     0,     0,     8,     0,
807226031Sstas       5,     3,     4,     0,     0,   121,     7,     0,    20,     0,
808226031Sstas       0,    12,    19,    26,     0,     2,    14,     0,     0,    18,
809226031Sstas       0,    13,    15,     0,     0,     9,    21,    23,    24,    25,
810226031Sstas      11,    16,     0,     0,   104,    45,     0,     0,    98,    76,
811226031Sstas     103,    50,    63,     0,     0,   101,    64,     0,    99,    77,
812226031Sstas     100,   105,   102,     0,    75,    89,     0,    28,    32,    36,
813226031Sstas      35,    31,    38,    39,    37,    40,    41,    42,    43,    34,
814226031Sstas      29,    73,    74,    30,    44,    93,    33,    97,    22,   117,
815226031Sstas      59,     0,     0,     0,     0,    51,    61,    64,     0,     0,
816226031Sstas       0,     0,     0,    27,    91,    92,    90,     0,     0,     0,
817226031Sstas      78,    94,    95,     0,    17,     0,     0,     0,   110,   106,
818226031Sstas       0,    58,    53,     0,   136,     0,   139,   135,   133,   134,
819226031Sstas     138,   140,     0,   124,   125,   131,   132,   127,   126,   128,
820226031Sstas     137,   130,   129,     0,    62,    65,    67,     0,     0,    71,
821226031Sstas      70,     0,     0,    96,     0,     0,     0,     0,    80,    81,
822226031Sstas      82,    87,     0,     0,   113,   109,     0,    72,     0,   111,
823226031Sstas       0,     0,    57,     0,     0,    49,    52,    66,    68,    69,
824226031Sstas      88,     0,    83,     0,    79,     0,     0,    60,   108,   107,
825226031Sstas     112,     0,    55,    54,     0,     0,     0,     0,     0,    84,
826226031Sstas       0,   114,    56,    48,    47,    46,    86,     0,   115,    85
827226031Sstas};
828226031Sstas
829226031Sstas/* YYDEFGOTO[NTERM-NUM].  */
830226031Sstasstatic const yytype_int16 yydefgoto[] =
831226031Sstas{
832226031Sstas      -1,     2,    18,    24,    30,    37,    40,    41,    42,    31,
833226031Sstas      45,    46,    43,    47,    76,    77,    78,   105,    79,   131,
834226031Sstas     132,    80,   133,    81,    82,    83,    84,   110,    85,    86,
835226031Sstas      87,    88,    89,    90,    91,    92,    93,   120,   167,   168,
836226031Sstas     169,   170,    94,    95,   117,   123,    48,    96,    97,   127,
837226031Sstas     128,   129,   173,   174,     4,   141,     9,    10,   142,   143,
838226031Sstas     144,   145,   146,   147,   148,   149,   150,   151,   152
839226031Sstas};
840226031Sstas
841226031Sstas/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
842226031Sstas   STATE-NUM.  */
843226031Sstas#define YYPACT_NINF -119
844226031Sstasstatic const yytype_int16 yypact[] =
845226031Sstas{
846226031Sstas     -43,   -56,    47,   -65,    29,  -119,  -119,   -31,  -119,   -25,
847226031Sstas     -65,     4,    -1,  -119,  -119,    17,    20,    26,    50,    13,
848226031Sstas    -119,  -119,  -119,    63,    24,  -119,  -119,   104,     8,    -2,
849226031Sstas      89,    74,  -119,    33,    25,  -119,    34,    39,    34,  -119,
850226031Sstas      37,    34,  -119,    98,    58,  -119,    39,  -119,  -119,  -119,
851226031Sstas    -119,  -119,    52,    66,  -119,  -119,    51,    53,  -119,  -119,
852226031Sstas    -119,   -79,  -119,   109,    81,  -119,   -60,   -48,  -119,  -119,
853226031Sstas    -119,  -119,  -119,   107,  -119,     2,   -74,  -119,  -119,  -119,
854226031Sstas    -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,
855226031Sstas    -119,  -119,  -119,  -119,  -119,   -18,  -119,  -119,  -119,   -56,
856226031Sstas      55,    65,    67,   -12,    67,  -119,  -119,    86,    68,   -70,
857226031Sstas     102,   107,   -69,    69,  -119,  -119,  -119,    73,    40,    10,
858226031Sstas    -119,  -119,  -119,   107,  -119,    71,   107,   -47,   -13,  -119,
859226031Sstas      72,    75,  -119,    70,  -119,    80,  -119,  -119,  -119,  -119,
860226031Sstas    -119,  -119,   -71,  -119,  -119,  -119,  -119,  -119,  -119,  -119,
861226031Sstas    -119,  -119,  -119,   -46,  -119,  -119,  -119,   -39,   107,    69,
862226031Sstas    -119,   -38,    76,  -119,   155,   107,   157,    77,  -119,  -119,
863226031Sstas    -119,    69,    82,   -10,  -119,    69,   -22,  -119,    40,  -119,
864226031Sstas      87,    19,  -119,    40,     9,  -119,  -119,  -119,    69,  -119,
865226031Sstas    -119,    83,   -19,    40,  -119,    90,    71,  -119,  -119,  -119,
866226031Sstas    -119,    85,  -119,  -119,    88,    94,    96,    95,   163,  -119,
867226031Sstas      99,  -119,  -119,  -119,  -119,  -119,  -119,    40,  -119,  -119
868226031Sstas};
869226031Sstas
870226031Sstas/* YYPGOTO[NTERM-NUM].  */
871226031Sstasstatic const yytype_int16 yypgoto[] =
872226031Sstas{
873226031Sstas    -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,   141,  -119,
874226031Sstas     137,  -119,   -15,  -119,   -72,  -119,  -119,    91,  -119,    92,
875226031Sstas      14,  -119,  -119,  -119,  -119,  -119,  -119,    84,  -119,  -119,
876226031Sstas    -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,
877226031Sstas    -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,   -82,
878226031Sstas    -119,    18,  -119,     5,   101,     1,   187,  -119,  -118,  -119,
879226031Sstas    -119,  -119,  -119,  -119,  -119,  -119,    22,  -119,  -119
880226031Sstas};
881226031Sstas
882226031Sstas/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
883226031Sstas   positive, shift that token.  If negative, reduce the rule which
884226031Sstas   number is the opposite.  If zero, do what YYDEFACT says.
885226031Sstas   If YYTABLE_NINF, syntax error.  */
886226031Sstas#define YYTABLE_NINF -11
887226031Sstasstatic const yytype_int16 yytable[] =
888226031Sstas{
889226031Sstas     163,   113,     5,    32,   208,   111,   108,   178,   114,   121,
890226031Sstas     118,    15,   184,   103,    34,   104,   126,   126,   119,   134,
891226031Sstas     122,     7,   185,    49,     8,   156,   160,   157,   164,   165,
892226031Sstas     161,    16,   -10,   166,   109,   135,    29,   136,     3,   159,
893226031Sstas     134,   179,    17,     1,   176,   181,   112,     6,   177,   186,
894226031Sstas      11,   171,   176,   176,   175,   205,   187,   189,   136,   137,
895226031Sstas     200,    12,   115,   198,   126,   204,   206,    53,    54,    55,
896226031Sstas      13,   134,    56,   119,   138,   209,   139,   140,   116,    23,
897226031Sstas     137,   196,     3,    57,    33,   197,   188,    20,    19,   136,
898226031Sstas      21,    58,    59,   192,    60,   138,    22,   139,   140,   219,
899226031Sstas       5,    61,    26,     3,   202,   130,    25,    62,    27,    63,
900226031Sstas      64,   137,    28,    35,    36,    39,    53,    54,    55,    65,
901226031Sstas      33,    56,    66,    67,    38,    44,   138,    50,   139,   140,
902226031Sstas      52,    68,    57,   100,     3,    69,    70,    71,    99,    72,
903226031Sstas      58,    59,    73,    60,    74,   101,   106,   102,   107,   125,
904226031Sstas      61,   126,   108,   130,    75,   158,    62,   172,    63,    64,
905226031Sstas     103,   119,   162,   183,   180,   182,   181,   191,    65,   193,
906226031Sstas     194,    66,    67,   190,   195,   217,   140,   207,   212,   210,
907226031Sstas      68,   213,    51,    98,    69,    70,    71,   214,    72,   215,
908226031Sstas     216,   154,   218,    74,   199,   203,   153,    14,     0,   155,
909226031Sstas     124,   211,   201,    75
910226031Sstas};
911226031Sstas
912226031Sstasstatic const yytype_int16 yycheck[] =
913226031Sstas{
914226031Sstas     118,    73,     1,     5,    23,    53,    66,    20,     6,    27,
915226031Sstas      84,     7,    83,    92,    29,    94,    86,    86,    92,    31,
916226031Sstas      38,    86,    93,    38,    89,    95,    95,   109,    18,    19,
917226031Sstas     112,    27,    24,    23,    94,    47,    28,    49,    94,   111,
918226031Sstas      31,    54,    38,    86,    91,    91,    94,     0,    95,    95,
919226031Sstas      21,   123,    91,    91,   126,    46,    95,    95,    49,    71,
920226031Sstas     178,    92,    60,    85,    86,   183,   184,     9,    10,    11,
921226031Sstas      95,    31,    14,    92,    86,   193,    88,    89,    76,    29,
922226031Sstas      71,    91,    94,    25,    86,    95,   158,    70,    89,    49,
923226031Sstas      70,    33,    34,   165,    36,    86,    70,    88,    89,   217,
924226031Sstas      99,    43,    39,    94,    85,    86,    93,    49,    84,    51,
925226031Sstas      52,    71,     8,    24,    40,    90,     9,    10,    11,    61,
926226031Sstas      86,    14,    64,    65,    91,    86,    86,    90,    88,    89,
927226031Sstas      32,    73,    25,    67,    94,    77,    78,    79,    86,    81,
928226031Sstas      33,    34,    84,    36,    86,    94,    37,    94,    67,    94,
929226031Sstas      43,    86,    66,    86,    96,    53,    49,    86,    51,    52,
930226031Sstas      92,    92,    89,    83,    92,    95,    91,    12,    61,    12,
931226031Sstas      93,    64,    65,    97,    92,    12,    89,    94,    93,    89,
932226031Sstas      73,    93,    41,    46,    77,    78,    79,    93,    81,    93,
933226031Sstas      95,   107,    93,    86,   176,   181,   104,    10,    -1,   108,
934226031Sstas      99,   196,   180,    96
935226031Sstas};
936226031Sstas
937226031Sstas/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
938226031Sstas   symbol of state STATE-NUM.  */
939226031Sstasstatic const yytype_uint8 yystos[] =
940226031Sstas{
941226031Sstas       0,    86,    99,    94,   152,   153,     0,    86,    89,   154,
942226031Sstas     155,    21,    92,    95,   154,     7,    27,    38,   100,    89,
943226031Sstas      70,    70,    70,    29,   101,    93,    39,    84,     8,    28,
944226031Sstas     102,   107,     5,    86,   110,    24,    40,   103,    91,    90,
945226031Sstas     104,   105,   106,   110,    86,   108,   109,   111,   144,   110,
946226031Sstas      90,   106,    32,     9,    10,    11,    14,    25,    33,    34,
947226031Sstas      36,    43,    49,    51,    52,    61,    64,    65,    73,    77,
948226031Sstas      78,    79,    81,    84,    86,    96,   112,   113,   114,   116,
949226031Sstas     119,   121,   122,   123,   124,   126,   127,   128,   129,   130,
950226031Sstas     131,   132,   133,   134,   140,   141,   145,   146,   108,    86,
951226031Sstas      67,    94,    94,    92,    94,   115,    37,    67,    66,    94,
952226031Sstas     125,    53,    94,   112,     6,    60,    76,   142,    84,    92,
953226031Sstas     135,    27,    38,   143,   152,    94,    86,   147,   148,   149,
954226031Sstas      86,   117,   118,   120,    31,    47,    49,    71,    86,    88,
955226031Sstas      89,   153,   156,   157,   158,   159,   160,   161,   162,   163,
956226031Sstas     164,   165,   166,   117,   125,   115,    95,   147,    53,   112,
957226031Sstas      95,   147,    89,   156,    18,    19,    23,   136,   137,   138,
958226031Sstas     139,   112,    86,   150,   151,   112,    91,    95,    20,    54,
959226031Sstas      92,    91,    95,    83,    83,    93,    95,    95,   112,    95,
960226031Sstas      97,    12,   112,    12,    93,    92,    91,    95,    85,   149,
961226031Sstas     156,   164,    85,   118,   156,    46,   156,    94,    23,   156,
962226031Sstas      89,   151,    93,    93,    93,    93,    95,    12,    93,   156
963226031Sstas};
964226031Sstas
965226031Sstas#define yyerrok		(yyerrstatus = 0)
966226031Sstas#define yyclearin	(yychar = YYEMPTY)
967226031Sstas#define YYEMPTY		(-2)
968226031Sstas#define YYEOF		0
969226031Sstas
970226031Sstas#define YYACCEPT	goto yyacceptlab
971226031Sstas#define YYABORT		goto yyabortlab
972226031Sstas#define YYERROR		goto yyerrorlab
973226031Sstas
974226031Sstas
975226031Sstas/* Like YYERROR except do call yyerror.  This remains here temporarily
976226031Sstas   to ease the transition to the new meaning of YYERROR, for GCC.
977226031Sstas   Once GCC version 2 has supplanted version 1, this can go.  */
978226031Sstas
979226031Sstas#define YYFAIL		goto yyerrlab
980226031Sstas
981226031Sstas#define YYRECOVERING()  (!!yyerrstatus)
982226031Sstas
983226031Sstas#define YYBACKUP(Token, Value)					\
984226031Sstasdo								\
985226031Sstas  if (yychar == YYEMPTY && yylen == 1)				\
986226031Sstas    {								\
987226031Sstas      yychar = (Token);						\
988226031Sstas      yylval = (Value);						\
989226031Sstas      yytoken = YYTRANSLATE (yychar);				\
990226031Sstas      YYPOPSTACK (1);						\
991226031Sstas      goto yybackup;						\
992226031Sstas    }								\
993226031Sstas  else								\
994226031Sstas    {								\
995226031Sstas      yyerror (YY_("syntax error: cannot back up")); \
996226031Sstas      YYERROR;							\
997226031Sstas    }								\
998226031Sstaswhile (YYID (0))
999226031Sstas
1000226031Sstas
1001226031Sstas#define YYTERROR	1
1002226031Sstas#define YYERRCODE	256
1003226031Sstas
1004226031Sstas
1005226031Sstas/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1006226031Sstas   If N is 0, then set CURRENT to the empty location which ends
1007226031Sstas   the previous symbol: RHS[0] (always defined).  */
1008226031Sstas
1009226031Sstas#define YYRHSLOC(Rhs, K) ((Rhs)[K])
1010226031Sstas#ifndef YYLLOC_DEFAULT
1011226031Sstas# define YYLLOC_DEFAULT(Current, Rhs, N)				\
1012226031Sstas    do									\
1013226031Sstas      if (YYID (N))                                                    \
1014226031Sstas	{								\
1015226031Sstas	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
1016226031Sstas	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
1017226031Sstas	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
1018226031Sstas	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
1019226031Sstas	}								\
1020226031Sstas      else								\
1021226031Sstas	{								\
1022226031Sstas	  (Current).first_line   = (Current).last_line   =		\
1023226031Sstas	    YYRHSLOC (Rhs, 0).last_line;				\
1024226031Sstas	  (Current).first_column = (Current).last_column =		\
1025226031Sstas	    YYRHSLOC (Rhs, 0).last_column;				\
1026226031Sstas	}								\
1027226031Sstas    while (YYID (0))
1028226031Sstas#endif
1029226031Sstas
1030226031Sstas
1031226031Sstas/* YY_LOCATION_PRINT -- Print the location on the stream.
1032226031Sstas   This macro was not mandated originally: define only if we know
1033226031Sstas   we won't break user code: when these are the locations we know.  */
1034226031Sstas
1035226031Sstas#ifndef YY_LOCATION_PRINT
1036226031Sstas# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1037226031Sstas#  define YY_LOCATION_PRINT(File, Loc)			\
1038226031Sstas     fprintf (File, "%d.%d-%d.%d",			\
1039226031Sstas	      (Loc).first_line, (Loc).first_column,	\
1040226031Sstas	      (Loc).last_line,  (Loc).last_column)
1041226031Sstas# else
1042226031Sstas#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1043226031Sstas# endif
1044226031Sstas#endif
1045226031Sstas
1046226031Sstas
1047226031Sstas/* YYLEX -- calling `yylex' with the right arguments.  */
1048226031Sstas
1049226031Sstas#ifdef YYLEX_PARAM
1050226031Sstas# define YYLEX yylex (YYLEX_PARAM)
1051226031Sstas#else
1052226031Sstas# define YYLEX yylex ()
1053226031Sstas#endif
1054226031Sstas
1055226031Sstas/* Enable debugging if requested.  */
1056226031Sstas#if YYDEBUG
1057226031Sstas
1058226031Sstas# ifndef YYFPRINTF
1059226031Sstas#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1060226031Sstas#  define YYFPRINTF fprintf
1061226031Sstas# endif
1062226031Sstas
1063226031Sstas# define YYDPRINTF(Args)			\
1064226031Sstasdo {						\
1065226031Sstas  if (yydebug)					\
1066226031Sstas    YYFPRINTF Args;				\
1067226031Sstas} while (YYID (0))
1068226031Sstas
1069226031Sstas# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
1070226031Sstasdo {									  \
1071226031Sstas  if (yydebug)								  \
1072226031Sstas    {									  \
1073226031Sstas      YYFPRINTF (stderr, "%s ", Title);					  \
1074226031Sstas      yy_symbol_print (stderr,						  \
1075226031Sstas		  Type, Value); \
1076226031Sstas      YYFPRINTF (stderr, "\n");						  \
1077226031Sstas    }									  \
1078226031Sstas} while (YYID (0))
1079226031Sstas
1080226031Sstas
1081226031Sstas/*--------------------------------.
1082226031Sstas| Print this symbol on YYOUTPUT.  |
1083226031Sstas`--------------------------------*/
1084226031Sstas
1085226031Sstas/*ARGSUSED*/
1086226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1087226031Sstas     || defined __cplusplus || defined _MSC_VER)
1088226031Sstasstatic void
1089226031Sstasyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1090226031Sstas#else
1091226031Sstasstatic void
1092226031Sstasyy_symbol_value_print (yyoutput, yytype, yyvaluep)
1093226031Sstas    FILE *yyoutput;
1094226031Sstas    int yytype;
1095226031Sstas    YYSTYPE const * const yyvaluep;
1096226031Sstas#endif
1097226031Sstas{
1098226031Sstas  if (!yyvaluep)
1099226031Sstas    return;
1100226031Sstas# ifdef YYPRINT
1101226031Sstas  if (yytype < YYNTOKENS)
1102226031Sstas    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1103226031Sstas# else
1104226031Sstas  YYUSE (yyoutput);
1105226031Sstas# endif
1106226031Sstas  switch (yytype)
1107226031Sstas    {
1108226031Sstas      default:
1109226031Sstas	break;
1110226031Sstas    }
1111226031Sstas}
1112226031Sstas
1113226031Sstas
1114226031Sstas/*--------------------------------.
1115226031Sstas| Print this symbol on YYOUTPUT.  |
1116226031Sstas`--------------------------------*/
1117226031Sstas
1118226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1119226031Sstas     || defined __cplusplus || defined _MSC_VER)
1120226031Sstasstatic void
1121226031Sstasyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1122226031Sstas#else
1123226031Sstasstatic void
1124226031Sstasyy_symbol_print (yyoutput, yytype, yyvaluep)
1125226031Sstas    FILE *yyoutput;
1126226031Sstas    int yytype;
1127226031Sstas    YYSTYPE const * const yyvaluep;
1128226031Sstas#endif
1129226031Sstas{
1130226031Sstas  if (yytype < YYNTOKENS)
1131226031Sstas    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1132226031Sstas  else
1133226031Sstas    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1134226031Sstas
1135226031Sstas  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1136226031Sstas  YYFPRINTF (yyoutput, ")");
1137226031Sstas}
1138226031Sstas
1139226031Sstas/*------------------------------------------------------------------.
1140226031Sstas| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1141226031Sstas| TOP (included).                                                   |
1142226031Sstas`------------------------------------------------------------------*/
1143226031Sstas
1144226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1145226031Sstas     || defined __cplusplus || defined _MSC_VER)
1146226031Sstasstatic void
1147226031Sstasyy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1148226031Sstas#else
1149226031Sstasstatic void
1150226031Sstasyy_stack_print (bottom, top)
1151226031Sstas    yytype_int16 *bottom;
1152226031Sstas    yytype_int16 *top;
1153226031Sstas#endif
1154226031Sstas{
1155226031Sstas  YYFPRINTF (stderr, "Stack now");
1156226031Sstas  for (; bottom <= top; ++bottom)
1157226031Sstas    YYFPRINTF (stderr, " %d", *bottom);
1158226031Sstas  YYFPRINTF (stderr, "\n");
1159226031Sstas}
1160226031Sstas
1161226031Sstas# define YY_STACK_PRINT(Bottom, Top)				\
1162226031Sstasdo {								\
1163226031Sstas  if (yydebug)							\
1164226031Sstas    yy_stack_print ((Bottom), (Top));				\
1165226031Sstas} while (YYID (0))
1166226031Sstas
1167226031Sstas
1168226031Sstas/*------------------------------------------------.
1169226031Sstas| Report that the YYRULE is going to be reduced.  |
1170226031Sstas`------------------------------------------------*/
1171226031Sstas
1172226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1173226031Sstas     || defined __cplusplus || defined _MSC_VER)
1174226031Sstasstatic void
1175226031Sstasyy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1176226031Sstas#else
1177226031Sstasstatic void
1178226031Sstasyy_reduce_print (yyvsp, yyrule)
1179226031Sstas    YYSTYPE *yyvsp;
1180226031Sstas    int yyrule;
1181226031Sstas#endif
1182226031Sstas{
1183226031Sstas  int yynrhs = yyr2[yyrule];
1184226031Sstas  int yyi;
1185226031Sstas  unsigned long int yylno = yyrline[yyrule];
1186226031Sstas  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1187226031Sstas	     yyrule - 1, yylno);
1188226031Sstas  /* The symbols being reduced.  */
1189226031Sstas  for (yyi = 0; yyi < yynrhs; yyi++)
1190226031Sstas    {
1191226031Sstas      fprintf (stderr, "   $%d = ", yyi + 1);
1192226031Sstas      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1193226031Sstas		       &(yyvsp[(yyi + 1) - (yynrhs)])
1194226031Sstas		       		       );
1195226031Sstas      fprintf (stderr, "\n");
1196226031Sstas    }
1197226031Sstas}
1198226031Sstas
1199226031Sstas# define YY_REDUCE_PRINT(Rule)		\
1200226031Sstasdo {					\
1201226031Sstas  if (yydebug)				\
1202226031Sstas    yy_reduce_print (yyvsp, Rule); \
1203226031Sstas} while (YYID (0))
1204226031Sstas
1205226031Sstas/* Nonzero means print parse trace.  It is left uninitialized so that
1206226031Sstas   multiple parsers can coexist.  */
1207226031Sstasint yydebug;
1208226031Sstas#else /* !YYDEBUG */
1209226031Sstas# define YYDPRINTF(Args)
1210226031Sstas# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1211226031Sstas# define YY_STACK_PRINT(Bottom, Top)
1212226031Sstas# define YY_REDUCE_PRINT(Rule)
1213226031Sstas#endif /* !YYDEBUG */
1214226031Sstas
1215226031Sstas
1216226031Sstas/* YYINITDEPTH -- initial size of the parser's stacks.  */
1217226031Sstas#ifndef	YYINITDEPTH
1218226031Sstas# define YYINITDEPTH 200
1219226031Sstas#endif
1220226031Sstas
1221226031Sstas/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1222226031Sstas   if the built-in stack extension method is used).
1223226031Sstas
1224226031Sstas   Do not make this value too large; the results are undefined if
1225226031Sstas   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1226226031Sstas   evaluated with infinite-precision integer arithmetic.  */
1227226031Sstas
1228226031Sstas#ifndef YYMAXDEPTH
1229226031Sstas# define YYMAXDEPTH 10000
1230226031Sstas#endif
1231226031Sstas
1232226031Sstas
1233226031Sstas
1234226031Sstas#if YYERROR_VERBOSE
1235226031Sstas
1236226031Sstas# ifndef yystrlen
1237226031Sstas#  if defined __GLIBC__ && defined _STRING_H
1238226031Sstas#   define yystrlen strlen
1239226031Sstas#  else
1240226031Sstas/* Return the length of YYSTR.  */
1241226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1242226031Sstas     || defined __cplusplus || defined _MSC_VER)
1243226031Sstasstatic YYSIZE_T
1244226031Sstasyystrlen (const char *yystr)
1245226031Sstas#else
1246226031Sstasstatic YYSIZE_T
1247226031Sstasyystrlen (yystr)
1248226031Sstas    const char *yystr;
1249226031Sstas#endif
1250226031Sstas{
1251226031Sstas  YYSIZE_T yylen;
1252226031Sstas  for (yylen = 0; yystr[yylen]; yylen++)
1253226031Sstas    continue;
1254226031Sstas  return yylen;
1255226031Sstas}
1256226031Sstas#  endif
1257226031Sstas# endif
1258226031Sstas
1259226031Sstas# ifndef yystpcpy
1260226031Sstas#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1261226031Sstas#   define yystpcpy stpcpy
1262226031Sstas#  else
1263226031Sstas/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1264226031Sstas   YYDEST.  */
1265226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1266226031Sstas     || defined __cplusplus || defined _MSC_VER)
1267226031Sstasstatic char *
1268226031Sstasyystpcpy (char *yydest, const char *yysrc)
1269226031Sstas#else
1270226031Sstasstatic char *
1271226031Sstasyystpcpy (yydest, yysrc)
1272226031Sstas    char *yydest;
1273226031Sstas    const char *yysrc;
1274226031Sstas#endif
1275226031Sstas{
1276226031Sstas  char *yyd = yydest;
1277226031Sstas  const char *yys = yysrc;
1278226031Sstas
1279226031Sstas  while ((*yyd++ = *yys++) != '\0')
1280226031Sstas    continue;
1281226031Sstas
1282226031Sstas  return yyd - 1;
1283226031Sstas}
1284226031Sstas#  endif
1285226031Sstas# endif
1286226031Sstas
1287226031Sstas# ifndef yytnamerr
1288226031Sstas/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1289226031Sstas   quotes and backslashes, so that it's suitable for yyerror.  The
1290226031Sstas   heuristic is that double-quoting is unnecessary unless the string
1291226031Sstas   contains an apostrophe, a comma, or backslash (other than
1292226031Sstas   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1293226031Sstas   null, do not copy; instead, return the length of what the result
1294226031Sstas   would have been.  */
1295226031Sstasstatic YYSIZE_T
1296226031Sstasyytnamerr (char *yyres, const char *yystr)
1297226031Sstas{
1298226031Sstas  if (*yystr == '"')
1299226031Sstas    {
1300226031Sstas      YYSIZE_T yyn = 0;
1301226031Sstas      char const *yyp = yystr;
1302226031Sstas
1303226031Sstas      for (;;)
1304226031Sstas	switch (*++yyp)
1305226031Sstas	  {
1306226031Sstas	  case '\'':
1307226031Sstas	  case ',':
1308226031Sstas	    goto do_not_strip_quotes;
1309226031Sstas
1310226031Sstas	  case '\\':
1311226031Sstas	    if (*++yyp != '\\')
1312226031Sstas	      goto do_not_strip_quotes;
1313226031Sstas	    /* Fall through.  */
1314226031Sstas	  default:
1315226031Sstas	    if (yyres)
1316226031Sstas	      yyres[yyn] = *yyp;
1317226031Sstas	    yyn++;
1318226031Sstas	    break;
1319226031Sstas
1320226031Sstas	  case '"':
1321226031Sstas	    if (yyres)
1322226031Sstas	      yyres[yyn] = '\0';
1323226031Sstas	    return yyn;
1324226031Sstas	  }
1325226031Sstas    do_not_strip_quotes: ;
1326226031Sstas    }
1327226031Sstas
1328226031Sstas  if (! yyres)
1329226031Sstas    return yystrlen (yystr);
1330226031Sstas
1331226031Sstas  return yystpcpy (yyres, yystr) - yyres;
1332226031Sstas}
1333226031Sstas# endif
1334226031Sstas
1335226031Sstas/* Copy into YYRESULT an error message about the unexpected token
1336226031Sstas   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1337226031Sstas   including the terminating null byte.  If YYRESULT is null, do not
1338226031Sstas   copy anything; just return the number of bytes that would be
1339226031Sstas   copied.  As a special case, return 0 if an ordinary "syntax error"
1340226031Sstas   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1341226031Sstas   size calculation.  */
1342226031Sstasstatic YYSIZE_T
1343226031Sstasyysyntax_error (char *yyresult, int yystate, int yychar)
1344226031Sstas{
1345226031Sstas  int yyn = yypact[yystate];
1346226031Sstas
1347226031Sstas  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1348226031Sstas    return 0;
1349226031Sstas  else
1350226031Sstas    {
1351226031Sstas      int yytype = YYTRANSLATE (yychar);
1352226031Sstas      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1353226031Sstas      YYSIZE_T yysize = yysize0;
1354226031Sstas      YYSIZE_T yysize1;
1355226031Sstas      int yysize_overflow = 0;
1356226031Sstas      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1357226031Sstas      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1358226031Sstas      int yyx;
1359226031Sstas
1360226031Sstas# if 0
1361226031Sstas      /* This is so xgettext sees the translatable formats that are
1362226031Sstas	 constructed on the fly.  */
1363226031Sstas      YY_("syntax error, unexpected %s");
1364226031Sstas      YY_("syntax error, unexpected %s, expecting %s");
1365226031Sstas      YY_("syntax error, unexpected %s, expecting %s or %s");
1366226031Sstas      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1367226031Sstas      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1368226031Sstas# endif
1369226031Sstas      char *yyfmt;
1370226031Sstas      char const *yyf;
1371226031Sstas      static char const yyunexpected[] = "syntax error, unexpected %s";
1372226031Sstas      static char const yyexpecting[] = ", expecting %s";
1373226031Sstas      static char const yyor[] = " or %s";
1374226031Sstas      char yyformat[sizeof yyunexpected
1375226031Sstas		    + sizeof yyexpecting - 1
1376226031Sstas		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1377226031Sstas		       * (sizeof yyor - 1))];
1378226031Sstas      char const *yyprefix = yyexpecting;
1379226031Sstas
1380226031Sstas      /* Start YYX at -YYN if negative to avoid negative indexes in
1381226031Sstas	 YYCHECK.  */
1382226031Sstas      int yyxbegin = yyn < 0 ? -yyn : 0;
1383226031Sstas
1384226031Sstas      /* Stay within bounds of both yycheck and yytname.  */
1385226031Sstas      int yychecklim = YYLAST - yyn + 1;
1386226031Sstas      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1387226031Sstas      int yycount = 1;
1388226031Sstas
1389226031Sstas      yyarg[0] = yytname[yytype];
1390226031Sstas      yyfmt = yystpcpy (yyformat, yyunexpected);
1391226031Sstas
1392226031Sstas      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1393226031Sstas	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1394226031Sstas	  {
1395226031Sstas	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1396226031Sstas	      {
1397226031Sstas		yycount = 1;
1398226031Sstas		yysize = yysize0;
1399226031Sstas		yyformat[sizeof yyunexpected - 1] = '\0';
1400226031Sstas		break;
1401226031Sstas	      }
1402226031Sstas	    yyarg[yycount++] = yytname[yyx];
1403226031Sstas	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1404226031Sstas	    yysize_overflow |= (yysize1 < yysize);
1405226031Sstas	    yysize = yysize1;
1406226031Sstas	    yyfmt = yystpcpy (yyfmt, yyprefix);
1407226031Sstas	    yyprefix = yyor;
1408226031Sstas	  }
1409226031Sstas
1410226031Sstas      yyf = YY_(yyformat);
1411226031Sstas      yysize1 = yysize + yystrlen (yyf);
1412226031Sstas      yysize_overflow |= (yysize1 < yysize);
1413226031Sstas      yysize = yysize1;
1414226031Sstas
1415226031Sstas      if (yysize_overflow)
1416226031Sstas	return YYSIZE_MAXIMUM;
1417226031Sstas
1418226031Sstas      if (yyresult)
1419226031Sstas	{
1420226031Sstas	  /* Avoid sprintf, as that infringes on the user's name space.
1421226031Sstas	     Don't have undefined behavior even if the translation
1422226031Sstas	     produced a string with the wrong number of "%s"s.  */
1423226031Sstas	  char *yyp = yyresult;
1424226031Sstas	  int yyi = 0;
1425226031Sstas	  while ((*yyp = *yyf) != '\0')
1426226031Sstas	    {
1427226031Sstas	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1428226031Sstas		{
1429226031Sstas		  yyp += yytnamerr (yyp, yyarg[yyi++]);
1430226031Sstas		  yyf += 2;
1431226031Sstas		}
1432226031Sstas	      else
1433226031Sstas		{
1434226031Sstas		  yyp++;
1435226031Sstas		  yyf++;
1436226031Sstas		}
1437226031Sstas	    }
1438226031Sstas	}
1439226031Sstas      return yysize;
1440226031Sstas    }
1441226031Sstas}
1442226031Sstas#endif /* YYERROR_VERBOSE */
1443226031Sstas
1444226031Sstas
1445226031Sstas/*-----------------------------------------------.
1446226031Sstas| Release the memory associated to this symbol.  |
1447226031Sstas`-----------------------------------------------*/
1448226031Sstas
1449226031Sstas/*ARGSUSED*/
1450226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1451226031Sstas     || defined __cplusplus || defined _MSC_VER)
1452226031Sstasstatic void
1453226031Sstasyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1454226031Sstas#else
1455226031Sstasstatic void
1456226031Sstasyydestruct (yymsg, yytype, yyvaluep)
1457226031Sstas    const char *yymsg;
1458226031Sstas    int yytype;
1459226031Sstas    YYSTYPE *yyvaluep;
1460226031Sstas#endif
1461226031Sstas{
1462226031Sstas  YYUSE (yyvaluep);
1463226031Sstas
1464226031Sstas  if (!yymsg)
1465226031Sstas    yymsg = "Deleting";
1466226031Sstas  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1467226031Sstas
1468226031Sstas  switch (yytype)
1469226031Sstas    {
1470226031Sstas
1471226031Sstas      default:
1472226031Sstas	break;
1473226031Sstas    }
1474226031Sstas}
1475226031Sstas
1476226031Sstas
1477226031Sstas/* Prevent warnings from -Wmissing-prototypes.  */
1478226031Sstas
1479226031Sstas#ifdef YYPARSE_PARAM
1480226031Sstas#if defined __STDC__ || defined __cplusplus
1481226031Sstasint yyparse (void *YYPARSE_PARAM);
1482226031Sstas#else
1483226031Sstasint yyparse ();
1484226031Sstas#endif
1485226031Sstas#else /* ! YYPARSE_PARAM */
1486226031Sstas#if defined __STDC__ || defined __cplusplus
1487226031Sstasint yyparse (void);
1488226031Sstas#else
1489226031Sstasint yyparse ();
1490226031Sstas#endif
1491226031Sstas#endif /* ! YYPARSE_PARAM */
1492226031Sstas
1493226031Sstas
1494226031Sstas
1495226031Sstas/* The look-ahead symbol.  */
1496226031Sstasint yychar;
1497226031Sstas
1498226031Sstas/* The semantic value of the look-ahead symbol.  */
1499226031SstasYYSTYPE yylval;
1500226031Sstas
1501226031Sstas/* Number of syntax errors so far.  */
1502226031Sstasint yynerrs;
1503226031Sstas
1504226031Sstas
1505226031Sstas
1506226031Sstas/*----------.
1507226031Sstas| yyparse.  |
1508226031Sstas`----------*/
1509226031Sstas
1510226031Sstas#ifdef YYPARSE_PARAM
1511226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1512226031Sstas     || defined __cplusplus || defined _MSC_VER)
1513226031Sstasint
1514226031Sstasyyparse (void *YYPARSE_PARAM)
1515226031Sstas#else
1516226031Sstasint
1517226031Sstasyyparse (YYPARSE_PARAM)
1518226031Sstas    void *YYPARSE_PARAM;
1519226031Sstas#endif
1520226031Sstas#else /* ! YYPARSE_PARAM */
1521226031Sstas#if (defined __STDC__ || defined __C99__FUNC__ \
1522226031Sstas     || defined __cplusplus || defined _MSC_VER)
1523226031Sstasint
1524226031Sstasyyparse (void)
1525226031Sstas#else
1526226031Sstasint
1527226031Sstasyyparse ()
1528226031Sstas
1529226031Sstas#endif
1530226031Sstas#endif
1531226031Sstas{
1532226031Sstas
1533226031Sstas  int yystate;
1534226031Sstas  int yyn;
1535226031Sstas  int yyresult;
1536226031Sstas  /* Number of tokens to shift before error messages enabled.  */
1537226031Sstas  int yyerrstatus;
1538226031Sstas  /* Look-ahead token as an internal (translated) token number.  */
1539226031Sstas  int yytoken = 0;
1540226031Sstas#if YYERROR_VERBOSE
1541226031Sstas  /* Buffer for error messages, and its allocated size.  */
1542226031Sstas  char yymsgbuf[128];
1543226031Sstas  char *yymsg = yymsgbuf;
1544226031Sstas  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1545226031Sstas#endif
1546226031Sstas
1547226031Sstas  /* Three stacks and their tools:
1548226031Sstas     `yyss': related to states,
1549226031Sstas     `yyvs': related to semantic values,
1550226031Sstas     `yyls': related to locations.
1551226031Sstas
1552226031Sstas     Refer to the stacks thru separate pointers, to allow yyoverflow
1553226031Sstas     to reallocate them elsewhere.  */
1554226031Sstas
1555226031Sstas  /* The state stack.  */
1556226031Sstas  yytype_int16 yyssa[YYINITDEPTH];
1557226031Sstas  yytype_int16 *yyss = yyssa;
1558226031Sstas  yytype_int16 *yyssp;
1559226031Sstas
1560226031Sstas  /* The semantic value stack.  */
1561226031Sstas  YYSTYPE yyvsa[YYINITDEPTH];
1562226031Sstas  YYSTYPE *yyvs = yyvsa;
1563226031Sstas  YYSTYPE *yyvsp;
1564226031Sstas
1565226031Sstas
1566226031Sstas
1567226031Sstas#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1568226031Sstas
1569226031Sstas  YYSIZE_T yystacksize = YYINITDEPTH;
1570226031Sstas
1571226031Sstas  /* The variables used to return semantic value and location from the
1572226031Sstas     action routines.  */
1573226031Sstas  YYSTYPE yyval;
1574226031Sstas
1575226031Sstas
1576226031Sstas  /* The number of symbols on the RHS of the reduced rule.
1577226031Sstas     Keep to zero when no symbol should be popped.  */
1578226031Sstas  int yylen = 0;
1579226031Sstas
1580226031Sstas  YYDPRINTF ((stderr, "Starting parse\n"));
1581226031Sstas
1582226031Sstas  yystate = 0;
1583226031Sstas  yyerrstatus = 0;
1584226031Sstas  yynerrs = 0;
1585226031Sstas  yychar = YYEMPTY;		/* Cause a token to be read.  */
1586226031Sstas
1587226031Sstas  /* Initialize stack pointers.
1588226031Sstas     Waste one element of value and location stack
1589226031Sstas     so that they stay on the same level as the state stack.
1590226031Sstas     The wasted elements are never initialized.  */
1591226031Sstas
1592226031Sstas  yyssp = yyss;
1593226031Sstas  yyvsp = yyvs;
1594226031Sstas
1595226031Sstas  goto yysetstate;
1596226031Sstas
1597226031Sstas/*------------------------------------------------------------.
1598226031Sstas| yynewstate -- Push a new state, which is found in yystate.  |
1599226031Sstas`------------------------------------------------------------*/
1600226031Sstas yynewstate:
1601226031Sstas  /* In all cases, when you get here, the value and location stacks
1602226031Sstas     have just been pushed.  So pushing a state here evens the stacks.  */
1603226031Sstas  yyssp++;
1604226031Sstas
1605226031Sstas yysetstate:
1606226031Sstas  *yyssp = yystate;
1607226031Sstas
1608226031Sstas  if (yyss + yystacksize - 1 <= yyssp)
1609226031Sstas    {
1610226031Sstas      /* Get the current used size of the three stacks, in elements.  */
1611226031Sstas      YYSIZE_T yysize = yyssp - yyss + 1;
1612226031Sstas
1613226031Sstas#ifdef yyoverflow
1614226031Sstas      {
1615226031Sstas	/* Give user a chance to reallocate the stack.  Use copies of
1616226031Sstas	   these so that the &'s don't force the real ones into
1617226031Sstas	   memory.  */
1618226031Sstas	YYSTYPE *yyvs1 = yyvs;
1619226031Sstas	yytype_int16 *yyss1 = yyss;
1620226031Sstas
1621226031Sstas
1622226031Sstas	/* Each stack pointer address is followed by the size of the
1623226031Sstas	   data in use in that stack, in bytes.  This used to be a
1624226031Sstas	   conditional around just the two extra args, but that might
1625226031Sstas	   be undefined if yyoverflow is a macro.  */
1626226031Sstas	yyoverflow (YY_("memory exhausted"),
1627226031Sstas		    &yyss1, yysize * sizeof (*yyssp),
1628226031Sstas		    &yyvs1, yysize * sizeof (*yyvsp),
1629226031Sstas
1630226031Sstas		    &yystacksize);
1631226031Sstas
1632226031Sstas	yyss = yyss1;
1633226031Sstas	yyvs = yyvs1;
1634226031Sstas      }
1635226031Sstas#else /* no yyoverflow */
1636226031Sstas# ifndef YYSTACK_RELOCATE
1637226031Sstas      goto yyexhaustedlab;
1638226031Sstas# else
1639226031Sstas      /* Extend the stack our own way.  */
1640226031Sstas      if (YYMAXDEPTH <= yystacksize)
1641226031Sstas	goto yyexhaustedlab;
1642226031Sstas      yystacksize *= 2;
1643226031Sstas      if (YYMAXDEPTH < yystacksize)
1644226031Sstas	yystacksize = YYMAXDEPTH;
1645226031Sstas
1646226031Sstas      {
1647226031Sstas	yytype_int16 *yyss1 = yyss;
1648226031Sstas	union yyalloc *yyptr =
1649226031Sstas	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1650226031Sstas	if (! yyptr)
1651226031Sstas	  goto yyexhaustedlab;
1652226031Sstas	YYSTACK_RELOCATE (yyss);
1653226031Sstas	YYSTACK_RELOCATE (yyvs);
1654226031Sstas
1655226031Sstas#  undef YYSTACK_RELOCATE
1656226031Sstas	if (yyss1 != yyssa)
1657226031Sstas	  YYSTACK_FREE (yyss1);
1658226031Sstas      }
1659226031Sstas# endif
1660226031Sstas#endif /* no yyoverflow */
1661226031Sstas
1662226031Sstas      yyssp = yyss + yysize - 1;
1663226031Sstas      yyvsp = yyvs + yysize - 1;
1664226031Sstas
1665226031Sstas
1666226031Sstas      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1667226031Sstas		  (unsigned long int) yystacksize));
1668226031Sstas
1669226031Sstas      if (yyss + yystacksize - 1 <= yyssp)
1670226031Sstas	YYABORT;
1671226031Sstas    }
1672226031Sstas
1673226031Sstas  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1674226031Sstas
1675226031Sstas  goto yybackup;
1676226031Sstas
1677226031Sstas/*-----------.
1678226031Sstas| yybackup.  |
1679226031Sstas`-----------*/
1680226031Sstasyybackup:
1681226031Sstas
1682226031Sstas  /* Do appropriate processing given the current state.  Read a
1683226031Sstas     look-ahead token if we need one and don't already have one.  */
1684226031Sstas
1685226031Sstas  /* First try to decide what to do without reference to look-ahead token.  */
1686226031Sstas  yyn = yypact[yystate];
1687226031Sstas  if (yyn == YYPACT_NINF)
1688226031Sstas    goto yydefault;
1689226031Sstas
1690226031Sstas  /* Not known => get a look-ahead token if don't already have one.  */
1691226031Sstas
1692226031Sstas  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1693226031Sstas  if (yychar == YYEMPTY)
1694226031Sstas    {
1695226031Sstas      YYDPRINTF ((stderr, "Reading a token: "));
1696226031Sstas      yychar = YYLEX;
1697226031Sstas    }
1698226031Sstas
1699226031Sstas  if (yychar <= YYEOF)
1700226031Sstas    {
1701226031Sstas      yychar = yytoken = YYEOF;
1702226031Sstas      YYDPRINTF ((stderr, "Now at end of input.\n"));
1703226031Sstas    }
1704226031Sstas  else
1705226031Sstas    {
1706226031Sstas      yytoken = YYTRANSLATE (yychar);
1707226031Sstas      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1708226031Sstas    }
1709226031Sstas
1710226031Sstas  /* If the proper action on seeing token YYTOKEN is to reduce or to
1711226031Sstas     detect an error, take that action.  */
1712226031Sstas  yyn += yytoken;
1713226031Sstas  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1714226031Sstas    goto yydefault;
1715226031Sstas  yyn = yytable[yyn];
1716226031Sstas  if (yyn <= 0)
1717226031Sstas    {
1718226031Sstas      if (yyn == 0 || yyn == YYTABLE_NINF)
1719226031Sstas	goto yyerrlab;
1720226031Sstas      yyn = -yyn;
1721226031Sstas      goto yyreduce;
1722226031Sstas    }
1723226031Sstas
1724226031Sstas  if (yyn == YYFINAL)
1725226031Sstas    YYACCEPT;
1726226031Sstas
1727226031Sstas  /* Count tokens shifted since error; after three, turn off error
1728226031Sstas     status.  */
1729226031Sstas  if (yyerrstatus)
1730226031Sstas    yyerrstatus--;
1731226031Sstas
1732226031Sstas  /* Shift the look-ahead token.  */
1733226031Sstas  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1734226031Sstas
1735226031Sstas  /* Discard the shifted token unless it is eof.  */
1736226031Sstas  if (yychar != YYEOF)
1737226031Sstas    yychar = YYEMPTY;
1738226031Sstas
1739226031Sstas  yystate = yyn;
1740226031Sstas  *++yyvsp = yylval;
1741226031Sstas
1742226031Sstas  goto yynewstate;
1743226031Sstas
1744226031Sstas
1745226031Sstas/*-----------------------------------------------------------.
1746226031Sstas| yydefault -- do the default action for the current state.  |
1747226031Sstas`-----------------------------------------------------------*/
1748226031Sstasyydefault:
1749226031Sstas  yyn = yydefact[yystate];
1750226031Sstas  if (yyn == 0)
1751226031Sstas    goto yyerrlab;
1752226031Sstas  goto yyreduce;
1753226031Sstas
1754226031Sstas
1755226031Sstas/*-----------------------------.
1756226031Sstas| yyreduce -- Do a reduction.  |
1757226031Sstas`-----------------------------*/
1758226031Sstasyyreduce:
1759226031Sstas  /* yyn is the number of a rule to reduce with.  */
1760226031Sstas  yylen = yyr2[yyn];
1761226031Sstas
1762226031Sstas  /* If YYLEN is nonzero, implement the default value of the action:
1763226031Sstas     `$$ = $1'.
1764226031Sstas
1765226031Sstas     Otherwise, the following line sets YYVAL to garbage.
1766226031Sstas     This behavior is undocumented and Bison
1767226031Sstas     users should not rely upon it.  Assigning to YYVAL
1768226031Sstas     unconditionally makes the parser a bit smaller, and it avoids a
1769226031Sstas     GCC warning that YYVAL may be used uninitialized.  */
1770226031Sstas  yyval = yyvsp[1-yylen];
1771226031Sstas
1772226031Sstas
1773226031Sstas  YY_REDUCE_PRINT (yyn);
1774226031Sstas  switch (yyn)
1775226031Sstas    {
1776226031Sstas        case 2:
1777226031Sstas#line 241 "asn1parse.y"
1778226031Sstas    {
1779226031Sstas			checkundefined();
1780226031Sstas		}
1781226031Sstas    break;
1782226031Sstas
1783226031Sstas  case 4:
1784226031Sstas#line 248 "asn1parse.y"
1785226031Sstas    { lex_error_message("implicit tagging is not supported"); }
1786226031Sstas    break;
1787226031Sstas
1788226031Sstas  case 5:
1789226031Sstas#line 250 "asn1parse.y"
1790226031Sstas    { lex_error_message("automatic tagging is not supported"); }
1791226031Sstas    break;
1792226031Sstas
1793226031Sstas  case 7:
1794226031Sstas#line 255 "asn1parse.y"
1795226031Sstas    { lex_error_message("no extensibility options supported"); }
1796226031Sstas    break;
1797226031Sstas
1798226031Sstas  case 17:
1799226031Sstas#line 276 "asn1parse.y"
1800226031Sstas    {
1801226031Sstas		    struct string_list *sl;
1802226031Sstas		    for(sl = (yyvsp[(1) - (4)].sl); sl != NULL; sl = sl->next) {
1803226031Sstas			Symbol *s = addsym(sl->string);
1804226031Sstas			s->stype = Stype;
1805226031Sstas			gen_template_import(s);
1806226031Sstas		    }
1807226031Sstas		    add_import((yyvsp[(3) - (4)].name));
1808226031Sstas		}
1809226031Sstas    break;
1810226031Sstas
1811226031Sstas  case 18:
1812226031Sstas#line 288 "asn1parse.y"
1813226031Sstas    {
1814226031Sstas		    struct string_list *sl;
1815226031Sstas		    for(sl = (yyvsp[(2) - (3)].sl); sl != NULL; sl = sl->next)
1816226031Sstas			add_export(sl->string);
1817226031Sstas		}
1818226031Sstas    break;
1819226031Sstas
1820226031Sstas  case 25:
1821226031Sstas#line 306 "asn1parse.y"
1822226031Sstas    {
1823226031Sstas		    (yyval.sl) = emalloc(sizeof(*(yyval.sl)));
1824226031Sstas		    (yyval.sl)->string = (yyvsp[(1) - (3)].name);
1825226031Sstas		    (yyval.sl)->next = (yyvsp[(3) - (3)].sl);
1826226031Sstas		}
1827226031Sstas    break;
1828226031Sstas
1829226031Sstas  case 26:
1830226031Sstas#line 312 "asn1parse.y"
1831226031Sstas    {
1832226031Sstas		    (yyval.sl) = emalloc(sizeof(*(yyval.sl)));
1833226031Sstas		    (yyval.sl)->string = (yyvsp[(1) - (1)].name);
1834226031Sstas		    (yyval.sl)->next = NULL;
1835226031Sstas		}
1836226031Sstas    break;
1837226031Sstas
1838226031Sstas  case 27:
1839226031Sstas#line 320 "asn1parse.y"
1840226031Sstas    {
1841226031Sstas		    Symbol *s = addsym ((yyvsp[(1) - (3)].name));
1842226031Sstas		    s->stype = Stype;
1843226031Sstas		    s->type = (yyvsp[(3) - (3)].type);
1844226031Sstas		    fix_labels(s);
1845226031Sstas		    generate_type (s);
1846226031Sstas		}
1847226031Sstas    break;
1848226031Sstas
1849226031Sstas  case 45:
1850226031Sstas#line 351 "asn1parse.y"
1851226031Sstas    {
1852226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Boolean,
1853226031Sstas				     TE_EXPLICIT, new_type(TBoolean));
1854226031Sstas		}
1855226031Sstas    break;
1856226031Sstas
1857226031Sstas  case 46:
1858226031Sstas#line 358 "asn1parse.y"
1859226031Sstas    {
1860226031Sstas		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1861226031Sstas			lex_error_message("Non-integer used in first part of range");
1862226031Sstas		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1863226031Sstas			lex_error_message("Non-integer in second part of range");
1864226031Sstas		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1865226031Sstas		    (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue;
1866226031Sstas		    (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue;
1867226031Sstas		}
1868226031Sstas    break;
1869226031Sstas
1870226031Sstas  case 47:
1871226031Sstas#line 368 "asn1parse.y"
1872226031Sstas    {
1873226031Sstas		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1874226031Sstas			lex_error_message("Non-integer in first part of range");
1875226031Sstas		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1876226031Sstas		    (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue;
1877226031Sstas		    (yyval.range)->max = (yyvsp[(2) - (5)].value)->u.integervalue - 1;
1878226031Sstas		}
1879226031Sstas    break;
1880226031Sstas
1881226031Sstas  case 48:
1882226031Sstas#line 376 "asn1parse.y"
1883226031Sstas    {
1884226031Sstas		    if((yyvsp[(4) - (5)].value)->type != integervalue)
1885226031Sstas			lex_error_message("Non-integer in second part of range");
1886226031Sstas		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1887226031Sstas		    (yyval.range)->min = (yyvsp[(4) - (5)].value)->u.integervalue + 2;
1888226031Sstas		    (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue;
1889226031Sstas		}
1890226031Sstas    break;
1891226031Sstas
1892226031Sstas  case 49:
1893226031Sstas#line 384 "asn1parse.y"
1894226031Sstas    {
1895226031Sstas		    if((yyvsp[(2) - (3)].value)->type != integervalue)
1896226031Sstas			lex_error_message("Non-integer used in limit");
1897226031Sstas		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1898226031Sstas		    (yyval.range)->min = (yyvsp[(2) - (3)].value)->u.integervalue;
1899226031Sstas		    (yyval.range)->max = (yyvsp[(2) - (3)].value)->u.integervalue;
1900226031Sstas		}
1901226031Sstas    break;
1902226031Sstas
1903226031Sstas  case 50:
1904226031Sstas#line 395 "asn1parse.y"
1905226031Sstas    {
1906226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer,
1907226031Sstas				     TE_EXPLICIT, new_type(TInteger));
1908226031Sstas		}
1909226031Sstas    break;
1910226031Sstas
1911226031Sstas  case 51:
1912226031Sstas#line 400 "asn1parse.y"
1913226031Sstas    {
1914226031Sstas			(yyval.type) = new_type(TInteger);
1915226031Sstas			(yyval.type)->range = (yyvsp[(2) - (2)].range);
1916226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type));
1917226031Sstas		}
1918226031Sstas    break;
1919226031Sstas
1920226031Sstas  case 52:
1921226031Sstas#line 406 "asn1parse.y"
1922226031Sstas    {
1923226031Sstas		  (yyval.type) = new_type(TInteger);
1924226031Sstas		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
1925226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type));
1926226031Sstas		}
1927226031Sstas    break;
1928226031Sstas
1929226031Sstas  case 53:
1930226031Sstas#line 414 "asn1parse.y"
1931226031Sstas    {
1932226031Sstas			(yyval.members) = emalloc(sizeof(*(yyval.members)));
1933226031Sstas			ASN1_TAILQ_INIT((yyval.members));
1934226031Sstas			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
1935226031Sstas		}
1936226031Sstas    break;
1937226031Sstas
1938226031Sstas  case 54:
1939226031Sstas#line 420 "asn1parse.y"
1940226031Sstas    {
1941226031Sstas			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
1942226031Sstas			(yyval.members) = (yyvsp[(1) - (3)].members);
1943226031Sstas		}
1944226031Sstas    break;
1945226031Sstas
1946226031Sstas  case 55:
1947226031Sstas#line 425 "asn1parse.y"
1948226031Sstas    { (yyval.members) = (yyvsp[(1) - (3)].members); }
1949226031Sstas    break;
1950226031Sstas
1951226031Sstas  case 56:
1952226031Sstas#line 429 "asn1parse.y"
1953226031Sstas    {
1954226031Sstas			(yyval.member) = emalloc(sizeof(*(yyval.member)));
1955226031Sstas			(yyval.member)->name = (yyvsp[(1) - (4)].name);
1956226031Sstas			(yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name));
1957226031Sstas			output_name ((yyval.member)->gen_name);
1958226031Sstas			(yyval.member)->val = (yyvsp[(3) - (4)].constant);
1959226031Sstas			(yyval.member)->optional = 0;
1960226031Sstas			(yyval.member)->ellipsis = 0;
1961226031Sstas			(yyval.member)->type = NULL;
1962226031Sstas		}
1963226031Sstas    break;
1964226031Sstas
1965226031Sstas  case 57:
1966226031Sstas#line 442 "asn1parse.y"
1967226031Sstas    {
1968226031Sstas		  (yyval.type) = new_type(TInteger);
1969226031Sstas		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
1970226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Enumerated, TE_EXPLICIT, (yyval.type));
1971226031Sstas		}
1972226031Sstas    break;
1973226031Sstas
1974226031Sstas  case 59:
1975226031Sstas#line 453 "asn1parse.y"
1976226031Sstas    {
1977226031Sstas		  (yyval.type) = new_type(TBitString);
1978226031Sstas		  (yyval.type)->members = emalloc(sizeof(*(yyval.type)->members));
1979226031Sstas		  ASN1_TAILQ_INIT((yyval.type)->members);
1980226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type));
1981226031Sstas		}
1982226031Sstas    break;
1983226031Sstas
1984226031Sstas  case 60:
1985226031Sstas#line 460 "asn1parse.y"
1986226031Sstas    {
1987226031Sstas		  (yyval.type) = new_type(TBitString);
1988226031Sstas		  (yyval.type)->members = (yyvsp[(4) - (5)].members);
1989226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type));
1990226031Sstas		}
1991226031Sstas    break;
1992226031Sstas
1993226031Sstas  case 61:
1994226031Sstas#line 468 "asn1parse.y"
1995226031Sstas    {
1996226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_OID,
1997226031Sstas				     TE_EXPLICIT, new_type(TOID));
1998226031Sstas		}
1999226031Sstas    break;
2000226031Sstas
2001226031Sstas  case 62:
2002226031Sstas#line 474 "asn1parse.y"
2003226031Sstas    {
2004226031Sstas		    Type *t = new_type(TOctetString);
2005226031Sstas		    t->range = (yyvsp[(3) - (3)].range);
2006226031Sstas		    (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString,
2007226031Sstas				 TE_EXPLICIT, t);
2008226031Sstas		}
2009226031Sstas    break;
2010226031Sstas
2011226031Sstas  case 63:
2012226031Sstas#line 483 "asn1parse.y"
2013226031Sstas    {
2014226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Null,
2015226031Sstas				     TE_EXPLICIT, new_type(TNull));
2016226031Sstas		}
2017226031Sstas    break;
2018226031Sstas
2019226031Sstas  case 64:
2020226031Sstas#line 490 "asn1parse.y"
2021226031Sstas    { (yyval.range) = NULL; }
2022226031Sstas    break;
2023226031Sstas
2024226031Sstas  case 65:
2025226031Sstas#line 492 "asn1parse.y"
2026226031Sstas    { (yyval.range) = (yyvsp[(2) - (2)].range); }
2027226031Sstas    break;
2028226031Sstas
2029226031Sstas  case 66:
2030226031Sstas#line 497 "asn1parse.y"
2031226031Sstas    {
2032226031Sstas		  (yyval.type) = new_type(TSequence);
2033226031Sstas		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2034226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2035226031Sstas		}
2036226031Sstas    break;
2037226031Sstas
2038226031Sstas  case 67:
2039226031Sstas#line 503 "asn1parse.y"
2040226031Sstas    {
2041226031Sstas		  (yyval.type) = new_type(TSequence);
2042226031Sstas		  (yyval.type)->members = NULL;
2043226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2044226031Sstas		}
2045226031Sstas    break;
2046226031Sstas
2047226031Sstas  case 68:
2048226031Sstas#line 511 "asn1parse.y"
2049226031Sstas    {
2050226031Sstas		  (yyval.type) = new_type(TSequenceOf);
2051226031Sstas		  (yyval.type)->range = (yyvsp[(2) - (4)].range);
2052226031Sstas		  (yyval.type)->subtype = (yyvsp[(4) - (4)].type);
2053226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2054226031Sstas		}
2055226031Sstas    break;
2056226031Sstas
2057226031Sstas  case 69:
2058226031Sstas#line 520 "asn1parse.y"
2059226031Sstas    {
2060226031Sstas		  (yyval.type) = new_type(TSet);
2061226031Sstas		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2062226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2063226031Sstas		}
2064226031Sstas    break;
2065226031Sstas
2066226031Sstas  case 70:
2067226031Sstas#line 526 "asn1parse.y"
2068226031Sstas    {
2069226031Sstas		  (yyval.type) = new_type(TSet);
2070226031Sstas		  (yyval.type)->members = NULL;
2071226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2072226031Sstas		}
2073226031Sstas    break;
2074226031Sstas
2075226031Sstas  case 71:
2076226031Sstas#line 534 "asn1parse.y"
2077226031Sstas    {
2078226031Sstas		  (yyval.type) = new_type(TSetOf);
2079226031Sstas		  (yyval.type)->subtype = (yyvsp[(3) - (3)].type);
2080226031Sstas		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2081226031Sstas		}
2082226031Sstas    break;
2083226031Sstas
2084226031Sstas  case 72:
2085226031Sstas#line 542 "asn1parse.y"
2086226031Sstas    {
2087226031Sstas		  (yyval.type) = new_type(TChoice);
2088226031Sstas		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2089226031Sstas		}
2090226031Sstas    break;
2091226031Sstas
2092226031Sstas  case 75:
2093226031Sstas#line 553 "asn1parse.y"
2094226031Sstas    {
2095226031Sstas		  Symbol *s = addsym((yyvsp[(1) - (1)].name));
2096226031Sstas		  (yyval.type) = new_type(TType);
2097226031Sstas		  if(s->stype != Stype && s->stype != SUndefined)
2098226031Sstas		    lex_error_message ("%s is not a type\n", (yyvsp[(1) - (1)].name));
2099226031Sstas		  else
2100226031Sstas		    (yyval.type)->symbol = s;
2101226031Sstas		}
2102226031Sstas    break;
2103226031Sstas
2104226031Sstas  case 76:
2105226031Sstas#line 564 "asn1parse.y"
2106226031Sstas    {
2107226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralizedTime,
2108226031Sstas				     TE_EXPLICIT, new_type(TGeneralizedTime));
2109226031Sstas		}
2110226031Sstas    break;
2111226031Sstas
2112226031Sstas  case 77:
2113226031Sstas#line 569 "asn1parse.y"
2114226031Sstas    {
2115226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UTCTime,
2116226031Sstas				     TE_EXPLICIT, new_type(TUTCTime));
2117226031Sstas		}
2118226031Sstas    break;
2119226031Sstas
2120226031Sstas  case 78:
2121226031Sstas#line 576 "asn1parse.y"
2122226031Sstas    {
2123226031Sstas		    /* if (Constraint.type == contentConstrant) {
2124226031Sstas		       assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too
2125226031Sstas		       if (Constraint.u.constraint.type) {
2126226031Sstas		         assert((Constraint.u.constraint.type.length % 8) == 0);
2127226031Sstas		       }
2128226031Sstas		      }
2129226031Sstas		      if (Constraint.u.constraint.encoding) {
2130226031Sstas		        type == der-oid|ber-oid
2131226031Sstas		      }
2132226031Sstas		    */
2133226031Sstas		}
2134226031Sstas    break;
2135226031Sstas
2136226031Sstas  case 79:
2137226031Sstas#line 592 "asn1parse.y"
2138226031Sstas    {
2139226031Sstas		    (yyval.constraint_spec) = (yyvsp[(2) - (3)].constraint_spec);
2140226031Sstas		}
2141226031Sstas    break;
2142226031Sstas
2143226031Sstas  case 83:
2144226031Sstas#line 605 "asn1parse.y"
2145226031Sstas    {
2146226031Sstas		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2147226031Sstas		    (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (2)].type);
2148226031Sstas		    (yyval.constraint_spec)->u.content.encoding = NULL;
2149226031Sstas		}
2150226031Sstas    break;
2151226031Sstas
2152226031Sstas  case 84:
2153226031Sstas#line 611 "asn1parse.y"
2154226031Sstas    {
2155226031Sstas		    if ((yyvsp[(3) - (3)].value)->type != objectidentifiervalue)
2156226031Sstas			lex_error_message("Non-OID used in ENCODED BY constraint");
2157226031Sstas		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2158226031Sstas		    (yyval.constraint_spec)->u.content.type = NULL;
2159226031Sstas		    (yyval.constraint_spec)->u.content.encoding = (yyvsp[(3) - (3)].value);
2160226031Sstas		}
2161226031Sstas    break;
2162226031Sstas
2163226031Sstas  case 85:
2164226031Sstas#line 619 "asn1parse.y"
2165226031Sstas    {
2166226031Sstas		    if ((yyvsp[(5) - (5)].value)->type != objectidentifiervalue)
2167226031Sstas			lex_error_message("Non-OID used in ENCODED BY constraint");
2168226031Sstas		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2169226031Sstas		    (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (5)].type);
2170226031Sstas		    (yyval.constraint_spec)->u.content.encoding = (yyvsp[(5) - (5)].value);
2171226031Sstas		}
2172226031Sstas    break;
2173226031Sstas
2174226031Sstas  case 86:
2175226031Sstas#line 629 "asn1parse.y"
2176226031Sstas    {
2177226031Sstas		    (yyval.constraint_spec) = new_constraint_spec(CT_USER);
2178226031Sstas		}
2179226031Sstas    break;
2180226031Sstas
2181226031Sstas  case 87:
2182226031Sstas#line 635 "asn1parse.y"
2183226031Sstas    {
2184226031Sstas			(yyval.type) = new_type(TTag);
2185226031Sstas			(yyval.type)->tag = (yyvsp[(1) - (3)].tag);
2186226031Sstas			(yyval.type)->tag.tagenv = (yyvsp[(2) - (3)].constant);
2187226031Sstas			if((yyvsp[(3) - (3)].type)->type == TTag && (yyvsp[(2) - (3)].constant) == TE_IMPLICIT) {
2188226031Sstas				(yyval.type)->subtype = (yyvsp[(3) - (3)].type)->subtype;
2189226031Sstas				free((yyvsp[(3) - (3)].type));
2190226031Sstas			} else
2191226031Sstas				(yyval.type)->subtype = (yyvsp[(3) - (3)].type);
2192226031Sstas		}
2193226031Sstas    break;
2194226031Sstas
2195226031Sstas  case 88:
2196226031Sstas#line 648 "asn1parse.y"
2197226031Sstas    {
2198226031Sstas			(yyval.tag).tagclass = (yyvsp[(2) - (4)].constant);
2199226031Sstas			(yyval.tag).tagvalue = (yyvsp[(3) - (4)].constant);
2200226031Sstas			(yyval.tag).tagenv = TE_EXPLICIT;
2201226031Sstas		}
2202226031Sstas    break;
2203226031Sstas
2204226031Sstas  case 89:
2205226031Sstas#line 656 "asn1parse.y"
2206226031Sstas    {
2207226031Sstas			(yyval.constant) = ASN1_C_CONTEXT;
2208226031Sstas		}
2209226031Sstas    break;
2210226031Sstas
2211226031Sstas  case 90:
2212226031Sstas#line 660 "asn1parse.y"
2213226031Sstas    {
2214226031Sstas			(yyval.constant) = ASN1_C_UNIV;
2215226031Sstas		}
2216226031Sstas    break;
2217226031Sstas
2218226031Sstas  case 91:
2219226031Sstas#line 664 "asn1parse.y"
2220226031Sstas    {
2221226031Sstas			(yyval.constant) = ASN1_C_APPL;
2222226031Sstas		}
2223226031Sstas    break;
2224226031Sstas
2225226031Sstas  case 92:
2226226031Sstas#line 668 "asn1parse.y"
2227226031Sstas    {
2228226031Sstas			(yyval.constant) = ASN1_C_PRIVATE;
2229226031Sstas		}
2230226031Sstas    break;
2231226031Sstas
2232226031Sstas  case 93:
2233226031Sstas#line 674 "asn1parse.y"
2234226031Sstas    {
2235226031Sstas			(yyval.constant) = TE_EXPLICIT;
2236226031Sstas		}
2237226031Sstas    break;
2238226031Sstas
2239226031Sstas  case 94:
2240226031Sstas#line 678 "asn1parse.y"
2241226031Sstas    {
2242226031Sstas			(yyval.constant) = TE_EXPLICIT;
2243226031Sstas		}
2244226031Sstas    break;
2245226031Sstas
2246226031Sstas  case 95:
2247226031Sstas#line 682 "asn1parse.y"
2248226031Sstas    {
2249226031Sstas			(yyval.constant) = TE_IMPLICIT;
2250226031Sstas		}
2251226031Sstas    break;
2252226031Sstas
2253226031Sstas  case 96:
2254226031Sstas#line 689 "asn1parse.y"
2255226031Sstas    {
2256226031Sstas			Symbol *s;
2257226031Sstas			s = addsym ((yyvsp[(1) - (4)].name));
2258226031Sstas
2259226031Sstas			s->stype = SValue;
2260226031Sstas			s->value = (yyvsp[(4) - (4)].value);
2261226031Sstas			generate_constant (s);
2262226031Sstas		}
2263226031Sstas    break;
2264226031Sstas
2265226031Sstas  case 98:
2266226031Sstas#line 703 "asn1parse.y"
2267226031Sstas    {
2268226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralString,
2269226031Sstas				     TE_EXPLICIT, new_type(TGeneralString));
2270226031Sstas		}
2271226031Sstas    break;
2272226031Sstas
2273226031Sstas  case 99:
2274226031Sstas#line 708 "asn1parse.y"
2275226031Sstas    {
2276226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_TeletexString,
2277226031Sstas				     TE_EXPLICIT, new_type(TTeletexString));
2278226031Sstas		}
2279226031Sstas    break;
2280226031Sstas
2281226031Sstas  case 100:
2282226031Sstas#line 713 "asn1parse.y"
2283226031Sstas    {
2284226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UTF8String,
2285226031Sstas				     TE_EXPLICIT, new_type(TUTF8String));
2286226031Sstas		}
2287226031Sstas    break;
2288226031Sstas
2289226031Sstas  case 101:
2290226031Sstas#line 718 "asn1parse.y"
2291226031Sstas    {
2292226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_PrintableString,
2293226031Sstas				     TE_EXPLICIT, new_type(TPrintableString));
2294226031Sstas		}
2295226031Sstas    break;
2296226031Sstas
2297226031Sstas  case 102:
2298226031Sstas#line 723 "asn1parse.y"
2299226031Sstas    {
2300226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_VisibleString,
2301226031Sstas				     TE_EXPLICIT, new_type(TVisibleString));
2302226031Sstas		}
2303226031Sstas    break;
2304226031Sstas
2305226031Sstas  case 103:
2306226031Sstas#line 728 "asn1parse.y"
2307226031Sstas    {
2308226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_IA5String,
2309226031Sstas				     TE_EXPLICIT, new_type(TIA5String));
2310226031Sstas		}
2311226031Sstas    break;
2312226031Sstas
2313226031Sstas  case 104:
2314226031Sstas#line 733 "asn1parse.y"
2315226031Sstas    {
2316226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_BMPString,
2317226031Sstas				     TE_EXPLICIT, new_type(TBMPString));
2318226031Sstas		}
2319226031Sstas    break;
2320226031Sstas
2321226031Sstas  case 105:
2322226031Sstas#line 738 "asn1parse.y"
2323226031Sstas    {
2324226031Sstas			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UniversalString,
2325226031Sstas				     TE_EXPLICIT, new_type(TUniversalString));
2326226031Sstas		}
2327226031Sstas    break;
2328226031Sstas
2329226031Sstas  case 106:
2330226031Sstas#line 746 "asn1parse.y"
2331226031Sstas    {
2332226031Sstas			(yyval.members) = emalloc(sizeof(*(yyval.members)));
2333226031Sstas			ASN1_TAILQ_INIT((yyval.members));
2334226031Sstas			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
2335226031Sstas		}
2336226031Sstas    break;
2337226031Sstas
2338226031Sstas  case 107:
2339226031Sstas#line 752 "asn1parse.y"
2340226031Sstas    {
2341226031Sstas			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
2342226031Sstas			(yyval.members) = (yyvsp[(1) - (3)].members);
2343226031Sstas		}
2344226031Sstas    break;
2345226031Sstas
2346226031Sstas  case 108:
2347226031Sstas#line 757 "asn1parse.y"
2348226031Sstas    {
2349226031Sstas		        struct member *m = ecalloc(1, sizeof(*m));
2350226031Sstas			m->name = estrdup("...");
2351226031Sstas			m->gen_name = estrdup("asn1_ellipsis");
2352226031Sstas			m->ellipsis = 1;
2353226031Sstas			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), m, members);
2354226031Sstas			(yyval.members) = (yyvsp[(1) - (3)].members);
2355226031Sstas		}
2356226031Sstas    break;
2357226031Sstas
2358226031Sstas  case 109:
2359226031Sstas#line 768 "asn1parse.y"
2360226031Sstas    {
2361226031Sstas		  (yyval.member) = emalloc(sizeof(*(yyval.member)));
2362226031Sstas		  (yyval.member)->name = (yyvsp[(1) - (2)].name);
2363226031Sstas		  (yyval.member)->gen_name = estrdup((yyvsp[(1) - (2)].name));
2364226031Sstas		  output_name ((yyval.member)->gen_name);
2365226031Sstas		  (yyval.member)->type = (yyvsp[(2) - (2)].type);
2366226031Sstas		  (yyval.member)->ellipsis = 0;
2367226031Sstas		}
2368226031Sstas    break;
2369226031Sstas
2370226031Sstas  case 110:
2371226031Sstas#line 779 "asn1parse.y"
2372226031Sstas    {
2373226031Sstas			(yyval.member) = (yyvsp[(1) - (1)].member);
2374226031Sstas			(yyval.member)->optional = 0;
2375226031Sstas			(yyval.member)->defval = NULL;
2376226031Sstas		}
2377226031Sstas    break;
2378226031Sstas
2379226031Sstas  case 111:
2380226031Sstas#line 785 "asn1parse.y"
2381226031Sstas    {
2382226031Sstas			(yyval.member) = (yyvsp[(1) - (2)].member);
2383226031Sstas			(yyval.member)->optional = 1;
2384226031Sstas			(yyval.member)->defval = NULL;
2385226031Sstas		}
2386226031Sstas    break;
2387226031Sstas
2388226031Sstas  case 112:
2389226031Sstas#line 791 "asn1parse.y"
2390226031Sstas    {
2391226031Sstas			(yyval.member) = (yyvsp[(1) - (3)].member);
2392226031Sstas			(yyval.member)->optional = 0;
2393226031Sstas			(yyval.member)->defval = (yyvsp[(3) - (3)].value);
2394226031Sstas		}
2395226031Sstas    break;
2396226031Sstas
2397226031Sstas  case 113:
2398226031Sstas#line 799 "asn1parse.y"
2399226031Sstas    {
2400226031Sstas			(yyval.members) = emalloc(sizeof(*(yyval.members)));
2401226031Sstas			ASN1_TAILQ_INIT((yyval.members));
2402226031Sstas			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
2403226031Sstas		}
2404226031Sstas    break;
2405226031Sstas
2406226031Sstas  case 114:
2407226031Sstas#line 805 "asn1parse.y"
2408226031Sstas    {
2409226031Sstas			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
2410226031Sstas			(yyval.members) = (yyvsp[(1) - (3)].members);
2411226031Sstas		}
2412226031Sstas    break;
2413226031Sstas
2414226031Sstas  case 115:
2415226031Sstas#line 812 "asn1parse.y"
2416226031Sstas    {
2417226031Sstas		  (yyval.member) = emalloc(sizeof(*(yyval.member)));
2418226031Sstas		  (yyval.member)->name = (yyvsp[(1) - (4)].name);
2419226031Sstas		  (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name));
2420226031Sstas		  output_name ((yyval.member)->gen_name);
2421226031Sstas		  (yyval.member)->val = (yyvsp[(3) - (4)].constant);
2422226031Sstas		  (yyval.member)->optional = 0;
2423226031Sstas		  (yyval.member)->ellipsis = 0;
2424226031Sstas		  (yyval.member)->type = NULL;
2425226031Sstas		}
2426226031Sstas    break;
2427226031Sstas
2428226031Sstas  case 117:
2429226031Sstas#line 825 "asn1parse.y"
2430226031Sstas    { (yyval.objid) = NULL; }
2431226031Sstas    break;
2432226031Sstas
2433226031Sstas  case 118:
2434226031Sstas#line 829 "asn1parse.y"
2435226031Sstas    {
2436226031Sstas			(yyval.objid) = (yyvsp[(2) - (3)].objid);
2437226031Sstas		}
2438226031Sstas    break;
2439226031Sstas
2440226031Sstas  case 119:
2441226031Sstas#line 835 "asn1parse.y"
2442226031Sstas    {
2443226031Sstas			(yyval.objid) = NULL;
2444226031Sstas		}
2445226031Sstas    break;
2446226031Sstas
2447226031Sstas  case 120:
2448226031Sstas#line 839 "asn1parse.y"
2449226031Sstas    {
2450226031Sstas		        if ((yyvsp[(2) - (2)].objid)) {
2451226031Sstas				(yyval.objid) = (yyvsp[(2) - (2)].objid);
2452226031Sstas				add_oid_to_tail((yyvsp[(2) - (2)].objid), (yyvsp[(1) - (2)].objid));
2453226031Sstas			} else {
2454226031Sstas				(yyval.objid) = (yyvsp[(1) - (2)].objid);
2455226031Sstas			}
2456226031Sstas		}
2457226031Sstas    break;
2458226031Sstas
2459226031Sstas  case 121:
2460226031Sstas#line 850 "asn1parse.y"
2461226031Sstas    {
2462226031Sstas			(yyval.objid) = new_objid((yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].constant));
2463226031Sstas		}
2464226031Sstas    break;
2465226031Sstas
2466226031Sstas  case 122:
2467226031Sstas#line 854 "asn1parse.y"
2468226031Sstas    {
2469226031Sstas		    Symbol *s = addsym((yyvsp[(1) - (1)].name));
2470226031Sstas		    if(s->stype != SValue ||
2471226031Sstas		       s->value->type != objectidentifiervalue) {
2472226031Sstas			lex_error_message("%s is not an object identifier\n",
2473226031Sstas				      s->name);
2474226031Sstas			exit(1);
2475226031Sstas		    }
2476226031Sstas		    (yyval.objid) = s->value->u.objectidentifiervalue;
2477226031Sstas		}
2478226031Sstas    break;
2479226031Sstas
2480226031Sstas  case 123:
2481226031Sstas#line 865 "asn1parse.y"
2482226031Sstas    {
2483226031Sstas		    (yyval.objid) = new_objid(NULL, (yyvsp[(1) - (1)].constant));
2484226031Sstas		}
2485226031Sstas    break;
2486226031Sstas
2487226031Sstas  case 133:
2488226031Sstas#line 888 "asn1parse.y"
2489226031Sstas    {
2490226031Sstas			Symbol *s = addsym((yyvsp[(1) - (1)].name));
2491226031Sstas			if(s->stype != SValue)
2492226031Sstas				lex_error_message ("%s is not a value\n",
2493226031Sstas						s->name);
2494226031Sstas			else
2495226031Sstas				(yyval.value) = s->value;
2496226031Sstas		}
2497226031Sstas    break;
2498226031Sstas
2499226031Sstas  case 134:
2500226031Sstas#line 899 "asn1parse.y"
2501226031Sstas    {
2502226031Sstas			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2503226031Sstas			(yyval.value)->type = stringvalue;
2504226031Sstas			(yyval.value)->u.stringvalue = (yyvsp[(1) - (1)].name);
2505226031Sstas		}
2506226031Sstas    break;
2507226031Sstas
2508226031Sstas  case 135:
2509226031Sstas#line 907 "asn1parse.y"
2510226031Sstas    {
2511226031Sstas			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2512226031Sstas			(yyval.value)->type = booleanvalue;
2513226031Sstas			(yyval.value)->u.booleanvalue = 0;
2514226031Sstas		}
2515226031Sstas    break;
2516226031Sstas
2517226031Sstas  case 136:
2518226031Sstas#line 913 "asn1parse.y"
2519226031Sstas    {
2520226031Sstas			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2521226031Sstas			(yyval.value)->type = booleanvalue;
2522226031Sstas			(yyval.value)->u.booleanvalue = 0;
2523226031Sstas		}
2524226031Sstas    break;
2525226031Sstas
2526226031Sstas  case 137:
2527226031Sstas#line 921 "asn1parse.y"
2528226031Sstas    {
2529226031Sstas			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2530226031Sstas			(yyval.value)->type = integervalue;
2531226031Sstas			(yyval.value)->u.integervalue = (yyvsp[(1) - (1)].constant);
2532226031Sstas		}
2533226031Sstas    break;
2534226031Sstas
2535226031Sstas  case 139:
2536226031Sstas#line 932 "asn1parse.y"
2537226031Sstas    {
2538226031Sstas		}
2539226031Sstas    break;
2540226031Sstas
2541226031Sstas  case 140:
2542226031Sstas#line 937 "asn1parse.y"
2543226031Sstas    {
2544226031Sstas			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2545226031Sstas			(yyval.value)->type = objectidentifiervalue;
2546226031Sstas			(yyval.value)->u.objectidentifiervalue = (yyvsp[(1) - (1)].objid);
2547226031Sstas		}
2548226031Sstas    break;
2549226031Sstas
2550226031Sstas
2551226031Sstas/* Line 1267 of yacc.c.  */
2552226031Sstas#line 2553 "asn1parse.c"
2553226031Sstas      default: break;
2554226031Sstas    }
2555226031Sstas  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2556226031Sstas
2557226031Sstas  YYPOPSTACK (yylen);
2558226031Sstas  yylen = 0;
2559226031Sstas  YY_STACK_PRINT (yyss, yyssp);
2560226031Sstas
2561226031Sstas  *++yyvsp = yyval;
2562226031Sstas
2563226031Sstas
2564226031Sstas  /* Now `shift' the result of the reduction.  Determine what state
2565226031Sstas     that goes to, based on the state we popped back to and the rule
2566226031Sstas     number reduced by.  */
2567226031Sstas
2568226031Sstas  yyn = yyr1[yyn];
2569226031Sstas
2570226031Sstas  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2571226031Sstas  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2572226031Sstas    yystate = yytable[yystate];
2573226031Sstas  else
2574226031Sstas    yystate = yydefgoto[yyn - YYNTOKENS];
2575226031Sstas
2576226031Sstas  goto yynewstate;
2577226031Sstas
2578226031Sstas
2579226031Sstas/*------------------------------------.
2580226031Sstas| yyerrlab -- here on detecting error |
2581226031Sstas`------------------------------------*/
2582226031Sstasyyerrlab:
2583226031Sstas  /* If not already recovering from an error, report this error.  */
2584226031Sstas  if (!yyerrstatus)
2585226031Sstas    {
2586226031Sstas      ++yynerrs;
2587226031Sstas#if ! YYERROR_VERBOSE
2588226031Sstas      yyerror (YY_("syntax error"));
2589226031Sstas#else
2590226031Sstas      {
2591226031Sstas	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2592226031Sstas	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2593226031Sstas	  {
2594226031Sstas	    YYSIZE_T yyalloc = 2 * yysize;
2595226031Sstas	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2596226031Sstas	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
2597226031Sstas	    if (yymsg != yymsgbuf)
2598226031Sstas	      YYSTACK_FREE (yymsg);
2599226031Sstas	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2600226031Sstas	    if (yymsg)
2601226031Sstas	      yymsg_alloc = yyalloc;
2602226031Sstas	    else
2603226031Sstas	      {
2604226031Sstas		yymsg = yymsgbuf;
2605226031Sstas		yymsg_alloc = sizeof yymsgbuf;
2606226031Sstas	      }
2607226031Sstas	  }
2608226031Sstas
2609226031Sstas	if (0 < yysize && yysize <= yymsg_alloc)
2610226031Sstas	  {
2611226031Sstas	    (void) yysyntax_error (yymsg, yystate, yychar);
2612226031Sstas	    yyerror (yymsg);
2613226031Sstas	  }
2614226031Sstas	else
2615226031Sstas	  {
2616226031Sstas	    yyerror (YY_("syntax error"));
2617226031Sstas	    if (yysize != 0)
2618226031Sstas	      goto yyexhaustedlab;
2619226031Sstas	  }
2620226031Sstas      }
2621226031Sstas#endif
2622226031Sstas    }
2623226031Sstas
2624226031Sstas
2625226031Sstas
2626226031Sstas  if (yyerrstatus == 3)
2627226031Sstas    {
2628226031Sstas      /* If just tried and failed to reuse look-ahead token after an
2629226031Sstas	 error, discard it.  */
2630226031Sstas
2631226031Sstas      if (yychar <= YYEOF)
2632226031Sstas	{
2633226031Sstas	  /* Return failure if at end of input.  */
2634226031Sstas	  if (yychar == YYEOF)
2635226031Sstas	    YYABORT;
2636226031Sstas	}
2637226031Sstas      else
2638226031Sstas	{
2639226031Sstas	  yydestruct ("Error: discarding",
2640226031Sstas		      yytoken, &yylval);
2641226031Sstas	  yychar = YYEMPTY;
2642226031Sstas	}
2643226031Sstas    }
2644226031Sstas
2645226031Sstas  /* Else will try to reuse look-ahead token after shifting the error
2646226031Sstas     token.  */
2647226031Sstas  goto yyerrlab1;
2648226031Sstas
2649226031Sstas
2650226031Sstas/*---------------------------------------------------.
2651226031Sstas| yyerrorlab -- error raised explicitly by YYERROR.  |
2652226031Sstas`---------------------------------------------------*/
2653226031Sstasyyerrorlab:
2654226031Sstas
2655226031Sstas  /* Pacify compilers like GCC when the user code never invokes
2656226031Sstas     YYERROR and the label yyerrorlab therefore never appears in user
2657226031Sstas     code.  */
2658226031Sstas  if (/*CONSTCOND*/ 0)
2659226031Sstas     goto yyerrorlab;
2660226031Sstas
2661226031Sstas  /* Do not reclaim the symbols of the rule which action triggered
2662226031Sstas     this YYERROR.  */
2663226031Sstas  YYPOPSTACK (yylen);
2664226031Sstas  yylen = 0;
2665226031Sstas  YY_STACK_PRINT (yyss, yyssp);
2666226031Sstas  yystate = *yyssp;
2667226031Sstas  goto yyerrlab1;
2668226031Sstas
2669226031Sstas
2670226031Sstas/*-------------------------------------------------------------.
2671226031Sstas| yyerrlab1 -- common code for both syntax error and YYERROR.  |
2672226031Sstas`-------------------------------------------------------------*/
2673226031Sstasyyerrlab1:
2674226031Sstas  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2675226031Sstas
2676226031Sstas  for (;;)
2677226031Sstas    {
2678226031Sstas      yyn = yypact[yystate];
2679226031Sstas      if (yyn != YYPACT_NINF)
2680226031Sstas	{
2681226031Sstas	  yyn += YYTERROR;
2682226031Sstas	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2683226031Sstas	    {
2684226031Sstas	      yyn = yytable[yyn];
2685226031Sstas	      if (0 < yyn)
2686226031Sstas		break;
2687226031Sstas	    }
2688226031Sstas	}
2689226031Sstas
2690226031Sstas      /* Pop the current state because it cannot handle the error token.  */
2691226031Sstas      if (yyssp == yyss)
2692226031Sstas	YYABORT;
2693226031Sstas
2694226031Sstas
2695226031Sstas      yydestruct ("Error: popping",
2696226031Sstas		  yystos[yystate], yyvsp);
2697226031Sstas      YYPOPSTACK (1);
2698226031Sstas      yystate = *yyssp;
2699226031Sstas      YY_STACK_PRINT (yyss, yyssp);
2700226031Sstas    }
2701226031Sstas
2702226031Sstas  if (yyn == YYFINAL)
2703226031Sstas    YYACCEPT;
2704226031Sstas
2705226031Sstas  *++yyvsp = yylval;
2706226031Sstas
2707226031Sstas
2708226031Sstas  /* Shift the error token.  */
2709226031Sstas  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2710226031Sstas
2711226031Sstas  yystate = yyn;
2712226031Sstas  goto yynewstate;
2713226031Sstas
2714226031Sstas
2715226031Sstas/*-------------------------------------.
2716226031Sstas| yyacceptlab -- YYACCEPT comes here.  |
2717226031Sstas`-------------------------------------*/
2718226031Sstasyyacceptlab:
2719226031Sstas  yyresult = 0;
2720226031Sstas  goto yyreturn;
2721226031Sstas
2722226031Sstas/*-----------------------------------.
2723226031Sstas| yyabortlab -- YYABORT comes here.  |
2724226031Sstas`-----------------------------------*/
2725226031Sstasyyabortlab:
2726226031Sstas  yyresult = 1;
2727226031Sstas  goto yyreturn;
2728226031Sstas
2729226031Sstas#ifndef yyoverflow
2730226031Sstas/*-------------------------------------------------.
2731226031Sstas| yyexhaustedlab -- memory exhaustion comes here.  |
2732226031Sstas`-------------------------------------------------*/
2733226031Sstasyyexhaustedlab:
2734226031Sstas  yyerror (YY_("memory exhausted"));
2735226031Sstas  yyresult = 2;
2736226031Sstas  /* Fall through.  */
2737226031Sstas#endif
2738226031Sstas
2739226031Sstasyyreturn:
2740226031Sstas  if (yychar != YYEOF && yychar != YYEMPTY)
2741226031Sstas     yydestruct ("Cleanup: discarding lookahead",
2742226031Sstas		 yytoken, &yylval);
2743226031Sstas  /* Do not reclaim the symbols of the rule which action triggered
2744226031Sstas     this YYABORT or YYACCEPT.  */
2745226031Sstas  YYPOPSTACK (yylen);
2746226031Sstas  YY_STACK_PRINT (yyss, yyssp);
2747226031Sstas  while (yyssp != yyss)
2748226031Sstas    {
2749226031Sstas      yydestruct ("Cleanup: popping",
2750226031Sstas		  yystos[*yyssp], yyvsp);
2751226031Sstas      YYPOPSTACK (1);
2752226031Sstas    }
2753226031Sstas#ifndef yyoverflow
2754226031Sstas  if (yyss != yyssa)
2755226031Sstas    YYSTACK_FREE (yyss);
2756226031Sstas#endif
2757226031Sstas#if YYERROR_VERBOSE
2758226031Sstas  if (yymsg != yymsgbuf)
2759226031Sstas    YYSTACK_FREE (yymsg);
2760226031Sstas#endif
2761226031Sstas  /* Make sure YYID is used.  */
2762226031Sstas  return YYID (yyresult);
2763226031Sstas}
2764226031Sstas
2765226031Sstas
2766226031Sstas#line 944 "asn1parse.y"
2767226031Sstas
2768226031Sstas
2769226031Sstasvoid
2770226031Sstasyyerror (const char *s)
2771226031Sstas{
2772226031Sstas     lex_error_message ("%s\n", s);
2773226031Sstas}
2774226031Sstas
2775226031Sstasstatic Type *
2776226031Sstasnew_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype)
2777226031Sstas{
2778226031Sstas    Type *t;
2779226031Sstas    if(oldtype->type == TTag && oldtype->tag.tagenv == TE_IMPLICIT) {
2780226031Sstas	t = oldtype;
2781226031Sstas	oldtype = oldtype->subtype; /* XXX */
2782226031Sstas    } else
2783226031Sstas	t = new_type (TTag);
2784226031Sstas
2785226031Sstas    t->tag.tagclass = tagclass;
2786226031Sstas    t->tag.tagvalue = tagvalue;
2787226031Sstas    t->tag.tagenv = tagenv;
2788226031Sstas    t->subtype = oldtype;
2789226031Sstas    return t;
2790226031Sstas}
2791226031Sstas
2792226031Sstasstatic struct objid *
2793226031Sstasnew_objid(const char *label, int value)
2794226031Sstas{
2795226031Sstas    struct objid *s;
2796226031Sstas    s = emalloc(sizeof(*s));
2797226031Sstas    s->label = label;
2798226031Sstas    s->value = value;
2799226031Sstas    s->next = NULL;
2800226031Sstas    return s;
2801226031Sstas}
2802226031Sstas
2803226031Sstasstatic void
2804226031Sstasadd_oid_to_tail(struct objid *head, struct objid *tail)
2805226031Sstas{
2806226031Sstas    struct objid *o;
2807226031Sstas    o = head;
2808226031Sstas    while (o->next)
2809226031Sstas	o = o->next;
2810226031Sstas    o->next = tail;
2811226031Sstas}
2812226031Sstas
2813226031Sstasstatic Type *
2814226031Sstasnew_type (Typetype tt)
2815226031Sstas{
2816226031Sstas    Type *t = ecalloc(1, sizeof(*t));
2817226031Sstas    t->type = tt;
2818226031Sstas    return t;
2819226031Sstas}
2820226031Sstas
2821226031Sstasstatic struct constraint_spec *
2822226031Sstasnew_constraint_spec(enum ctype ct)
2823226031Sstas{
2824226031Sstas    struct constraint_spec *c = ecalloc(1, sizeof(*c));
2825226031Sstas    c->ctype = ct;
2826226031Sstas    return c;
2827226031Sstas}
2828226031Sstas
2829226031Sstasstatic void fix_labels2(Type *t, const char *prefix);
2830226031Sstasstatic void fix_labels1(struct memhead *members, const char *prefix)
2831226031Sstas{
2832226031Sstas    Member *m;
2833226031Sstas
2834226031Sstas    if(members == NULL)
2835226031Sstas	return;
2836226031Sstas    ASN1_TAILQ_FOREACH(m, members, members) {
2837226031Sstas	if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0)
2838226031Sstas	    errx(1, "malloc");
2839226031Sstas	if (m->label == NULL)
2840226031Sstas	    errx(1, "malloc");
2841226031Sstas	if(m->type != NULL)
2842226031Sstas	    fix_labels2(m->type, m->label);
2843226031Sstas    }
2844226031Sstas}
2845226031Sstas
2846226031Sstasstatic void fix_labels2(Type *t, const char *prefix)
2847226031Sstas{
2848226031Sstas    for(; t; t = t->subtype)
2849226031Sstas	fix_labels1(t->members, prefix);
2850226031Sstas}
2851226031Sstas
2852226031Sstasstatic void
2853226031Sstasfix_labels(Symbol *s)
2854226031Sstas{
2855226031Sstas    char *p = NULL;
2856226031Sstas    if (asprintf(&p, "choice_%s", s->gen_name) < 0 || p == NULL)
2857226031Sstas	errx(1, "malloc");
2858226031Sstas    fix_labels2(s->type, p);
2859226031Sstas    free(p);
2860226031Sstas}
2861226031Sstas
2862