1178825Sdfr/* A Bison parser, made by GNU Bison 2.3.  */
2178825Sdfr
3178825Sdfr/* Skeleton implementation for Bison's Yacc-like parsers in C
4178825Sdfr
5178825Sdfr   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6178825Sdfr   Free Software Foundation, Inc.
7178825Sdfr
8178825Sdfr   This program is free software; you can redistribute it and/or modify
9178825Sdfr   it under the terms of the GNU General Public License as published by
10178825Sdfr   the Free Software Foundation; either version 2, or (at your option)
11178825Sdfr   any later version.
12178825Sdfr
13178825Sdfr   This program is distributed in the hope that it will be useful,
14178825Sdfr   but WITHOUT ANY WARRANTY; without even the implied warranty of
15178825Sdfr   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16178825Sdfr   GNU General Public License for more details.
17178825Sdfr
18178825Sdfr   You should have received a copy of the GNU General Public License
19178825Sdfr   along with this program; if not, write to the Free Software
20178825Sdfr   Foundation, Inc., 51 Franklin Street, Fifth Floor,
21178825Sdfr   Boston, MA 02110-1301, USA.  */
22178825Sdfr
23178825Sdfr/* As a special exception, you may create a larger work that contains
24178825Sdfr   part or all of the Bison parser skeleton and distribute that work
25178825Sdfr   under terms of your choice, so long as that work isn't itself a
26178825Sdfr   parser generator using the skeleton or a modified version thereof
27178825Sdfr   as a parser skeleton.  Alternatively, if you modify or redistribute
28178825Sdfr   the parser skeleton itself, you may (at your option) remove this
29178825Sdfr   special exception, which will cause the skeleton and the resulting
30178825Sdfr   Bison output files to be licensed under the GNU General Public
31178825Sdfr   License without this special exception.
32178825Sdfr
33178825Sdfr   This special exception was added by the Free Software Foundation in
34178825Sdfr   version 2.2 of Bison.  */
35178825Sdfr
36178825Sdfr/* C LALR(1) parser skeleton written by Richard Stallman, by
37178825Sdfr   simplifying the original so-called "semantic" parser.  */
38178825Sdfr
39178825Sdfr/* All symbols defined below should begin with yy or YY, to avoid
40178825Sdfr   infringing on user name space.  This should be done even for local
41178825Sdfr   variables, as they might otherwise be expanded by user macros.
42178825Sdfr   There are some unavoidable exceptions within include files to
43178825Sdfr   define necessary library symbols; they are noted "INFRINGES ON
44178825Sdfr   USER NAME SPACE" below.  */
45178825Sdfr
46178825Sdfr/* Identify Bison output.  */
47178825Sdfr#define YYBISON 1
48178825Sdfr
49178825Sdfr/* Bison version.  */
50178825Sdfr#define YYBISON_VERSION "2.3"
51178825Sdfr
52178825Sdfr/* Skeleton name.  */
53178825Sdfr#define YYSKELETON_NAME "yacc.c"
54178825Sdfr
55178825Sdfr/* Pure parsers.  */
56178825Sdfr#define YYPURE 0
57178825Sdfr
58178825Sdfr/* Using locations.  */
59178825Sdfr#define YYLSP_NEEDED 0
60178825Sdfr
61178825Sdfr
62178825Sdfr
63178825Sdfr/* Tokens.  */
64178825Sdfr#ifndef YYTOKENTYPE
65178825Sdfr# define YYTOKENTYPE
66178825Sdfr   /* Put the tokens into the symbol table, so that GDB and other debuggers
67178825Sdfr      know about them.  */
68178825Sdfr   enum yytokentype {
69178825Sdfr     kw_ABSENT = 258,
70178825Sdfr     kw_ABSTRACT_SYNTAX = 259,
71178825Sdfr     kw_ALL = 260,
72178825Sdfr     kw_APPLICATION = 261,
73178825Sdfr     kw_AUTOMATIC = 262,
74178825Sdfr     kw_BEGIN = 263,
75178825Sdfr     kw_BIT = 264,
76178825Sdfr     kw_BMPString = 265,
77178825Sdfr     kw_BOOLEAN = 266,
78178825Sdfr     kw_BY = 267,
79178825Sdfr     kw_CHARACTER = 268,
80178825Sdfr     kw_CHOICE = 269,
81178825Sdfr     kw_CLASS = 270,
82178825Sdfr     kw_COMPONENT = 271,
83178825Sdfr     kw_COMPONENTS = 272,
84178825Sdfr     kw_CONSTRAINED = 273,
85178825Sdfr     kw_CONTAINING = 274,
86178825Sdfr     kw_DEFAULT = 275,
87178825Sdfr     kw_DEFINITIONS = 276,
88178825Sdfr     kw_EMBEDDED = 277,
89178825Sdfr     kw_ENCODED = 278,
90178825Sdfr     kw_END = 279,
91178825Sdfr     kw_ENUMERATED = 280,
92178825Sdfr     kw_EXCEPT = 281,
93178825Sdfr     kw_EXPLICIT = 282,
94178825Sdfr     kw_EXPORTS = 283,
95178825Sdfr     kw_EXTENSIBILITY = 284,
96178825Sdfr     kw_EXTERNAL = 285,
97178825Sdfr     kw_FALSE = 286,
98178825Sdfr     kw_FROM = 287,
99178825Sdfr     kw_GeneralString = 288,
100178825Sdfr     kw_GeneralizedTime = 289,
101178825Sdfr     kw_GraphicString = 290,
102178825Sdfr     kw_IA5String = 291,
103178825Sdfr     kw_IDENTIFIER = 292,
104178825Sdfr     kw_IMPLICIT = 293,
105178825Sdfr     kw_IMPLIED = 294,
106178825Sdfr     kw_IMPORTS = 295,
107178825Sdfr     kw_INCLUDES = 296,
108178825Sdfr     kw_INSTANCE = 297,
109178825Sdfr     kw_INTEGER = 298,
110178825Sdfr     kw_INTERSECTION = 299,
111178825Sdfr     kw_ISO646String = 300,
112178825Sdfr     kw_MAX = 301,
113178825Sdfr     kw_MIN = 302,
114178825Sdfr     kw_MINUS_INFINITY = 303,
115178825Sdfr     kw_NULL = 304,
116178825Sdfr     kw_NumericString = 305,
117178825Sdfr     kw_OBJECT = 306,
118178825Sdfr     kw_OCTET = 307,
119178825Sdfr     kw_OF = 308,
120178825Sdfr     kw_OPTIONAL = 309,
121178825Sdfr     kw_ObjectDescriptor = 310,
122178825Sdfr     kw_PATTERN = 311,
123178825Sdfr     kw_PDV = 312,
124178825Sdfr     kw_PLUS_INFINITY = 313,
125178825Sdfr     kw_PRESENT = 314,
126178825Sdfr     kw_PRIVATE = 315,
127178825Sdfr     kw_PrintableString = 316,
128178825Sdfr     kw_REAL = 317,
129178825Sdfr     kw_RELATIVE_OID = 318,
130178825Sdfr     kw_SEQUENCE = 319,
131178825Sdfr     kw_SET = 320,
132178825Sdfr     kw_SIZE = 321,
133178825Sdfr     kw_STRING = 322,
134178825Sdfr     kw_SYNTAX = 323,
135178825Sdfr     kw_T61String = 324,
136178825Sdfr     kw_TAGS = 325,
137178825Sdfr     kw_TRUE = 326,
138178825Sdfr     kw_TYPE_IDENTIFIER = 327,
139178825Sdfr     kw_TeletexString = 328,
140178825Sdfr     kw_UNION = 329,
141178825Sdfr     kw_UNIQUE = 330,
142178825Sdfr     kw_UNIVERSAL = 331,
143178825Sdfr     kw_UTCTime = 332,
144178825Sdfr     kw_UTF8String = 333,
145178825Sdfr     kw_UniversalString = 334,
146178825Sdfr     kw_VideotexString = 335,
147178825Sdfr     kw_VisibleString = 336,
148178825Sdfr     kw_WITH = 337,
149178825Sdfr     RANGE = 338,
150178825Sdfr     EEQUAL = 339,
151178825Sdfr     ELLIPSIS = 340,
152178825Sdfr     IDENTIFIER = 341,
153178825Sdfr     referencename = 342,
154178825Sdfr     STRING = 343,
155178825Sdfr     NUMBER = 344
156178825Sdfr   };
157178825Sdfr#endif
158178825Sdfr/* Tokens.  */
159178825Sdfr#define kw_ABSENT 258
160178825Sdfr#define kw_ABSTRACT_SYNTAX 259
161178825Sdfr#define kw_ALL 260
162178825Sdfr#define kw_APPLICATION 261
163178825Sdfr#define kw_AUTOMATIC 262
164178825Sdfr#define kw_BEGIN 263
165178825Sdfr#define kw_BIT 264
166178825Sdfr#define kw_BMPString 265
167178825Sdfr#define kw_BOOLEAN 266
168178825Sdfr#define kw_BY 267
169178825Sdfr#define kw_CHARACTER 268
170178825Sdfr#define kw_CHOICE 269
171178825Sdfr#define kw_CLASS 270
172178825Sdfr#define kw_COMPONENT 271
173178825Sdfr#define kw_COMPONENTS 272
174178825Sdfr#define kw_CONSTRAINED 273
175178825Sdfr#define kw_CONTAINING 274
176178825Sdfr#define kw_DEFAULT 275
177178825Sdfr#define kw_DEFINITIONS 276
178178825Sdfr#define kw_EMBEDDED 277
179178825Sdfr#define kw_ENCODED 278
180178825Sdfr#define kw_END 279
181178825Sdfr#define kw_ENUMERATED 280
182178825Sdfr#define kw_EXCEPT 281
183178825Sdfr#define kw_EXPLICIT 282
184178825Sdfr#define kw_EXPORTS 283
185178825Sdfr#define kw_EXTENSIBILITY 284
186178825Sdfr#define kw_EXTERNAL 285
187178825Sdfr#define kw_FALSE 286
188178825Sdfr#define kw_FROM 287
189178825Sdfr#define kw_GeneralString 288
190178825Sdfr#define kw_GeneralizedTime 289
191178825Sdfr#define kw_GraphicString 290
192178825Sdfr#define kw_IA5String 291
193178825Sdfr#define kw_IDENTIFIER 292
194178825Sdfr#define kw_IMPLICIT 293
195178825Sdfr#define kw_IMPLIED 294
196178825Sdfr#define kw_IMPORTS 295
197178825Sdfr#define kw_INCLUDES 296
198178825Sdfr#define kw_INSTANCE 297
199178825Sdfr#define kw_INTEGER 298
200178825Sdfr#define kw_INTERSECTION 299
201178825Sdfr#define kw_ISO646String 300
202178825Sdfr#define kw_MAX 301
203178825Sdfr#define kw_MIN 302
204178825Sdfr#define kw_MINUS_INFINITY 303
205178825Sdfr#define kw_NULL 304
206178825Sdfr#define kw_NumericString 305
207178825Sdfr#define kw_OBJECT 306
208178825Sdfr#define kw_OCTET 307
209178825Sdfr#define kw_OF 308
210178825Sdfr#define kw_OPTIONAL 309
211178825Sdfr#define kw_ObjectDescriptor 310
212178825Sdfr#define kw_PATTERN 311
213178825Sdfr#define kw_PDV 312
214178825Sdfr#define kw_PLUS_INFINITY 313
215178825Sdfr#define kw_PRESENT 314
216178825Sdfr#define kw_PRIVATE 315
217178825Sdfr#define kw_PrintableString 316
218178825Sdfr#define kw_REAL 317
219178825Sdfr#define kw_RELATIVE_OID 318
220178825Sdfr#define kw_SEQUENCE 319
221178825Sdfr#define kw_SET 320
222178825Sdfr#define kw_SIZE 321
223178825Sdfr#define kw_STRING 322
224178825Sdfr#define kw_SYNTAX 323
225178825Sdfr#define kw_T61String 324
226178825Sdfr#define kw_TAGS 325
227178825Sdfr#define kw_TRUE 326
228178825Sdfr#define kw_TYPE_IDENTIFIER 327
229178825Sdfr#define kw_TeletexString 328
230178825Sdfr#define kw_UNION 329
231178825Sdfr#define kw_UNIQUE 330
232178825Sdfr#define kw_UNIVERSAL 331
233178825Sdfr#define kw_UTCTime 332
234178825Sdfr#define kw_UTF8String 333
235178825Sdfr#define kw_UniversalString 334
236178825Sdfr#define kw_VideotexString 335
237178825Sdfr#define kw_VisibleString 336
238178825Sdfr#define kw_WITH 337
239178825Sdfr#define RANGE 338
240178825Sdfr#define EEQUAL 339
241178825Sdfr#define ELLIPSIS 340
242178825Sdfr#define IDENTIFIER 341
243178825Sdfr#define referencename 342
244178825Sdfr#define STRING 343
245178825Sdfr#define NUMBER 344
246178825Sdfr
247178825Sdfr
248178825Sdfr
249178825Sdfr
250178825Sdfr/* Copy the first part of user declarations.  */
251178825Sdfr#line 36 "parse.y"
252178825Sdfr
253178825Sdfr#ifdef HAVE_CONFIG_H
254178825Sdfr#include <config.h>
255178825Sdfr#endif
256178825Sdfr#include <stdio.h>
257178825Sdfr#include <stdlib.h>
258178825Sdfr#include <string.h>
259178825Sdfr#include "symbol.h"
260178825Sdfr#include "lex.h"
261178825Sdfr#include "gen_locl.h"
262178825Sdfr#include "der.h"
263178825Sdfr
264178825SdfrRCSID("$Id: parse.y 21597 2007-07-16 18:48:58Z lha $");
265178825Sdfr
266178825Sdfrstatic Type *new_type (Typetype t);
267178825Sdfrstatic struct constraint_spec *new_constraint_spec(enum ctype);
268178825Sdfrstatic Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype);
269178825Sdfrvoid yyerror (const char *);
270178825Sdfrstatic struct objid *new_objid(const char *label, int value);
271178825Sdfrstatic void add_oid_to_tail(struct objid *, struct objid *);
272178825Sdfrstatic void fix_labels(Symbol *s);
273178825Sdfr
274178825Sdfrstruct string_list {
275178825Sdfr    char *string;
276178825Sdfr    struct string_list *next;
277178825Sdfr};
278178825Sdfr
279178825Sdfr
280178825Sdfr
281178825Sdfr/* Enabling traces.  */
282178825Sdfr#ifndef YYDEBUG
283178825Sdfr# define YYDEBUG 1
284178825Sdfr#endif
285178825Sdfr
286178825Sdfr/* Enabling verbose error messages.  */
287178825Sdfr#ifdef YYERROR_VERBOSE
288178825Sdfr# undef YYERROR_VERBOSE
289178825Sdfr# define YYERROR_VERBOSE 1
290178825Sdfr#else
291178825Sdfr# define YYERROR_VERBOSE 0
292178825Sdfr#endif
293178825Sdfr
294178825Sdfr/* Enabling the token table.  */
295178825Sdfr#ifndef YYTOKEN_TABLE
296178825Sdfr# define YYTOKEN_TABLE 0
297178825Sdfr#endif
298178825Sdfr
299178825Sdfr#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
300178825Sdfrtypedef union YYSTYPE
301178825Sdfr#line 65 "parse.y"
302178825Sdfr{
303178825Sdfr    int constant;
304178825Sdfr    struct value *value;
305178825Sdfr    struct range *range;
306178825Sdfr    char *name;
307178825Sdfr    Type *type;
308178825Sdfr    Member *member;
309178825Sdfr    struct objid *objid;
310178825Sdfr    char *defval;
311178825Sdfr    struct string_list *sl;
312178825Sdfr    struct tagtype tag;
313178825Sdfr    struct memhead *members;
314178825Sdfr    struct constraint_spec *constraint_spec;
315178825Sdfr}
316178825Sdfr/* Line 193 of yacc.c.  */
317178825Sdfr#line 318 "parse.c"
318178825Sdfr	YYSTYPE;
319178825Sdfr# define yystype YYSTYPE /* obsolescent; will be withdrawn */
320178825Sdfr# define YYSTYPE_IS_DECLARED 1
321178825Sdfr# define YYSTYPE_IS_TRIVIAL 1
322178825Sdfr#endif
323178825Sdfr
324178825Sdfr
325178825Sdfr
326178825Sdfr/* Copy the second part of user declarations.  */
327178825Sdfr
328178825Sdfr
329178825Sdfr/* Line 216 of yacc.c.  */
330178825Sdfr#line 331 "parse.c"
331178825Sdfr
332178825Sdfr#ifdef short
333178825Sdfr# undef short
334178825Sdfr#endif
335178825Sdfr
336178825Sdfr#ifdef YYTYPE_UINT8
337178825Sdfrtypedef YYTYPE_UINT8 yytype_uint8;
338178825Sdfr#else
339178825Sdfrtypedef unsigned char yytype_uint8;
340178825Sdfr#endif
341178825Sdfr
342178825Sdfr#ifdef YYTYPE_INT8
343178825Sdfrtypedef YYTYPE_INT8 yytype_int8;
344178825Sdfr#elif (defined __STDC__ || defined __C99__FUNC__ \
345178825Sdfr     || defined __cplusplus || defined _MSC_VER)
346178825Sdfrtypedef signed char yytype_int8;
347178825Sdfr#else
348178825Sdfrtypedef short int yytype_int8;
349178825Sdfr#endif
350178825Sdfr
351178825Sdfr#ifdef YYTYPE_UINT16
352178825Sdfrtypedef YYTYPE_UINT16 yytype_uint16;
353178825Sdfr#else
354178825Sdfrtypedef unsigned short int yytype_uint16;
355178825Sdfr#endif
356178825Sdfr
357178825Sdfr#ifdef YYTYPE_INT16
358178825Sdfrtypedef YYTYPE_INT16 yytype_int16;
359178825Sdfr#else
360178825Sdfrtypedef short int yytype_int16;
361178825Sdfr#endif
362178825Sdfr
363178825Sdfr#ifndef YYSIZE_T
364178825Sdfr# ifdef __SIZE_TYPE__
365178825Sdfr#  define YYSIZE_T __SIZE_TYPE__
366178825Sdfr# elif defined size_t
367178825Sdfr#  define YYSIZE_T size_t
368178825Sdfr# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
369178825Sdfr     || defined __cplusplus || defined _MSC_VER)
370178825Sdfr#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
371178825Sdfr#  define YYSIZE_T size_t
372178825Sdfr# else
373178825Sdfr#  define YYSIZE_T unsigned int
374178825Sdfr# endif
375178825Sdfr#endif
376178825Sdfr
377178825Sdfr#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
378178825Sdfr
379178825Sdfr#ifndef YY_
380178825Sdfr# if defined YYENABLE_NLS && YYENABLE_NLS
381178825Sdfr#  if ENABLE_NLS
382178825Sdfr#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
383178825Sdfr#   define YY_(msgid) dgettext ("bison-runtime", msgid)
384178825Sdfr#  endif
385178825Sdfr# endif
386178825Sdfr# ifndef YY_
387178825Sdfr#  define YY_(msgid) msgid
388178825Sdfr# endif
389178825Sdfr#endif
390178825Sdfr
391178825Sdfr/* Suppress unused-variable warnings by "using" E.  */
392178825Sdfr#if ! defined lint || defined __GNUC__
393178825Sdfr# define YYUSE(e) ((void) (e))
394178825Sdfr#else
395178825Sdfr# define YYUSE(e) /* empty */
396178825Sdfr#endif
397178825Sdfr
398178825Sdfr/* Identity function, used to suppress warnings about constant conditions.  */
399178825Sdfr#ifndef lint
400178825Sdfr# define YYID(n) (n)
401178825Sdfr#else
402178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
403178825Sdfr     || defined __cplusplus || defined _MSC_VER)
404178825Sdfrstatic int
405178825SdfrYYID (int i)
406178825Sdfr#else
407178825Sdfrstatic int
408178825SdfrYYID (i)
409178825Sdfr    int i;
410178825Sdfr#endif
411178825Sdfr{
412178825Sdfr  return i;
413178825Sdfr}
414178825Sdfr#endif
415178825Sdfr
416178825Sdfr#if ! defined yyoverflow || YYERROR_VERBOSE
417178825Sdfr
418178825Sdfr/* The parser invokes alloca or malloc; define the necessary symbols.  */
419178825Sdfr
420178825Sdfr# ifdef YYSTACK_USE_ALLOCA
421178825Sdfr#  if YYSTACK_USE_ALLOCA
422178825Sdfr#   ifdef __GNUC__
423178825Sdfr#    define YYSTACK_ALLOC __builtin_alloca
424178825Sdfr#   elif defined __BUILTIN_VA_ARG_INCR
425178825Sdfr#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
426178825Sdfr#   elif defined _AIX
427178825Sdfr#    define YYSTACK_ALLOC __alloca
428178825Sdfr#   elif defined _MSC_VER
429178825Sdfr#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
430178825Sdfr#    define alloca _alloca
431178825Sdfr#   else
432178825Sdfr#    define YYSTACK_ALLOC alloca
433178825Sdfr#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
434178825Sdfr     || defined __cplusplus || defined _MSC_VER)
435178825Sdfr#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
436178825Sdfr#     ifndef _STDLIB_H
437178825Sdfr#      define _STDLIB_H 1
438178825Sdfr#     endif
439178825Sdfr#    endif
440178825Sdfr#   endif
441178825Sdfr#  endif
442178825Sdfr# endif
443178825Sdfr
444178825Sdfr# ifdef YYSTACK_ALLOC
445178825Sdfr   /* Pacify GCC's `empty if-body' warning.  */
446178825Sdfr#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
447178825Sdfr#  ifndef YYSTACK_ALLOC_MAXIMUM
448178825Sdfr    /* The OS might guarantee only one guard page at the bottom of the stack,
449178825Sdfr       and a page size can be as small as 4096 bytes.  So we cannot safely
450178825Sdfr       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
451178825Sdfr       to allow for a few compiler-allocated temporary stack slots.  */
452178825Sdfr#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
453178825Sdfr#  endif
454178825Sdfr# else
455178825Sdfr#  define YYSTACK_ALLOC YYMALLOC
456178825Sdfr#  define YYSTACK_FREE YYFREE
457178825Sdfr#  ifndef YYSTACK_ALLOC_MAXIMUM
458178825Sdfr#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
459178825Sdfr#  endif
460178825Sdfr#  if (defined __cplusplus && ! defined _STDLIB_H \
461178825Sdfr       && ! ((defined YYMALLOC || defined malloc) \
462178825Sdfr	     && (defined YYFREE || defined free)))
463178825Sdfr#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
464178825Sdfr#   ifndef _STDLIB_H
465178825Sdfr#    define _STDLIB_H 1
466178825Sdfr#   endif
467178825Sdfr#  endif
468178825Sdfr#  ifndef YYMALLOC
469178825Sdfr#   define YYMALLOC malloc
470178825Sdfr#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
471178825Sdfr     || defined __cplusplus || defined _MSC_VER)
472178825Sdfrvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
473178825Sdfr#   endif
474178825Sdfr#  endif
475178825Sdfr#  ifndef YYFREE
476178825Sdfr#   define YYFREE free
477178825Sdfr#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
478178825Sdfr     || defined __cplusplus || defined _MSC_VER)
479178825Sdfrvoid free (void *); /* INFRINGES ON USER NAME SPACE */
480178825Sdfr#   endif
481178825Sdfr#  endif
482178825Sdfr# endif
483178825Sdfr#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
484178825Sdfr
485178825Sdfr
486178825Sdfr#if (! defined yyoverflow \
487178825Sdfr     && (! defined __cplusplus \
488178825Sdfr	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
489178825Sdfr
490178825Sdfr/* A type that is properly aligned for any stack member.  */
491178825Sdfrunion yyalloc
492178825Sdfr{
493178825Sdfr  yytype_int16 yyss;
494178825Sdfr  YYSTYPE yyvs;
495178825Sdfr  };
496178825Sdfr
497178825Sdfr/* The size of the maximum gap between one aligned stack and the next.  */
498178825Sdfr# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
499178825Sdfr
500178825Sdfr/* The size of an array large to enough to hold all stacks, each with
501178825Sdfr   N elements.  */
502178825Sdfr# define YYSTACK_BYTES(N) \
503178825Sdfr     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
504178825Sdfr      + YYSTACK_GAP_MAXIMUM)
505178825Sdfr
506178825Sdfr/* Copy COUNT objects from FROM to TO.  The source and destination do
507178825Sdfr   not overlap.  */
508178825Sdfr# ifndef YYCOPY
509178825Sdfr#  if defined __GNUC__ && 1 < __GNUC__
510178825Sdfr#   define YYCOPY(To, From, Count) \
511178825Sdfr      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
512178825Sdfr#  else
513178825Sdfr#   define YYCOPY(To, From, Count)		\
514178825Sdfr      do					\
515178825Sdfr	{					\
516178825Sdfr	  YYSIZE_T yyi;				\
517178825Sdfr	  for (yyi = 0; yyi < (Count); yyi++)	\
518178825Sdfr	    (To)[yyi] = (From)[yyi];		\
519178825Sdfr	}					\
520178825Sdfr      while (YYID (0))
521178825Sdfr#  endif
522178825Sdfr# endif
523178825Sdfr
524178825Sdfr/* Relocate STACK from its old location to the new one.  The
525178825Sdfr   local variables YYSIZE and YYSTACKSIZE give the old and new number of
526178825Sdfr   elements in the stack, and YYPTR gives the new location of the
527178825Sdfr   stack.  Advance YYPTR to a properly aligned location for the next
528178825Sdfr   stack.  */
529178825Sdfr# define YYSTACK_RELOCATE(Stack)					\
530178825Sdfr    do									\
531178825Sdfr      {									\
532178825Sdfr	YYSIZE_T yynewbytes;						\
533178825Sdfr	YYCOPY (&yyptr->Stack, Stack, yysize);				\
534178825Sdfr	Stack = &yyptr->Stack;						\
535178825Sdfr	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
536178825Sdfr	yyptr += yynewbytes / sizeof (*yyptr);				\
537178825Sdfr      }									\
538178825Sdfr    while (YYID (0))
539178825Sdfr
540178825Sdfr#endif
541178825Sdfr
542178825Sdfr/* YYFINAL -- State number of the termination state.  */
543178825Sdfr#define YYFINAL  6
544178825Sdfr/* YYLAST -- Last index in YYTABLE.  */
545178825Sdfr#define YYLAST   195
546178825Sdfr
547178825Sdfr/* YYNTOKENS -- Number of terminals.  */
548178825Sdfr#define YYNTOKENS  98
549178825Sdfr/* YYNNTS -- Number of nonterminals.  */
550178825Sdfr#define YYNNTS  68
551178825Sdfr/* YYNRULES -- Number of rules.  */
552178825Sdfr#define YYNRULES  136
553178825Sdfr/* YYNRULES -- Number of states.  */
554178825Sdfr#define YYNSTATES  214
555178825Sdfr
556178825Sdfr/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
557178825Sdfr#define YYUNDEFTOK  2
558178825Sdfr#define YYMAXUTOK   344
559178825Sdfr
560178825Sdfr#define YYTRANSLATE(YYX)						\
561178825Sdfr  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
562178825Sdfr
563178825Sdfr/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
564178825Sdfrstatic const yytype_uint8 yytranslate[] =
565178825Sdfr{
566178825Sdfr       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
567178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
568178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
569178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
570178825Sdfr      92,    93,     2,     2,    91,     2,     2,     2,     2,     2,
571178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,    90,
572178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
573178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
574178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
575178825Sdfr       2,    96,     2,    97,     2,     2,     2,     2,     2,     2,
576178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
577178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
578178825Sdfr       2,     2,     2,    94,     2,    95,     2,     2,     2,     2,
579178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
580178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
581178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
582178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
583178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
584178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
585178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
586178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
587178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
588178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
589178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
590178825Sdfr       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
591178825Sdfr       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
592178825Sdfr       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
593178825Sdfr      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
594178825Sdfr      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
595178825Sdfr      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
596178825Sdfr      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
597178825Sdfr      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
598178825Sdfr      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
599178825Sdfr      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
600178825Sdfr      85,    86,    87,    88,    89
601178825Sdfr};
602178825Sdfr
603178825Sdfr#if YYDEBUG
604178825Sdfr/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
605178825Sdfr   YYRHS.  */
606178825Sdfrstatic const yytype_uint16 yyprhs[] =
607178825Sdfr{
608178825Sdfr       0,     0,     3,    13,    16,    19,    22,    23,    26,    27,
609178825Sdfr      30,    31,    35,    36,    38,    39,    41,    44,    49,    51,
610178825Sdfr      54,    56,    58,    62,    64,    68,    70,    72,    74,    76,
611178825Sdfr      78,    80,    82,    84,    86,    88,    90,    92,    94,    96,
612178825Sdfr      98,   100,   102,   104,   110,   116,   122,   126,   128,   131,
613178825Sdfr     136,   138,   142,   146,   151,   156,   158,   161,   167,   170,
614178825Sdfr     174,   176,   177,   180,   185,   189,   194,   199,   203,   207,
615178825Sdfr     212,   214,   216,   218,   220,   222,   225,   229,   231,   233,
616178825Sdfr     235,   238,   242,   248,   253,   257,   262,   263,   265,   267,
617178825Sdfr     269,   270,   272,   274,   279,   281,   283,   285,   287,   289,
618178825Sdfr     291,   293,   295,   297,   301,   305,   308,   310,   313,   317,
619178825Sdfr     319,   323,   328,   330,   331,   335,   336,   339,   344,   346,
620178825Sdfr     348,   350,   352,   354,   356,   358,   360,   362,   364,   366,
621178825Sdfr     368,   370,   372,   374,   376,   378,   380
622178825Sdfr};
623178825Sdfr
624178825Sdfr/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
625178825Sdfrstatic const yytype_int16 yyrhs[] =
626178825Sdfr{
627178825Sdfr      99,     0,    -1,    86,   151,    21,   100,   101,    84,     8,
628178825Sdfr     102,    24,    -1,    27,    70,    -1,    38,    70,    -1,     7,
629178825Sdfr      70,    -1,    -1,    29,    39,    -1,    -1,   103,   107,    -1,
630178825Sdfr      -1,    40,   104,    90,    -1,    -1,   105,    -1,    -1,   106,
631178825Sdfr      -1,   105,   106,    -1,   109,    32,    86,   151,    -1,   108,
632178825Sdfr      -1,   108,   107,    -1,   110,    -1,   143,    -1,    86,    91,
633178825Sdfr     109,    -1,    86,    -1,    86,    84,   111,    -1,   112,    -1,
634178825Sdfr     130,    -1,   133,    -1,   120,    -1,   113,    -1,   144,    -1,
635178825Sdfr     129,    -1,   118,    -1,   115,    -1,   123,    -1,   121,    -1,
636178825Sdfr     122,    -1,   125,    -1,   126,    -1,   127,    -1,   128,    -1,
637178825Sdfr     139,    -1,    11,    -1,    92,   155,    83,   155,    93,    -1,
638178825Sdfr      92,   155,    83,    46,    93,    -1,    92,    47,    83,   155,
639178825Sdfr      93,    -1,    92,   155,    93,    -1,    43,    -1,    43,   114,
640178825Sdfr      -1,    43,    94,   116,    95,    -1,   117,    -1,   116,    91,
641178825Sdfr     117,    -1,   116,    91,    85,    -1,    86,    92,   163,    93,
642178825Sdfr      -1,    25,    94,   119,    95,    -1,   116,    -1,     9,    67,
643178825Sdfr      -1,     9,    67,    94,   149,    95,    -1,    51,    37,    -1,
644178825Sdfr      52,    67,   124,    -1,    49,    -1,    -1,    66,   114,    -1,
645178825Sdfr      64,    94,   146,    95,    -1,    64,    94,    95,    -1,    64,
646178825Sdfr     124,    53,   111,    -1,    65,    94,   146,    95,    -1,    65,
647178825Sdfr      94,    95,    -1,    65,    53,   111,    -1,    14,    94,   146,
648178825Sdfr      95,    -1,   131,    -1,   132,    -1,    86,    -1,    34,    -1,
649178825Sdfr      77,    -1,   111,   134,    -1,    92,   135,    93,    -1,   136,
650178825Sdfr      -1,   137,    -1,   138,    -1,    19,   111,    -1,    23,    12,
651178825Sdfr     155,    -1,    19,   111,    23,    12,   155,    -1,    18,    12,
652178825Sdfr      94,    95,    -1,   140,   142,   111,    -1,    96,   141,    89,
653178825Sdfr      97,    -1,    -1,    76,    -1,     6,    -1,    60,    -1,    -1,
654178825Sdfr      27,    -1,    38,    -1,    86,   111,    84,   155,    -1,   145,
655178825Sdfr      -1,    33,    -1,    78,    -1,    61,    -1,    81,    -1,    36,
656178825Sdfr      -1,    10,    -1,    79,    -1,   148,    -1,   146,    91,   148,
657178825Sdfr      -1,   146,    91,    85,    -1,    86,   111,    -1,   147,    -1,
658178825Sdfr     147,    54,    -1,   147,    20,   155,    -1,   150,    -1,   149,
659178825Sdfr      91,   150,    -1,    86,    92,    89,    93,    -1,   152,    -1,
660178825Sdfr      -1,    94,   153,    95,    -1,    -1,   154,   153,    -1,    86,
661178825Sdfr      92,    89,    93,    -1,    86,    -1,    89,    -1,   156,    -1,
662178825Sdfr     157,    -1,   161,    -1,   160,    -1,   162,    -1,   165,    -1,
663178825Sdfr     164,    -1,   158,    -1,   159,    -1,    86,    -1,    88,    -1,
664178825Sdfr      71,    -1,    31,    -1,   163,    -1,    89,    -1,    49,    -1,
665178825Sdfr     152,    -1
666178825Sdfr};
667178825Sdfr
668178825Sdfr/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
669178825Sdfrstatic const yytype_uint16 yyrline[] =
670178825Sdfr{
671178825Sdfr       0,   233,   233,   240,   241,   243,   245,   248,   250,   253,
672178825Sdfr     254,   257,   258,   261,   262,   265,   266,   269,   280,   281,
673178825Sdfr     284,   285,   288,   294,   302,   312,   313,   314,   317,   318,
674178825Sdfr     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
675178825Sdfr     329,   330,   333,   340,   350,   358,   366,   377,   382,   388,
676178825Sdfr     396,   402,   407,   411,   424,   432,   435,   442,   450,   456,
677178825Sdfr     465,   473,   474,   479,   485,   493,   502,   508,   516,   524,
678178825Sdfr     531,   532,   535,   546,   551,   558,   574,   580,   583,   584,
679178825Sdfr     587,   593,   601,   611,   617,   630,   639,   642,   646,   650,
680178825Sdfr     657,   660,   664,   671,   682,   685,   690,   695,   700,   705,
681178825Sdfr     710,   715,   723,   729,   734,   745,   756,   762,   768,   776,
682178825Sdfr     782,   789,   802,   803,   806,   813,   816,   827,   831,   842,
683178825Sdfr     848,   849,   852,   853,   854,   855,   856,   859,   862,   865,
684178825Sdfr     876,   884,   890,   898,   906,   909,   914
685178825Sdfr};
686178825Sdfr#endif
687178825Sdfr
688178825Sdfr#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
689178825Sdfr/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
690178825Sdfr   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
691178825Sdfrstatic const char *const yytname[] =
692178825Sdfr{
693178825Sdfr  "$end", "error", "$undefined", "kw_ABSENT", "kw_ABSTRACT_SYNTAX",
694178825Sdfr  "kw_ALL", "kw_APPLICATION", "kw_AUTOMATIC", "kw_BEGIN", "kw_BIT",
695178825Sdfr  "kw_BMPString", "kw_BOOLEAN", "kw_BY", "kw_CHARACTER", "kw_CHOICE",
696178825Sdfr  "kw_CLASS", "kw_COMPONENT", "kw_COMPONENTS", "kw_CONSTRAINED",
697178825Sdfr  "kw_CONTAINING", "kw_DEFAULT", "kw_DEFINITIONS", "kw_EMBEDDED",
698178825Sdfr  "kw_ENCODED", "kw_END", "kw_ENUMERATED", "kw_EXCEPT", "kw_EXPLICIT",
699178825Sdfr  "kw_EXPORTS", "kw_EXTENSIBILITY", "kw_EXTERNAL", "kw_FALSE", "kw_FROM",
700178825Sdfr  "kw_GeneralString", "kw_GeneralizedTime", "kw_GraphicString",
701178825Sdfr  "kw_IA5String", "kw_IDENTIFIER", "kw_IMPLICIT", "kw_IMPLIED",
702178825Sdfr  "kw_IMPORTS", "kw_INCLUDES", "kw_INSTANCE", "kw_INTEGER",
703178825Sdfr  "kw_INTERSECTION", "kw_ISO646String", "kw_MAX", "kw_MIN",
704178825Sdfr  "kw_MINUS_INFINITY", "kw_NULL", "kw_NumericString", "kw_OBJECT",
705178825Sdfr  "kw_OCTET", "kw_OF", "kw_OPTIONAL", "kw_ObjectDescriptor", "kw_PATTERN",
706178825Sdfr  "kw_PDV", "kw_PLUS_INFINITY", "kw_PRESENT", "kw_PRIVATE",
707178825Sdfr  "kw_PrintableString", "kw_REAL", "kw_RELATIVE_OID", "kw_SEQUENCE",
708178825Sdfr  "kw_SET", "kw_SIZE", "kw_STRING", "kw_SYNTAX", "kw_T61String", "kw_TAGS",
709178825Sdfr  "kw_TRUE", "kw_TYPE_IDENTIFIER", "kw_TeletexString", "kw_UNION",
710178825Sdfr  "kw_UNIQUE", "kw_UNIVERSAL", "kw_UTCTime", "kw_UTF8String",
711178825Sdfr  "kw_UniversalString", "kw_VideotexString", "kw_VisibleString", "kw_WITH",
712178825Sdfr  "RANGE", "EEQUAL", "ELLIPSIS", "IDENTIFIER", "referencename", "STRING",
713178825Sdfr  "NUMBER", "';'", "','", "'('", "')'", "'{'", "'}'", "'['", "']'",
714178825Sdfr  "$accept", "ModuleDefinition", "TagDefault", "ExtensionDefault",
715178825Sdfr  "ModuleBody", "Imports", "SymbolsImported", "SymbolsFromModuleList",
716178825Sdfr  "SymbolsFromModule", "AssignmentList", "Assignment", "referencenames",
717178825Sdfr  "TypeAssignment", "Type", "BuiltinType", "BooleanType", "range",
718178825Sdfr  "IntegerType", "NamedNumberList", "NamedNumber", "EnumeratedType",
719178825Sdfr  "Enumerations", "BitStringType", "ObjectIdentifierType",
720178825Sdfr  "OctetStringType", "NullType", "size", "SequenceType", "SequenceOfType",
721178825Sdfr  "SetType", "SetOfType", "ChoiceType", "ReferencedType", "DefinedType",
722178825Sdfr  "UsefulType", "ConstrainedType", "Constraint", "ConstraintSpec",
723178825Sdfr  "GeneralConstraint", "ContentsConstraint", "UserDefinedConstraint",
724178825Sdfr  "TaggedType", "Tag", "Class", "tagenv", "ValueAssignment",
725178825Sdfr  "CharacterStringType", "RestrictedCharactedStringType",
726178825Sdfr  "ComponentTypeList", "NamedType", "ComponentType", "NamedBitList",
727178825Sdfr  "NamedBit", "objid_opt", "objid", "objid_list", "objid_element", "Value",
728178825Sdfr  "BuiltinValue", "ReferencedValue", "DefinedValue", "Valuereference",
729178825Sdfr  "CharacterStringValue", "BooleanValue", "IntegerValue", "SignedNumber",
730178825Sdfr  "NullValue", "ObjectIdentifierValue", 0
731178825Sdfr};
732178825Sdfr#endif
733178825Sdfr
734178825Sdfr# ifdef YYPRINT
735178825Sdfr/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
736178825Sdfr   token YYLEX-NUM.  */
737178825Sdfrstatic const yytype_uint16 yytoknum[] =
738178825Sdfr{
739178825Sdfr       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
740178825Sdfr     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
741178825Sdfr     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
742178825Sdfr     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
743178825Sdfr     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
744178825Sdfr     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
745178825Sdfr     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
746178825Sdfr     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
747178825Sdfr     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
748178825Sdfr      59,    44,    40,    41,   123,   125,    91,    93
749178825Sdfr};
750178825Sdfr# endif
751178825Sdfr
752178825Sdfr/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
753178825Sdfrstatic const yytype_uint8 yyr1[] =
754178825Sdfr{
755178825Sdfr       0,    98,    99,   100,   100,   100,   100,   101,   101,   102,
756178825Sdfr     102,   103,   103,   104,   104,   105,   105,   106,   107,   107,
757178825Sdfr     108,   108,   109,   109,   110,   111,   111,   111,   112,   112,
758178825Sdfr     112,   112,   112,   112,   112,   112,   112,   112,   112,   112,
759178825Sdfr     112,   112,   113,   114,   114,   114,   114,   115,   115,   115,
760178825Sdfr     116,   116,   116,   117,   118,   119,   120,   120,   121,   122,
761178825Sdfr     123,   124,   124,   125,   125,   126,   127,   127,   128,   129,
762178825Sdfr     130,   130,   131,   132,   132,   133,   134,   135,   136,   136,
763178825Sdfr     137,   137,   137,   138,   139,   140,   141,   141,   141,   141,
764178825Sdfr     142,   142,   142,   143,   144,   145,   145,   145,   145,   145,
765178825Sdfr     145,   145,   146,   146,   146,   147,   148,   148,   148,   149,
766178825Sdfr     149,   150,   151,   151,   152,   153,   153,   154,   154,   154,
767178825Sdfr     155,   155,   156,   156,   156,   156,   156,   157,   158,   159,
768178825Sdfr     160,   161,   161,   162,   163,   164,   165
769178825Sdfr};
770178825Sdfr
771178825Sdfr/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
772178825Sdfrstatic const yytype_uint8 yyr2[] =
773178825Sdfr{
774178825Sdfr       0,     2,     9,     2,     2,     2,     0,     2,     0,     2,
775178825Sdfr       0,     3,     0,     1,     0,     1,     2,     4,     1,     2,
776178825Sdfr       1,     1,     3,     1,     3,     1,     1,     1,     1,     1,
777178825Sdfr       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
778178825Sdfr       1,     1,     1,     5,     5,     5,     3,     1,     2,     4,
779178825Sdfr       1,     3,     3,     4,     4,     1,     2,     5,     2,     3,
780178825Sdfr       1,     0,     2,     4,     3,     4,     4,     3,     3,     4,
781178825Sdfr       1,     1,     1,     1,     1,     2,     3,     1,     1,     1,
782178825Sdfr       2,     3,     5,     4,     3,     4,     0,     1,     1,     1,
783178825Sdfr       0,     1,     1,     4,     1,     1,     1,     1,     1,     1,
784178825Sdfr       1,     1,     1,     3,     3,     2,     1,     2,     3,     1,
785178825Sdfr       3,     4,     1,     0,     3,     0,     2,     4,     1,     1,
786178825Sdfr       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
787178825Sdfr       1,     1,     1,     1,     1,     1,     1
788178825Sdfr};
789178825Sdfr
790178825Sdfr/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
791178825Sdfr   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
792178825Sdfr   means the default is an error.  */
793178825Sdfrstatic const yytype_uint8 yydefact[] =
794178825Sdfr{
795178825Sdfr       0,   113,     0,   115,     0,   112,     1,   118,   119,     0,
796178825Sdfr     115,     6,     0,   114,   116,     0,     0,     0,     8,     0,
797178825Sdfr       5,     3,     4,     0,     0,   117,     7,     0,    10,    14,
798178825Sdfr       0,     0,    23,     0,    13,    15,     0,     2,     0,     9,
799178825Sdfr      18,    20,    21,     0,    11,    16,     0,     0,   100,    42,
800178825Sdfr       0,     0,    95,    73,    99,    47,    60,     0,     0,    97,
801178825Sdfr      61,     0,    74,    96,   101,    98,     0,    72,    86,     0,
802178825Sdfr      25,    29,    33,    32,    28,    35,    36,    34,    37,    38,
803178825Sdfr      39,    40,    31,    26,    70,    71,    27,    41,    90,    30,
804178825Sdfr      94,    19,    22,   113,    56,     0,     0,     0,     0,    48,
805178825Sdfr      58,    61,     0,     0,     0,     0,     0,    24,    88,    89,
806178825Sdfr      87,     0,     0,     0,    75,    91,    92,     0,    17,     0,
807178825Sdfr       0,     0,   106,   102,     0,    55,    50,     0,   132,     0,
808178825Sdfr     135,   131,   129,   130,   134,   136,     0,   120,   121,   127,
809178825Sdfr     128,   123,   122,   124,   133,   126,   125,     0,    59,    62,
810178825Sdfr      64,     0,     0,    68,    67,     0,     0,    93,     0,     0,
811178825Sdfr       0,     0,    77,    78,    79,    84,     0,     0,   109,   105,
812178825Sdfr       0,    69,     0,   107,     0,     0,    54,     0,     0,    46,
813178825Sdfr      49,    63,    65,    66,    85,     0,    80,     0,    76,     0,
814178825Sdfr       0,    57,   104,   103,   108,     0,    52,    51,     0,     0,
815178825Sdfr       0,     0,     0,    81,     0,   110,    53,    45,    44,    43,
816178825Sdfr      83,     0,   111,    82
817178825Sdfr};
818178825Sdfr
819178825Sdfr/* YYDEFGOTO[NTERM-NUM].  */
820178825Sdfrstatic const yytype_int16 yydefgoto[] =
821178825Sdfr{
822178825Sdfr      -1,     2,    18,    24,    30,    31,    33,    34,    35,    39,
823178825Sdfr      40,    36,    41,    69,    70,    71,    99,    72,   125,   126,
824178825Sdfr      73,   127,    74,    75,    76,    77,   104,    78,    79,    80,
825178825Sdfr      81,    82,    83,    84,    85,    86,   114,   161,   162,   163,
826178825Sdfr     164,    87,    88,   111,   117,    42,    89,    90,   121,   122,
827178825Sdfr     123,   167,   168,     4,   135,     9,    10,   136,   137,   138,
828178825Sdfr     139,   140,   141,   142,   143,   144,   145,   146
829178825Sdfr};
830178825Sdfr
831178825Sdfr/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
832178825Sdfr   STATE-NUM.  */
833178825Sdfr#define YYPACT_NINF -113
834178825Sdfrstatic const yytype_int16 yypact[] =
835178825Sdfr{
836178825Sdfr     -74,   -67,    38,   -69,    23,  -113,  -113,   -44,  -113,   -41,
837178825Sdfr     -69,     4,   -26,  -113,  -113,    -3,     1,    10,    52,   -10,
838178825Sdfr    -113,  -113,  -113,    45,    13,  -113,  -113,    77,   -35,    15,
839178825Sdfr      64,    19,    17,    20,    15,  -113,    85,  -113,    25,  -113,
840178825Sdfr      19,  -113,  -113,    15,  -113,  -113,    27,    47,  -113,  -113,
841178825Sdfr      26,    29,  -113,  -113,  -113,   -30,  -113,    89,    61,  -113,
842178825Sdfr     -57,   -47,  -113,  -113,  -113,  -113,    82,  -113,    -4,   -68,
843178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,
844178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,   -17,  -113,
845178825Sdfr    -113,  -113,  -113,   -67,    35,    33,    46,    51,    46,  -113,
846178825Sdfr    -113,    69,    44,   -73,    88,    82,   -72,    56,  -113,  -113,
847178825Sdfr    -113,    49,    93,     7,  -113,  -113,  -113,    82,  -113,    58,
848178825Sdfr      82,   -76,   -13,  -113,    57,    59,  -113,    60,  -113,    68,
849178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,   -75,  -113,  -113,  -113,
850178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,  -113,   -63,  -113,  -113,
851178825Sdfr    -113,   -62,    82,    56,  -113,   -46,    65,  -113,   141,    82,
852178825Sdfr     142,    63,  -113,  -113,  -113,    56,    66,   -38,  -113,    56,
853178825Sdfr     -16,  -113,    93,  -113,    76,    -7,  -113,    93,    81,  -113,
854178825Sdfr    -113,  -113,    56,  -113,  -113,    72,   -19,    93,  -113,    83,
855178825Sdfr      58,  -113,  -113,  -113,  -113,    78,  -113,  -113,    80,    84,
856178825Sdfr      87,    62,   162,  -113,    90,  -113,  -113,  -113,  -113,  -113,
857178825Sdfr    -113,    93,  -113,  -113
858178825Sdfr};
859178825Sdfr
860178825Sdfr/* YYPGOTO[NTERM-NUM].  */
861178825Sdfrstatic const yytype_int16 yypgoto[] =
862178825Sdfr{
863178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,   150,   136,
864178825Sdfr    -113,   143,  -113,   -65,  -113,  -113,    86,  -113,    91,    16,
865178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,    92,  -113,  -113,  -113,
866178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,
867178825Sdfr    -113,  -113,  -113,  -113,  -113,  -113,  -113,  -113,   -60,  -113,
868178825Sdfr      22,  -113,    -5,    97,     2,   184,  -113,  -112,  -113,  -113,
869178825Sdfr    -113,  -113,  -113,  -113,  -113,    21,  -113,  -113
870178825Sdfr};
871178825Sdfr
872178825Sdfr/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
873178825Sdfr   positive, shift that token.  If negative, reduce the rule which
874178825Sdfr   number is the opposite.  If zero, do what YYDEFACT says.
875178825Sdfr   If YYTABLE_NINF, syntax error.  */
876178825Sdfr#define YYTABLE_NINF -13
877178825Sdfrstatic const yytype_int16 yytable[] =
878178825Sdfr{
879178825Sdfr     157,   107,   108,     5,   202,    29,   105,   172,   178,   102,
880178825Sdfr     115,    15,     1,   120,   120,   170,   112,     7,   179,   171,
881178825Sdfr       8,   116,   150,   154,   113,   158,   159,     3,   175,   170,
882178825Sdfr     160,    16,   180,   181,    47,    48,    49,   103,     6,    50,
883178825Sdfr     153,   173,    17,   151,    11,   170,   155,   106,    12,   183,
884178825Sdfr      51,   -12,   165,   190,    13,   169,   109,   191,    52,    53,
885178825Sdfr     194,    54,    97,    19,    98,   198,   200,    20,    55,   192,
886178825Sdfr     120,    21,   110,   113,    56,   203,    57,    58,   196,   124,
887178825Sdfr      22,    23,   128,    25,    26,    28,    59,   182,    37,    60,
888178825Sdfr      61,    47,    48,    49,   186,     5,    50,    27,   129,   213,
889178825Sdfr     130,    32,    62,    63,    64,    38,    65,    51,    43,    66,
890178825Sdfr      44,    67,   128,    93,    94,    52,    53,    46,    54,   120,
891178825Sdfr      95,    68,   131,    96,   128,    55,   100,   199,   101,   119,
892178825Sdfr     130,    56,   124,    57,    58,   102,    97,   132,   156,   133,
893178825Sdfr     134,   152,   130,    59,   166,     3,    60,    61,   113,   174,
894178825Sdfr     175,   177,   131,   185,   187,   176,   188,   210,   189,    62,
895178825Sdfr      63,    64,   184,    65,   131,   134,   201,   132,    67,   133,
896178825Sdfr     134,   206,   204,   207,   211,     3,    91,   208,    68,   132,
897178825Sdfr     209,   133,   134,   212,    45,   205,    92,     3,   149,   147,
898178825Sdfr     118,   197,   193,   148,    14,   195
899178825Sdfr};
900178825Sdfr
901178825Sdfrstatic const yytype_uint8 yycheck[] =
902178825Sdfr{
903178825Sdfr     112,    66,     6,     1,    23,    40,    53,    20,    83,    66,
904178825Sdfr      27,     7,    86,    86,    86,    91,    84,    86,    93,    95,
905178825Sdfr      89,    38,    95,    95,    92,    18,    19,    94,    91,    91,
906178825Sdfr      23,    27,    95,    95,     9,    10,    11,    94,     0,    14,
907178825Sdfr     105,    54,    38,   103,    21,    91,   106,    94,    92,    95,
908178825Sdfr      25,    86,   117,    91,    95,   120,    60,    95,    33,    34,
909178825Sdfr     172,    36,    92,    89,    94,   177,   178,    70,    43,    85,
910178825Sdfr      86,    70,    76,    92,    49,   187,    51,    52,    85,    86,
911178825Sdfr      70,    29,    31,    93,    39,     8,    61,   152,    24,    64,
912178825Sdfr      65,     9,    10,    11,   159,    93,    14,    84,    47,   211,
913178825Sdfr      49,    86,    77,    78,    79,    86,    81,    25,    91,    84,
914178825Sdfr      90,    86,    31,    86,    67,    33,    34,    32,    36,    86,
915178825Sdfr      94,    96,    71,    94,    31,    43,    37,    46,    67,    94,
916178825Sdfr      49,    49,    86,    51,    52,    66,    92,    86,    89,    88,
917178825Sdfr      89,    53,    49,    61,    86,    94,    64,    65,    92,    92,
918178825Sdfr      91,    83,    71,    12,    12,    95,    93,    95,    92,    77,
919178825Sdfr      78,    79,    97,    81,    71,    89,    94,    86,    86,    88,
920178825Sdfr      89,    93,    89,    93,    12,    94,    40,    93,    96,    86,
921178825Sdfr      93,    88,    89,    93,    34,   190,    43,    94,   102,    98,
922178825Sdfr      93,   175,   170,   101,    10,   174
923178825Sdfr};
924178825Sdfr
925178825Sdfr/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
926178825Sdfr   symbol of state STATE-NUM.  */
927178825Sdfrstatic const yytype_uint8 yystos[] =
928178825Sdfr{
929178825Sdfr       0,    86,    99,    94,   151,   152,     0,    86,    89,   153,
930178825Sdfr     154,    21,    92,    95,   153,     7,    27,    38,   100,    89,
931178825Sdfr      70,    70,    70,    29,   101,    93,    39,    84,     8,    40,
932178825Sdfr     102,   103,    86,   104,   105,   106,   109,    24,    86,   107,
933178825Sdfr     108,   110,   143,    91,    90,   106,    32,     9,    10,    11,
934178825Sdfr      14,    25,    33,    34,    36,    43,    49,    51,    52,    61,
935178825Sdfr      64,    65,    77,    78,    79,    81,    84,    86,    96,   111,
936178825Sdfr     112,   113,   115,   118,   120,   121,   122,   123,   125,   126,
937178825Sdfr     127,   128,   129,   130,   131,   132,   133,   139,   140,   144,
938178825Sdfr     145,   107,   109,    86,    67,    94,    94,    92,    94,   114,
939178825Sdfr      37,    67,    66,    94,   124,    53,    94,   111,     6,    60,
940178825Sdfr      76,   141,    84,    92,   134,    27,    38,   142,   151,    94,
941178825Sdfr      86,   146,   147,   148,    86,   116,   117,   119,    31,    47,
942178825Sdfr      49,    71,    86,    88,    89,   152,   155,   156,   157,   158,
943178825Sdfr     159,   160,   161,   162,   163,   164,   165,   116,   124,   114,
944178825Sdfr      95,   146,    53,   111,    95,   146,    89,   155,    18,    19,
945178825Sdfr      23,   135,   136,   137,   138,   111,    86,   149,   150,   111,
946178825Sdfr      91,    95,    20,    54,    92,    91,    95,    83,    83,    93,
947178825Sdfr      95,    95,   111,    95,    97,    12,   111,    12,    93,    92,
948178825Sdfr      91,    95,    85,   148,   155,   163,    85,   117,   155,    46,
949178825Sdfr     155,    94,    23,   155,    89,   150,    93,    93,    93,    93,
950178825Sdfr      95,    12,    93,   155
951178825Sdfr};
952178825Sdfr
953178825Sdfr#define yyerrok		(yyerrstatus = 0)
954178825Sdfr#define yyclearin	(yychar = YYEMPTY)
955178825Sdfr#define YYEMPTY		(-2)
956178825Sdfr#define YYEOF		0
957178825Sdfr
958178825Sdfr#define YYACCEPT	goto yyacceptlab
959178825Sdfr#define YYABORT		goto yyabortlab
960178825Sdfr#define YYERROR		goto yyerrorlab
961178825Sdfr
962178825Sdfr
963178825Sdfr/* Like YYERROR except do call yyerror.  This remains here temporarily
964178825Sdfr   to ease the transition to the new meaning of YYERROR, for GCC.
965178825Sdfr   Once GCC version 2 has supplanted version 1, this can go.  */
966178825Sdfr
967178825Sdfr#define YYFAIL		goto yyerrlab
968178825Sdfr
969178825Sdfr#define YYRECOVERING()  (!!yyerrstatus)
970178825Sdfr
971178825Sdfr#define YYBACKUP(Token, Value)					\
972178825Sdfrdo								\
973178825Sdfr  if (yychar == YYEMPTY && yylen == 1)				\
974178825Sdfr    {								\
975178825Sdfr      yychar = (Token);						\
976178825Sdfr      yylval = (Value);						\
977178825Sdfr      yytoken = YYTRANSLATE (yychar);				\
978178825Sdfr      YYPOPSTACK (1);						\
979178825Sdfr      goto yybackup;						\
980178825Sdfr    }								\
981178825Sdfr  else								\
982178825Sdfr    {								\
983178825Sdfr      yyerror (YY_("syntax error: cannot back up")); \
984178825Sdfr      YYERROR;							\
985178825Sdfr    }								\
986178825Sdfrwhile (YYID (0))
987178825Sdfr
988178825Sdfr
989178825Sdfr#define YYTERROR	1
990178825Sdfr#define YYERRCODE	256
991178825Sdfr
992178825Sdfr
993178825Sdfr/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
994178825Sdfr   If N is 0, then set CURRENT to the empty location which ends
995178825Sdfr   the previous symbol: RHS[0] (always defined).  */
996178825Sdfr
997178825Sdfr#define YYRHSLOC(Rhs, K) ((Rhs)[K])
998178825Sdfr#ifndef YYLLOC_DEFAULT
999178825Sdfr# define YYLLOC_DEFAULT(Current, Rhs, N)				\
1000178825Sdfr    do									\
1001178825Sdfr      if (YYID (N))                                                    \
1002178825Sdfr	{								\
1003178825Sdfr	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
1004178825Sdfr	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
1005178825Sdfr	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
1006178825Sdfr	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
1007178825Sdfr	}								\
1008178825Sdfr      else								\
1009178825Sdfr	{								\
1010178825Sdfr	  (Current).first_line   = (Current).last_line   =		\
1011178825Sdfr	    YYRHSLOC (Rhs, 0).last_line;				\
1012178825Sdfr	  (Current).first_column = (Current).last_column =		\
1013178825Sdfr	    YYRHSLOC (Rhs, 0).last_column;				\
1014178825Sdfr	}								\
1015178825Sdfr    while (YYID (0))
1016178825Sdfr#endif
1017178825Sdfr
1018178825Sdfr
1019178825Sdfr/* YY_LOCATION_PRINT -- Print the location on the stream.
1020178825Sdfr   This macro was not mandated originally: define only if we know
1021178825Sdfr   we won't break user code: when these are the locations we know.  */
1022178825Sdfr
1023178825Sdfr#ifndef YY_LOCATION_PRINT
1024178825Sdfr# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1025178825Sdfr#  define YY_LOCATION_PRINT(File, Loc)			\
1026178825Sdfr     fprintf (File, "%d.%d-%d.%d",			\
1027178825Sdfr	      (Loc).first_line, (Loc).first_column,	\
1028178825Sdfr	      (Loc).last_line,  (Loc).last_column)
1029178825Sdfr# else
1030178825Sdfr#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1031178825Sdfr# endif
1032178825Sdfr#endif
1033178825Sdfr
1034178825Sdfr
1035178825Sdfr/* YYLEX -- calling `yylex' with the right arguments.  */
1036178825Sdfr
1037178825Sdfr#ifdef YYLEX_PARAM
1038178825Sdfr# define YYLEX yylex (YYLEX_PARAM)
1039178825Sdfr#else
1040178825Sdfr# define YYLEX yylex ()
1041178825Sdfr#endif
1042178825Sdfr
1043178825Sdfr/* Enable debugging if requested.  */
1044178825Sdfr#if YYDEBUG
1045178825Sdfr
1046178825Sdfr# ifndef YYFPRINTF
1047178825Sdfr#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1048178825Sdfr#  define YYFPRINTF fprintf
1049178825Sdfr# endif
1050178825Sdfr
1051178825Sdfr# define YYDPRINTF(Args)			\
1052178825Sdfrdo {						\
1053178825Sdfr  if (yydebug)					\
1054178825Sdfr    YYFPRINTF Args;				\
1055178825Sdfr} while (YYID (0))
1056178825Sdfr
1057178825Sdfr# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
1058178825Sdfrdo {									  \
1059178825Sdfr  if (yydebug)								  \
1060178825Sdfr    {									  \
1061178825Sdfr      YYFPRINTF (stderr, "%s ", Title);					  \
1062178825Sdfr      yy_symbol_print (stderr,						  \
1063178825Sdfr		  Type, Value); \
1064178825Sdfr      YYFPRINTF (stderr, "\n");						  \
1065178825Sdfr    }									  \
1066178825Sdfr} while (YYID (0))
1067178825Sdfr
1068178825Sdfr
1069178825Sdfr/*--------------------------------.
1070178825Sdfr| Print this symbol on YYOUTPUT.  |
1071178825Sdfr`--------------------------------*/
1072178825Sdfr
1073178825Sdfr/*ARGSUSED*/
1074178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1075178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1076178825Sdfrstatic void
1077178825Sdfryy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1078178825Sdfr#else
1079178825Sdfrstatic void
1080178825Sdfryy_symbol_value_print (yyoutput, yytype, yyvaluep)
1081178825Sdfr    FILE *yyoutput;
1082178825Sdfr    int yytype;
1083178825Sdfr    YYSTYPE const * const yyvaluep;
1084178825Sdfr#endif
1085178825Sdfr{
1086178825Sdfr  if (!yyvaluep)
1087178825Sdfr    return;
1088178825Sdfr# ifdef YYPRINT
1089178825Sdfr  if (yytype < YYNTOKENS)
1090178825Sdfr    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1091178825Sdfr# else
1092178825Sdfr  YYUSE (yyoutput);
1093178825Sdfr# endif
1094178825Sdfr  switch (yytype)
1095178825Sdfr    {
1096178825Sdfr      default:
1097178825Sdfr	break;
1098178825Sdfr    }
1099178825Sdfr}
1100178825Sdfr
1101178825Sdfr
1102178825Sdfr/*--------------------------------.
1103178825Sdfr| Print this symbol on YYOUTPUT.  |
1104178825Sdfr`--------------------------------*/
1105178825Sdfr
1106178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1107178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1108178825Sdfrstatic void
1109178825Sdfryy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1110178825Sdfr#else
1111178825Sdfrstatic void
1112178825Sdfryy_symbol_print (yyoutput, yytype, yyvaluep)
1113178825Sdfr    FILE *yyoutput;
1114178825Sdfr    int yytype;
1115178825Sdfr    YYSTYPE const * const yyvaluep;
1116178825Sdfr#endif
1117178825Sdfr{
1118178825Sdfr  if (yytype < YYNTOKENS)
1119178825Sdfr    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1120178825Sdfr  else
1121178825Sdfr    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1122178825Sdfr
1123178825Sdfr  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1124178825Sdfr  YYFPRINTF (yyoutput, ")");
1125178825Sdfr}
1126178825Sdfr
1127178825Sdfr/*------------------------------------------------------------------.
1128178825Sdfr| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1129178825Sdfr| TOP (included).                                                   |
1130178825Sdfr`------------------------------------------------------------------*/
1131178825Sdfr
1132178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1133178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1134178825Sdfrstatic void
1135178825Sdfryy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1136178825Sdfr#else
1137178825Sdfrstatic void
1138178825Sdfryy_stack_print (bottom, top)
1139178825Sdfr    yytype_int16 *bottom;
1140178825Sdfr    yytype_int16 *top;
1141178825Sdfr#endif
1142178825Sdfr{
1143178825Sdfr  YYFPRINTF (stderr, "Stack now");
1144178825Sdfr  for (; bottom <= top; ++bottom)
1145178825Sdfr    YYFPRINTF (stderr, " %d", *bottom);
1146178825Sdfr  YYFPRINTF (stderr, "\n");
1147178825Sdfr}
1148178825Sdfr
1149178825Sdfr# define YY_STACK_PRINT(Bottom, Top)				\
1150178825Sdfrdo {								\
1151178825Sdfr  if (yydebug)							\
1152178825Sdfr    yy_stack_print ((Bottom), (Top));				\
1153178825Sdfr} while (YYID (0))
1154178825Sdfr
1155178825Sdfr
1156178825Sdfr/*------------------------------------------------.
1157178825Sdfr| Report that the YYRULE is going to be reduced.  |
1158178825Sdfr`------------------------------------------------*/
1159178825Sdfr
1160178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1161178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1162178825Sdfrstatic void
1163178825Sdfryy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1164178825Sdfr#else
1165178825Sdfrstatic void
1166178825Sdfryy_reduce_print (yyvsp, yyrule)
1167178825Sdfr    YYSTYPE *yyvsp;
1168178825Sdfr    int yyrule;
1169178825Sdfr#endif
1170178825Sdfr{
1171178825Sdfr  int yynrhs = yyr2[yyrule];
1172178825Sdfr  int yyi;
1173178825Sdfr  unsigned long int yylno = yyrline[yyrule];
1174178825Sdfr  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1175178825Sdfr	     yyrule - 1, yylno);
1176178825Sdfr  /* The symbols being reduced.  */
1177178825Sdfr  for (yyi = 0; yyi < yynrhs; yyi++)
1178178825Sdfr    {
1179178825Sdfr      fprintf (stderr, "   $%d = ", yyi + 1);
1180178825Sdfr      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1181178825Sdfr		       &(yyvsp[(yyi + 1) - (yynrhs)])
1182178825Sdfr		       		       );
1183178825Sdfr      fprintf (stderr, "\n");
1184178825Sdfr    }
1185178825Sdfr}
1186178825Sdfr
1187178825Sdfr# define YY_REDUCE_PRINT(Rule)		\
1188178825Sdfrdo {					\
1189178825Sdfr  if (yydebug)				\
1190178825Sdfr    yy_reduce_print (yyvsp, Rule); \
1191178825Sdfr} while (YYID (0))
1192178825Sdfr
1193178825Sdfr/* Nonzero means print parse trace.  It is left uninitialized so that
1194178825Sdfr   multiple parsers can coexist.  */
1195178825Sdfrint yydebug;
1196178825Sdfr#else /* !YYDEBUG */
1197178825Sdfr# define YYDPRINTF(Args)
1198178825Sdfr# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1199178825Sdfr# define YY_STACK_PRINT(Bottom, Top)
1200178825Sdfr# define YY_REDUCE_PRINT(Rule)
1201178825Sdfr#endif /* !YYDEBUG */
1202178825Sdfr
1203178825Sdfr
1204178825Sdfr/* YYINITDEPTH -- initial size of the parser's stacks.  */
1205178825Sdfr#ifndef	YYINITDEPTH
1206178825Sdfr# define YYINITDEPTH 200
1207178825Sdfr#endif
1208178825Sdfr
1209178825Sdfr/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1210178825Sdfr   if the built-in stack extension method is used).
1211178825Sdfr
1212178825Sdfr   Do not make this value too large; the results are undefined if
1213178825Sdfr   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1214178825Sdfr   evaluated with infinite-precision integer arithmetic.  */
1215178825Sdfr
1216178825Sdfr#ifndef YYMAXDEPTH
1217178825Sdfr# define YYMAXDEPTH 10000
1218178825Sdfr#endif
1219178825Sdfr
1220178825Sdfr
1221178825Sdfr
1222178825Sdfr#if YYERROR_VERBOSE
1223178825Sdfr
1224178825Sdfr# ifndef yystrlen
1225178825Sdfr#  if defined __GLIBC__ && defined _STRING_H
1226178825Sdfr#   define yystrlen strlen
1227178825Sdfr#  else
1228178825Sdfr/* Return the length of YYSTR.  */
1229178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1230178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1231178825Sdfrstatic YYSIZE_T
1232178825Sdfryystrlen (const char *yystr)
1233178825Sdfr#else
1234178825Sdfrstatic YYSIZE_T
1235178825Sdfryystrlen (yystr)
1236178825Sdfr    const char *yystr;
1237178825Sdfr#endif
1238178825Sdfr{
1239178825Sdfr  YYSIZE_T yylen;
1240178825Sdfr  for (yylen = 0; yystr[yylen]; yylen++)
1241178825Sdfr    continue;
1242178825Sdfr  return yylen;
1243178825Sdfr}
1244178825Sdfr#  endif
1245178825Sdfr# endif
1246178825Sdfr
1247178825Sdfr# ifndef yystpcpy
1248178825Sdfr#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1249178825Sdfr#   define yystpcpy stpcpy
1250178825Sdfr#  else
1251178825Sdfr/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1252178825Sdfr   YYDEST.  */
1253178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1254178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1255178825Sdfrstatic char *
1256178825Sdfryystpcpy (char *yydest, const char *yysrc)
1257178825Sdfr#else
1258178825Sdfrstatic char *
1259178825Sdfryystpcpy (yydest, yysrc)
1260178825Sdfr    char *yydest;
1261178825Sdfr    const char *yysrc;
1262178825Sdfr#endif
1263178825Sdfr{
1264178825Sdfr  char *yyd = yydest;
1265178825Sdfr  const char *yys = yysrc;
1266178825Sdfr
1267178825Sdfr  while ((*yyd++ = *yys++) != '\0')
1268178825Sdfr    continue;
1269178825Sdfr
1270178825Sdfr  return yyd - 1;
1271178825Sdfr}
1272178825Sdfr#  endif
1273178825Sdfr# endif
1274178825Sdfr
1275178825Sdfr# ifndef yytnamerr
1276178825Sdfr/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1277178825Sdfr   quotes and backslashes, so that it's suitable for yyerror.  The
1278178825Sdfr   heuristic is that double-quoting is unnecessary unless the string
1279178825Sdfr   contains an apostrophe, a comma, or backslash (other than
1280178825Sdfr   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1281178825Sdfr   null, do not copy; instead, return the length of what the result
1282178825Sdfr   would have been.  */
1283178825Sdfrstatic YYSIZE_T
1284178825Sdfryytnamerr (char *yyres, const char *yystr)
1285178825Sdfr{
1286178825Sdfr  if (*yystr == '"')
1287178825Sdfr    {
1288178825Sdfr      YYSIZE_T yyn = 0;
1289178825Sdfr      char const *yyp = yystr;
1290178825Sdfr
1291178825Sdfr      for (;;)
1292178825Sdfr	switch (*++yyp)
1293178825Sdfr	  {
1294178825Sdfr	  case '\'':
1295178825Sdfr	  case ',':
1296178825Sdfr	    goto do_not_strip_quotes;
1297178825Sdfr
1298178825Sdfr	  case '\\':
1299178825Sdfr	    if (*++yyp != '\\')
1300178825Sdfr	      goto do_not_strip_quotes;
1301178825Sdfr	    /* Fall through.  */
1302178825Sdfr	  default:
1303178825Sdfr	    if (yyres)
1304178825Sdfr	      yyres[yyn] = *yyp;
1305178825Sdfr	    yyn++;
1306178825Sdfr	    break;
1307178825Sdfr
1308178825Sdfr	  case '"':
1309178825Sdfr	    if (yyres)
1310178825Sdfr	      yyres[yyn] = '\0';
1311178825Sdfr	    return yyn;
1312178825Sdfr	  }
1313178825Sdfr    do_not_strip_quotes: ;
1314178825Sdfr    }
1315178825Sdfr
1316178825Sdfr  if (! yyres)
1317178825Sdfr    return yystrlen (yystr);
1318178825Sdfr
1319178825Sdfr  return yystpcpy (yyres, yystr) - yyres;
1320178825Sdfr}
1321178825Sdfr# endif
1322178825Sdfr
1323178825Sdfr/* Copy into YYRESULT an error message about the unexpected token
1324178825Sdfr   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1325178825Sdfr   including the terminating null byte.  If YYRESULT is null, do not
1326178825Sdfr   copy anything; just return the number of bytes that would be
1327178825Sdfr   copied.  As a special case, return 0 if an ordinary "syntax error"
1328178825Sdfr   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1329178825Sdfr   size calculation.  */
1330178825Sdfrstatic YYSIZE_T
1331178825Sdfryysyntax_error (char *yyresult, int yystate, int yychar)
1332178825Sdfr{
1333178825Sdfr  int yyn = yypact[yystate];
1334178825Sdfr
1335178825Sdfr  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1336178825Sdfr    return 0;
1337178825Sdfr  else
1338178825Sdfr    {
1339178825Sdfr      int yytype = YYTRANSLATE (yychar);
1340178825Sdfr      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1341178825Sdfr      YYSIZE_T yysize = yysize0;
1342178825Sdfr      YYSIZE_T yysize1;
1343178825Sdfr      int yysize_overflow = 0;
1344178825Sdfr      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1345178825Sdfr      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1346178825Sdfr      int yyx;
1347178825Sdfr
1348178825Sdfr# if 0
1349178825Sdfr      /* This is so xgettext sees the translatable formats that are
1350178825Sdfr	 constructed on the fly.  */
1351178825Sdfr      YY_("syntax error, unexpected %s");
1352178825Sdfr      YY_("syntax error, unexpected %s, expecting %s");
1353178825Sdfr      YY_("syntax error, unexpected %s, expecting %s or %s");
1354178825Sdfr      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1355178825Sdfr      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1356178825Sdfr# endif
1357178825Sdfr      char *yyfmt;
1358178825Sdfr      char const *yyf;
1359178825Sdfr      static char const yyunexpected[] = "syntax error, unexpected %s";
1360178825Sdfr      static char const yyexpecting[] = ", expecting %s";
1361178825Sdfr      static char const yyor[] = " or %s";
1362178825Sdfr      char yyformat[sizeof yyunexpected
1363178825Sdfr		    + sizeof yyexpecting - 1
1364178825Sdfr		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1365178825Sdfr		       * (sizeof yyor - 1))];
1366178825Sdfr      char const *yyprefix = yyexpecting;
1367178825Sdfr
1368178825Sdfr      /* Start YYX at -YYN if negative to avoid negative indexes in
1369178825Sdfr	 YYCHECK.  */
1370178825Sdfr      int yyxbegin = yyn < 0 ? -yyn : 0;
1371178825Sdfr
1372178825Sdfr      /* Stay within bounds of both yycheck and yytname.  */
1373178825Sdfr      int yychecklim = YYLAST - yyn + 1;
1374178825Sdfr      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1375178825Sdfr      int yycount = 1;
1376178825Sdfr
1377178825Sdfr      yyarg[0] = yytname[yytype];
1378178825Sdfr      yyfmt = yystpcpy (yyformat, yyunexpected);
1379178825Sdfr
1380178825Sdfr      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1381178825Sdfr	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1382178825Sdfr	  {
1383178825Sdfr	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1384178825Sdfr	      {
1385178825Sdfr		yycount = 1;
1386178825Sdfr		yysize = yysize0;
1387178825Sdfr		yyformat[sizeof yyunexpected - 1] = '\0';
1388178825Sdfr		break;
1389178825Sdfr	      }
1390178825Sdfr	    yyarg[yycount++] = yytname[yyx];
1391178825Sdfr	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1392178825Sdfr	    yysize_overflow |= (yysize1 < yysize);
1393178825Sdfr	    yysize = yysize1;
1394178825Sdfr	    yyfmt = yystpcpy (yyfmt, yyprefix);
1395178825Sdfr	    yyprefix = yyor;
1396178825Sdfr	  }
1397178825Sdfr
1398178825Sdfr      yyf = YY_(yyformat);
1399178825Sdfr      yysize1 = yysize + yystrlen (yyf);
1400178825Sdfr      yysize_overflow |= (yysize1 < yysize);
1401178825Sdfr      yysize = yysize1;
1402178825Sdfr
1403178825Sdfr      if (yysize_overflow)
1404178825Sdfr	return YYSIZE_MAXIMUM;
1405178825Sdfr
1406178825Sdfr      if (yyresult)
1407178825Sdfr	{
1408178825Sdfr	  /* Avoid sprintf, as that infringes on the user's name space.
1409178825Sdfr	     Don't have undefined behavior even if the translation
1410178825Sdfr	     produced a string with the wrong number of "%s"s.  */
1411178825Sdfr	  char *yyp = yyresult;
1412178825Sdfr	  int yyi = 0;
1413178825Sdfr	  while ((*yyp = *yyf) != '\0')
1414178825Sdfr	    {
1415178825Sdfr	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1416178825Sdfr		{
1417178825Sdfr		  yyp += yytnamerr (yyp, yyarg[yyi++]);
1418178825Sdfr		  yyf += 2;
1419178825Sdfr		}
1420178825Sdfr	      else
1421178825Sdfr		{
1422178825Sdfr		  yyp++;
1423178825Sdfr		  yyf++;
1424178825Sdfr		}
1425178825Sdfr	    }
1426178825Sdfr	}
1427178825Sdfr      return yysize;
1428178825Sdfr    }
1429178825Sdfr}
1430178825Sdfr#endif /* YYERROR_VERBOSE */
1431178825Sdfr
1432178825Sdfr
1433178825Sdfr/*-----------------------------------------------.
1434178825Sdfr| Release the memory associated to this symbol.  |
1435178825Sdfr`-----------------------------------------------*/
1436178825Sdfr
1437178825Sdfr/*ARGSUSED*/
1438178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1439178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1440178825Sdfrstatic void
1441178825Sdfryydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1442178825Sdfr#else
1443178825Sdfrstatic void
1444178825Sdfryydestruct (yymsg, yytype, yyvaluep)
1445178825Sdfr    const char *yymsg;
1446178825Sdfr    int yytype;
1447178825Sdfr    YYSTYPE *yyvaluep;
1448178825Sdfr#endif
1449178825Sdfr{
1450178825Sdfr  YYUSE (yyvaluep);
1451178825Sdfr
1452178825Sdfr  if (!yymsg)
1453178825Sdfr    yymsg = "Deleting";
1454178825Sdfr  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1455178825Sdfr
1456178825Sdfr  switch (yytype)
1457178825Sdfr    {
1458178825Sdfr
1459178825Sdfr      default:
1460178825Sdfr	break;
1461178825Sdfr    }
1462178825Sdfr}
1463178825Sdfr
1464178825Sdfr
1465178825Sdfr/* Prevent warnings from -Wmissing-prototypes.  */
1466178825Sdfr
1467178825Sdfr#ifdef YYPARSE_PARAM
1468178825Sdfr#if defined __STDC__ || defined __cplusplus
1469178825Sdfrint yyparse (void *YYPARSE_PARAM);
1470178825Sdfr#else
1471178825Sdfrint yyparse ();
1472178825Sdfr#endif
1473178825Sdfr#else /* ! YYPARSE_PARAM */
1474178825Sdfr#if defined __STDC__ || defined __cplusplus
1475178825Sdfrint yyparse (void);
1476178825Sdfr#else
1477178825Sdfrint yyparse ();
1478178825Sdfr#endif
1479178825Sdfr#endif /* ! YYPARSE_PARAM */
1480178825Sdfr
1481178825Sdfr
1482178825Sdfr
1483178825Sdfr/* The look-ahead symbol.  */
1484178825Sdfrint yychar;
1485178825Sdfr
1486178825Sdfr/* The semantic value of the look-ahead symbol.  */
1487178825SdfrYYSTYPE yylval;
1488178825Sdfr
1489178825Sdfr/* Number of syntax errors so far.  */
1490178825Sdfrint yynerrs;
1491178825Sdfr
1492178825Sdfr
1493178825Sdfr
1494178825Sdfr/*----------.
1495178825Sdfr| yyparse.  |
1496178825Sdfr`----------*/
1497178825Sdfr
1498178825Sdfr#ifdef YYPARSE_PARAM
1499178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1500178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1501178825Sdfrint
1502178825Sdfryyparse (void *YYPARSE_PARAM)
1503178825Sdfr#else
1504178825Sdfrint
1505178825Sdfryyparse (YYPARSE_PARAM)
1506178825Sdfr    void *YYPARSE_PARAM;
1507178825Sdfr#endif
1508178825Sdfr#else /* ! YYPARSE_PARAM */
1509178825Sdfr#if (defined __STDC__ || defined __C99__FUNC__ \
1510178825Sdfr     || defined __cplusplus || defined _MSC_VER)
1511178825Sdfrint
1512178825Sdfryyparse (void)
1513178825Sdfr#else
1514178825Sdfrint
1515178825Sdfryyparse ()
1516178825Sdfr
1517178825Sdfr#endif
1518178825Sdfr#endif
1519178825Sdfr{
1520178825Sdfr
1521178825Sdfr  int yystate;
1522178825Sdfr  int yyn;
1523178825Sdfr  int yyresult;
1524178825Sdfr  /* Number of tokens to shift before error messages enabled.  */
1525178825Sdfr  int yyerrstatus;
1526178825Sdfr  /* Look-ahead token as an internal (translated) token number.  */
1527178825Sdfr  int yytoken = 0;
1528178825Sdfr#if YYERROR_VERBOSE
1529178825Sdfr  /* Buffer for error messages, and its allocated size.  */
1530178825Sdfr  char yymsgbuf[128];
1531178825Sdfr  char *yymsg = yymsgbuf;
1532178825Sdfr  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1533178825Sdfr#endif
1534178825Sdfr
1535178825Sdfr  /* Three stacks and their tools:
1536178825Sdfr     `yyss': related to states,
1537178825Sdfr     `yyvs': related to semantic values,
1538178825Sdfr     `yyls': related to locations.
1539178825Sdfr
1540178825Sdfr     Refer to the stacks thru separate pointers, to allow yyoverflow
1541178825Sdfr     to reallocate them elsewhere.  */
1542178825Sdfr
1543178825Sdfr  /* The state stack.  */
1544178825Sdfr  yytype_int16 yyssa[YYINITDEPTH];
1545178825Sdfr  yytype_int16 *yyss = yyssa;
1546178825Sdfr  yytype_int16 *yyssp;
1547178825Sdfr
1548178825Sdfr  /* The semantic value stack.  */
1549178825Sdfr  YYSTYPE yyvsa[YYINITDEPTH];
1550178825Sdfr  YYSTYPE *yyvs = yyvsa;
1551178825Sdfr  YYSTYPE *yyvsp;
1552178825Sdfr
1553178825Sdfr
1554178825Sdfr
1555178825Sdfr#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1556178825Sdfr
1557178825Sdfr  YYSIZE_T yystacksize = YYINITDEPTH;
1558178825Sdfr
1559178825Sdfr  /* The variables used to return semantic value and location from the
1560178825Sdfr     action routines.  */
1561178825Sdfr  YYSTYPE yyval;
1562178825Sdfr
1563178825Sdfr
1564178825Sdfr  /* The number of symbols on the RHS of the reduced rule.
1565178825Sdfr     Keep to zero when no symbol should be popped.  */
1566178825Sdfr  int yylen = 0;
1567178825Sdfr
1568178825Sdfr  YYDPRINTF ((stderr, "Starting parse\n"));
1569178825Sdfr
1570178825Sdfr  yystate = 0;
1571178825Sdfr  yyerrstatus = 0;
1572178825Sdfr  yynerrs = 0;
1573178825Sdfr  yychar = YYEMPTY;		/* Cause a token to be read.  */
1574178825Sdfr
1575178825Sdfr  /* Initialize stack pointers.
1576178825Sdfr     Waste one element of value and location stack
1577178825Sdfr     so that they stay on the same level as the state stack.
1578178825Sdfr     The wasted elements are never initialized.  */
1579178825Sdfr
1580178825Sdfr  yyssp = yyss;
1581178825Sdfr  yyvsp = yyvs;
1582178825Sdfr
1583178825Sdfr  goto yysetstate;
1584178825Sdfr
1585178825Sdfr/*------------------------------------------------------------.
1586178825Sdfr| yynewstate -- Push a new state, which is found in yystate.  |
1587178825Sdfr`------------------------------------------------------------*/
1588178825Sdfr yynewstate:
1589178825Sdfr  /* In all cases, when you get here, the value and location stacks
1590178825Sdfr     have just been pushed.  So pushing a state here evens the stacks.  */
1591178825Sdfr  yyssp++;
1592178825Sdfr
1593178825Sdfr yysetstate:
1594178825Sdfr  *yyssp = yystate;
1595178825Sdfr
1596178825Sdfr  if (yyss + yystacksize - 1 <= yyssp)
1597178825Sdfr    {
1598178825Sdfr      /* Get the current used size of the three stacks, in elements.  */
1599178825Sdfr      YYSIZE_T yysize = yyssp - yyss + 1;
1600178825Sdfr
1601178825Sdfr#ifdef yyoverflow
1602178825Sdfr      {
1603178825Sdfr	/* Give user a chance to reallocate the stack.  Use copies of
1604178825Sdfr	   these so that the &'s don't force the real ones into
1605178825Sdfr	   memory.  */
1606178825Sdfr	YYSTYPE *yyvs1 = yyvs;
1607178825Sdfr	yytype_int16 *yyss1 = yyss;
1608178825Sdfr
1609178825Sdfr
1610178825Sdfr	/* Each stack pointer address is followed by the size of the
1611178825Sdfr	   data in use in that stack, in bytes.  This used to be a
1612178825Sdfr	   conditional around just the two extra args, but that might
1613178825Sdfr	   be undefined if yyoverflow is a macro.  */
1614178825Sdfr	yyoverflow (YY_("memory exhausted"),
1615178825Sdfr		    &yyss1, yysize * sizeof (*yyssp),
1616178825Sdfr		    &yyvs1, yysize * sizeof (*yyvsp),
1617178825Sdfr
1618178825Sdfr		    &yystacksize);
1619178825Sdfr
1620178825Sdfr	yyss = yyss1;
1621178825Sdfr	yyvs = yyvs1;
1622178825Sdfr      }
1623178825Sdfr#else /* no yyoverflow */
1624178825Sdfr# ifndef YYSTACK_RELOCATE
1625178825Sdfr      goto yyexhaustedlab;
1626178825Sdfr# else
1627178825Sdfr      /* Extend the stack our own way.  */
1628178825Sdfr      if (YYMAXDEPTH <= yystacksize)
1629178825Sdfr	goto yyexhaustedlab;
1630178825Sdfr      yystacksize *= 2;
1631178825Sdfr      if (YYMAXDEPTH < yystacksize)
1632178825Sdfr	yystacksize = YYMAXDEPTH;
1633178825Sdfr
1634178825Sdfr      {
1635178825Sdfr	yytype_int16 *yyss1 = yyss;
1636178825Sdfr	union yyalloc *yyptr =
1637178825Sdfr	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1638178825Sdfr	if (! yyptr)
1639178825Sdfr	  goto yyexhaustedlab;
1640178825Sdfr	YYSTACK_RELOCATE (yyss);
1641178825Sdfr	YYSTACK_RELOCATE (yyvs);
1642178825Sdfr
1643178825Sdfr#  undef YYSTACK_RELOCATE
1644178825Sdfr	if (yyss1 != yyssa)
1645178825Sdfr	  YYSTACK_FREE (yyss1);
1646178825Sdfr      }
1647178825Sdfr# endif
1648178825Sdfr#endif /* no yyoverflow */
1649178825Sdfr
1650178825Sdfr      yyssp = yyss + yysize - 1;
1651178825Sdfr      yyvsp = yyvs + yysize - 1;
1652178825Sdfr
1653178825Sdfr
1654178825Sdfr      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1655178825Sdfr		  (unsigned long int) yystacksize));
1656178825Sdfr
1657178825Sdfr      if (yyss + yystacksize - 1 <= yyssp)
1658178825Sdfr	YYABORT;
1659178825Sdfr    }
1660178825Sdfr
1661178825Sdfr  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1662178825Sdfr
1663178825Sdfr  goto yybackup;
1664178825Sdfr
1665178825Sdfr/*-----------.
1666178825Sdfr| yybackup.  |
1667178825Sdfr`-----------*/
1668178825Sdfryybackup:
1669178825Sdfr
1670178825Sdfr  /* Do appropriate processing given the current state.  Read a
1671178825Sdfr     look-ahead token if we need one and don't already have one.  */
1672178825Sdfr
1673178825Sdfr  /* First try to decide what to do without reference to look-ahead token.  */
1674178825Sdfr  yyn = yypact[yystate];
1675178825Sdfr  if (yyn == YYPACT_NINF)
1676178825Sdfr    goto yydefault;
1677178825Sdfr
1678178825Sdfr  /* Not known => get a look-ahead token if don't already have one.  */
1679178825Sdfr
1680178825Sdfr  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1681178825Sdfr  if (yychar == YYEMPTY)
1682178825Sdfr    {
1683178825Sdfr      YYDPRINTF ((stderr, "Reading a token: "));
1684178825Sdfr      yychar = YYLEX;
1685178825Sdfr    }
1686178825Sdfr
1687178825Sdfr  if (yychar <= YYEOF)
1688178825Sdfr    {
1689178825Sdfr      yychar = yytoken = YYEOF;
1690178825Sdfr      YYDPRINTF ((stderr, "Now at end of input.\n"));
1691178825Sdfr    }
1692178825Sdfr  else
1693178825Sdfr    {
1694178825Sdfr      yytoken = YYTRANSLATE (yychar);
1695178825Sdfr      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1696178825Sdfr    }
1697178825Sdfr
1698178825Sdfr  /* If the proper action on seeing token YYTOKEN is to reduce or to
1699178825Sdfr     detect an error, take that action.  */
1700178825Sdfr  yyn += yytoken;
1701178825Sdfr  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1702178825Sdfr    goto yydefault;
1703178825Sdfr  yyn = yytable[yyn];
1704178825Sdfr  if (yyn <= 0)
1705178825Sdfr    {
1706178825Sdfr      if (yyn == 0 || yyn == YYTABLE_NINF)
1707178825Sdfr	goto yyerrlab;
1708178825Sdfr      yyn = -yyn;
1709178825Sdfr      goto yyreduce;
1710178825Sdfr    }
1711178825Sdfr
1712178825Sdfr  if (yyn == YYFINAL)
1713178825Sdfr    YYACCEPT;
1714178825Sdfr
1715178825Sdfr  /* Count tokens shifted since error; after three, turn off error
1716178825Sdfr     status.  */
1717178825Sdfr  if (yyerrstatus)
1718178825Sdfr    yyerrstatus--;
1719178825Sdfr
1720178825Sdfr  /* Shift the look-ahead token.  */
1721178825Sdfr  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1722178825Sdfr
1723178825Sdfr  /* Discard the shifted token unless it is eof.  */
1724178825Sdfr  if (yychar != YYEOF)
1725178825Sdfr    yychar = YYEMPTY;
1726178825Sdfr
1727178825Sdfr  yystate = yyn;
1728178825Sdfr  *++yyvsp = yylval;
1729178825Sdfr
1730178825Sdfr  goto yynewstate;
1731178825Sdfr
1732178825Sdfr
1733178825Sdfr/*-----------------------------------------------------------.
1734178825Sdfr| yydefault -- do the default action for the current state.  |
1735178825Sdfr`-----------------------------------------------------------*/
1736178825Sdfryydefault:
1737178825Sdfr  yyn = yydefact[yystate];
1738178825Sdfr  if (yyn == 0)
1739178825Sdfr    goto yyerrlab;
1740178825Sdfr  goto yyreduce;
1741178825Sdfr
1742178825Sdfr
1743178825Sdfr/*-----------------------------.
1744178825Sdfr| yyreduce -- Do a reduction.  |
1745178825Sdfr`-----------------------------*/
1746178825Sdfryyreduce:
1747178825Sdfr  /* yyn is the number of a rule to reduce with.  */
1748178825Sdfr  yylen = yyr2[yyn];
1749178825Sdfr
1750178825Sdfr  /* If YYLEN is nonzero, implement the default value of the action:
1751178825Sdfr     `$$ = $1'.
1752178825Sdfr
1753178825Sdfr     Otherwise, the following line sets YYVAL to garbage.
1754178825Sdfr     This behavior is undocumented and Bison
1755178825Sdfr     users should not rely upon it.  Assigning to YYVAL
1756178825Sdfr     unconditionally makes the parser a bit smaller, and it avoids a
1757178825Sdfr     GCC warning that YYVAL may be used uninitialized.  */
1758178825Sdfr  yyval = yyvsp[1-yylen];
1759178825Sdfr
1760178825Sdfr
1761178825Sdfr  YY_REDUCE_PRINT (yyn);
1762178825Sdfr  switch (yyn)
1763178825Sdfr    {
1764178825Sdfr        case 2:
1765178825Sdfr#line 235 "parse.y"
1766178825Sdfr    {
1767178825Sdfr			checkundefined();
1768178825Sdfr		}
1769178825Sdfr    break;
1770178825Sdfr
1771178825Sdfr  case 4:
1772178825Sdfr#line 242 "parse.y"
1773178825Sdfr    { error_message("implicit tagging is not supported"); }
1774178825Sdfr    break;
1775178825Sdfr
1776178825Sdfr  case 5:
1777178825Sdfr#line 244 "parse.y"
1778178825Sdfr    { error_message("automatic tagging is not supported"); }
1779178825Sdfr    break;
1780178825Sdfr
1781178825Sdfr  case 7:
1782178825Sdfr#line 249 "parse.y"
1783178825Sdfr    { error_message("no extensibility options supported"); }
1784178825Sdfr    break;
1785178825Sdfr
1786178825Sdfr  case 17:
1787178825Sdfr#line 270 "parse.y"
1788178825Sdfr    {
1789178825Sdfr		    struct string_list *sl;
1790178825Sdfr		    for(sl = (yyvsp[(1) - (4)].sl); sl != NULL; sl = sl->next) {
1791178825Sdfr			Symbol *s = addsym(sl->string);
1792178825Sdfr			s->stype = Stype;
1793178825Sdfr		    }
1794178825Sdfr		    add_import((yyvsp[(3) - (4)].name));
1795178825Sdfr		}
1796178825Sdfr    break;
1797178825Sdfr
1798178825Sdfr  case 22:
1799178825Sdfr#line 289 "parse.y"
1800178825Sdfr    {
1801178825Sdfr		    (yyval.sl) = emalloc(sizeof(*(yyval.sl)));
1802178825Sdfr		    (yyval.sl)->string = (yyvsp[(1) - (3)].name);
1803178825Sdfr		    (yyval.sl)->next = (yyvsp[(3) - (3)].sl);
1804178825Sdfr		}
1805178825Sdfr    break;
1806178825Sdfr
1807178825Sdfr  case 23:
1808178825Sdfr#line 295 "parse.y"
1809178825Sdfr    {
1810178825Sdfr		    (yyval.sl) = emalloc(sizeof(*(yyval.sl)));
1811178825Sdfr		    (yyval.sl)->string = (yyvsp[(1) - (1)].name);
1812178825Sdfr		    (yyval.sl)->next = NULL;
1813178825Sdfr		}
1814178825Sdfr    break;
1815178825Sdfr
1816178825Sdfr  case 24:
1817178825Sdfr#line 303 "parse.y"
1818178825Sdfr    {
1819178825Sdfr		    Symbol *s = addsym ((yyvsp[(1) - (3)].name));
1820178825Sdfr		    s->stype = Stype;
1821178825Sdfr		    s->type = (yyvsp[(3) - (3)].type);
1822178825Sdfr		    fix_labels(s);
1823178825Sdfr		    generate_type (s);
1824178825Sdfr		}
1825178825Sdfr    break;
1826178825Sdfr
1827178825Sdfr  case 42:
1828178825Sdfr#line 334 "parse.y"
1829178825Sdfr    {
1830178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Boolean,
1831178825Sdfr				     TE_EXPLICIT, new_type(TBoolean));
1832178825Sdfr		}
1833178825Sdfr    break;
1834178825Sdfr
1835178825Sdfr  case 43:
1836178825Sdfr#line 341 "parse.y"
1837178825Sdfr    {
1838178825Sdfr		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1839178825Sdfr			error_message("Non-integer used in first part of range");
1840178825Sdfr		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1841178825Sdfr			error_message("Non-integer in second part of range");
1842178825Sdfr		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1843178825Sdfr		    (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue;
1844178825Sdfr		    (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue;
1845178825Sdfr		}
1846178825Sdfr    break;
1847178825Sdfr
1848178825Sdfr  case 44:
1849178825Sdfr#line 351 "parse.y"
1850178825Sdfr    {
1851178825Sdfr		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1852178825Sdfr			error_message("Non-integer in first part of range");
1853178825Sdfr		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1854178825Sdfr		    (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue;
1855178825Sdfr		    (yyval.range)->max = (yyvsp[(2) - (5)].value)->u.integervalue - 1;
1856178825Sdfr		}
1857178825Sdfr    break;
1858178825Sdfr
1859178825Sdfr  case 45:
1860178825Sdfr#line 359 "parse.y"
1861178825Sdfr    {
1862178825Sdfr		    if((yyvsp[(4) - (5)].value)->type != integervalue)
1863178825Sdfr			error_message("Non-integer in second part of range");
1864178825Sdfr		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1865178825Sdfr		    (yyval.range)->min = (yyvsp[(4) - (5)].value)->u.integervalue + 2;
1866178825Sdfr		    (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue;
1867178825Sdfr		}
1868178825Sdfr    break;
1869178825Sdfr
1870178825Sdfr  case 46:
1871178825Sdfr#line 367 "parse.y"
1872178825Sdfr    {
1873178825Sdfr		    if((yyvsp[(2) - (3)].value)->type != integervalue)
1874178825Sdfr			error_message("Non-integer used in limit");
1875178825Sdfr		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1876178825Sdfr		    (yyval.range)->min = (yyvsp[(2) - (3)].value)->u.integervalue;
1877178825Sdfr		    (yyval.range)->max = (yyvsp[(2) - (3)].value)->u.integervalue;
1878178825Sdfr		}
1879178825Sdfr    break;
1880178825Sdfr
1881178825Sdfr  case 47:
1882178825Sdfr#line 378 "parse.y"
1883178825Sdfr    {
1884178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer,
1885178825Sdfr				     TE_EXPLICIT, new_type(TInteger));
1886178825Sdfr		}
1887178825Sdfr    break;
1888178825Sdfr
1889178825Sdfr  case 48:
1890178825Sdfr#line 383 "parse.y"
1891178825Sdfr    {
1892178825Sdfr			(yyval.type) = new_type(TInteger);
1893178825Sdfr			(yyval.type)->range = (yyvsp[(2) - (2)].range);
1894178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type));
1895178825Sdfr		}
1896178825Sdfr    break;
1897178825Sdfr
1898178825Sdfr  case 49:
1899178825Sdfr#line 389 "parse.y"
1900178825Sdfr    {
1901178825Sdfr		  (yyval.type) = new_type(TInteger);
1902178825Sdfr		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
1903178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type));
1904178825Sdfr		}
1905178825Sdfr    break;
1906178825Sdfr
1907178825Sdfr  case 50:
1908178825Sdfr#line 397 "parse.y"
1909178825Sdfr    {
1910178825Sdfr			(yyval.members) = emalloc(sizeof(*(yyval.members)));
1911178825Sdfr			ASN1_TAILQ_INIT((yyval.members));
1912178825Sdfr			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
1913178825Sdfr		}
1914178825Sdfr    break;
1915178825Sdfr
1916178825Sdfr  case 51:
1917178825Sdfr#line 403 "parse.y"
1918178825Sdfr    {
1919178825Sdfr			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
1920178825Sdfr			(yyval.members) = (yyvsp[(1) - (3)].members);
1921178825Sdfr		}
1922178825Sdfr    break;
1923178825Sdfr
1924178825Sdfr  case 52:
1925178825Sdfr#line 408 "parse.y"
1926178825Sdfr    { (yyval.members) = (yyvsp[(1) - (3)].members); }
1927178825Sdfr    break;
1928178825Sdfr
1929178825Sdfr  case 53:
1930178825Sdfr#line 412 "parse.y"
1931178825Sdfr    {
1932178825Sdfr			(yyval.member) = emalloc(sizeof(*(yyval.member)));
1933178825Sdfr			(yyval.member)->name = (yyvsp[(1) - (4)].name);
1934178825Sdfr			(yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name));
1935178825Sdfr			output_name ((yyval.member)->gen_name);
1936178825Sdfr			(yyval.member)->val = (yyvsp[(3) - (4)].constant);
1937178825Sdfr			(yyval.member)->optional = 0;
1938178825Sdfr			(yyval.member)->ellipsis = 0;
1939178825Sdfr			(yyval.member)->type = NULL;
1940178825Sdfr		}
1941178825Sdfr    break;
1942178825Sdfr
1943178825Sdfr  case 54:
1944178825Sdfr#line 425 "parse.y"
1945178825Sdfr    {
1946178825Sdfr		  (yyval.type) = new_type(TInteger);
1947178825Sdfr		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
1948178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Enumerated, TE_EXPLICIT, (yyval.type));
1949178825Sdfr		}
1950178825Sdfr    break;
1951178825Sdfr
1952178825Sdfr  case 56:
1953178825Sdfr#line 436 "parse.y"
1954178825Sdfr    {
1955178825Sdfr		  (yyval.type) = new_type(TBitString);
1956178825Sdfr		  (yyval.type)->members = emalloc(sizeof(*(yyval.type)->members));
1957178825Sdfr		  ASN1_TAILQ_INIT((yyval.type)->members);
1958178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type));
1959178825Sdfr		}
1960178825Sdfr    break;
1961178825Sdfr
1962178825Sdfr  case 57:
1963178825Sdfr#line 443 "parse.y"
1964178825Sdfr    {
1965178825Sdfr		  (yyval.type) = new_type(TBitString);
1966178825Sdfr		  (yyval.type)->members = (yyvsp[(4) - (5)].members);
1967178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type));
1968178825Sdfr		}
1969178825Sdfr    break;
1970178825Sdfr
1971178825Sdfr  case 58:
1972178825Sdfr#line 451 "parse.y"
1973178825Sdfr    {
1974178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_OID,
1975178825Sdfr				     TE_EXPLICIT, new_type(TOID));
1976178825Sdfr		}
1977178825Sdfr    break;
1978178825Sdfr
1979178825Sdfr  case 59:
1980178825Sdfr#line 457 "parse.y"
1981178825Sdfr    {
1982178825Sdfr		    Type *t = new_type(TOctetString);
1983178825Sdfr		    t->range = (yyvsp[(3) - (3)].range);
1984178825Sdfr		    (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString,
1985178825Sdfr				 TE_EXPLICIT, t);
1986178825Sdfr		}
1987178825Sdfr    break;
1988178825Sdfr
1989178825Sdfr  case 60:
1990178825Sdfr#line 466 "parse.y"
1991178825Sdfr    {
1992178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Null,
1993178825Sdfr				     TE_EXPLICIT, new_type(TNull));
1994178825Sdfr		}
1995178825Sdfr    break;
1996178825Sdfr
1997178825Sdfr  case 61:
1998178825Sdfr#line 473 "parse.y"
1999178825Sdfr    { (yyval.range) = NULL; }
2000178825Sdfr    break;
2001178825Sdfr
2002178825Sdfr  case 62:
2003178825Sdfr#line 475 "parse.y"
2004178825Sdfr    { (yyval.range) = (yyvsp[(2) - (2)].range); }
2005178825Sdfr    break;
2006178825Sdfr
2007178825Sdfr  case 63:
2008178825Sdfr#line 480 "parse.y"
2009178825Sdfr    {
2010178825Sdfr		  (yyval.type) = new_type(TSequence);
2011178825Sdfr		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2012178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2013178825Sdfr		}
2014178825Sdfr    break;
2015178825Sdfr
2016178825Sdfr  case 64:
2017178825Sdfr#line 486 "parse.y"
2018178825Sdfr    {
2019178825Sdfr		  (yyval.type) = new_type(TSequence);
2020178825Sdfr		  (yyval.type)->members = NULL;
2021178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2022178825Sdfr		}
2023178825Sdfr    break;
2024178825Sdfr
2025178825Sdfr  case 65:
2026178825Sdfr#line 494 "parse.y"
2027178825Sdfr    {
2028178825Sdfr		  (yyval.type) = new_type(TSequenceOf);
2029178825Sdfr		  (yyval.type)->range = (yyvsp[(2) - (4)].range);
2030178825Sdfr		  (yyval.type)->subtype = (yyvsp[(4) - (4)].type);
2031178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2032178825Sdfr		}
2033178825Sdfr    break;
2034178825Sdfr
2035178825Sdfr  case 66:
2036178825Sdfr#line 503 "parse.y"
2037178825Sdfr    {
2038178825Sdfr		  (yyval.type) = new_type(TSet);
2039178825Sdfr		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2040178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2041178825Sdfr		}
2042178825Sdfr    break;
2043178825Sdfr
2044178825Sdfr  case 67:
2045178825Sdfr#line 509 "parse.y"
2046178825Sdfr    {
2047178825Sdfr		  (yyval.type) = new_type(TSet);
2048178825Sdfr		  (yyval.type)->members = NULL;
2049178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2050178825Sdfr		}
2051178825Sdfr    break;
2052178825Sdfr
2053178825Sdfr  case 68:
2054178825Sdfr#line 517 "parse.y"
2055178825Sdfr    {
2056178825Sdfr		  (yyval.type) = new_type(TSetOf);
2057178825Sdfr		  (yyval.type)->subtype = (yyvsp[(3) - (3)].type);
2058178825Sdfr		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2059178825Sdfr		}
2060178825Sdfr    break;
2061178825Sdfr
2062178825Sdfr  case 69:
2063178825Sdfr#line 525 "parse.y"
2064178825Sdfr    {
2065178825Sdfr		  (yyval.type) = new_type(TChoice);
2066178825Sdfr		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2067178825Sdfr		}
2068178825Sdfr    break;
2069178825Sdfr
2070178825Sdfr  case 72:
2071178825Sdfr#line 536 "parse.y"
2072178825Sdfr    {
2073178825Sdfr		  Symbol *s = addsym((yyvsp[(1) - (1)].name));
2074178825Sdfr		  (yyval.type) = new_type(TType);
2075178825Sdfr		  if(s->stype != Stype && s->stype != SUndefined)
2076178825Sdfr		    error_message ("%s is not a type\n", (yyvsp[(1) - (1)].name));
2077178825Sdfr		  else
2078178825Sdfr		    (yyval.type)->symbol = s;
2079178825Sdfr		}
2080178825Sdfr    break;
2081178825Sdfr
2082178825Sdfr  case 73:
2083178825Sdfr#line 547 "parse.y"
2084178825Sdfr    {
2085178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralizedTime,
2086178825Sdfr				     TE_EXPLICIT, new_type(TGeneralizedTime));
2087178825Sdfr		}
2088178825Sdfr    break;
2089178825Sdfr
2090178825Sdfr  case 74:
2091178825Sdfr#line 552 "parse.y"
2092178825Sdfr    {
2093178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UTCTime,
2094178825Sdfr				     TE_EXPLICIT, new_type(TUTCTime));
2095178825Sdfr		}
2096178825Sdfr    break;
2097178825Sdfr
2098178825Sdfr  case 75:
2099178825Sdfr#line 559 "parse.y"
2100178825Sdfr    {
2101178825Sdfr		    /* if (Constraint.type == contentConstrant) {
2102178825Sdfr		       assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too
2103178825Sdfr		       if (Constraint.u.constraint.type) {
2104178825Sdfr		         assert((Constraint.u.constraint.type.length % 8) == 0);
2105178825Sdfr		       }
2106178825Sdfr		      }
2107178825Sdfr		      if (Constraint.u.constraint.encoding) {
2108178825Sdfr		        type == der-oid|ber-oid
2109178825Sdfr		      }
2110178825Sdfr		    */
2111178825Sdfr		}
2112178825Sdfr    break;
2113178825Sdfr
2114178825Sdfr  case 76:
2115178825Sdfr#line 575 "parse.y"
2116178825Sdfr    {
2117178825Sdfr		    (yyval.constraint_spec) = (yyvsp[(2) - (3)].constraint_spec);
2118178825Sdfr		}
2119178825Sdfr    break;
2120178825Sdfr
2121178825Sdfr  case 80:
2122178825Sdfr#line 588 "parse.y"
2123178825Sdfr    {
2124178825Sdfr		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2125178825Sdfr		    (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (2)].type);
2126178825Sdfr		    (yyval.constraint_spec)->u.content.encoding = NULL;
2127178825Sdfr		}
2128178825Sdfr    break;
2129178825Sdfr
2130178825Sdfr  case 81:
2131178825Sdfr#line 594 "parse.y"
2132178825Sdfr    {
2133178825Sdfr		    if ((yyvsp[(3) - (3)].value)->type != objectidentifiervalue)
2134178825Sdfr			error_message("Non-OID used in ENCODED BY constraint");
2135178825Sdfr		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2136178825Sdfr		    (yyval.constraint_spec)->u.content.type = NULL;
2137178825Sdfr		    (yyval.constraint_spec)->u.content.encoding = (yyvsp[(3) - (3)].value);
2138178825Sdfr		}
2139178825Sdfr    break;
2140178825Sdfr
2141178825Sdfr  case 82:
2142178825Sdfr#line 602 "parse.y"
2143178825Sdfr    {
2144178825Sdfr		    if ((yyvsp[(5) - (5)].value)->type != objectidentifiervalue)
2145178825Sdfr			error_message("Non-OID used in ENCODED BY constraint");
2146178825Sdfr		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2147178825Sdfr		    (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (5)].type);
2148178825Sdfr		    (yyval.constraint_spec)->u.content.encoding = (yyvsp[(5) - (5)].value);
2149178825Sdfr		}
2150178825Sdfr    break;
2151178825Sdfr
2152178825Sdfr  case 83:
2153178825Sdfr#line 612 "parse.y"
2154178825Sdfr    {
2155178825Sdfr		    (yyval.constraint_spec) = new_constraint_spec(CT_USER);
2156178825Sdfr		}
2157178825Sdfr    break;
2158178825Sdfr
2159178825Sdfr  case 84:
2160178825Sdfr#line 618 "parse.y"
2161178825Sdfr    {
2162178825Sdfr			(yyval.type) = new_type(TTag);
2163178825Sdfr			(yyval.type)->tag = (yyvsp[(1) - (3)].tag);
2164178825Sdfr			(yyval.type)->tag.tagenv = (yyvsp[(2) - (3)].constant);
2165178825Sdfr			if((yyvsp[(3) - (3)].type)->type == TTag && (yyvsp[(2) - (3)].constant) == TE_IMPLICIT) {
2166178825Sdfr				(yyval.type)->subtype = (yyvsp[(3) - (3)].type)->subtype;
2167178825Sdfr				free((yyvsp[(3) - (3)].type));
2168178825Sdfr			} else
2169178825Sdfr				(yyval.type)->subtype = (yyvsp[(3) - (3)].type);
2170178825Sdfr		}
2171178825Sdfr    break;
2172178825Sdfr
2173178825Sdfr  case 85:
2174178825Sdfr#line 631 "parse.y"
2175178825Sdfr    {
2176178825Sdfr			(yyval.tag).tagclass = (yyvsp[(2) - (4)].constant);
2177178825Sdfr			(yyval.tag).tagvalue = (yyvsp[(3) - (4)].constant);
2178178825Sdfr			(yyval.tag).tagenv = TE_EXPLICIT;
2179178825Sdfr		}
2180178825Sdfr    break;
2181178825Sdfr
2182178825Sdfr  case 86:
2183178825Sdfr#line 639 "parse.y"
2184178825Sdfr    {
2185178825Sdfr			(yyval.constant) = ASN1_C_CONTEXT;
2186178825Sdfr		}
2187178825Sdfr    break;
2188178825Sdfr
2189178825Sdfr  case 87:
2190178825Sdfr#line 643 "parse.y"
2191178825Sdfr    {
2192178825Sdfr			(yyval.constant) = ASN1_C_UNIV;
2193178825Sdfr		}
2194178825Sdfr    break;
2195178825Sdfr
2196178825Sdfr  case 88:
2197178825Sdfr#line 647 "parse.y"
2198178825Sdfr    {
2199178825Sdfr			(yyval.constant) = ASN1_C_APPL;
2200178825Sdfr		}
2201178825Sdfr    break;
2202178825Sdfr
2203178825Sdfr  case 89:
2204178825Sdfr#line 651 "parse.y"
2205178825Sdfr    {
2206178825Sdfr			(yyval.constant) = ASN1_C_PRIVATE;
2207178825Sdfr		}
2208178825Sdfr    break;
2209178825Sdfr
2210178825Sdfr  case 90:
2211178825Sdfr#line 657 "parse.y"
2212178825Sdfr    {
2213178825Sdfr			(yyval.constant) = TE_EXPLICIT;
2214178825Sdfr		}
2215178825Sdfr    break;
2216178825Sdfr
2217178825Sdfr  case 91:
2218178825Sdfr#line 661 "parse.y"
2219178825Sdfr    {
2220178825Sdfr			(yyval.constant) = TE_EXPLICIT;
2221178825Sdfr		}
2222178825Sdfr    break;
2223178825Sdfr
2224178825Sdfr  case 92:
2225178825Sdfr#line 665 "parse.y"
2226178825Sdfr    {
2227178825Sdfr			(yyval.constant) = TE_IMPLICIT;
2228178825Sdfr		}
2229178825Sdfr    break;
2230178825Sdfr
2231178825Sdfr  case 93:
2232178825Sdfr#line 672 "parse.y"
2233178825Sdfr    {
2234178825Sdfr			Symbol *s;
2235178825Sdfr			s = addsym ((yyvsp[(1) - (4)].name));
2236178825Sdfr
2237178825Sdfr			s->stype = SValue;
2238178825Sdfr			s->value = (yyvsp[(4) - (4)].value);
2239178825Sdfr			generate_constant (s);
2240178825Sdfr		}
2241178825Sdfr    break;
2242178825Sdfr
2243178825Sdfr  case 95:
2244178825Sdfr#line 686 "parse.y"
2245178825Sdfr    {
2246178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralString,
2247178825Sdfr				     TE_EXPLICIT, new_type(TGeneralString));
2248178825Sdfr		}
2249178825Sdfr    break;
2250178825Sdfr
2251178825Sdfr  case 96:
2252178825Sdfr#line 691 "parse.y"
2253178825Sdfr    {
2254178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UTF8String,
2255178825Sdfr				     TE_EXPLICIT, new_type(TUTF8String));
2256178825Sdfr		}
2257178825Sdfr    break;
2258178825Sdfr
2259178825Sdfr  case 97:
2260178825Sdfr#line 696 "parse.y"
2261178825Sdfr    {
2262178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_PrintableString,
2263178825Sdfr				     TE_EXPLICIT, new_type(TPrintableString));
2264178825Sdfr		}
2265178825Sdfr    break;
2266178825Sdfr
2267178825Sdfr  case 98:
2268178825Sdfr#line 701 "parse.y"
2269178825Sdfr    {
2270178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_VisibleString,
2271178825Sdfr				     TE_EXPLICIT, new_type(TVisibleString));
2272178825Sdfr		}
2273178825Sdfr    break;
2274178825Sdfr
2275178825Sdfr  case 99:
2276178825Sdfr#line 706 "parse.y"
2277178825Sdfr    {
2278178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_IA5String,
2279178825Sdfr				     TE_EXPLICIT, new_type(TIA5String));
2280178825Sdfr		}
2281178825Sdfr    break;
2282178825Sdfr
2283178825Sdfr  case 100:
2284178825Sdfr#line 711 "parse.y"
2285178825Sdfr    {
2286178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_BMPString,
2287178825Sdfr				     TE_EXPLICIT, new_type(TBMPString));
2288178825Sdfr		}
2289178825Sdfr    break;
2290178825Sdfr
2291178825Sdfr  case 101:
2292178825Sdfr#line 716 "parse.y"
2293178825Sdfr    {
2294178825Sdfr			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UniversalString,
2295178825Sdfr				     TE_EXPLICIT, new_type(TUniversalString));
2296178825Sdfr		}
2297178825Sdfr    break;
2298178825Sdfr
2299178825Sdfr  case 102:
2300178825Sdfr#line 724 "parse.y"
2301178825Sdfr    {
2302178825Sdfr			(yyval.members) = emalloc(sizeof(*(yyval.members)));
2303178825Sdfr			ASN1_TAILQ_INIT((yyval.members));
2304178825Sdfr			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
2305178825Sdfr		}
2306178825Sdfr    break;
2307178825Sdfr
2308178825Sdfr  case 103:
2309178825Sdfr#line 730 "parse.y"
2310178825Sdfr    {
2311178825Sdfr			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
2312178825Sdfr			(yyval.members) = (yyvsp[(1) - (3)].members);
2313178825Sdfr		}
2314178825Sdfr    break;
2315178825Sdfr
2316178825Sdfr  case 104:
2317178825Sdfr#line 735 "parse.y"
2318178825Sdfr    {
2319178825Sdfr		        struct member *m = ecalloc(1, sizeof(*m));
2320178825Sdfr			m->name = estrdup("...");
2321178825Sdfr			m->gen_name = estrdup("asn1_ellipsis");
2322178825Sdfr			m->ellipsis = 1;
2323178825Sdfr			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), m, members);
2324178825Sdfr			(yyval.members) = (yyvsp[(1) - (3)].members);
2325178825Sdfr		}
2326178825Sdfr    break;
2327178825Sdfr
2328178825Sdfr  case 105:
2329178825Sdfr#line 746 "parse.y"
2330178825Sdfr    {
2331178825Sdfr		  (yyval.member) = emalloc(sizeof(*(yyval.member)));
2332178825Sdfr		  (yyval.member)->name = (yyvsp[(1) - (2)].name);
2333178825Sdfr		  (yyval.member)->gen_name = estrdup((yyvsp[(1) - (2)].name));
2334178825Sdfr		  output_name ((yyval.member)->gen_name);
2335178825Sdfr		  (yyval.member)->type = (yyvsp[(2) - (2)].type);
2336178825Sdfr		  (yyval.member)->ellipsis = 0;
2337178825Sdfr		}
2338178825Sdfr    break;
2339178825Sdfr
2340178825Sdfr  case 106:
2341178825Sdfr#line 757 "parse.y"
2342178825Sdfr    {
2343178825Sdfr			(yyval.member) = (yyvsp[(1) - (1)].member);
2344178825Sdfr			(yyval.member)->optional = 0;
2345178825Sdfr			(yyval.member)->defval = NULL;
2346178825Sdfr		}
2347178825Sdfr    break;
2348178825Sdfr
2349178825Sdfr  case 107:
2350178825Sdfr#line 763 "parse.y"
2351178825Sdfr    {
2352178825Sdfr			(yyval.member) = (yyvsp[(1) - (2)].member);
2353178825Sdfr			(yyval.member)->optional = 1;
2354178825Sdfr			(yyval.member)->defval = NULL;
2355178825Sdfr		}
2356178825Sdfr    break;
2357178825Sdfr
2358178825Sdfr  case 108:
2359178825Sdfr#line 769 "parse.y"
2360178825Sdfr    {
2361178825Sdfr			(yyval.member) = (yyvsp[(1) - (3)].member);
2362178825Sdfr			(yyval.member)->optional = 0;
2363178825Sdfr			(yyval.member)->defval = (yyvsp[(3) - (3)].value);
2364178825Sdfr		}
2365178825Sdfr    break;
2366178825Sdfr
2367178825Sdfr  case 109:
2368178825Sdfr#line 777 "parse.y"
2369178825Sdfr    {
2370178825Sdfr			(yyval.members) = emalloc(sizeof(*(yyval.members)));
2371178825Sdfr			ASN1_TAILQ_INIT((yyval.members));
2372178825Sdfr			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
2373178825Sdfr		}
2374178825Sdfr    break;
2375178825Sdfr
2376178825Sdfr  case 110:
2377178825Sdfr#line 783 "parse.y"
2378178825Sdfr    {
2379178825Sdfr			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
2380178825Sdfr			(yyval.members) = (yyvsp[(1) - (3)].members);
2381178825Sdfr		}
2382178825Sdfr    break;
2383178825Sdfr
2384178825Sdfr  case 111:
2385178825Sdfr#line 790 "parse.y"
2386178825Sdfr    {
2387178825Sdfr		  (yyval.member) = emalloc(sizeof(*(yyval.member)));
2388178825Sdfr		  (yyval.member)->name = (yyvsp[(1) - (4)].name);
2389178825Sdfr		  (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name));
2390178825Sdfr		  output_name ((yyval.member)->gen_name);
2391178825Sdfr		  (yyval.member)->val = (yyvsp[(3) - (4)].constant);
2392178825Sdfr		  (yyval.member)->optional = 0;
2393178825Sdfr		  (yyval.member)->ellipsis = 0;
2394178825Sdfr		  (yyval.member)->type = NULL;
2395178825Sdfr		}
2396178825Sdfr    break;
2397178825Sdfr
2398178825Sdfr  case 113:
2399178825Sdfr#line 803 "parse.y"
2400178825Sdfr    { (yyval.objid) = NULL; }
2401178825Sdfr    break;
2402178825Sdfr
2403178825Sdfr  case 114:
2404178825Sdfr#line 807 "parse.y"
2405178825Sdfr    {
2406178825Sdfr			(yyval.objid) = (yyvsp[(2) - (3)].objid);
2407178825Sdfr		}
2408178825Sdfr    break;
2409178825Sdfr
2410178825Sdfr  case 115:
2411178825Sdfr#line 813 "parse.y"
2412178825Sdfr    {
2413178825Sdfr			(yyval.objid) = NULL;
2414178825Sdfr		}
2415178825Sdfr    break;
2416178825Sdfr
2417178825Sdfr  case 116:
2418178825Sdfr#line 817 "parse.y"
2419178825Sdfr    {
2420178825Sdfr		        if ((yyvsp[(2) - (2)].objid)) {
2421178825Sdfr				(yyval.objid) = (yyvsp[(2) - (2)].objid);
2422178825Sdfr				add_oid_to_tail((yyvsp[(2) - (2)].objid), (yyvsp[(1) - (2)].objid));
2423178825Sdfr			} else {
2424178825Sdfr				(yyval.objid) = (yyvsp[(1) - (2)].objid);
2425178825Sdfr			}
2426178825Sdfr		}
2427178825Sdfr    break;
2428178825Sdfr
2429178825Sdfr  case 117:
2430178825Sdfr#line 828 "parse.y"
2431178825Sdfr    {
2432178825Sdfr			(yyval.objid) = new_objid((yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].constant));
2433178825Sdfr		}
2434178825Sdfr    break;
2435178825Sdfr
2436178825Sdfr  case 118:
2437178825Sdfr#line 832 "parse.y"
2438178825Sdfr    {
2439178825Sdfr		    Symbol *s = addsym((yyvsp[(1) - (1)].name));
2440178825Sdfr		    if(s->stype != SValue ||
2441178825Sdfr		       s->value->type != objectidentifiervalue) {
2442178825Sdfr			error_message("%s is not an object identifier\n",
2443178825Sdfr				      s->name);
2444178825Sdfr			exit(1);
2445178825Sdfr		    }
2446178825Sdfr		    (yyval.objid) = s->value->u.objectidentifiervalue;
2447178825Sdfr		}
2448178825Sdfr    break;
2449178825Sdfr
2450178825Sdfr  case 119:
2451178825Sdfr#line 843 "parse.y"
2452178825Sdfr    {
2453178825Sdfr		    (yyval.objid) = new_objid(NULL, (yyvsp[(1) - (1)].constant));
2454178825Sdfr		}
2455178825Sdfr    break;
2456178825Sdfr
2457178825Sdfr  case 129:
2458178825Sdfr#line 866 "parse.y"
2459178825Sdfr    {
2460178825Sdfr			Symbol *s = addsym((yyvsp[(1) - (1)].name));
2461178825Sdfr			if(s->stype != SValue)
2462178825Sdfr				error_message ("%s is not a value\n",
2463178825Sdfr						s->name);
2464178825Sdfr			else
2465178825Sdfr				(yyval.value) = s->value;
2466178825Sdfr		}
2467178825Sdfr    break;
2468178825Sdfr
2469178825Sdfr  case 130:
2470178825Sdfr#line 877 "parse.y"
2471178825Sdfr    {
2472178825Sdfr			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2473178825Sdfr			(yyval.value)->type = stringvalue;
2474178825Sdfr			(yyval.value)->u.stringvalue = (yyvsp[(1) - (1)].name);
2475178825Sdfr		}
2476178825Sdfr    break;
2477178825Sdfr
2478178825Sdfr  case 131:
2479178825Sdfr#line 885 "parse.y"
2480178825Sdfr    {
2481178825Sdfr			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2482178825Sdfr			(yyval.value)->type = booleanvalue;
2483178825Sdfr			(yyval.value)->u.booleanvalue = 0;
2484178825Sdfr		}
2485178825Sdfr    break;
2486178825Sdfr
2487178825Sdfr  case 132:
2488178825Sdfr#line 891 "parse.y"
2489178825Sdfr    {
2490178825Sdfr			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2491178825Sdfr			(yyval.value)->type = booleanvalue;
2492178825Sdfr			(yyval.value)->u.booleanvalue = 0;
2493178825Sdfr		}
2494178825Sdfr    break;
2495178825Sdfr
2496178825Sdfr  case 133:
2497178825Sdfr#line 899 "parse.y"
2498178825Sdfr    {
2499178825Sdfr			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2500178825Sdfr			(yyval.value)->type = integervalue;
2501178825Sdfr			(yyval.value)->u.integervalue = (yyvsp[(1) - (1)].constant);
2502178825Sdfr		}
2503178825Sdfr    break;
2504178825Sdfr
2505178825Sdfr  case 135:
2506178825Sdfr#line 910 "parse.y"
2507178825Sdfr    {
2508178825Sdfr		}
2509178825Sdfr    break;
2510178825Sdfr
2511178825Sdfr  case 136:
2512178825Sdfr#line 915 "parse.y"
2513178825Sdfr    {
2514178825Sdfr			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2515178825Sdfr			(yyval.value)->type = objectidentifiervalue;
2516178825Sdfr			(yyval.value)->u.objectidentifiervalue = (yyvsp[(1) - (1)].objid);
2517178825Sdfr		}
2518178825Sdfr    break;
2519178825Sdfr
2520178825Sdfr
2521178825Sdfr/* Line 1267 of yacc.c.  */
2522178825Sdfr#line 2523 "parse.c"
2523178825Sdfr      default: break;
2524178825Sdfr    }
2525178825Sdfr  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2526178825Sdfr
2527178825Sdfr  YYPOPSTACK (yylen);
2528178825Sdfr  yylen = 0;
2529178825Sdfr  YY_STACK_PRINT (yyss, yyssp);
2530178825Sdfr
2531178825Sdfr  *++yyvsp = yyval;
2532178825Sdfr
2533178825Sdfr
2534178825Sdfr  /* Now `shift' the result of the reduction.  Determine what state
2535178825Sdfr     that goes to, based on the state we popped back to and the rule
2536178825Sdfr     number reduced by.  */
2537178825Sdfr
2538178825Sdfr  yyn = yyr1[yyn];
2539178825Sdfr
2540178825Sdfr  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2541178825Sdfr  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2542178825Sdfr    yystate = yytable[yystate];
2543178825Sdfr  else
2544178825Sdfr    yystate = yydefgoto[yyn - YYNTOKENS];
2545178825Sdfr
2546178825Sdfr  goto yynewstate;
2547178825Sdfr
2548178825Sdfr
2549178825Sdfr/*------------------------------------.
2550178825Sdfr| yyerrlab -- here on detecting error |
2551178825Sdfr`------------------------------------*/
2552178825Sdfryyerrlab:
2553178825Sdfr  /* If not already recovering from an error, report this error.  */
2554178825Sdfr  if (!yyerrstatus)
2555178825Sdfr    {
2556178825Sdfr      ++yynerrs;
2557178825Sdfr#if ! YYERROR_VERBOSE
2558178825Sdfr      yyerror (YY_("syntax error"));
2559178825Sdfr#else
2560178825Sdfr      {
2561178825Sdfr	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2562178825Sdfr	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2563178825Sdfr	  {
2564178825Sdfr	    YYSIZE_T yyalloc = 2 * yysize;
2565178825Sdfr	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2566178825Sdfr	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
2567178825Sdfr	    if (yymsg != yymsgbuf)
2568178825Sdfr	      YYSTACK_FREE (yymsg);
2569178825Sdfr	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2570178825Sdfr	    if (yymsg)
2571178825Sdfr	      yymsg_alloc = yyalloc;
2572178825Sdfr	    else
2573178825Sdfr	      {
2574178825Sdfr		yymsg = yymsgbuf;
2575178825Sdfr		yymsg_alloc = sizeof yymsgbuf;
2576178825Sdfr	      }
2577178825Sdfr	  }
2578178825Sdfr
2579178825Sdfr	if (0 < yysize && yysize <= yymsg_alloc)
2580178825Sdfr	  {
2581178825Sdfr	    (void) yysyntax_error (yymsg, yystate, yychar);
2582178825Sdfr	    yyerror (yymsg);
2583178825Sdfr	  }
2584178825Sdfr	else
2585178825Sdfr	  {
2586178825Sdfr	    yyerror (YY_("syntax error"));
2587178825Sdfr	    if (yysize != 0)
2588178825Sdfr	      goto yyexhaustedlab;
2589178825Sdfr	  }
2590178825Sdfr      }
2591178825Sdfr#endif
2592178825Sdfr    }
2593178825Sdfr
2594178825Sdfr
2595178825Sdfr
2596178825Sdfr  if (yyerrstatus == 3)
2597178825Sdfr    {
2598178825Sdfr      /* If just tried and failed to reuse look-ahead token after an
2599178825Sdfr	 error, discard it.  */
2600178825Sdfr
2601178825Sdfr      if (yychar <= YYEOF)
2602178825Sdfr	{
2603178825Sdfr	  /* Return failure if at end of input.  */
2604178825Sdfr	  if (yychar == YYEOF)
2605178825Sdfr	    YYABORT;
2606178825Sdfr	}
2607178825Sdfr      else
2608178825Sdfr	{
2609178825Sdfr	  yydestruct ("Error: discarding",
2610178825Sdfr		      yytoken, &yylval);
2611178825Sdfr	  yychar = YYEMPTY;
2612178825Sdfr	}
2613178825Sdfr    }
2614178825Sdfr
2615178825Sdfr  /* Else will try to reuse look-ahead token after shifting the error
2616178825Sdfr     token.  */
2617178825Sdfr  goto yyerrlab1;
2618178825Sdfr
2619178825Sdfr
2620178825Sdfr/*---------------------------------------------------.
2621178825Sdfr| yyerrorlab -- error raised explicitly by YYERROR.  |
2622178825Sdfr`---------------------------------------------------*/
2623178825Sdfryyerrorlab:
2624178825Sdfr
2625178825Sdfr  /* Pacify compilers like GCC when the user code never invokes
2626178825Sdfr     YYERROR and the label yyerrorlab therefore never appears in user
2627178825Sdfr     code.  */
2628178825Sdfr  if (/*CONSTCOND*/ 0)
2629178825Sdfr     goto yyerrorlab;
2630178825Sdfr
2631178825Sdfr  /* Do not reclaim the symbols of the rule which action triggered
2632178825Sdfr     this YYERROR.  */
2633178825Sdfr  YYPOPSTACK (yylen);
2634178825Sdfr  yylen = 0;
2635178825Sdfr  YY_STACK_PRINT (yyss, yyssp);
2636178825Sdfr  yystate = *yyssp;
2637178825Sdfr  goto yyerrlab1;
2638178825Sdfr
2639178825Sdfr
2640178825Sdfr/*-------------------------------------------------------------.
2641178825Sdfr| yyerrlab1 -- common code for both syntax error and YYERROR.  |
2642178825Sdfr`-------------------------------------------------------------*/
2643178825Sdfryyerrlab1:
2644178825Sdfr  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2645178825Sdfr
2646178825Sdfr  for (;;)
2647178825Sdfr    {
2648178825Sdfr      yyn = yypact[yystate];
2649178825Sdfr      if (yyn != YYPACT_NINF)
2650178825Sdfr	{
2651178825Sdfr	  yyn += YYTERROR;
2652178825Sdfr	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2653178825Sdfr	    {
2654178825Sdfr	      yyn = yytable[yyn];
2655178825Sdfr	      if (0 < yyn)
2656178825Sdfr		break;
2657178825Sdfr	    }
2658178825Sdfr	}
2659178825Sdfr
2660178825Sdfr      /* Pop the current state because it cannot handle the error token.  */
2661178825Sdfr      if (yyssp == yyss)
2662178825Sdfr	YYABORT;
2663178825Sdfr
2664178825Sdfr
2665178825Sdfr      yydestruct ("Error: popping",
2666178825Sdfr		  yystos[yystate], yyvsp);
2667178825Sdfr      YYPOPSTACK (1);
2668178825Sdfr      yystate = *yyssp;
2669178825Sdfr      YY_STACK_PRINT (yyss, yyssp);
2670178825Sdfr    }
2671178825Sdfr
2672178825Sdfr  if (yyn == YYFINAL)
2673178825Sdfr    YYACCEPT;
2674178825Sdfr
2675178825Sdfr  *++yyvsp = yylval;
2676178825Sdfr
2677178825Sdfr
2678178825Sdfr  /* Shift the error token.  */
2679178825Sdfr  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2680178825Sdfr
2681178825Sdfr  yystate = yyn;
2682178825Sdfr  goto yynewstate;
2683178825Sdfr
2684178825Sdfr
2685178825Sdfr/*-------------------------------------.
2686178825Sdfr| yyacceptlab -- YYACCEPT comes here.  |
2687178825Sdfr`-------------------------------------*/
2688178825Sdfryyacceptlab:
2689178825Sdfr  yyresult = 0;
2690178825Sdfr  goto yyreturn;
2691178825Sdfr
2692178825Sdfr/*-----------------------------------.
2693178825Sdfr| yyabortlab -- YYABORT comes here.  |
2694178825Sdfr`-----------------------------------*/
2695178825Sdfryyabortlab:
2696178825Sdfr  yyresult = 1;
2697178825Sdfr  goto yyreturn;
2698178825Sdfr
2699178825Sdfr#ifndef yyoverflow
2700178825Sdfr/*-------------------------------------------------.
2701178825Sdfr| yyexhaustedlab -- memory exhaustion comes here.  |
2702178825Sdfr`-------------------------------------------------*/
2703178825Sdfryyexhaustedlab:
2704178825Sdfr  yyerror (YY_("memory exhausted"));
2705178825Sdfr  yyresult = 2;
2706178825Sdfr  /* Fall through.  */
2707178825Sdfr#endif
2708178825Sdfr
2709178825Sdfryyreturn:
2710178825Sdfr  if (yychar != YYEOF && yychar != YYEMPTY)
2711178825Sdfr     yydestruct ("Cleanup: discarding lookahead",
2712178825Sdfr		 yytoken, &yylval);
2713178825Sdfr  /* Do not reclaim the symbols of the rule which action triggered
2714178825Sdfr     this YYABORT or YYACCEPT.  */
2715178825Sdfr  YYPOPSTACK (yylen);
2716178825Sdfr  YY_STACK_PRINT (yyss, yyssp);
2717178825Sdfr  while (yyssp != yyss)
2718178825Sdfr    {
2719178825Sdfr      yydestruct ("Cleanup: popping",
2720178825Sdfr		  yystos[*yyssp], yyvsp);
2721178825Sdfr      YYPOPSTACK (1);
2722178825Sdfr    }
2723178825Sdfr#ifndef yyoverflow
2724178825Sdfr  if (yyss != yyssa)
2725178825Sdfr    YYSTACK_FREE (yyss);
2726178825Sdfr#endif
2727178825Sdfr#if YYERROR_VERBOSE
2728178825Sdfr  if (yymsg != yymsgbuf)
2729178825Sdfr    YYSTACK_FREE (yymsg);
2730178825Sdfr#endif
2731178825Sdfr  /* Make sure YYID is used.  */
2732178825Sdfr  return YYID (yyresult);
2733178825Sdfr}
2734178825Sdfr
2735178825Sdfr
2736178825Sdfr#line 922 "parse.y"
2737178825Sdfr
2738178825Sdfr
2739178825Sdfrvoid
2740178825Sdfryyerror (const char *s)
2741178825Sdfr{
2742178825Sdfr     error_message ("%s\n", s);
2743178825Sdfr}
2744178825Sdfr
2745178825Sdfrstatic Type *
2746178825Sdfrnew_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype)
2747178825Sdfr{
2748178825Sdfr    Type *t;
2749178825Sdfr    if(oldtype->type == TTag && oldtype->tag.tagenv == TE_IMPLICIT) {
2750178825Sdfr	t = oldtype;
2751178825Sdfr	oldtype = oldtype->subtype; /* XXX */
2752178825Sdfr    } else
2753178825Sdfr	t = new_type (TTag);
2754178825Sdfr
2755178825Sdfr    t->tag.tagclass = tagclass;
2756178825Sdfr    t->tag.tagvalue = tagvalue;
2757178825Sdfr    t->tag.tagenv = tagenv;
2758178825Sdfr    t->subtype = oldtype;
2759178825Sdfr    return t;
2760178825Sdfr}
2761178825Sdfr
2762178825Sdfrstatic struct objid *
2763178825Sdfrnew_objid(const char *label, int value)
2764178825Sdfr{
2765178825Sdfr    struct objid *s;
2766178825Sdfr    s = emalloc(sizeof(*s));
2767178825Sdfr    s->label = label;
2768178825Sdfr    s->value = value;
2769178825Sdfr    s->next = NULL;
2770178825Sdfr    return s;
2771178825Sdfr}
2772178825Sdfr
2773178825Sdfrstatic void
2774178825Sdfradd_oid_to_tail(struct objid *head, struct objid *tail)
2775178825Sdfr{
2776178825Sdfr    struct objid *o;
2777178825Sdfr    o = head;
2778178825Sdfr    while (o->next)
2779178825Sdfr	o = o->next;
2780178825Sdfr    o->next = tail;
2781178825Sdfr}
2782178825Sdfr
2783178825Sdfrstatic Type *
2784178825Sdfrnew_type (Typetype tt)
2785178825Sdfr{
2786178825Sdfr    Type *t = ecalloc(1, sizeof(*t));
2787178825Sdfr    t->type = tt;
2788178825Sdfr    return t;
2789178825Sdfr}
2790178825Sdfr
2791178825Sdfrstatic struct constraint_spec *
2792178825Sdfrnew_constraint_spec(enum ctype ct)
2793178825Sdfr{
2794178825Sdfr    struct constraint_spec *c = ecalloc(1, sizeof(*c));
2795178825Sdfr    c->ctype = ct;
2796178825Sdfr    return c;
2797178825Sdfr}
2798178825Sdfr
2799178825Sdfrstatic void fix_labels2(Type *t, const char *prefix);
2800178825Sdfrstatic void fix_labels1(struct memhead *members, const char *prefix)
2801178825Sdfr{
2802178825Sdfr    Member *m;
2803178825Sdfr
2804178825Sdfr    if(members == NULL)
2805178825Sdfr	return;
2806178825Sdfr    ASN1_TAILQ_FOREACH(m, members, members) {
2807178825Sdfr	asprintf(&m->label, "%s_%s", prefix, m->gen_name);
2808178825Sdfr	if (m->label == NULL)
2809178825Sdfr	    errx(1, "malloc");
2810178825Sdfr	if(m->type != NULL)
2811178825Sdfr	    fix_labels2(m->type, m->label);
2812178825Sdfr    }
2813178825Sdfr}
2814178825Sdfr
2815178825Sdfrstatic void fix_labels2(Type *t, const char *prefix)
2816178825Sdfr{
2817178825Sdfr    for(; t; t = t->subtype)
2818178825Sdfr	fix_labels1(t->members, prefix);
2819178825Sdfr}
2820178825Sdfr
2821178825Sdfrstatic void
2822178825Sdfrfix_labels(Symbol *s)
2823178825Sdfr{
2824178825Sdfr    char *p;
2825178825Sdfr    asprintf(&p, "choice_%s", s->gen_name);
2826178825Sdfr    if (p == NULL)
2827178825Sdfr	errx(1, "malloc");
2828178825Sdfr    fix_labels2(s->type, p);
2829178825Sdfr    free(p);
2830178825Sdfr}
2831178825Sdfr
2832