xref: /freebsd/crypto/heimdal/lib/asn1/asn1parse.c (revision ae77177087c655fc883075af4f425b37e032cd05)
1*ae771770SStanislav Sedov /* A Bison parser, made by GNU Bison 2.3.  */
2*ae771770SStanislav Sedov 
3*ae771770SStanislav Sedov /* Skeleton implementation for Bison's Yacc-like parsers in C
4*ae771770SStanislav Sedov 
5*ae771770SStanislav Sedov    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6*ae771770SStanislav Sedov    Free Software Foundation, Inc.
7*ae771770SStanislav Sedov 
8*ae771770SStanislav Sedov    This program is free software; you can redistribute it and/or modify
9*ae771770SStanislav Sedov    it under the terms of the GNU General Public License as published by
10*ae771770SStanislav Sedov    the Free Software Foundation; either version 2, or (at your option)
11*ae771770SStanislav Sedov    any later version.
12*ae771770SStanislav Sedov 
13*ae771770SStanislav Sedov    This program is distributed in the hope that it will be useful,
14*ae771770SStanislav Sedov    but WITHOUT ANY WARRANTY; without even the implied warranty of
15*ae771770SStanislav Sedov    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*ae771770SStanislav Sedov    GNU General Public License for more details.
17*ae771770SStanislav Sedov 
18*ae771770SStanislav Sedov    You should have received a copy of the GNU General Public License
19*ae771770SStanislav Sedov    along with this program; if not, write to the Free Software
20*ae771770SStanislav Sedov    Foundation, Inc., 51 Franklin Street, Fifth Floor,
21*ae771770SStanislav Sedov    Boston, MA 02110-1301, USA.  */
22*ae771770SStanislav Sedov 
23*ae771770SStanislav Sedov /* As a special exception, you may create a larger work that contains
24*ae771770SStanislav Sedov    part or all of the Bison parser skeleton and distribute that work
25*ae771770SStanislav Sedov    under terms of your choice, so long as that work isn't itself a
26*ae771770SStanislav Sedov    parser generator using the skeleton or a modified version thereof
27*ae771770SStanislav Sedov    as a parser skeleton.  Alternatively, if you modify or redistribute
28*ae771770SStanislav Sedov    the parser skeleton itself, you may (at your option) remove this
29*ae771770SStanislav Sedov    special exception, which will cause the skeleton and the resulting
30*ae771770SStanislav Sedov    Bison output files to be licensed under the GNU General Public
31*ae771770SStanislav Sedov    License without this special exception.
32*ae771770SStanislav Sedov 
33*ae771770SStanislav Sedov    This special exception was added by the Free Software Foundation in
34*ae771770SStanislav Sedov    version 2.2 of Bison.  */
35*ae771770SStanislav Sedov 
36*ae771770SStanislav Sedov /* C LALR(1) parser skeleton written by Richard Stallman, by
37*ae771770SStanislav Sedov    simplifying the original so-called "semantic" parser.  */
38*ae771770SStanislav Sedov 
39*ae771770SStanislav Sedov /* All symbols defined below should begin with yy or YY, to avoid
40*ae771770SStanislav Sedov    infringing on user name space.  This should be done even for local
41*ae771770SStanislav Sedov    variables, as they might otherwise be expanded by user macros.
42*ae771770SStanislav Sedov    There are some unavoidable exceptions within include files to
43*ae771770SStanislav Sedov    define necessary library symbols; they are noted "INFRINGES ON
44*ae771770SStanislav Sedov    USER NAME SPACE" below.  */
45*ae771770SStanislav Sedov 
46*ae771770SStanislav Sedov /* Identify Bison output.  */
47*ae771770SStanislav Sedov #define YYBISON 1
48*ae771770SStanislav Sedov 
49*ae771770SStanislav Sedov /* Bison version.  */
50*ae771770SStanislav Sedov #define YYBISON_VERSION "2.3"
51*ae771770SStanislav Sedov 
52*ae771770SStanislav Sedov /* Skeleton name.  */
53*ae771770SStanislav Sedov #define YYSKELETON_NAME "yacc.c"
54*ae771770SStanislav Sedov 
55*ae771770SStanislav Sedov /* Pure parsers.  */
56*ae771770SStanislav Sedov #define YYPURE 0
57*ae771770SStanislav Sedov 
58*ae771770SStanislav Sedov /* Using locations.  */
59*ae771770SStanislav Sedov #define YYLSP_NEEDED 0
60*ae771770SStanislav Sedov 
61*ae771770SStanislav Sedov 
62*ae771770SStanislav Sedov 
63*ae771770SStanislav Sedov /* Tokens.  */
64*ae771770SStanislav Sedov #ifndef YYTOKENTYPE
65*ae771770SStanislav Sedov # define YYTOKENTYPE
66*ae771770SStanislav Sedov    /* Put the tokens into the symbol table, so that GDB and other debuggers
67*ae771770SStanislav Sedov       know about them.  */
68*ae771770SStanislav Sedov    enum yytokentype {
69*ae771770SStanislav Sedov      kw_ABSENT = 258,
70*ae771770SStanislav Sedov      kw_ABSTRACT_SYNTAX = 259,
71*ae771770SStanislav Sedov      kw_ALL = 260,
72*ae771770SStanislav Sedov      kw_APPLICATION = 261,
73*ae771770SStanislav Sedov      kw_AUTOMATIC = 262,
74*ae771770SStanislav Sedov      kw_BEGIN = 263,
75*ae771770SStanislav Sedov      kw_BIT = 264,
76*ae771770SStanislav Sedov      kw_BMPString = 265,
77*ae771770SStanislav Sedov      kw_BOOLEAN = 266,
78*ae771770SStanislav Sedov      kw_BY = 267,
79*ae771770SStanislav Sedov      kw_CHARACTER = 268,
80*ae771770SStanislav Sedov      kw_CHOICE = 269,
81*ae771770SStanislav Sedov      kw_CLASS = 270,
82*ae771770SStanislav Sedov      kw_COMPONENT = 271,
83*ae771770SStanislav Sedov      kw_COMPONENTS = 272,
84*ae771770SStanislav Sedov      kw_CONSTRAINED = 273,
85*ae771770SStanislav Sedov      kw_CONTAINING = 274,
86*ae771770SStanislav Sedov      kw_DEFAULT = 275,
87*ae771770SStanislav Sedov      kw_DEFINITIONS = 276,
88*ae771770SStanislav Sedov      kw_EMBEDDED = 277,
89*ae771770SStanislav Sedov      kw_ENCODED = 278,
90*ae771770SStanislav Sedov      kw_END = 279,
91*ae771770SStanislav Sedov      kw_ENUMERATED = 280,
92*ae771770SStanislav Sedov      kw_EXCEPT = 281,
93*ae771770SStanislav Sedov      kw_EXPLICIT = 282,
94*ae771770SStanislav Sedov      kw_EXPORTS = 283,
95*ae771770SStanislav Sedov      kw_EXTENSIBILITY = 284,
96*ae771770SStanislav Sedov      kw_EXTERNAL = 285,
97*ae771770SStanislav Sedov      kw_FALSE = 286,
98*ae771770SStanislav Sedov      kw_FROM = 287,
99*ae771770SStanislav Sedov      kw_GeneralString = 288,
100*ae771770SStanislav Sedov      kw_GeneralizedTime = 289,
101*ae771770SStanislav Sedov      kw_GraphicString = 290,
102*ae771770SStanislav Sedov      kw_IA5String = 291,
103*ae771770SStanislav Sedov      kw_IDENTIFIER = 292,
104*ae771770SStanislav Sedov      kw_IMPLICIT = 293,
105*ae771770SStanislav Sedov      kw_IMPLIED = 294,
106*ae771770SStanislav Sedov      kw_IMPORTS = 295,
107*ae771770SStanislav Sedov      kw_INCLUDES = 296,
108*ae771770SStanislav Sedov      kw_INSTANCE = 297,
109*ae771770SStanislav Sedov      kw_INTEGER = 298,
110*ae771770SStanislav Sedov      kw_INTERSECTION = 299,
111*ae771770SStanislav Sedov      kw_ISO646String = 300,
112*ae771770SStanislav Sedov      kw_MAX = 301,
113*ae771770SStanislav Sedov      kw_MIN = 302,
114*ae771770SStanislav Sedov      kw_MINUS_INFINITY = 303,
115*ae771770SStanislav Sedov      kw_NULL = 304,
116*ae771770SStanislav Sedov      kw_NumericString = 305,
117*ae771770SStanislav Sedov      kw_OBJECT = 306,
118*ae771770SStanislav Sedov      kw_OCTET = 307,
119*ae771770SStanislav Sedov      kw_OF = 308,
120*ae771770SStanislav Sedov      kw_OPTIONAL = 309,
121*ae771770SStanislav Sedov      kw_ObjectDescriptor = 310,
122*ae771770SStanislav Sedov      kw_PATTERN = 311,
123*ae771770SStanislav Sedov      kw_PDV = 312,
124*ae771770SStanislav Sedov      kw_PLUS_INFINITY = 313,
125*ae771770SStanislav Sedov      kw_PRESENT = 314,
126*ae771770SStanislav Sedov      kw_PRIVATE = 315,
127*ae771770SStanislav Sedov      kw_PrintableString = 316,
128*ae771770SStanislav Sedov      kw_REAL = 317,
129*ae771770SStanislav Sedov      kw_RELATIVE_OID = 318,
130*ae771770SStanislav Sedov      kw_SEQUENCE = 319,
131*ae771770SStanislav Sedov      kw_SET = 320,
132*ae771770SStanislav Sedov      kw_SIZE = 321,
133*ae771770SStanislav Sedov      kw_STRING = 322,
134*ae771770SStanislav Sedov      kw_SYNTAX = 323,
135*ae771770SStanislav Sedov      kw_T61String = 324,
136*ae771770SStanislav Sedov      kw_TAGS = 325,
137*ae771770SStanislav Sedov      kw_TRUE = 326,
138*ae771770SStanislav Sedov      kw_TYPE_IDENTIFIER = 327,
139*ae771770SStanislav Sedov      kw_TeletexString = 328,
140*ae771770SStanislav Sedov      kw_UNION = 329,
141*ae771770SStanislav Sedov      kw_UNIQUE = 330,
142*ae771770SStanislav Sedov      kw_UNIVERSAL = 331,
143*ae771770SStanislav Sedov      kw_UTCTime = 332,
144*ae771770SStanislav Sedov      kw_UTF8String = 333,
145*ae771770SStanislav Sedov      kw_UniversalString = 334,
146*ae771770SStanislav Sedov      kw_VideotexString = 335,
147*ae771770SStanislav Sedov      kw_VisibleString = 336,
148*ae771770SStanislav Sedov      kw_WITH = 337,
149*ae771770SStanislav Sedov      RANGE = 338,
150*ae771770SStanislav Sedov      EEQUAL = 339,
151*ae771770SStanislav Sedov      ELLIPSIS = 340,
152*ae771770SStanislav Sedov      IDENTIFIER = 341,
153*ae771770SStanislav Sedov      referencename = 342,
154*ae771770SStanislav Sedov      STRING = 343,
155*ae771770SStanislav Sedov      NUMBER = 344
156*ae771770SStanislav Sedov    };
157*ae771770SStanislav Sedov #endif
158*ae771770SStanislav Sedov /* Tokens.  */
159*ae771770SStanislav Sedov #define kw_ABSENT 258
160*ae771770SStanislav Sedov #define kw_ABSTRACT_SYNTAX 259
161*ae771770SStanislav Sedov #define kw_ALL 260
162*ae771770SStanislav Sedov #define kw_APPLICATION 261
163*ae771770SStanislav Sedov #define kw_AUTOMATIC 262
164*ae771770SStanislav Sedov #define kw_BEGIN 263
165*ae771770SStanislav Sedov #define kw_BIT 264
166*ae771770SStanislav Sedov #define kw_BMPString 265
167*ae771770SStanislav Sedov #define kw_BOOLEAN 266
168*ae771770SStanislav Sedov #define kw_BY 267
169*ae771770SStanislav Sedov #define kw_CHARACTER 268
170*ae771770SStanislav Sedov #define kw_CHOICE 269
171*ae771770SStanislav Sedov #define kw_CLASS 270
172*ae771770SStanislav Sedov #define kw_COMPONENT 271
173*ae771770SStanislav Sedov #define kw_COMPONENTS 272
174*ae771770SStanislav Sedov #define kw_CONSTRAINED 273
175*ae771770SStanislav Sedov #define kw_CONTAINING 274
176*ae771770SStanislav Sedov #define kw_DEFAULT 275
177*ae771770SStanislav Sedov #define kw_DEFINITIONS 276
178*ae771770SStanislav Sedov #define kw_EMBEDDED 277
179*ae771770SStanislav Sedov #define kw_ENCODED 278
180*ae771770SStanislav Sedov #define kw_END 279
181*ae771770SStanislav Sedov #define kw_ENUMERATED 280
182*ae771770SStanislav Sedov #define kw_EXCEPT 281
183*ae771770SStanislav Sedov #define kw_EXPLICIT 282
184*ae771770SStanislav Sedov #define kw_EXPORTS 283
185*ae771770SStanislav Sedov #define kw_EXTENSIBILITY 284
186*ae771770SStanislav Sedov #define kw_EXTERNAL 285
187*ae771770SStanislav Sedov #define kw_FALSE 286
188*ae771770SStanislav Sedov #define kw_FROM 287
189*ae771770SStanislav Sedov #define kw_GeneralString 288
190*ae771770SStanislav Sedov #define kw_GeneralizedTime 289
191*ae771770SStanislav Sedov #define kw_GraphicString 290
192*ae771770SStanislav Sedov #define kw_IA5String 291
193*ae771770SStanislav Sedov #define kw_IDENTIFIER 292
194*ae771770SStanislav Sedov #define kw_IMPLICIT 293
195*ae771770SStanislav Sedov #define kw_IMPLIED 294
196*ae771770SStanislav Sedov #define kw_IMPORTS 295
197*ae771770SStanislav Sedov #define kw_INCLUDES 296
198*ae771770SStanislav Sedov #define kw_INSTANCE 297
199*ae771770SStanislav Sedov #define kw_INTEGER 298
200*ae771770SStanislav Sedov #define kw_INTERSECTION 299
201*ae771770SStanislav Sedov #define kw_ISO646String 300
202*ae771770SStanislav Sedov #define kw_MAX 301
203*ae771770SStanislav Sedov #define kw_MIN 302
204*ae771770SStanislav Sedov #define kw_MINUS_INFINITY 303
205*ae771770SStanislav Sedov #define kw_NULL 304
206*ae771770SStanislav Sedov #define kw_NumericString 305
207*ae771770SStanislav Sedov #define kw_OBJECT 306
208*ae771770SStanislav Sedov #define kw_OCTET 307
209*ae771770SStanislav Sedov #define kw_OF 308
210*ae771770SStanislav Sedov #define kw_OPTIONAL 309
211*ae771770SStanislav Sedov #define kw_ObjectDescriptor 310
212*ae771770SStanislav Sedov #define kw_PATTERN 311
213*ae771770SStanislav Sedov #define kw_PDV 312
214*ae771770SStanislav Sedov #define kw_PLUS_INFINITY 313
215*ae771770SStanislav Sedov #define kw_PRESENT 314
216*ae771770SStanislav Sedov #define kw_PRIVATE 315
217*ae771770SStanislav Sedov #define kw_PrintableString 316
218*ae771770SStanislav Sedov #define kw_REAL 317
219*ae771770SStanislav Sedov #define kw_RELATIVE_OID 318
220*ae771770SStanislav Sedov #define kw_SEQUENCE 319
221*ae771770SStanislav Sedov #define kw_SET 320
222*ae771770SStanislav Sedov #define kw_SIZE 321
223*ae771770SStanislav Sedov #define kw_STRING 322
224*ae771770SStanislav Sedov #define kw_SYNTAX 323
225*ae771770SStanislav Sedov #define kw_T61String 324
226*ae771770SStanislav Sedov #define kw_TAGS 325
227*ae771770SStanislav Sedov #define kw_TRUE 326
228*ae771770SStanislav Sedov #define kw_TYPE_IDENTIFIER 327
229*ae771770SStanislav Sedov #define kw_TeletexString 328
230*ae771770SStanislav Sedov #define kw_UNION 329
231*ae771770SStanislav Sedov #define kw_UNIQUE 330
232*ae771770SStanislav Sedov #define kw_UNIVERSAL 331
233*ae771770SStanislav Sedov #define kw_UTCTime 332
234*ae771770SStanislav Sedov #define kw_UTF8String 333
235*ae771770SStanislav Sedov #define kw_UniversalString 334
236*ae771770SStanislav Sedov #define kw_VideotexString 335
237*ae771770SStanislav Sedov #define kw_VisibleString 336
238*ae771770SStanislav Sedov #define kw_WITH 337
239*ae771770SStanislav Sedov #define RANGE 338
240*ae771770SStanislav Sedov #define EEQUAL 339
241*ae771770SStanislav Sedov #define ELLIPSIS 340
242*ae771770SStanislav Sedov #define IDENTIFIER 341
243*ae771770SStanislav Sedov #define referencename 342
244*ae771770SStanislav Sedov #define STRING 343
245*ae771770SStanislav Sedov #define NUMBER 344
246*ae771770SStanislav Sedov 
247*ae771770SStanislav Sedov 
248*ae771770SStanislav Sedov 
249*ae771770SStanislav Sedov 
250*ae771770SStanislav Sedov /* Copy the first part of user declarations.  */
251*ae771770SStanislav Sedov #line 38 "asn1parse.y"
252*ae771770SStanislav Sedov 
253*ae771770SStanislav Sedov 
254*ae771770SStanislav Sedov #include <config.h>
255*ae771770SStanislav Sedov 
256*ae771770SStanislav Sedov #include <stdio.h>
257*ae771770SStanislav Sedov #include <stdlib.h>
258*ae771770SStanislav Sedov #include <string.h>
259*ae771770SStanislav Sedov #include "symbol.h"
260*ae771770SStanislav Sedov #include "lex.h"
261*ae771770SStanislav Sedov #include "gen_locl.h"
262*ae771770SStanislav Sedov #include "der.h"
263*ae771770SStanislav Sedov 
264*ae771770SStanislav Sedov RCSID("$Id$");
265*ae771770SStanislav Sedov 
266*ae771770SStanislav Sedov static Type *new_type (Typetype t);
267*ae771770SStanislav Sedov static struct constraint_spec *new_constraint_spec(enum ctype);
268*ae771770SStanislav Sedov static Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype);
269*ae771770SStanislav Sedov void yyerror (const char *);
270*ae771770SStanislav Sedov static struct objid *new_objid(const char *label, int value);
271*ae771770SStanislav Sedov static void add_oid_to_tail(struct objid *, struct objid *);
272*ae771770SStanislav Sedov static void fix_labels(Symbol *s);
273*ae771770SStanislav Sedov 
274*ae771770SStanislav Sedov struct string_list {
275*ae771770SStanislav Sedov     char *string;
276*ae771770SStanislav Sedov     struct string_list *next;
277*ae771770SStanislav Sedov };
278*ae771770SStanislav Sedov 
279*ae771770SStanislav Sedov /* Declarations for Bison */
280*ae771770SStanislav Sedov #define YYMALLOC malloc
281*ae771770SStanislav Sedov #define YYFREE   free
282*ae771770SStanislav Sedov 
283*ae771770SStanislav Sedov 
284*ae771770SStanislav Sedov 
285*ae771770SStanislav Sedov /* Enabling traces.  */
286*ae771770SStanislav Sedov #ifndef YYDEBUG
287*ae771770SStanislav Sedov # define YYDEBUG 1
288*ae771770SStanislav Sedov #endif
289*ae771770SStanislav Sedov 
290*ae771770SStanislav Sedov /* Enabling verbose error messages.  */
291*ae771770SStanislav Sedov #ifdef YYERROR_VERBOSE
292*ae771770SStanislav Sedov # undef YYERROR_VERBOSE
293*ae771770SStanislav Sedov # define YYERROR_VERBOSE 1
294*ae771770SStanislav Sedov #else
295*ae771770SStanislav Sedov # define YYERROR_VERBOSE 0
296*ae771770SStanislav Sedov #endif
297*ae771770SStanislav Sedov 
298*ae771770SStanislav Sedov /* Enabling the token table.  */
299*ae771770SStanislav Sedov #ifndef YYTOKEN_TABLE
300*ae771770SStanislav Sedov # define YYTOKEN_TABLE 0
301*ae771770SStanislav Sedov #endif
302*ae771770SStanislav Sedov 
303*ae771770SStanislav Sedov #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
304*ae771770SStanislav Sedov typedef union YYSTYPE
305*ae771770SStanislav Sedov #line 71 "asn1parse.y"
306*ae771770SStanislav Sedov {
307*ae771770SStanislav Sedov     int constant;
308*ae771770SStanislav Sedov     struct value *value;
309*ae771770SStanislav Sedov     struct range *range;
310*ae771770SStanislav Sedov     char *name;
311*ae771770SStanislav Sedov     Type *type;
312*ae771770SStanislav Sedov     Member *member;
313*ae771770SStanislav Sedov     struct objid *objid;
314*ae771770SStanislav Sedov     char *defval;
315*ae771770SStanislav Sedov     struct string_list *sl;
316*ae771770SStanislav Sedov     struct tagtype tag;
317*ae771770SStanislav Sedov     struct memhead *members;
318*ae771770SStanislav Sedov     struct constraint_spec *constraint_spec;
319*ae771770SStanislav Sedov }
320*ae771770SStanislav Sedov /* Line 193 of yacc.c.  */
321*ae771770SStanislav Sedov #line 322 "asn1parse.c"
322*ae771770SStanislav Sedov 	YYSTYPE;
323*ae771770SStanislav Sedov # define yystype YYSTYPE /* obsolescent; will be withdrawn */
324*ae771770SStanislav Sedov # define YYSTYPE_IS_DECLARED 1
325*ae771770SStanislav Sedov # define YYSTYPE_IS_TRIVIAL 1
326*ae771770SStanislav Sedov #endif
327*ae771770SStanislav Sedov 
328*ae771770SStanislav Sedov 
329*ae771770SStanislav Sedov 
330*ae771770SStanislav Sedov /* Copy the second part of user declarations.  */
331*ae771770SStanislav Sedov 
332*ae771770SStanislav Sedov 
333*ae771770SStanislav Sedov /* Line 216 of yacc.c.  */
334*ae771770SStanislav Sedov #line 335 "asn1parse.c"
335*ae771770SStanislav Sedov 
336*ae771770SStanislav Sedov #ifdef short
337*ae771770SStanislav Sedov # undef short
338*ae771770SStanislav Sedov #endif
339*ae771770SStanislav Sedov 
340*ae771770SStanislav Sedov #ifdef YYTYPE_UINT8
341*ae771770SStanislav Sedov typedef YYTYPE_UINT8 yytype_uint8;
342*ae771770SStanislav Sedov #else
343*ae771770SStanislav Sedov typedef unsigned char yytype_uint8;
344*ae771770SStanislav Sedov #endif
345*ae771770SStanislav Sedov 
346*ae771770SStanislav Sedov #ifdef YYTYPE_INT8
347*ae771770SStanislav Sedov typedef YYTYPE_INT8 yytype_int8;
348*ae771770SStanislav Sedov #elif (defined __STDC__ || defined __C99__FUNC__ \
349*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
350*ae771770SStanislav Sedov typedef signed char yytype_int8;
351*ae771770SStanislav Sedov #else
352*ae771770SStanislav Sedov typedef short int yytype_int8;
353*ae771770SStanislav Sedov #endif
354*ae771770SStanislav Sedov 
355*ae771770SStanislav Sedov #ifdef YYTYPE_UINT16
356*ae771770SStanislav Sedov typedef YYTYPE_UINT16 yytype_uint16;
357*ae771770SStanislav Sedov #else
358*ae771770SStanislav Sedov typedef unsigned short int yytype_uint16;
359*ae771770SStanislav Sedov #endif
360*ae771770SStanislav Sedov 
361*ae771770SStanislav Sedov #ifdef YYTYPE_INT16
362*ae771770SStanislav Sedov typedef YYTYPE_INT16 yytype_int16;
363*ae771770SStanislav Sedov #else
364*ae771770SStanislav Sedov typedef short int yytype_int16;
365*ae771770SStanislav Sedov #endif
366*ae771770SStanislav Sedov 
367*ae771770SStanislav Sedov #ifndef YYSIZE_T
368*ae771770SStanislav Sedov # ifdef __SIZE_TYPE__
369*ae771770SStanislav Sedov #  define YYSIZE_T __SIZE_TYPE__
370*ae771770SStanislav Sedov # elif defined size_t
371*ae771770SStanislav Sedov #  define YYSIZE_T size_t
372*ae771770SStanislav Sedov # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
373*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
374*ae771770SStanislav Sedov #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
375*ae771770SStanislav Sedov #  define YYSIZE_T size_t
376*ae771770SStanislav Sedov # else
377*ae771770SStanislav Sedov #  define YYSIZE_T unsigned int
378*ae771770SStanislav Sedov # endif
379*ae771770SStanislav Sedov #endif
380*ae771770SStanislav Sedov 
381*ae771770SStanislav Sedov #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
382*ae771770SStanislav Sedov 
383*ae771770SStanislav Sedov #ifndef YY_
384*ae771770SStanislav Sedov # if defined YYENABLE_NLS && YYENABLE_NLS
385*ae771770SStanislav Sedov #  if ENABLE_NLS
386*ae771770SStanislav Sedov #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
387*ae771770SStanislav Sedov #   define YY_(msgid) dgettext ("bison-runtime", msgid)
388*ae771770SStanislav Sedov #  endif
389*ae771770SStanislav Sedov # endif
390*ae771770SStanislav Sedov # ifndef YY_
391*ae771770SStanislav Sedov #  define YY_(msgid) msgid
392*ae771770SStanislav Sedov # endif
393*ae771770SStanislav Sedov #endif
394*ae771770SStanislav Sedov 
395*ae771770SStanislav Sedov /* Suppress unused-variable warnings by "using" E.  */
396*ae771770SStanislav Sedov #if ! defined lint || defined __GNUC__
397*ae771770SStanislav Sedov # define YYUSE(e) ((void) (e))
398*ae771770SStanislav Sedov #else
399*ae771770SStanislav Sedov # define YYUSE(e) /* empty */
400*ae771770SStanislav Sedov #endif
401*ae771770SStanislav Sedov 
402*ae771770SStanislav Sedov /* Identity function, used to suppress warnings about constant conditions.  */
403*ae771770SStanislav Sedov #ifndef lint
404*ae771770SStanislav Sedov # define YYID(n) (n)
405*ae771770SStanislav Sedov #else
406*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
407*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
408*ae771770SStanislav Sedov static int
409*ae771770SStanislav Sedov YYID (int i)
410*ae771770SStanislav Sedov #else
411*ae771770SStanislav Sedov static int
412*ae771770SStanislav Sedov YYID (i)
413*ae771770SStanislav Sedov     int i;
414*ae771770SStanislav Sedov #endif
415*ae771770SStanislav Sedov {
416*ae771770SStanislav Sedov   return i;
417*ae771770SStanislav Sedov }
418*ae771770SStanislav Sedov #endif
419*ae771770SStanislav Sedov 
420*ae771770SStanislav Sedov #if ! defined yyoverflow || YYERROR_VERBOSE
421*ae771770SStanislav Sedov 
422*ae771770SStanislav Sedov /* The parser invokes alloca or malloc; define the necessary symbols.  */
423*ae771770SStanislav Sedov 
424*ae771770SStanislav Sedov # ifdef YYSTACK_USE_ALLOCA
425*ae771770SStanislav Sedov #  if YYSTACK_USE_ALLOCA
426*ae771770SStanislav Sedov #   ifdef __GNUC__
427*ae771770SStanislav Sedov #    define YYSTACK_ALLOC __builtin_alloca
428*ae771770SStanislav Sedov #   elif defined __BUILTIN_VA_ARG_INCR
429*ae771770SStanislav Sedov #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
430*ae771770SStanislav Sedov #   elif defined _AIX
431*ae771770SStanislav Sedov #    define YYSTACK_ALLOC __alloca
432*ae771770SStanislav Sedov #   elif defined _MSC_VER
433*ae771770SStanislav Sedov #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
434*ae771770SStanislav Sedov #    define alloca _alloca
435*ae771770SStanislav Sedov #   else
436*ae771770SStanislav Sedov #    define YYSTACK_ALLOC alloca
437*ae771770SStanislav Sedov #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
438*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
439*ae771770SStanislav Sedov #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
440*ae771770SStanislav Sedov #     ifndef _STDLIB_H
441*ae771770SStanislav Sedov #      define _STDLIB_H 1
442*ae771770SStanislav Sedov #     endif
443*ae771770SStanislav Sedov #    endif
444*ae771770SStanislav Sedov #   endif
445*ae771770SStanislav Sedov #  endif
446*ae771770SStanislav Sedov # endif
447*ae771770SStanislav Sedov 
448*ae771770SStanislav Sedov # ifdef YYSTACK_ALLOC
449*ae771770SStanislav Sedov    /* Pacify GCC's `empty if-body' warning.  */
450*ae771770SStanislav Sedov #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
451*ae771770SStanislav Sedov #  ifndef YYSTACK_ALLOC_MAXIMUM
452*ae771770SStanislav Sedov     /* The OS might guarantee only one guard page at the bottom of the stack,
453*ae771770SStanislav Sedov        and a page size can be as small as 4096 bytes.  So we cannot safely
454*ae771770SStanislav Sedov        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
455*ae771770SStanislav Sedov        to allow for a few compiler-allocated temporary stack slots.  */
456*ae771770SStanislav Sedov #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
457*ae771770SStanislav Sedov #  endif
458*ae771770SStanislav Sedov # else
459*ae771770SStanislav Sedov #  define YYSTACK_ALLOC YYMALLOC
460*ae771770SStanislav Sedov #  define YYSTACK_FREE YYFREE
461*ae771770SStanislav Sedov #  ifndef YYSTACK_ALLOC_MAXIMUM
462*ae771770SStanislav Sedov #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
463*ae771770SStanislav Sedov #  endif
464*ae771770SStanislav Sedov #  if (defined __cplusplus && ! defined _STDLIB_H \
465*ae771770SStanislav Sedov        && ! ((defined YYMALLOC || defined malloc) \
466*ae771770SStanislav Sedov 	     && (defined YYFREE || defined free)))
467*ae771770SStanislav Sedov #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
468*ae771770SStanislav Sedov #   ifndef _STDLIB_H
469*ae771770SStanislav Sedov #    define _STDLIB_H 1
470*ae771770SStanislav Sedov #   endif
471*ae771770SStanislav Sedov #  endif
472*ae771770SStanislav Sedov #  ifndef YYMALLOC
473*ae771770SStanislav Sedov #   define YYMALLOC malloc
474*ae771770SStanislav Sedov #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
475*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
476*ae771770SStanislav Sedov void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
477*ae771770SStanislav Sedov #   endif
478*ae771770SStanislav Sedov #  endif
479*ae771770SStanislav Sedov #  ifndef YYFREE
480*ae771770SStanislav Sedov #   define YYFREE free
481*ae771770SStanislav Sedov #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
482*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
483*ae771770SStanislav Sedov void free (void *); /* INFRINGES ON USER NAME SPACE */
484*ae771770SStanislav Sedov #   endif
485*ae771770SStanislav Sedov #  endif
486*ae771770SStanislav Sedov # endif
487*ae771770SStanislav Sedov #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
488*ae771770SStanislav Sedov 
489*ae771770SStanislav Sedov 
490*ae771770SStanislav Sedov #if (! defined yyoverflow \
491*ae771770SStanislav Sedov      && (! defined __cplusplus \
492*ae771770SStanislav Sedov 	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
493*ae771770SStanislav Sedov 
494*ae771770SStanislav Sedov /* A type that is properly aligned for any stack member.  */
495*ae771770SStanislav Sedov union yyalloc
496*ae771770SStanislav Sedov {
497*ae771770SStanislav Sedov   yytype_int16 yyss;
498*ae771770SStanislav Sedov   YYSTYPE yyvs;
499*ae771770SStanislav Sedov   };
500*ae771770SStanislav Sedov 
501*ae771770SStanislav Sedov /* The size of the maximum gap between one aligned stack and the next.  */
502*ae771770SStanislav Sedov # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
503*ae771770SStanislav Sedov 
504*ae771770SStanislav Sedov /* The size of an array large to enough to hold all stacks, each with
505*ae771770SStanislav Sedov    N elements.  */
506*ae771770SStanislav Sedov # define YYSTACK_BYTES(N) \
507*ae771770SStanislav Sedov      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
508*ae771770SStanislav Sedov       + YYSTACK_GAP_MAXIMUM)
509*ae771770SStanislav Sedov 
510*ae771770SStanislav Sedov /* Copy COUNT objects from FROM to TO.  The source and destination do
511*ae771770SStanislav Sedov    not overlap.  */
512*ae771770SStanislav Sedov # ifndef YYCOPY
513*ae771770SStanislav Sedov #  if defined __GNUC__ && 1 < __GNUC__
514*ae771770SStanislav Sedov #   define YYCOPY(To, From, Count) \
515*ae771770SStanislav Sedov       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
516*ae771770SStanislav Sedov #  else
517*ae771770SStanislav Sedov #   define YYCOPY(To, From, Count)		\
518*ae771770SStanislav Sedov       do					\
519*ae771770SStanislav Sedov 	{					\
520*ae771770SStanislav Sedov 	  YYSIZE_T yyi;				\
521*ae771770SStanislav Sedov 	  for (yyi = 0; yyi < (Count); yyi++)	\
522*ae771770SStanislav Sedov 	    (To)[yyi] = (From)[yyi];		\
523*ae771770SStanislav Sedov 	}					\
524*ae771770SStanislav Sedov       while (YYID (0))
525*ae771770SStanislav Sedov #  endif
526*ae771770SStanislav Sedov # endif
527*ae771770SStanislav Sedov 
528*ae771770SStanislav Sedov /* Relocate STACK from its old location to the new one.  The
529*ae771770SStanislav Sedov    local variables YYSIZE and YYSTACKSIZE give the old and new number of
530*ae771770SStanislav Sedov    elements in the stack, and YYPTR gives the new location of the
531*ae771770SStanislav Sedov    stack.  Advance YYPTR to a properly aligned location for the next
532*ae771770SStanislav Sedov    stack.  */
533*ae771770SStanislav Sedov # define YYSTACK_RELOCATE(Stack)					\
534*ae771770SStanislav Sedov     do									\
535*ae771770SStanislav Sedov       {									\
536*ae771770SStanislav Sedov 	YYSIZE_T yynewbytes;						\
537*ae771770SStanislav Sedov 	YYCOPY (&yyptr->Stack, Stack, yysize);				\
538*ae771770SStanislav Sedov 	Stack = &yyptr->Stack;						\
539*ae771770SStanislav Sedov 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
540*ae771770SStanislav Sedov 	yyptr += yynewbytes / sizeof (*yyptr);				\
541*ae771770SStanislav Sedov       }									\
542*ae771770SStanislav Sedov     while (YYID (0))
543*ae771770SStanislav Sedov 
544*ae771770SStanislav Sedov #endif
545*ae771770SStanislav Sedov 
546*ae771770SStanislav Sedov /* YYFINAL -- State number of the termination state.  */
547*ae771770SStanislav Sedov #define YYFINAL  6
548*ae771770SStanislav Sedov /* YYLAST -- Last index in YYTABLE.  */
549*ae771770SStanislav Sedov #define YYLAST   203
550*ae771770SStanislav Sedov 
551*ae771770SStanislav Sedov /* YYNTOKENS -- Number of terminals.  */
552*ae771770SStanislav Sedov #define YYNTOKENS  98
553*ae771770SStanislav Sedov /* YYNNTS -- Number of nonterminals.  */
554*ae771770SStanislav Sedov #define YYNNTS  69
555*ae771770SStanislav Sedov /* YYNRULES -- Number of rules.  */
556*ae771770SStanislav Sedov #define YYNRULES  140
557*ae771770SStanislav Sedov /* YYNRULES -- Number of states.  */
558*ae771770SStanislav Sedov #define YYNSTATES  220
559*ae771770SStanislav Sedov 
560*ae771770SStanislav Sedov /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
561*ae771770SStanislav Sedov #define YYUNDEFTOK  2
562*ae771770SStanislav Sedov #define YYMAXUTOK   344
563*ae771770SStanislav Sedov 
564*ae771770SStanislav Sedov #define YYTRANSLATE(YYX)						\
565*ae771770SStanislav Sedov   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
566*ae771770SStanislav Sedov 
567*ae771770SStanislav Sedov /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
568*ae771770SStanislav Sedov static const yytype_uint8 yytranslate[] =
569*ae771770SStanislav Sedov {
570*ae771770SStanislav Sedov        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
571*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
572*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
573*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
574*ae771770SStanislav Sedov       92,    93,     2,     2,    91,     2,     2,     2,     2,     2,
575*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,    90,
576*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
577*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
578*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
579*ae771770SStanislav Sedov        2,    96,     2,    97,     2,     2,     2,     2,     2,     2,
580*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
581*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
582*ae771770SStanislav Sedov        2,     2,     2,    94,     2,    95,     2,     2,     2,     2,
583*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
584*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
585*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
586*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
587*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
588*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
589*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
590*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
591*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
592*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
593*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
594*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
595*ae771770SStanislav Sedov        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
596*ae771770SStanislav Sedov        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
597*ae771770SStanislav Sedov       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
598*ae771770SStanislav Sedov       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
599*ae771770SStanislav Sedov       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
600*ae771770SStanislav Sedov       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
601*ae771770SStanislav Sedov       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
602*ae771770SStanislav Sedov       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
603*ae771770SStanislav Sedov       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
604*ae771770SStanislav Sedov       85,    86,    87,    88,    89
605*ae771770SStanislav Sedov };
606*ae771770SStanislav Sedov 
607*ae771770SStanislav Sedov #if YYDEBUG
608*ae771770SStanislav Sedov /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
609*ae771770SStanislav Sedov    YYRHS.  */
610*ae771770SStanislav Sedov static const yytype_uint16 yyprhs[] =
611*ae771770SStanislav Sedov {
612*ae771770SStanislav Sedov        0,     0,     3,    13,    16,    19,    22,    23,    26,    27,
613*ae771770SStanislav Sedov       31,    32,    36,    37,    39,    40,    42,    45,    50,    54,
614*ae771770SStanislav Sedov       57,    58,    60,    63,    65,    67,    71,    73,    77,    79,
615*ae771770SStanislav Sedov       81,    83,    85,    87,    89,    91,    93,    95,    97,    99,
616*ae771770SStanislav Sedov      101,   103,   105,   107,   109,   111,   113,   119,   125,   131,
617*ae771770SStanislav Sedov      135,   137,   140,   145,   147,   151,   155,   160,   165,   167,
618*ae771770SStanislav Sedov      170,   176,   179,   183,   185,   186,   189,   194,   198,   203,
619*ae771770SStanislav Sedov      208,   212,   216,   221,   223,   225,   227,   229,   231,   234,
620*ae771770SStanislav Sedov      238,   240,   242,   244,   247,   251,   257,   262,   266,   271,
621*ae771770SStanislav Sedov      272,   274,   276,   278,   279,   281,   283,   288,   290,   292,
622*ae771770SStanislav Sedov      294,   296,   298,   300,   302,   304,   306,   308,   312,   316,
623*ae771770SStanislav Sedov      319,   321,   324,   328,   330,   334,   339,   341,   342,   346,
624*ae771770SStanislav Sedov      347,   350,   355,   357,   359,   361,   363,   365,   367,   369,
625*ae771770SStanislav Sedov      371,   373,   375,   377,   379,   381,   383,   385,   387,   389,
626*ae771770SStanislav Sedov      391
627*ae771770SStanislav Sedov };
628*ae771770SStanislav Sedov 
629*ae771770SStanislav Sedov /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
630*ae771770SStanislav Sedov static const yytype_int16 yyrhs[] =
631*ae771770SStanislav Sedov {
632*ae771770SStanislav Sedov       99,     0,    -1,    86,   152,    21,   100,   101,    84,     8,
633*ae771770SStanislav Sedov      102,    24,    -1,    27,    70,    -1,    38,    70,    -1,     7,
634*ae771770SStanislav Sedov       70,    -1,    -1,    29,    39,    -1,    -1,   107,   103,   108,
635*ae771770SStanislav Sedov       -1,    -1,    40,   104,    90,    -1,    -1,   105,    -1,    -1,
636*ae771770SStanislav Sedov      106,    -1,   105,   106,    -1,   110,    32,    86,   152,    -1,
637*ae771770SStanislav Sedov       28,   110,    90,    -1,    28,     5,    -1,    -1,   109,    -1,
638*ae771770SStanislav Sedov      109,   108,    -1,   111,    -1,   144,    -1,    86,    91,   110,
639*ae771770SStanislav Sedov       -1,    86,    -1,    86,    84,   112,    -1,   113,    -1,   131,
640*ae771770SStanislav Sedov       -1,   134,    -1,   121,    -1,   114,    -1,   145,    -1,   130,
641*ae771770SStanislav Sedov       -1,   119,    -1,   116,    -1,   124,    -1,   122,    -1,   123,
642*ae771770SStanislav Sedov       -1,   126,    -1,   127,    -1,   128,    -1,   129,    -1,   140,
643*ae771770SStanislav Sedov       -1,    11,    -1,    92,   156,    83,   156,    93,    -1,    92,
644*ae771770SStanislav Sedov      156,    83,    46,    93,    -1,    92,    47,    83,   156,    93,
645*ae771770SStanislav Sedov       -1,    92,   156,    93,    -1,    43,    -1,    43,   115,    -1,
646*ae771770SStanislav Sedov       43,    94,   117,    95,    -1,   118,    -1,   117,    91,   118,
647*ae771770SStanislav Sedov       -1,   117,    91,    85,    -1,    86,    92,   164,    93,    -1,
648*ae771770SStanislav Sedov       25,    94,   120,    95,    -1,   117,    -1,     9,    67,    -1,
649*ae771770SStanislav Sedov        9,    67,    94,   150,    95,    -1,    51,    37,    -1,    52,
650*ae771770SStanislav Sedov       67,   125,    -1,    49,    -1,    -1,    66,   115,    -1,    64,
651*ae771770SStanislav Sedov       94,   147,    95,    -1,    64,    94,    95,    -1,    64,   125,
652*ae771770SStanislav Sedov       53,   112,    -1,    65,    94,   147,    95,    -1,    65,    94,
653*ae771770SStanislav Sedov       95,    -1,    65,    53,   112,    -1,    14,    94,   147,    95,
654*ae771770SStanislav Sedov       -1,   132,    -1,   133,    -1,    86,    -1,    34,    -1,    77,
655*ae771770SStanislav Sedov       -1,   112,   135,    -1,    92,   136,    93,    -1,   137,    -1,
656*ae771770SStanislav Sedov      138,    -1,   139,    -1,    19,   112,    -1,    23,    12,   156,
657*ae771770SStanislav Sedov       -1,    19,   112,    23,    12,   156,    -1,    18,    12,    94,
658*ae771770SStanislav Sedov       95,    -1,   141,   143,   112,    -1,    96,   142,    89,    97,
659*ae771770SStanislav Sedov       -1,    -1,    76,    -1,     6,    -1,    60,    -1,    -1,    27,
660*ae771770SStanislav Sedov       -1,    38,    -1,    86,   112,    84,   156,    -1,   146,    -1,
661*ae771770SStanislav Sedov       33,    -1,    73,    -1,    78,    -1,    61,    -1,    81,    -1,
662*ae771770SStanislav Sedov       36,    -1,    10,    -1,    79,    -1,   149,    -1,   147,    91,
663*ae771770SStanislav Sedov      149,    -1,   147,    91,    85,    -1,    86,   112,    -1,   148,
664*ae771770SStanislav Sedov       -1,   148,    54,    -1,   148,    20,   156,    -1,   151,    -1,
665*ae771770SStanislav Sedov      150,    91,   151,    -1,    86,    92,    89,    93,    -1,   153,
666*ae771770SStanislav Sedov       -1,    -1,    94,   154,    95,    -1,    -1,   155,   154,    -1,
667*ae771770SStanislav Sedov       86,    92,    89,    93,    -1,    86,    -1,    89,    -1,   157,
668*ae771770SStanislav Sedov       -1,   158,    -1,   162,    -1,   161,    -1,   163,    -1,   166,
669*ae771770SStanislav Sedov       -1,   165,    -1,   159,    -1,   160,    -1,    86,    -1,    88,
670*ae771770SStanislav Sedov       -1,    71,    -1,    31,    -1,   164,    -1,    89,    -1,    49,
671*ae771770SStanislav Sedov       -1,   153,    -1
672*ae771770SStanislav Sedov };
673*ae771770SStanislav Sedov 
674*ae771770SStanislav Sedov /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
675*ae771770SStanislav Sedov static const yytype_uint16 yyrline[] =
676*ae771770SStanislav Sedov {
677*ae771770SStanislav Sedov        0,   239,   239,   246,   247,   249,   251,   254,   256,   259,
678*ae771770SStanislav Sedov      260,   263,   264,   267,   268,   271,   272,   275,   287,   293,
679*ae771770SStanislav Sedov      294,   297,   298,   301,   302,   305,   311,   319,   329,   330,
680*ae771770SStanislav Sedov      331,   334,   335,   336,   337,   338,   339,   340,   341,   342,
681*ae771770SStanislav Sedov      343,   344,   345,   346,   347,   350,   357,   367,   375,   383,
682*ae771770SStanislav Sedov      394,   399,   405,   413,   419,   424,   428,   441,   449,   452,
683*ae771770SStanislav Sedov      459,   467,   473,   482,   490,   491,   496,   502,   510,   519,
684*ae771770SStanislav Sedov      525,   533,   541,   548,   549,   552,   563,   568,   575,   591,
685*ae771770SStanislav Sedov      597,   600,   601,   604,   610,   618,   628,   634,   647,   656,
686*ae771770SStanislav Sedov      659,   663,   667,   674,   677,   681,   688,   699,   702,   707,
687*ae771770SStanislav Sedov      712,   717,   722,   727,   732,   737,   745,   751,   756,   767,
688*ae771770SStanislav Sedov      778,   784,   790,   798,   804,   811,   824,   825,   828,   835,
689*ae771770SStanislav Sedov      838,   849,   853,   864,   870,   871,   874,   875,   876,   877,
690*ae771770SStanislav Sedov      878,   881,   884,   887,   898,   906,   912,   920,   928,   931,
691*ae771770SStanislav Sedov      936
692*ae771770SStanislav Sedov };
693*ae771770SStanislav Sedov #endif
694*ae771770SStanislav Sedov 
695*ae771770SStanislav Sedov #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
696*ae771770SStanislav Sedov /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
697*ae771770SStanislav Sedov    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
698*ae771770SStanislav Sedov static const char *const yytname[] =
699*ae771770SStanislav Sedov {
700*ae771770SStanislav Sedov   "$end", "error", "$undefined", "kw_ABSENT", "kw_ABSTRACT_SYNTAX",
701*ae771770SStanislav Sedov   "kw_ALL", "kw_APPLICATION", "kw_AUTOMATIC", "kw_BEGIN", "kw_BIT",
702*ae771770SStanislav Sedov   "kw_BMPString", "kw_BOOLEAN", "kw_BY", "kw_CHARACTER", "kw_CHOICE",
703*ae771770SStanislav Sedov   "kw_CLASS", "kw_COMPONENT", "kw_COMPONENTS", "kw_CONSTRAINED",
704*ae771770SStanislav Sedov   "kw_CONTAINING", "kw_DEFAULT", "kw_DEFINITIONS", "kw_EMBEDDED",
705*ae771770SStanislav Sedov   "kw_ENCODED", "kw_END", "kw_ENUMERATED", "kw_EXCEPT", "kw_EXPLICIT",
706*ae771770SStanislav Sedov   "kw_EXPORTS", "kw_EXTENSIBILITY", "kw_EXTERNAL", "kw_FALSE", "kw_FROM",
707*ae771770SStanislav Sedov   "kw_GeneralString", "kw_GeneralizedTime", "kw_GraphicString",
708*ae771770SStanislav Sedov   "kw_IA5String", "kw_IDENTIFIER", "kw_IMPLICIT", "kw_IMPLIED",
709*ae771770SStanislav Sedov   "kw_IMPORTS", "kw_INCLUDES", "kw_INSTANCE", "kw_INTEGER",
710*ae771770SStanislav Sedov   "kw_INTERSECTION", "kw_ISO646String", "kw_MAX", "kw_MIN",
711*ae771770SStanislav Sedov   "kw_MINUS_INFINITY", "kw_NULL", "kw_NumericString", "kw_OBJECT",
712*ae771770SStanislav Sedov   "kw_OCTET", "kw_OF", "kw_OPTIONAL", "kw_ObjectDescriptor", "kw_PATTERN",
713*ae771770SStanislav Sedov   "kw_PDV", "kw_PLUS_INFINITY", "kw_PRESENT", "kw_PRIVATE",
714*ae771770SStanislav Sedov   "kw_PrintableString", "kw_REAL", "kw_RELATIVE_OID", "kw_SEQUENCE",
715*ae771770SStanislav Sedov   "kw_SET", "kw_SIZE", "kw_STRING", "kw_SYNTAX", "kw_T61String", "kw_TAGS",
716*ae771770SStanislav Sedov   "kw_TRUE", "kw_TYPE_IDENTIFIER", "kw_TeletexString", "kw_UNION",
717*ae771770SStanislav Sedov   "kw_UNIQUE", "kw_UNIVERSAL", "kw_UTCTime", "kw_UTF8String",
718*ae771770SStanislav Sedov   "kw_UniversalString", "kw_VideotexString", "kw_VisibleString", "kw_WITH",
719*ae771770SStanislav Sedov   "RANGE", "EEQUAL", "ELLIPSIS", "IDENTIFIER", "referencename", "STRING",
720*ae771770SStanislav Sedov   "NUMBER", "';'", "','", "'('", "')'", "'{'", "'}'", "'['", "']'",
721*ae771770SStanislav Sedov   "$accept", "ModuleDefinition", "TagDefault", "ExtensionDefault",
722*ae771770SStanislav Sedov   "ModuleBody", "Imports", "SymbolsImported", "SymbolsFromModuleList",
723*ae771770SStanislav Sedov   "SymbolsFromModule", "Exports", "AssignmentList", "Assignment",
724*ae771770SStanislav Sedov   "referencenames", "TypeAssignment", "Type", "BuiltinType", "BooleanType",
725*ae771770SStanislav Sedov   "range", "IntegerType", "NamedNumberList", "NamedNumber",
726*ae771770SStanislav Sedov   "EnumeratedType", "Enumerations", "BitStringType",
727*ae771770SStanislav Sedov   "ObjectIdentifierType", "OctetStringType", "NullType", "size",
728*ae771770SStanislav Sedov   "SequenceType", "SequenceOfType", "SetType", "SetOfType", "ChoiceType",
729*ae771770SStanislav Sedov   "ReferencedType", "DefinedType", "UsefulType", "ConstrainedType",
730*ae771770SStanislav Sedov   "Constraint", "ConstraintSpec", "GeneralConstraint",
731*ae771770SStanislav Sedov   "ContentsConstraint", "UserDefinedConstraint", "TaggedType", "Tag",
732*ae771770SStanislav Sedov   "Class", "tagenv", "ValueAssignment", "CharacterStringType",
733*ae771770SStanislav Sedov   "RestrictedCharactedStringType", "ComponentTypeList", "NamedType",
734*ae771770SStanislav Sedov   "ComponentType", "NamedBitList", "NamedBit", "objid_opt", "objid",
735*ae771770SStanislav Sedov   "objid_list", "objid_element", "Value", "BuiltinValue",
736*ae771770SStanislav Sedov   "ReferencedValue", "DefinedValue", "Valuereference",
737*ae771770SStanislav Sedov   "CharacterStringValue", "BooleanValue", "IntegerValue", "SignedNumber",
738*ae771770SStanislav Sedov   "NullValue", "ObjectIdentifierValue", 0
739*ae771770SStanislav Sedov };
740*ae771770SStanislav Sedov #endif
741*ae771770SStanislav Sedov 
742*ae771770SStanislav Sedov # ifdef YYPRINT
743*ae771770SStanislav Sedov /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
744*ae771770SStanislav Sedov    token YYLEX-NUM.  */
745*ae771770SStanislav Sedov static const yytype_uint16 yytoknum[] =
746*ae771770SStanislav Sedov {
747*ae771770SStanislav Sedov        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
748*ae771770SStanislav Sedov      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
749*ae771770SStanislav Sedov      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
750*ae771770SStanislav Sedov      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
751*ae771770SStanislav Sedov      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
752*ae771770SStanislav Sedov      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
753*ae771770SStanislav Sedov      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
754*ae771770SStanislav Sedov      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
755*ae771770SStanislav Sedov      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
756*ae771770SStanislav Sedov       59,    44,    40,    41,   123,   125,    91,    93
757*ae771770SStanislav Sedov };
758*ae771770SStanislav Sedov # endif
759*ae771770SStanislav Sedov 
760*ae771770SStanislav Sedov /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
761*ae771770SStanislav Sedov static const yytype_uint8 yyr1[] =
762*ae771770SStanislav Sedov {
763*ae771770SStanislav Sedov        0,    98,    99,   100,   100,   100,   100,   101,   101,   102,
764*ae771770SStanislav Sedov      102,   103,   103,   104,   104,   105,   105,   106,   107,   107,
765*ae771770SStanislav Sedov      107,   108,   108,   109,   109,   110,   110,   111,   112,   112,
766*ae771770SStanislav Sedov      112,   113,   113,   113,   113,   113,   113,   113,   113,   113,
767*ae771770SStanislav Sedov      113,   113,   113,   113,   113,   114,   115,   115,   115,   115,
768*ae771770SStanislav Sedov      116,   116,   116,   117,   117,   117,   118,   119,   120,   121,
769*ae771770SStanislav Sedov      121,   122,   123,   124,   125,   125,   126,   126,   127,   128,
770*ae771770SStanislav Sedov      128,   129,   130,   131,   131,   132,   133,   133,   134,   135,
771*ae771770SStanislav Sedov      136,   137,   137,   138,   138,   138,   139,   140,   141,   142,
772*ae771770SStanislav Sedov      142,   142,   142,   143,   143,   143,   144,   145,   146,   146,
773*ae771770SStanislav Sedov      146,   146,   146,   146,   146,   146,   147,   147,   147,   148,
774*ae771770SStanislav Sedov      149,   149,   149,   150,   150,   151,   152,   152,   153,   154,
775*ae771770SStanislav Sedov      154,   155,   155,   155,   156,   156,   157,   157,   157,   157,
776*ae771770SStanislav Sedov      157,   158,   159,   160,   161,   162,   162,   163,   164,   165,
777*ae771770SStanislav Sedov      166
778*ae771770SStanislav Sedov };
779*ae771770SStanislav Sedov 
780*ae771770SStanislav Sedov /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
781*ae771770SStanislav Sedov static const yytype_uint8 yyr2[] =
782*ae771770SStanislav Sedov {
783*ae771770SStanislav Sedov        0,     2,     9,     2,     2,     2,     0,     2,     0,     3,
784*ae771770SStanislav Sedov        0,     3,     0,     1,     0,     1,     2,     4,     3,     2,
785*ae771770SStanislav Sedov        0,     1,     2,     1,     1,     3,     1,     3,     1,     1,
786*ae771770SStanislav Sedov        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
787*ae771770SStanislav Sedov        1,     1,     1,     1,     1,     1,     5,     5,     5,     3,
788*ae771770SStanislav Sedov        1,     2,     4,     1,     3,     3,     4,     4,     1,     2,
789*ae771770SStanislav Sedov        5,     2,     3,     1,     0,     2,     4,     3,     4,     4,
790*ae771770SStanislav Sedov        3,     3,     4,     1,     1,     1,     1,     1,     2,     3,
791*ae771770SStanislav Sedov        1,     1,     1,     2,     3,     5,     4,     3,     4,     0,
792*ae771770SStanislav Sedov        1,     1,     1,     0,     1,     1,     4,     1,     1,     1,
793*ae771770SStanislav Sedov        1,     1,     1,     1,     1,     1,     1,     3,     3,     2,
794*ae771770SStanislav Sedov        1,     2,     3,     1,     3,     4,     1,     0,     3,     0,
795*ae771770SStanislav Sedov        2,     4,     1,     1,     1,     1,     1,     1,     1,     1,
796*ae771770SStanislav Sedov        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
797*ae771770SStanislav Sedov        1
798*ae771770SStanislav Sedov };
799*ae771770SStanislav Sedov 
800*ae771770SStanislav Sedov /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
801*ae771770SStanislav Sedov    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
802*ae771770SStanislav Sedov    means the default is an error.  */
803*ae771770SStanislav Sedov static const yytype_uint8 yydefact[] =
804*ae771770SStanislav Sedov {
805*ae771770SStanislav Sedov        0,   117,     0,   119,     0,   116,     1,   122,   123,     0,
806*ae771770SStanislav Sedov      119,     6,     0,   118,   120,     0,     0,     0,     8,     0,
807*ae771770SStanislav Sedov        5,     3,     4,     0,     0,   121,     7,     0,    20,     0,
808*ae771770SStanislav Sedov        0,    12,    19,    26,     0,     2,    14,     0,     0,    18,
809*ae771770SStanislav Sedov        0,    13,    15,     0,     0,     9,    21,    23,    24,    25,
810*ae771770SStanislav Sedov       11,    16,     0,     0,   104,    45,     0,     0,    98,    76,
811*ae771770SStanislav Sedov      103,    50,    63,     0,     0,   101,    64,     0,    99,    77,
812*ae771770SStanislav Sedov      100,   105,   102,     0,    75,    89,     0,    28,    32,    36,
813*ae771770SStanislav Sedov       35,    31,    38,    39,    37,    40,    41,    42,    43,    34,
814*ae771770SStanislav Sedov       29,    73,    74,    30,    44,    93,    33,    97,    22,   117,
815*ae771770SStanislav Sedov       59,     0,     0,     0,     0,    51,    61,    64,     0,     0,
816*ae771770SStanislav Sedov        0,     0,     0,    27,    91,    92,    90,     0,     0,     0,
817*ae771770SStanislav Sedov       78,    94,    95,     0,    17,     0,     0,     0,   110,   106,
818*ae771770SStanislav Sedov        0,    58,    53,     0,   136,     0,   139,   135,   133,   134,
819*ae771770SStanislav Sedov      138,   140,     0,   124,   125,   131,   132,   127,   126,   128,
820*ae771770SStanislav Sedov      137,   130,   129,     0,    62,    65,    67,     0,     0,    71,
821*ae771770SStanislav Sedov       70,     0,     0,    96,     0,     0,     0,     0,    80,    81,
822*ae771770SStanislav Sedov       82,    87,     0,     0,   113,   109,     0,    72,     0,   111,
823*ae771770SStanislav Sedov        0,     0,    57,     0,     0,    49,    52,    66,    68,    69,
824*ae771770SStanislav Sedov       88,     0,    83,     0,    79,     0,     0,    60,   108,   107,
825*ae771770SStanislav Sedov      112,     0,    55,    54,     0,     0,     0,     0,     0,    84,
826*ae771770SStanislav Sedov        0,   114,    56,    48,    47,    46,    86,     0,   115,    85
827*ae771770SStanislav Sedov };
828*ae771770SStanislav Sedov 
829*ae771770SStanislav Sedov /* YYDEFGOTO[NTERM-NUM].  */
830*ae771770SStanislav Sedov static const yytype_int16 yydefgoto[] =
831*ae771770SStanislav Sedov {
832*ae771770SStanislav Sedov       -1,     2,    18,    24,    30,    37,    40,    41,    42,    31,
833*ae771770SStanislav Sedov       45,    46,    43,    47,    76,    77,    78,   105,    79,   131,
834*ae771770SStanislav Sedov      132,    80,   133,    81,    82,    83,    84,   110,    85,    86,
835*ae771770SStanislav Sedov       87,    88,    89,    90,    91,    92,    93,   120,   167,   168,
836*ae771770SStanislav Sedov      169,   170,    94,    95,   117,   123,    48,    96,    97,   127,
837*ae771770SStanislav Sedov      128,   129,   173,   174,     4,   141,     9,    10,   142,   143,
838*ae771770SStanislav Sedov      144,   145,   146,   147,   148,   149,   150,   151,   152
839*ae771770SStanislav Sedov };
840*ae771770SStanislav Sedov 
841*ae771770SStanislav Sedov /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
842*ae771770SStanislav Sedov    STATE-NUM.  */
843*ae771770SStanislav Sedov #define YYPACT_NINF -119
844*ae771770SStanislav Sedov static const yytype_int16 yypact[] =
845*ae771770SStanislav Sedov {
846*ae771770SStanislav Sedov      -43,   -56,    47,   -65,    29,  -119,  -119,   -31,  -119,   -25,
847*ae771770SStanislav Sedov      -65,     4,    -1,  -119,  -119,    17,    20,    26,    50,    13,
848*ae771770SStanislav Sedov     -119,  -119,  -119,    63,    24,  -119,  -119,   104,     8,    -2,
849*ae771770SStanislav Sedov       89,    74,  -119,    33,    25,  -119,    34,    39,    34,  -119,
850*ae771770SStanislav Sedov       37,    34,  -119,    98,    58,  -119,    39,  -119,  -119,  -119,
851*ae771770SStanislav Sedov     -119,  -119,    52,    66,  -119,  -119,    51,    53,  -119,  -119,
852*ae771770SStanislav Sedov     -119,   -79,  -119,   109,    81,  -119,   -60,   -48,  -119,  -119,
853*ae771770SStanislav Sedov     -119,  -119,  -119,   107,  -119,     2,   -74,  -119,  -119,  -119,
854*ae771770SStanislav Sedov     -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,
855*ae771770SStanislav Sedov     -119,  -119,  -119,  -119,  -119,   -18,  -119,  -119,  -119,   -56,
856*ae771770SStanislav Sedov       55,    65,    67,   -12,    67,  -119,  -119,    86,    68,   -70,
857*ae771770SStanislav Sedov      102,   107,   -69,    69,  -119,  -119,  -119,    73,    40,    10,
858*ae771770SStanislav Sedov     -119,  -119,  -119,   107,  -119,    71,   107,   -47,   -13,  -119,
859*ae771770SStanislav Sedov       72,    75,  -119,    70,  -119,    80,  -119,  -119,  -119,  -119,
860*ae771770SStanislav Sedov     -119,  -119,   -71,  -119,  -119,  -119,  -119,  -119,  -119,  -119,
861*ae771770SStanislav Sedov     -119,  -119,  -119,   -46,  -119,  -119,  -119,   -39,   107,    69,
862*ae771770SStanislav Sedov     -119,   -38,    76,  -119,   155,   107,   157,    77,  -119,  -119,
863*ae771770SStanislav Sedov     -119,    69,    82,   -10,  -119,    69,   -22,  -119,    40,  -119,
864*ae771770SStanislav Sedov       87,    19,  -119,    40,     9,  -119,  -119,  -119,    69,  -119,
865*ae771770SStanislav Sedov     -119,    83,   -19,    40,  -119,    90,    71,  -119,  -119,  -119,
866*ae771770SStanislav Sedov     -119,    85,  -119,  -119,    88,    94,    96,    95,   163,  -119,
867*ae771770SStanislav Sedov       99,  -119,  -119,  -119,  -119,  -119,  -119,    40,  -119,  -119
868*ae771770SStanislav Sedov };
869*ae771770SStanislav Sedov 
870*ae771770SStanislav Sedov /* YYPGOTO[NTERM-NUM].  */
871*ae771770SStanislav Sedov static const yytype_int16 yypgoto[] =
872*ae771770SStanislav Sedov {
873*ae771770SStanislav Sedov     -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,   141,  -119,
874*ae771770SStanislav Sedov      137,  -119,   -15,  -119,   -72,  -119,  -119,    91,  -119,    92,
875*ae771770SStanislav Sedov       14,  -119,  -119,  -119,  -119,  -119,  -119,    84,  -119,  -119,
876*ae771770SStanislav Sedov     -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,
877*ae771770SStanislav Sedov     -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,  -119,   -82,
878*ae771770SStanislav Sedov     -119,    18,  -119,     5,   101,     1,   187,  -119,  -118,  -119,
879*ae771770SStanislav Sedov     -119,  -119,  -119,  -119,  -119,  -119,    22,  -119,  -119
880*ae771770SStanislav Sedov };
881*ae771770SStanislav Sedov 
882*ae771770SStanislav Sedov /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
883*ae771770SStanislav Sedov    positive, shift that token.  If negative, reduce the rule which
884*ae771770SStanislav Sedov    number is the opposite.  If zero, do what YYDEFACT says.
885*ae771770SStanislav Sedov    If YYTABLE_NINF, syntax error.  */
886*ae771770SStanislav Sedov #define YYTABLE_NINF -11
887*ae771770SStanislav Sedov static const yytype_int16 yytable[] =
888*ae771770SStanislav Sedov {
889*ae771770SStanislav Sedov      163,   113,     5,    32,   208,   111,   108,   178,   114,   121,
890*ae771770SStanislav Sedov      118,    15,   184,   103,    34,   104,   126,   126,   119,   134,
891*ae771770SStanislav Sedov      122,     7,   185,    49,     8,   156,   160,   157,   164,   165,
892*ae771770SStanislav Sedov      161,    16,   -10,   166,   109,   135,    29,   136,     3,   159,
893*ae771770SStanislav Sedov      134,   179,    17,     1,   176,   181,   112,     6,   177,   186,
894*ae771770SStanislav Sedov       11,   171,   176,   176,   175,   205,   187,   189,   136,   137,
895*ae771770SStanislav Sedov      200,    12,   115,   198,   126,   204,   206,    53,    54,    55,
896*ae771770SStanislav Sedov       13,   134,    56,   119,   138,   209,   139,   140,   116,    23,
897*ae771770SStanislav Sedov      137,   196,     3,    57,    33,   197,   188,    20,    19,   136,
898*ae771770SStanislav Sedov       21,    58,    59,   192,    60,   138,    22,   139,   140,   219,
899*ae771770SStanislav Sedov        5,    61,    26,     3,   202,   130,    25,    62,    27,    63,
900*ae771770SStanislav Sedov       64,   137,    28,    35,    36,    39,    53,    54,    55,    65,
901*ae771770SStanislav Sedov       33,    56,    66,    67,    38,    44,   138,    50,   139,   140,
902*ae771770SStanislav Sedov       52,    68,    57,   100,     3,    69,    70,    71,    99,    72,
903*ae771770SStanislav Sedov       58,    59,    73,    60,    74,   101,   106,   102,   107,   125,
904*ae771770SStanislav Sedov       61,   126,   108,   130,    75,   158,    62,   172,    63,    64,
905*ae771770SStanislav Sedov      103,   119,   162,   183,   180,   182,   181,   191,    65,   193,
906*ae771770SStanislav Sedov      194,    66,    67,   190,   195,   217,   140,   207,   212,   210,
907*ae771770SStanislav Sedov       68,   213,    51,    98,    69,    70,    71,   214,    72,   215,
908*ae771770SStanislav Sedov      216,   154,   218,    74,   199,   203,   153,    14,     0,   155,
909*ae771770SStanislav Sedov      124,   211,   201,    75
910*ae771770SStanislav Sedov };
911*ae771770SStanislav Sedov 
912*ae771770SStanislav Sedov static const yytype_int16 yycheck[] =
913*ae771770SStanislav Sedov {
914*ae771770SStanislav Sedov      118,    73,     1,     5,    23,    53,    66,    20,     6,    27,
915*ae771770SStanislav Sedov       84,     7,    83,    92,    29,    94,    86,    86,    92,    31,
916*ae771770SStanislav Sedov       38,    86,    93,    38,    89,    95,    95,   109,    18,    19,
917*ae771770SStanislav Sedov      112,    27,    24,    23,    94,    47,    28,    49,    94,   111,
918*ae771770SStanislav Sedov       31,    54,    38,    86,    91,    91,    94,     0,    95,    95,
919*ae771770SStanislav Sedov       21,   123,    91,    91,   126,    46,    95,    95,    49,    71,
920*ae771770SStanislav Sedov      178,    92,    60,    85,    86,   183,   184,     9,    10,    11,
921*ae771770SStanislav Sedov       95,    31,    14,    92,    86,   193,    88,    89,    76,    29,
922*ae771770SStanislav Sedov       71,    91,    94,    25,    86,    95,   158,    70,    89,    49,
923*ae771770SStanislav Sedov       70,    33,    34,   165,    36,    86,    70,    88,    89,   217,
924*ae771770SStanislav Sedov       99,    43,    39,    94,    85,    86,    93,    49,    84,    51,
925*ae771770SStanislav Sedov       52,    71,     8,    24,    40,    90,     9,    10,    11,    61,
926*ae771770SStanislav Sedov       86,    14,    64,    65,    91,    86,    86,    90,    88,    89,
927*ae771770SStanislav Sedov       32,    73,    25,    67,    94,    77,    78,    79,    86,    81,
928*ae771770SStanislav Sedov       33,    34,    84,    36,    86,    94,    37,    94,    67,    94,
929*ae771770SStanislav Sedov       43,    86,    66,    86,    96,    53,    49,    86,    51,    52,
930*ae771770SStanislav Sedov       92,    92,    89,    83,    92,    95,    91,    12,    61,    12,
931*ae771770SStanislav Sedov       93,    64,    65,    97,    92,    12,    89,    94,    93,    89,
932*ae771770SStanislav Sedov       73,    93,    41,    46,    77,    78,    79,    93,    81,    93,
933*ae771770SStanislav Sedov       95,   107,    93,    86,   176,   181,   104,    10,    -1,   108,
934*ae771770SStanislav Sedov       99,   196,   180,    96
935*ae771770SStanislav Sedov };
936*ae771770SStanislav Sedov 
937*ae771770SStanislav Sedov /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
938*ae771770SStanislav Sedov    symbol of state STATE-NUM.  */
939*ae771770SStanislav Sedov static const yytype_uint8 yystos[] =
940*ae771770SStanislav Sedov {
941*ae771770SStanislav Sedov        0,    86,    99,    94,   152,   153,     0,    86,    89,   154,
942*ae771770SStanislav Sedov      155,    21,    92,    95,   154,     7,    27,    38,   100,    89,
943*ae771770SStanislav Sedov       70,    70,    70,    29,   101,    93,    39,    84,     8,    28,
944*ae771770SStanislav Sedov      102,   107,     5,    86,   110,    24,    40,   103,    91,    90,
945*ae771770SStanislav Sedov      104,   105,   106,   110,    86,   108,   109,   111,   144,   110,
946*ae771770SStanislav Sedov       90,   106,    32,     9,    10,    11,    14,    25,    33,    34,
947*ae771770SStanislav Sedov       36,    43,    49,    51,    52,    61,    64,    65,    73,    77,
948*ae771770SStanislav Sedov       78,    79,    81,    84,    86,    96,   112,   113,   114,   116,
949*ae771770SStanislav Sedov      119,   121,   122,   123,   124,   126,   127,   128,   129,   130,
950*ae771770SStanislav Sedov      131,   132,   133,   134,   140,   141,   145,   146,   108,    86,
951*ae771770SStanislav Sedov       67,    94,    94,    92,    94,   115,    37,    67,    66,    94,
952*ae771770SStanislav Sedov      125,    53,    94,   112,     6,    60,    76,   142,    84,    92,
953*ae771770SStanislav Sedov      135,    27,    38,   143,   152,    94,    86,   147,   148,   149,
954*ae771770SStanislav Sedov       86,   117,   118,   120,    31,    47,    49,    71,    86,    88,
955*ae771770SStanislav Sedov       89,   153,   156,   157,   158,   159,   160,   161,   162,   163,
956*ae771770SStanislav Sedov      164,   165,   166,   117,   125,   115,    95,   147,    53,   112,
957*ae771770SStanislav Sedov       95,   147,    89,   156,    18,    19,    23,   136,   137,   138,
958*ae771770SStanislav Sedov      139,   112,    86,   150,   151,   112,    91,    95,    20,    54,
959*ae771770SStanislav Sedov       92,    91,    95,    83,    83,    93,    95,    95,   112,    95,
960*ae771770SStanislav Sedov       97,    12,   112,    12,    93,    92,    91,    95,    85,   149,
961*ae771770SStanislav Sedov      156,   164,    85,   118,   156,    46,   156,    94,    23,   156,
962*ae771770SStanislav Sedov       89,   151,    93,    93,    93,    93,    95,    12,    93,   156
963*ae771770SStanislav Sedov };
964*ae771770SStanislav Sedov 
965*ae771770SStanislav Sedov #define yyerrok		(yyerrstatus = 0)
966*ae771770SStanislav Sedov #define yyclearin	(yychar = YYEMPTY)
967*ae771770SStanislav Sedov #define YYEMPTY		(-2)
968*ae771770SStanislav Sedov #define YYEOF		0
969*ae771770SStanislav Sedov 
970*ae771770SStanislav Sedov #define YYACCEPT	goto yyacceptlab
971*ae771770SStanislav Sedov #define YYABORT		goto yyabortlab
972*ae771770SStanislav Sedov #define YYERROR		goto yyerrorlab
973*ae771770SStanislav Sedov 
974*ae771770SStanislav Sedov 
975*ae771770SStanislav Sedov /* Like YYERROR except do call yyerror.  This remains here temporarily
976*ae771770SStanislav Sedov    to ease the transition to the new meaning of YYERROR, for GCC.
977*ae771770SStanislav Sedov    Once GCC version 2 has supplanted version 1, this can go.  */
978*ae771770SStanislav Sedov 
979*ae771770SStanislav Sedov #define YYFAIL		goto yyerrlab
980*ae771770SStanislav Sedov 
981*ae771770SStanislav Sedov #define YYRECOVERING()  (!!yyerrstatus)
982*ae771770SStanislav Sedov 
983*ae771770SStanislav Sedov #define YYBACKUP(Token, Value)					\
984*ae771770SStanislav Sedov do								\
985*ae771770SStanislav Sedov   if (yychar == YYEMPTY && yylen == 1)				\
986*ae771770SStanislav Sedov     {								\
987*ae771770SStanislav Sedov       yychar = (Token);						\
988*ae771770SStanislav Sedov       yylval = (Value);						\
989*ae771770SStanislav Sedov       yytoken = YYTRANSLATE (yychar);				\
990*ae771770SStanislav Sedov       YYPOPSTACK (1);						\
991*ae771770SStanislav Sedov       goto yybackup;						\
992*ae771770SStanislav Sedov     }								\
993*ae771770SStanislav Sedov   else								\
994*ae771770SStanislav Sedov     {								\
995*ae771770SStanislav Sedov       yyerror (YY_("syntax error: cannot back up")); \
996*ae771770SStanislav Sedov       YYERROR;							\
997*ae771770SStanislav Sedov     }								\
998*ae771770SStanislav Sedov while (YYID (0))
999*ae771770SStanislav Sedov 
1000*ae771770SStanislav Sedov 
1001*ae771770SStanislav Sedov #define YYTERROR	1
1002*ae771770SStanislav Sedov #define YYERRCODE	256
1003*ae771770SStanislav Sedov 
1004*ae771770SStanislav Sedov 
1005*ae771770SStanislav Sedov /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1006*ae771770SStanislav Sedov    If N is 0, then set CURRENT to the empty location which ends
1007*ae771770SStanislav Sedov    the previous symbol: RHS[0] (always defined).  */
1008*ae771770SStanislav Sedov 
1009*ae771770SStanislav Sedov #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1010*ae771770SStanislav Sedov #ifndef YYLLOC_DEFAULT
1011*ae771770SStanislav Sedov # define YYLLOC_DEFAULT(Current, Rhs, N)				\
1012*ae771770SStanislav Sedov     do									\
1013*ae771770SStanislav Sedov       if (YYID (N))                                                    \
1014*ae771770SStanislav Sedov 	{								\
1015*ae771770SStanislav Sedov 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
1016*ae771770SStanislav Sedov 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
1017*ae771770SStanislav Sedov 	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
1018*ae771770SStanislav Sedov 	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
1019*ae771770SStanislav Sedov 	}								\
1020*ae771770SStanislav Sedov       else								\
1021*ae771770SStanislav Sedov 	{								\
1022*ae771770SStanislav Sedov 	  (Current).first_line   = (Current).last_line   =		\
1023*ae771770SStanislav Sedov 	    YYRHSLOC (Rhs, 0).last_line;				\
1024*ae771770SStanislav Sedov 	  (Current).first_column = (Current).last_column =		\
1025*ae771770SStanislav Sedov 	    YYRHSLOC (Rhs, 0).last_column;				\
1026*ae771770SStanislav Sedov 	}								\
1027*ae771770SStanislav Sedov     while (YYID (0))
1028*ae771770SStanislav Sedov #endif
1029*ae771770SStanislav Sedov 
1030*ae771770SStanislav Sedov 
1031*ae771770SStanislav Sedov /* YY_LOCATION_PRINT -- Print the location on the stream.
1032*ae771770SStanislav Sedov    This macro was not mandated originally: define only if we know
1033*ae771770SStanislav Sedov    we won't break user code: when these are the locations we know.  */
1034*ae771770SStanislav Sedov 
1035*ae771770SStanislav Sedov #ifndef YY_LOCATION_PRINT
1036*ae771770SStanislav Sedov # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1037*ae771770SStanislav Sedov #  define YY_LOCATION_PRINT(File, Loc)			\
1038*ae771770SStanislav Sedov      fprintf (File, "%d.%d-%d.%d",			\
1039*ae771770SStanislav Sedov 	      (Loc).first_line, (Loc).first_column,	\
1040*ae771770SStanislav Sedov 	      (Loc).last_line,  (Loc).last_column)
1041*ae771770SStanislav Sedov # else
1042*ae771770SStanislav Sedov #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1043*ae771770SStanislav Sedov # endif
1044*ae771770SStanislav Sedov #endif
1045*ae771770SStanislav Sedov 
1046*ae771770SStanislav Sedov 
1047*ae771770SStanislav Sedov /* YYLEX -- calling `yylex' with the right arguments.  */
1048*ae771770SStanislav Sedov 
1049*ae771770SStanislav Sedov #ifdef YYLEX_PARAM
1050*ae771770SStanislav Sedov # define YYLEX yylex (YYLEX_PARAM)
1051*ae771770SStanislav Sedov #else
1052*ae771770SStanislav Sedov # define YYLEX yylex ()
1053*ae771770SStanislav Sedov #endif
1054*ae771770SStanislav Sedov 
1055*ae771770SStanislav Sedov /* Enable debugging if requested.  */
1056*ae771770SStanislav Sedov #if YYDEBUG
1057*ae771770SStanislav Sedov 
1058*ae771770SStanislav Sedov # ifndef YYFPRINTF
1059*ae771770SStanislav Sedov #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1060*ae771770SStanislav Sedov #  define YYFPRINTF fprintf
1061*ae771770SStanislav Sedov # endif
1062*ae771770SStanislav Sedov 
1063*ae771770SStanislav Sedov # define YYDPRINTF(Args)			\
1064*ae771770SStanislav Sedov do {						\
1065*ae771770SStanislav Sedov   if (yydebug)					\
1066*ae771770SStanislav Sedov     YYFPRINTF Args;				\
1067*ae771770SStanislav Sedov } while (YYID (0))
1068*ae771770SStanislav Sedov 
1069*ae771770SStanislav Sedov # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
1070*ae771770SStanislav Sedov do {									  \
1071*ae771770SStanislav Sedov   if (yydebug)								  \
1072*ae771770SStanislav Sedov     {									  \
1073*ae771770SStanislav Sedov       YYFPRINTF (stderr, "%s ", Title);					  \
1074*ae771770SStanislav Sedov       yy_symbol_print (stderr,						  \
1075*ae771770SStanislav Sedov 		  Type, Value); \
1076*ae771770SStanislav Sedov       YYFPRINTF (stderr, "\n");						  \
1077*ae771770SStanislav Sedov     }									  \
1078*ae771770SStanislav Sedov } while (YYID (0))
1079*ae771770SStanislav Sedov 
1080*ae771770SStanislav Sedov 
1081*ae771770SStanislav Sedov /*--------------------------------.
1082*ae771770SStanislav Sedov | Print this symbol on YYOUTPUT.  |
1083*ae771770SStanislav Sedov `--------------------------------*/
1084*ae771770SStanislav Sedov 
1085*ae771770SStanislav Sedov /*ARGSUSED*/
1086*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1087*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1088*ae771770SStanislav Sedov static void
1089*ae771770SStanislav Sedov yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1090*ae771770SStanislav Sedov #else
1091*ae771770SStanislav Sedov static void
1092*ae771770SStanislav Sedov yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1093*ae771770SStanislav Sedov     FILE *yyoutput;
1094*ae771770SStanislav Sedov     int yytype;
1095*ae771770SStanislav Sedov     YYSTYPE const * const yyvaluep;
1096*ae771770SStanislav Sedov #endif
1097*ae771770SStanislav Sedov {
1098*ae771770SStanislav Sedov   if (!yyvaluep)
1099*ae771770SStanislav Sedov     return;
1100*ae771770SStanislav Sedov # ifdef YYPRINT
1101*ae771770SStanislav Sedov   if (yytype < YYNTOKENS)
1102*ae771770SStanislav Sedov     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1103*ae771770SStanislav Sedov # else
1104*ae771770SStanislav Sedov   YYUSE (yyoutput);
1105*ae771770SStanislav Sedov # endif
1106*ae771770SStanislav Sedov   switch (yytype)
1107*ae771770SStanislav Sedov     {
1108*ae771770SStanislav Sedov       default:
1109*ae771770SStanislav Sedov 	break;
1110*ae771770SStanislav Sedov     }
1111*ae771770SStanislav Sedov }
1112*ae771770SStanislav Sedov 
1113*ae771770SStanislav Sedov 
1114*ae771770SStanislav Sedov /*--------------------------------.
1115*ae771770SStanislav Sedov | Print this symbol on YYOUTPUT.  |
1116*ae771770SStanislav Sedov `--------------------------------*/
1117*ae771770SStanislav Sedov 
1118*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1119*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1120*ae771770SStanislav Sedov static void
1121*ae771770SStanislav Sedov yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1122*ae771770SStanislav Sedov #else
1123*ae771770SStanislav Sedov static void
1124*ae771770SStanislav Sedov yy_symbol_print (yyoutput, yytype, yyvaluep)
1125*ae771770SStanislav Sedov     FILE *yyoutput;
1126*ae771770SStanislav Sedov     int yytype;
1127*ae771770SStanislav Sedov     YYSTYPE const * const yyvaluep;
1128*ae771770SStanislav Sedov #endif
1129*ae771770SStanislav Sedov {
1130*ae771770SStanislav Sedov   if (yytype < YYNTOKENS)
1131*ae771770SStanislav Sedov     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1132*ae771770SStanislav Sedov   else
1133*ae771770SStanislav Sedov     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1134*ae771770SStanislav Sedov 
1135*ae771770SStanislav Sedov   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1136*ae771770SStanislav Sedov   YYFPRINTF (yyoutput, ")");
1137*ae771770SStanislav Sedov }
1138*ae771770SStanislav Sedov 
1139*ae771770SStanislav Sedov /*------------------------------------------------------------------.
1140*ae771770SStanislav Sedov | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1141*ae771770SStanislav Sedov | TOP (included).                                                   |
1142*ae771770SStanislav Sedov `------------------------------------------------------------------*/
1143*ae771770SStanislav Sedov 
1144*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1145*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1146*ae771770SStanislav Sedov static void
1147*ae771770SStanislav Sedov yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1148*ae771770SStanislav Sedov #else
1149*ae771770SStanislav Sedov static void
1150*ae771770SStanislav Sedov yy_stack_print (bottom, top)
1151*ae771770SStanislav Sedov     yytype_int16 *bottom;
1152*ae771770SStanislav Sedov     yytype_int16 *top;
1153*ae771770SStanislav Sedov #endif
1154*ae771770SStanislav Sedov {
1155*ae771770SStanislav Sedov   YYFPRINTF (stderr, "Stack now");
1156*ae771770SStanislav Sedov   for (; bottom <= top; ++bottom)
1157*ae771770SStanislav Sedov     YYFPRINTF (stderr, " %d", *bottom);
1158*ae771770SStanislav Sedov   YYFPRINTF (stderr, "\n");
1159*ae771770SStanislav Sedov }
1160*ae771770SStanislav Sedov 
1161*ae771770SStanislav Sedov # define YY_STACK_PRINT(Bottom, Top)				\
1162*ae771770SStanislav Sedov do {								\
1163*ae771770SStanislav Sedov   if (yydebug)							\
1164*ae771770SStanislav Sedov     yy_stack_print ((Bottom), (Top));				\
1165*ae771770SStanislav Sedov } while (YYID (0))
1166*ae771770SStanislav Sedov 
1167*ae771770SStanislav Sedov 
1168*ae771770SStanislav Sedov /*------------------------------------------------.
1169*ae771770SStanislav Sedov | Report that the YYRULE is going to be reduced.  |
1170*ae771770SStanislav Sedov `------------------------------------------------*/
1171*ae771770SStanislav Sedov 
1172*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1173*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1174*ae771770SStanislav Sedov static void
1175*ae771770SStanislav Sedov yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1176*ae771770SStanislav Sedov #else
1177*ae771770SStanislav Sedov static void
1178*ae771770SStanislav Sedov yy_reduce_print (yyvsp, yyrule)
1179*ae771770SStanislav Sedov     YYSTYPE *yyvsp;
1180*ae771770SStanislav Sedov     int yyrule;
1181*ae771770SStanislav Sedov #endif
1182*ae771770SStanislav Sedov {
1183*ae771770SStanislav Sedov   int yynrhs = yyr2[yyrule];
1184*ae771770SStanislav Sedov   int yyi;
1185*ae771770SStanislav Sedov   unsigned long int yylno = yyrline[yyrule];
1186*ae771770SStanislav Sedov   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1187*ae771770SStanislav Sedov 	     yyrule - 1, yylno);
1188*ae771770SStanislav Sedov   /* The symbols being reduced.  */
1189*ae771770SStanislav Sedov   for (yyi = 0; yyi < yynrhs; yyi++)
1190*ae771770SStanislav Sedov     {
1191*ae771770SStanislav Sedov       fprintf (stderr, "   $%d = ", yyi + 1);
1192*ae771770SStanislav Sedov       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1193*ae771770SStanislav Sedov 		       &(yyvsp[(yyi + 1) - (yynrhs)])
1194*ae771770SStanislav Sedov 		       		       );
1195*ae771770SStanislav Sedov       fprintf (stderr, "\n");
1196*ae771770SStanislav Sedov     }
1197*ae771770SStanislav Sedov }
1198*ae771770SStanislav Sedov 
1199*ae771770SStanislav Sedov # define YY_REDUCE_PRINT(Rule)		\
1200*ae771770SStanislav Sedov do {					\
1201*ae771770SStanislav Sedov   if (yydebug)				\
1202*ae771770SStanislav Sedov     yy_reduce_print (yyvsp, Rule); \
1203*ae771770SStanislav Sedov } while (YYID (0))
1204*ae771770SStanislav Sedov 
1205*ae771770SStanislav Sedov /* Nonzero means print parse trace.  It is left uninitialized so that
1206*ae771770SStanislav Sedov    multiple parsers can coexist.  */
1207*ae771770SStanislav Sedov int yydebug;
1208*ae771770SStanislav Sedov #else /* !YYDEBUG */
1209*ae771770SStanislav Sedov # define YYDPRINTF(Args)
1210*ae771770SStanislav Sedov # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1211*ae771770SStanislav Sedov # define YY_STACK_PRINT(Bottom, Top)
1212*ae771770SStanislav Sedov # define YY_REDUCE_PRINT(Rule)
1213*ae771770SStanislav Sedov #endif /* !YYDEBUG */
1214*ae771770SStanislav Sedov 
1215*ae771770SStanislav Sedov 
1216*ae771770SStanislav Sedov /* YYINITDEPTH -- initial size of the parser's stacks.  */
1217*ae771770SStanislav Sedov #ifndef	YYINITDEPTH
1218*ae771770SStanislav Sedov # define YYINITDEPTH 200
1219*ae771770SStanislav Sedov #endif
1220*ae771770SStanislav Sedov 
1221*ae771770SStanislav Sedov /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1222*ae771770SStanislav Sedov    if the built-in stack extension method is used).
1223*ae771770SStanislav Sedov 
1224*ae771770SStanislav Sedov    Do not make this value too large; the results are undefined if
1225*ae771770SStanislav Sedov    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1226*ae771770SStanislav Sedov    evaluated with infinite-precision integer arithmetic.  */
1227*ae771770SStanislav Sedov 
1228*ae771770SStanislav Sedov #ifndef YYMAXDEPTH
1229*ae771770SStanislav Sedov # define YYMAXDEPTH 10000
1230*ae771770SStanislav Sedov #endif
1231*ae771770SStanislav Sedov 
1232*ae771770SStanislav Sedov 
1233*ae771770SStanislav Sedov 
1234*ae771770SStanislav Sedov #if YYERROR_VERBOSE
1235*ae771770SStanislav Sedov 
1236*ae771770SStanislav Sedov # ifndef yystrlen
1237*ae771770SStanislav Sedov #  if defined __GLIBC__ && defined _STRING_H
1238*ae771770SStanislav Sedov #   define yystrlen strlen
1239*ae771770SStanislav Sedov #  else
1240*ae771770SStanislav Sedov /* Return the length of YYSTR.  */
1241*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1242*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1243*ae771770SStanislav Sedov static YYSIZE_T
1244*ae771770SStanislav Sedov yystrlen (const char *yystr)
1245*ae771770SStanislav Sedov #else
1246*ae771770SStanislav Sedov static YYSIZE_T
1247*ae771770SStanislav Sedov yystrlen (yystr)
1248*ae771770SStanislav Sedov     const char *yystr;
1249*ae771770SStanislav Sedov #endif
1250*ae771770SStanislav Sedov {
1251*ae771770SStanislav Sedov   YYSIZE_T yylen;
1252*ae771770SStanislav Sedov   for (yylen = 0; yystr[yylen]; yylen++)
1253*ae771770SStanislav Sedov     continue;
1254*ae771770SStanislav Sedov   return yylen;
1255*ae771770SStanislav Sedov }
1256*ae771770SStanislav Sedov #  endif
1257*ae771770SStanislav Sedov # endif
1258*ae771770SStanislav Sedov 
1259*ae771770SStanislav Sedov # ifndef yystpcpy
1260*ae771770SStanislav Sedov #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1261*ae771770SStanislav Sedov #   define yystpcpy stpcpy
1262*ae771770SStanislav Sedov #  else
1263*ae771770SStanislav Sedov /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1264*ae771770SStanislav Sedov    YYDEST.  */
1265*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1266*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1267*ae771770SStanislav Sedov static char *
1268*ae771770SStanislav Sedov yystpcpy (char *yydest, const char *yysrc)
1269*ae771770SStanislav Sedov #else
1270*ae771770SStanislav Sedov static char *
1271*ae771770SStanislav Sedov yystpcpy (yydest, yysrc)
1272*ae771770SStanislav Sedov     char *yydest;
1273*ae771770SStanislav Sedov     const char *yysrc;
1274*ae771770SStanislav Sedov #endif
1275*ae771770SStanislav Sedov {
1276*ae771770SStanislav Sedov   char *yyd = yydest;
1277*ae771770SStanislav Sedov   const char *yys = yysrc;
1278*ae771770SStanislav Sedov 
1279*ae771770SStanislav Sedov   while ((*yyd++ = *yys++) != '\0')
1280*ae771770SStanislav Sedov     continue;
1281*ae771770SStanislav Sedov 
1282*ae771770SStanislav Sedov   return yyd - 1;
1283*ae771770SStanislav Sedov }
1284*ae771770SStanislav Sedov #  endif
1285*ae771770SStanislav Sedov # endif
1286*ae771770SStanislav Sedov 
1287*ae771770SStanislav Sedov # ifndef yytnamerr
1288*ae771770SStanislav Sedov /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1289*ae771770SStanislav Sedov    quotes and backslashes, so that it's suitable for yyerror.  The
1290*ae771770SStanislav Sedov    heuristic is that double-quoting is unnecessary unless the string
1291*ae771770SStanislav Sedov    contains an apostrophe, a comma, or backslash (other than
1292*ae771770SStanislav Sedov    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1293*ae771770SStanislav Sedov    null, do not copy; instead, return the length of what the result
1294*ae771770SStanislav Sedov    would have been.  */
1295*ae771770SStanislav Sedov static YYSIZE_T
1296*ae771770SStanislav Sedov yytnamerr (char *yyres, const char *yystr)
1297*ae771770SStanislav Sedov {
1298*ae771770SStanislav Sedov   if (*yystr == '"')
1299*ae771770SStanislav Sedov     {
1300*ae771770SStanislav Sedov       YYSIZE_T yyn = 0;
1301*ae771770SStanislav Sedov       char const *yyp = yystr;
1302*ae771770SStanislav Sedov 
1303*ae771770SStanislav Sedov       for (;;)
1304*ae771770SStanislav Sedov 	switch (*++yyp)
1305*ae771770SStanislav Sedov 	  {
1306*ae771770SStanislav Sedov 	  case '\'':
1307*ae771770SStanislav Sedov 	  case ',':
1308*ae771770SStanislav Sedov 	    goto do_not_strip_quotes;
1309*ae771770SStanislav Sedov 
1310*ae771770SStanislav Sedov 	  case '\\':
1311*ae771770SStanislav Sedov 	    if (*++yyp != '\\')
1312*ae771770SStanislav Sedov 	      goto do_not_strip_quotes;
1313*ae771770SStanislav Sedov 	    /* Fall through.  */
1314*ae771770SStanislav Sedov 	  default:
1315*ae771770SStanislav Sedov 	    if (yyres)
1316*ae771770SStanislav Sedov 	      yyres[yyn] = *yyp;
1317*ae771770SStanislav Sedov 	    yyn++;
1318*ae771770SStanislav Sedov 	    break;
1319*ae771770SStanislav Sedov 
1320*ae771770SStanislav Sedov 	  case '"':
1321*ae771770SStanislav Sedov 	    if (yyres)
1322*ae771770SStanislav Sedov 	      yyres[yyn] = '\0';
1323*ae771770SStanislav Sedov 	    return yyn;
1324*ae771770SStanislav Sedov 	  }
1325*ae771770SStanislav Sedov     do_not_strip_quotes: ;
1326*ae771770SStanislav Sedov     }
1327*ae771770SStanislav Sedov 
1328*ae771770SStanislav Sedov   if (! yyres)
1329*ae771770SStanislav Sedov     return yystrlen (yystr);
1330*ae771770SStanislav Sedov 
1331*ae771770SStanislav Sedov   return yystpcpy (yyres, yystr) - yyres;
1332*ae771770SStanislav Sedov }
1333*ae771770SStanislav Sedov # endif
1334*ae771770SStanislav Sedov 
1335*ae771770SStanislav Sedov /* Copy into YYRESULT an error message about the unexpected token
1336*ae771770SStanislav Sedov    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1337*ae771770SStanislav Sedov    including the terminating null byte.  If YYRESULT is null, do not
1338*ae771770SStanislav Sedov    copy anything; just return the number of bytes that would be
1339*ae771770SStanislav Sedov    copied.  As a special case, return 0 if an ordinary "syntax error"
1340*ae771770SStanislav Sedov    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1341*ae771770SStanislav Sedov    size calculation.  */
1342*ae771770SStanislav Sedov static YYSIZE_T
1343*ae771770SStanislav Sedov yysyntax_error (char *yyresult, int yystate, int yychar)
1344*ae771770SStanislav Sedov {
1345*ae771770SStanislav Sedov   int yyn = yypact[yystate];
1346*ae771770SStanislav Sedov 
1347*ae771770SStanislav Sedov   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1348*ae771770SStanislav Sedov     return 0;
1349*ae771770SStanislav Sedov   else
1350*ae771770SStanislav Sedov     {
1351*ae771770SStanislav Sedov       int yytype = YYTRANSLATE (yychar);
1352*ae771770SStanislav Sedov       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1353*ae771770SStanislav Sedov       YYSIZE_T yysize = yysize0;
1354*ae771770SStanislav Sedov       YYSIZE_T yysize1;
1355*ae771770SStanislav Sedov       int yysize_overflow = 0;
1356*ae771770SStanislav Sedov       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1357*ae771770SStanislav Sedov       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1358*ae771770SStanislav Sedov       int yyx;
1359*ae771770SStanislav Sedov 
1360*ae771770SStanislav Sedov # if 0
1361*ae771770SStanislav Sedov       /* This is so xgettext sees the translatable formats that are
1362*ae771770SStanislav Sedov 	 constructed on the fly.  */
1363*ae771770SStanislav Sedov       YY_("syntax error, unexpected %s");
1364*ae771770SStanislav Sedov       YY_("syntax error, unexpected %s, expecting %s");
1365*ae771770SStanislav Sedov       YY_("syntax error, unexpected %s, expecting %s or %s");
1366*ae771770SStanislav Sedov       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1367*ae771770SStanislav Sedov       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1368*ae771770SStanislav Sedov # endif
1369*ae771770SStanislav Sedov       char *yyfmt;
1370*ae771770SStanislav Sedov       char const *yyf;
1371*ae771770SStanislav Sedov       static char const yyunexpected[] = "syntax error, unexpected %s";
1372*ae771770SStanislav Sedov       static char const yyexpecting[] = ", expecting %s";
1373*ae771770SStanislav Sedov       static char const yyor[] = " or %s";
1374*ae771770SStanislav Sedov       char yyformat[sizeof yyunexpected
1375*ae771770SStanislav Sedov 		    + sizeof yyexpecting - 1
1376*ae771770SStanislav Sedov 		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1377*ae771770SStanislav Sedov 		       * (sizeof yyor - 1))];
1378*ae771770SStanislav Sedov       char const *yyprefix = yyexpecting;
1379*ae771770SStanislav Sedov 
1380*ae771770SStanislav Sedov       /* Start YYX at -YYN if negative to avoid negative indexes in
1381*ae771770SStanislav Sedov 	 YYCHECK.  */
1382*ae771770SStanislav Sedov       int yyxbegin = yyn < 0 ? -yyn : 0;
1383*ae771770SStanislav Sedov 
1384*ae771770SStanislav Sedov       /* Stay within bounds of both yycheck and yytname.  */
1385*ae771770SStanislav Sedov       int yychecklim = YYLAST - yyn + 1;
1386*ae771770SStanislav Sedov       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1387*ae771770SStanislav Sedov       int yycount = 1;
1388*ae771770SStanislav Sedov 
1389*ae771770SStanislav Sedov       yyarg[0] = yytname[yytype];
1390*ae771770SStanislav Sedov       yyfmt = yystpcpy (yyformat, yyunexpected);
1391*ae771770SStanislav Sedov 
1392*ae771770SStanislav Sedov       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1393*ae771770SStanislav Sedov 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1394*ae771770SStanislav Sedov 	  {
1395*ae771770SStanislav Sedov 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1396*ae771770SStanislav Sedov 	      {
1397*ae771770SStanislav Sedov 		yycount = 1;
1398*ae771770SStanislav Sedov 		yysize = yysize0;
1399*ae771770SStanislav Sedov 		yyformat[sizeof yyunexpected - 1] = '\0';
1400*ae771770SStanislav Sedov 		break;
1401*ae771770SStanislav Sedov 	      }
1402*ae771770SStanislav Sedov 	    yyarg[yycount++] = yytname[yyx];
1403*ae771770SStanislav Sedov 	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1404*ae771770SStanislav Sedov 	    yysize_overflow |= (yysize1 < yysize);
1405*ae771770SStanislav Sedov 	    yysize = yysize1;
1406*ae771770SStanislav Sedov 	    yyfmt = yystpcpy (yyfmt, yyprefix);
1407*ae771770SStanislav Sedov 	    yyprefix = yyor;
1408*ae771770SStanislav Sedov 	  }
1409*ae771770SStanislav Sedov 
1410*ae771770SStanislav Sedov       yyf = YY_(yyformat);
1411*ae771770SStanislav Sedov       yysize1 = yysize + yystrlen (yyf);
1412*ae771770SStanislav Sedov       yysize_overflow |= (yysize1 < yysize);
1413*ae771770SStanislav Sedov       yysize = yysize1;
1414*ae771770SStanislav Sedov 
1415*ae771770SStanislav Sedov       if (yysize_overflow)
1416*ae771770SStanislav Sedov 	return YYSIZE_MAXIMUM;
1417*ae771770SStanislav Sedov 
1418*ae771770SStanislav Sedov       if (yyresult)
1419*ae771770SStanislav Sedov 	{
1420*ae771770SStanislav Sedov 	  /* Avoid sprintf, as that infringes on the user's name space.
1421*ae771770SStanislav Sedov 	     Don't have undefined behavior even if the translation
1422*ae771770SStanislav Sedov 	     produced a string with the wrong number of "%s"s.  */
1423*ae771770SStanislav Sedov 	  char *yyp = yyresult;
1424*ae771770SStanislav Sedov 	  int yyi = 0;
1425*ae771770SStanislav Sedov 	  while ((*yyp = *yyf) != '\0')
1426*ae771770SStanislav Sedov 	    {
1427*ae771770SStanislav Sedov 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1428*ae771770SStanislav Sedov 		{
1429*ae771770SStanislav Sedov 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
1430*ae771770SStanislav Sedov 		  yyf += 2;
1431*ae771770SStanislav Sedov 		}
1432*ae771770SStanislav Sedov 	      else
1433*ae771770SStanislav Sedov 		{
1434*ae771770SStanislav Sedov 		  yyp++;
1435*ae771770SStanislav Sedov 		  yyf++;
1436*ae771770SStanislav Sedov 		}
1437*ae771770SStanislav Sedov 	    }
1438*ae771770SStanislav Sedov 	}
1439*ae771770SStanislav Sedov       return yysize;
1440*ae771770SStanislav Sedov     }
1441*ae771770SStanislav Sedov }
1442*ae771770SStanislav Sedov #endif /* YYERROR_VERBOSE */
1443*ae771770SStanislav Sedov 
1444*ae771770SStanislav Sedov 
1445*ae771770SStanislav Sedov /*-----------------------------------------------.
1446*ae771770SStanislav Sedov | Release the memory associated to this symbol.  |
1447*ae771770SStanislav Sedov `-----------------------------------------------*/
1448*ae771770SStanislav Sedov 
1449*ae771770SStanislav Sedov /*ARGSUSED*/
1450*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1451*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1452*ae771770SStanislav Sedov static void
1453*ae771770SStanislav Sedov yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1454*ae771770SStanislav Sedov #else
1455*ae771770SStanislav Sedov static void
1456*ae771770SStanislav Sedov yydestruct (yymsg, yytype, yyvaluep)
1457*ae771770SStanislav Sedov     const char *yymsg;
1458*ae771770SStanislav Sedov     int yytype;
1459*ae771770SStanislav Sedov     YYSTYPE *yyvaluep;
1460*ae771770SStanislav Sedov #endif
1461*ae771770SStanislav Sedov {
1462*ae771770SStanislav Sedov   YYUSE (yyvaluep);
1463*ae771770SStanislav Sedov 
1464*ae771770SStanislav Sedov   if (!yymsg)
1465*ae771770SStanislav Sedov     yymsg = "Deleting";
1466*ae771770SStanislav Sedov   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1467*ae771770SStanislav Sedov 
1468*ae771770SStanislav Sedov   switch (yytype)
1469*ae771770SStanislav Sedov     {
1470*ae771770SStanislav Sedov 
1471*ae771770SStanislav Sedov       default:
1472*ae771770SStanislav Sedov 	break;
1473*ae771770SStanislav Sedov     }
1474*ae771770SStanislav Sedov }
1475*ae771770SStanislav Sedov 
1476*ae771770SStanislav Sedov 
1477*ae771770SStanislav Sedov /* Prevent warnings from -Wmissing-prototypes.  */
1478*ae771770SStanislav Sedov 
1479*ae771770SStanislav Sedov #ifdef YYPARSE_PARAM
1480*ae771770SStanislav Sedov #if defined __STDC__ || defined __cplusplus
1481*ae771770SStanislav Sedov int yyparse (void *YYPARSE_PARAM);
1482*ae771770SStanislav Sedov #else
1483*ae771770SStanislav Sedov int yyparse ();
1484*ae771770SStanislav Sedov #endif
1485*ae771770SStanislav Sedov #else /* ! YYPARSE_PARAM */
1486*ae771770SStanislav Sedov #if defined __STDC__ || defined __cplusplus
1487*ae771770SStanislav Sedov int yyparse (void);
1488*ae771770SStanislav Sedov #else
1489*ae771770SStanislav Sedov int yyparse ();
1490*ae771770SStanislav Sedov #endif
1491*ae771770SStanislav Sedov #endif /* ! YYPARSE_PARAM */
1492*ae771770SStanislav Sedov 
1493*ae771770SStanislav Sedov 
1494*ae771770SStanislav Sedov 
1495*ae771770SStanislav Sedov /* The look-ahead symbol.  */
1496*ae771770SStanislav Sedov int yychar;
1497*ae771770SStanislav Sedov 
1498*ae771770SStanislav Sedov /* The semantic value of the look-ahead symbol.  */
1499*ae771770SStanislav Sedov YYSTYPE yylval;
1500*ae771770SStanislav Sedov 
1501*ae771770SStanislav Sedov /* Number of syntax errors so far.  */
1502*ae771770SStanislav Sedov int yynerrs;
1503*ae771770SStanislav Sedov 
1504*ae771770SStanislav Sedov 
1505*ae771770SStanislav Sedov 
1506*ae771770SStanislav Sedov /*----------.
1507*ae771770SStanislav Sedov | yyparse.  |
1508*ae771770SStanislav Sedov `----------*/
1509*ae771770SStanislav Sedov 
1510*ae771770SStanislav Sedov #ifdef YYPARSE_PARAM
1511*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1512*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1513*ae771770SStanislav Sedov int
1514*ae771770SStanislav Sedov yyparse (void *YYPARSE_PARAM)
1515*ae771770SStanislav Sedov #else
1516*ae771770SStanislav Sedov int
1517*ae771770SStanislav Sedov yyparse (YYPARSE_PARAM)
1518*ae771770SStanislav Sedov     void *YYPARSE_PARAM;
1519*ae771770SStanislav Sedov #endif
1520*ae771770SStanislav Sedov #else /* ! YYPARSE_PARAM */
1521*ae771770SStanislav Sedov #if (defined __STDC__ || defined __C99__FUNC__ \
1522*ae771770SStanislav Sedov      || defined __cplusplus || defined _MSC_VER)
1523*ae771770SStanislav Sedov int
1524*ae771770SStanislav Sedov yyparse (void)
1525*ae771770SStanislav Sedov #else
1526*ae771770SStanislav Sedov int
1527*ae771770SStanislav Sedov yyparse ()
1528*ae771770SStanislav Sedov 
1529*ae771770SStanislav Sedov #endif
1530*ae771770SStanislav Sedov #endif
1531*ae771770SStanislav Sedov {
1532*ae771770SStanislav Sedov 
1533*ae771770SStanislav Sedov   int yystate;
1534*ae771770SStanislav Sedov   int yyn;
1535*ae771770SStanislav Sedov   int yyresult;
1536*ae771770SStanislav Sedov   /* Number of tokens to shift before error messages enabled.  */
1537*ae771770SStanislav Sedov   int yyerrstatus;
1538*ae771770SStanislav Sedov   /* Look-ahead token as an internal (translated) token number.  */
1539*ae771770SStanislav Sedov   int yytoken = 0;
1540*ae771770SStanislav Sedov #if YYERROR_VERBOSE
1541*ae771770SStanislav Sedov   /* Buffer for error messages, and its allocated size.  */
1542*ae771770SStanislav Sedov   char yymsgbuf[128];
1543*ae771770SStanislav Sedov   char *yymsg = yymsgbuf;
1544*ae771770SStanislav Sedov   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1545*ae771770SStanislav Sedov #endif
1546*ae771770SStanislav Sedov 
1547*ae771770SStanislav Sedov   /* Three stacks and their tools:
1548*ae771770SStanislav Sedov      `yyss': related to states,
1549*ae771770SStanislav Sedov      `yyvs': related to semantic values,
1550*ae771770SStanislav Sedov      `yyls': related to locations.
1551*ae771770SStanislav Sedov 
1552*ae771770SStanislav Sedov      Refer to the stacks thru separate pointers, to allow yyoverflow
1553*ae771770SStanislav Sedov      to reallocate them elsewhere.  */
1554*ae771770SStanislav Sedov 
1555*ae771770SStanislav Sedov   /* The state stack.  */
1556*ae771770SStanislav Sedov   yytype_int16 yyssa[YYINITDEPTH];
1557*ae771770SStanislav Sedov   yytype_int16 *yyss = yyssa;
1558*ae771770SStanislav Sedov   yytype_int16 *yyssp;
1559*ae771770SStanislav Sedov 
1560*ae771770SStanislav Sedov   /* The semantic value stack.  */
1561*ae771770SStanislav Sedov   YYSTYPE yyvsa[YYINITDEPTH];
1562*ae771770SStanislav Sedov   YYSTYPE *yyvs = yyvsa;
1563*ae771770SStanislav Sedov   YYSTYPE *yyvsp;
1564*ae771770SStanislav Sedov 
1565*ae771770SStanislav Sedov 
1566*ae771770SStanislav Sedov 
1567*ae771770SStanislav Sedov #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1568*ae771770SStanislav Sedov 
1569*ae771770SStanislav Sedov   YYSIZE_T yystacksize = YYINITDEPTH;
1570*ae771770SStanislav Sedov 
1571*ae771770SStanislav Sedov   /* The variables used to return semantic value and location from the
1572*ae771770SStanislav Sedov      action routines.  */
1573*ae771770SStanislav Sedov   YYSTYPE yyval;
1574*ae771770SStanislav Sedov 
1575*ae771770SStanislav Sedov 
1576*ae771770SStanislav Sedov   /* The number of symbols on the RHS of the reduced rule.
1577*ae771770SStanislav Sedov      Keep to zero when no symbol should be popped.  */
1578*ae771770SStanislav Sedov   int yylen = 0;
1579*ae771770SStanislav Sedov 
1580*ae771770SStanislav Sedov   YYDPRINTF ((stderr, "Starting parse\n"));
1581*ae771770SStanislav Sedov 
1582*ae771770SStanislav Sedov   yystate = 0;
1583*ae771770SStanislav Sedov   yyerrstatus = 0;
1584*ae771770SStanislav Sedov   yynerrs = 0;
1585*ae771770SStanislav Sedov   yychar = YYEMPTY;		/* Cause a token to be read.  */
1586*ae771770SStanislav Sedov 
1587*ae771770SStanislav Sedov   /* Initialize stack pointers.
1588*ae771770SStanislav Sedov      Waste one element of value and location stack
1589*ae771770SStanislav Sedov      so that they stay on the same level as the state stack.
1590*ae771770SStanislav Sedov      The wasted elements are never initialized.  */
1591*ae771770SStanislav Sedov 
1592*ae771770SStanislav Sedov   yyssp = yyss;
1593*ae771770SStanislav Sedov   yyvsp = yyvs;
1594*ae771770SStanislav Sedov 
1595*ae771770SStanislav Sedov   goto yysetstate;
1596*ae771770SStanislav Sedov 
1597*ae771770SStanislav Sedov /*------------------------------------------------------------.
1598*ae771770SStanislav Sedov | yynewstate -- Push a new state, which is found in yystate.  |
1599*ae771770SStanislav Sedov `------------------------------------------------------------*/
1600*ae771770SStanislav Sedov  yynewstate:
1601*ae771770SStanislav Sedov   /* In all cases, when you get here, the value and location stacks
1602*ae771770SStanislav Sedov      have just been pushed.  So pushing a state here evens the stacks.  */
1603*ae771770SStanislav Sedov   yyssp++;
1604*ae771770SStanislav Sedov 
1605*ae771770SStanislav Sedov  yysetstate:
1606*ae771770SStanislav Sedov   *yyssp = yystate;
1607*ae771770SStanislav Sedov 
1608*ae771770SStanislav Sedov   if (yyss + yystacksize - 1 <= yyssp)
1609*ae771770SStanislav Sedov     {
1610*ae771770SStanislav Sedov       /* Get the current used size of the three stacks, in elements.  */
1611*ae771770SStanislav Sedov       YYSIZE_T yysize = yyssp - yyss + 1;
1612*ae771770SStanislav Sedov 
1613*ae771770SStanislav Sedov #ifdef yyoverflow
1614*ae771770SStanislav Sedov       {
1615*ae771770SStanislav Sedov 	/* Give user a chance to reallocate the stack.  Use copies of
1616*ae771770SStanislav Sedov 	   these so that the &'s don't force the real ones into
1617*ae771770SStanislav Sedov 	   memory.  */
1618*ae771770SStanislav Sedov 	YYSTYPE *yyvs1 = yyvs;
1619*ae771770SStanislav Sedov 	yytype_int16 *yyss1 = yyss;
1620*ae771770SStanislav Sedov 
1621*ae771770SStanislav Sedov 
1622*ae771770SStanislav Sedov 	/* Each stack pointer address is followed by the size of the
1623*ae771770SStanislav Sedov 	   data in use in that stack, in bytes.  This used to be a
1624*ae771770SStanislav Sedov 	   conditional around just the two extra args, but that might
1625*ae771770SStanislav Sedov 	   be undefined if yyoverflow is a macro.  */
1626*ae771770SStanislav Sedov 	yyoverflow (YY_("memory exhausted"),
1627*ae771770SStanislav Sedov 		    &yyss1, yysize * sizeof (*yyssp),
1628*ae771770SStanislav Sedov 		    &yyvs1, yysize * sizeof (*yyvsp),
1629*ae771770SStanislav Sedov 
1630*ae771770SStanislav Sedov 		    &yystacksize);
1631*ae771770SStanislav Sedov 
1632*ae771770SStanislav Sedov 	yyss = yyss1;
1633*ae771770SStanislav Sedov 	yyvs = yyvs1;
1634*ae771770SStanislav Sedov       }
1635*ae771770SStanislav Sedov #else /* no yyoverflow */
1636*ae771770SStanislav Sedov # ifndef YYSTACK_RELOCATE
1637*ae771770SStanislav Sedov       goto yyexhaustedlab;
1638*ae771770SStanislav Sedov # else
1639*ae771770SStanislav Sedov       /* Extend the stack our own way.  */
1640*ae771770SStanislav Sedov       if (YYMAXDEPTH <= yystacksize)
1641*ae771770SStanislav Sedov 	goto yyexhaustedlab;
1642*ae771770SStanislav Sedov       yystacksize *= 2;
1643*ae771770SStanislav Sedov       if (YYMAXDEPTH < yystacksize)
1644*ae771770SStanislav Sedov 	yystacksize = YYMAXDEPTH;
1645*ae771770SStanislav Sedov 
1646*ae771770SStanislav Sedov       {
1647*ae771770SStanislav Sedov 	yytype_int16 *yyss1 = yyss;
1648*ae771770SStanislav Sedov 	union yyalloc *yyptr =
1649*ae771770SStanislav Sedov 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1650*ae771770SStanislav Sedov 	if (! yyptr)
1651*ae771770SStanislav Sedov 	  goto yyexhaustedlab;
1652*ae771770SStanislav Sedov 	YYSTACK_RELOCATE (yyss);
1653*ae771770SStanislav Sedov 	YYSTACK_RELOCATE (yyvs);
1654*ae771770SStanislav Sedov 
1655*ae771770SStanislav Sedov #  undef YYSTACK_RELOCATE
1656*ae771770SStanislav Sedov 	if (yyss1 != yyssa)
1657*ae771770SStanislav Sedov 	  YYSTACK_FREE (yyss1);
1658*ae771770SStanislav Sedov       }
1659*ae771770SStanislav Sedov # endif
1660*ae771770SStanislav Sedov #endif /* no yyoverflow */
1661*ae771770SStanislav Sedov 
1662*ae771770SStanislav Sedov       yyssp = yyss + yysize - 1;
1663*ae771770SStanislav Sedov       yyvsp = yyvs + yysize - 1;
1664*ae771770SStanislav Sedov 
1665*ae771770SStanislav Sedov 
1666*ae771770SStanislav Sedov       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1667*ae771770SStanislav Sedov 		  (unsigned long int) yystacksize));
1668*ae771770SStanislav Sedov 
1669*ae771770SStanislav Sedov       if (yyss + yystacksize - 1 <= yyssp)
1670*ae771770SStanislav Sedov 	YYABORT;
1671*ae771770SStanislav Sedov     }
1672*ae771770SStanislav Sedov 
1673*ae771770SStanislav Sedov   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1674*ae771770SStanislav Sedov 
1675*ae771770SStanislav Sedov   goto yybackup;
1676*ae771770SStanislav Sedov 
1677*ae771770SStanislav Sedov /*-----------.
1678*ae771770SStanislav Sedov | yybackup.  |
1679*ae771770SStanislav Sedov `-----------*/
1680*ae771770SStanislav Sedov yybackup:
1681*ae771770SStanislav Sedov 
1682*ae771770SStanislav Sedov   /* Do appropriate processing given the current state.  Read a
1683*ae771770SStanislav Sedov      look-ahead token if we need one and don't already have one.  */
1684*ae771770SStanislav Sedov 
1685*ae771770SStanislav Sedov   /* First try to decide what to do without reference to look-ahead token.  */
1686*ae771770SStanislav Sedov   yyn = yypact[yystate];
1687*ae771770SStanislav Sedov   if (yyn == YYPACT_NINF)
1688*ae771770SStanislav Sedov     goto yydefault;
1689*ae771770SStanislav Sedov 
1690*ae771770SStanislav Sedov   /* Not known => get a look-ahead token if don't already have one.  */
1691*ae771770SStanislav Sedov 
1692*ae771770SStanislav Sedov   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1693*ae771770SStanislav Sedov   if (yychar == YYEMPTY)
1694*ae771770SStanislav Sedov     {
1695*ae771770SStanislav Sedov       YYDPRINTF ((stderr, "Reading a token: "));
1696*ae771770SStanislav Sedov       yychar = YYLEX;
1697*ae771770SStanislav Sedov     }
1698*ae771770SStanislav Sedov 
1699*ae771770SStanislav Sedov   if (yychar <= YYEOF)
1700*ae771770SStanislav Sedov     {
1701*ae771770SStanislav Sedov       yychar = yytoken = YYEOF;
1702*ae771770SStanislav Sedov       YYDPRINTF ((stderr, "Now at end of input.\n"));
1703*ae771770SStanislav Sedov     }
1704*ae771770SStanislav Sedov   else
1705*ae771770SStanislav Sedov     {
1706*ae771770SStanislav Sedov       yytoken = YYTRANSLATE (yychar);
1707*ae771770SStanislav Sedov       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1708*ae771770SStanislav Sedov     }
1709*ae771770SStanislav Sedov 
1710*ae771770SStanislav Sedov   /* If the proper action on seeing token YYTOKEN is to reduce or to
1711*ae771770SStanislav Sedov      detect an error, take that action.  */
1712*ae771770SStanislav Sedov   yyn += yytoken;
1713*ae771770SStanislav Sedov   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1714*ae771770SStanislav Sedov     goto yydefault;
1715*ae771770SStanislav Sedov   yyn = yytable[yyn];
1716*ae771770SStanislav Sedov   if (yyn <= 0)
1717*ae771770SStanislav Sedov     {
1718*ae771770SStanislav Sedov       if (yyn == 0 || yyn == YYTABLE_NINF)
1719*ae771770SStanislav Sedov 	goto yyerrlab;
1720*ae771770SStanislav Sedov       yyn = -yyn;
1721*ae771770SStanislav Sedov       goto yyreduce;
1722*ae771770SStanislav Sedov     }
1723*ae771770SStanislav Sedov 
1724*ae771770SStanislav Sedov   if (yyn == YYFINAL)
1725*ae771770SStanislav Sedov     YYACCEPT;
1726*ae771770SStanislav Sedov 
1727*ae771770SStanislav Sedov   /* Count tokens shifted since error; after three, turn off error
1728*ae771770SStanislav Sedov      status.  */
1729*ae771770SStanislav Sedov   if (yyerrstatus)
1730*ae771770SStanislav Sedov     yyerrstatus--;
1731*ae771770SStanislav Sedov 
1732*ae771770SStanislav Sedov   /* Shift the look-ahead token.  */
1733*ae771770SStanislav Sedov   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1734*ae771770SStanislav Sedov 
1735*ae771770SStanislav Sedov   /* Discard the shifted token unless it is eof.  */
1736*ae771770SStanislav Sedov   if (yychar != YYEOF)
1737*ae771770SStanislav Sedov     yychar = YYEMPTY;
1738*ae771770SStanislav Sedov 
1739*ae771770SStanislav Sedov   yystate = yyn;
1740*ae771770SStanislav Sedov   *++yyvsp = yylval;
1741*ae771770SStanislav Sedov 
1742*ae771770SStanislav Sedov   goto yynewstate;
1743*ae771770SStanislav Sedov 
1744*ae771770SStanislav Sedov 
1745*ae771770SStanislav Sedov /*-----------------------------------------------------------.
1746*ae771770SStanislav Sedov | yydefault -- do the default action for the current state.  |
1747*ae771770SStanislav Sedov `-----------------------------------------------------------*/
1748*ae771770SStanislav Sedov yydefault:
1749*ae771770SStanislav Sedov   yyn = yydefact[yystate];
1750*ae771770SStanislav Sedov   if (yyn == 0)
1751*ae771770SStanislav Sedov     goto yyerrlab;
1752*ae771770SStanislav Sedov   goto yyreduce;
1753*ae771770SStanislav Sedov 
1754*ae771770SStanislav Sedov 
1755*ae771770SStanislav Sedov /*-----------------------------.
1756*ae771770SStanislav Sedov | yyreduce -- Do a reduction.  |
1757*ae771770SStanislav Sedov `-----------------------------*/
1758*ae771770SStanislav Sedov yyreduce:
1759*ae771770SStanislav Sedov   /* yyn is the number of a rule to reduce with.  */
1760*ae771770SStanislav Sedov   yylen = yyr2[yyn];
1761*ae771770SStanislav Sedov 
1762*ae771770SStanislav Sedov   /* If YYLEN is nonzero, implement the default value of the action:
1763*ae771770SStanislav Sedov      `$$ = $1'.
1764*ae771770SStanislav Sedov 
1765*ae771770SStanislav Sedov      Otherwise, the following line sets YYVAL to garbage.
1766*ae771770SStanislav Sedov      This behavior is undocumented and Bison
1767*ae771770SStanislav Sedov      users should not rely upon it.  Assigning to YYVAL
1768*ae771770SStanislav Sedov      unconditionally makes the parser a bit smaller, and it avoids a
1769*ae771770SStanislav Sedov      GCC warning that YYVAL may be used uninitialized.  */
1770*ae771770SStanislav Sedov   yyval = yyvsp[1-yylen];
1771*ae771770SStanislav Sedov 
1772*ae771770SStanislav Sedov 
1773*ae771770SStanislav Sedov   YY_REDUCE_PRINT (yyn);
1774*ae771770SStanislav Sedov   switch (yyn)
1775*ae771770SStanislav Sedov     {
1776*ae771770SStanislav Sedov         case 2:
1777*ae771770SStanislav Sedov #line 241 "asn1parse.y"
1778*ae771770SStanislav Sedov     {
1779*ae771770SStanislav Sedov 			checkundefined();
1780*ae771770SStanislav Sedov 		}
1781*ae771770SStanislav Sedov     break;
1782*ae771770SStanislav Sedov 
1783*ae771770SStanislav Sedov   case 4:
1784*ae771770SStanislav Sedov #line 248 "asn1parse.y"
1785*ae771770SStanislav Sedov     { lex_error_message("implicit tagging is not supported"); }
1786*ae771770SStanislav Sedov     break;
1787*ae771770SStanislav Sedov 
1788*ae771770SStanislav Sedov   case 5:
1789*ae771770SStanislav Sedov #line 250 "asn1parse.y"
1790*ae771770SStanislav Sedov     { lex_error_message("automatic tagging is not supported"); }
1791*ae771770SStanislav Sedov     break;
1792*ae771770SStanislav Sedov 
1793*ae771770SStanislav Sedov   case 7:
1794*ae771770SStanislav Sedov #line 255 "asn1parse.y"
1795*ae771770SStanislav Sedov     { lex_error_message("no extensibility options supported"); }
1796*ae771770SStanislav Sedov     break;
1797*ae771770SStanislav Sedov 
1798*ae771770SStanislav Sedov   case 17:
1799*ae771770SStanislav Sedov #line 276 "asn1parse.y"
1800*ae771770SStanislav Sedov     {
1801*ae771770SStanislav Sedov 		    struct string_list *sl;
1802*ae771770SStanislav Sedov 		    for(sl = (yyvsp[(1) - (4)].sl); sl != NULL; sl = sl->next) {
1803*ae771770SStanislav Sedov 			Symbol *s = addsym(sl->string);
1804*ae771770SStanislav Sedov 			s->stype = Stype;
1805*ae771770SStanislav Sedov 			gen_template_import(s);
1806*ae771770SStanislav Sedov 		    }
1807*ae771770SStanislav Sedov 		    add_import((yyvsp[(3) - (4)].name));
1808*ae771770SStanislav Sedov 		}
1809*ae771770SStanislav Sedov     break;
1810*ae771770SStanislav Sedov 
1811*ae771770SStanislav Sedov   case 18:
1812*ae771770SStanislav Sedov #line 288 "asn1parse.y"
1813*ae771770SStanislav Sedov     {
1814*ae771770SStanislav Sedov 		    struct string_list *sl;
1815*ae771770SStanislav Sedov 		    for(sl = (yyvsp[(2) - (3)].sl); sl != NULL; sl = sl->next)
1816*ae771770SStanislav Sedov 			add_export(sl->string);
1817*ae771770SStanislav Sedov 		}
1818*ae771770SStanislav Sedov     break;
1819*ae771770SStanislav Sedov 
1820*ae771770SStanislav Sedov   case 25:
1821*ae771770SStanislav Sedov #line 306 "asn1parse.y"
1822*ae771770SStanislav Sedov     {
1823*ae771770SStanislav Sedov 		    (yyval.sl) = emalloc(sizeof(*(yyval.sl)));
1824*ae771770SStanislav Sedov 		    (yyval.sl)->string = (yyvsp[(1) - (3)].name);
1825*ae771770SStanislav Sedov 		    (yyval.sl)->next = (yyvsp[(3) - (3)].sl);
1826*ae771770SStanislav Sedov 		}
1827*ae771770SStanislav Sedov     break;
1828*ae771770SStanislav Sedov 
1829*ae771770SStanislav Sedov   case 26:
1830*ae771770SStanislav Sedov #line 312 "asn1parse.y"
1831*ae771770SStanislav Sedov     {
1832*ae771770SStanislav Sedov 		    (yyval.sl) = emalloc(sizeof(*(yyval.sl)));
1833*ae771770SStanislav Sedov 		    (yyval.sl)->string = (yyvsp[(1) - (1)].name);
1834*ae771770SStanislav Sedov 		    (yyval.sl)->next = NULL;
1835*ae771770SStanislav Sedov 		}
1836*ae771770SStanislav Sedov     break;
1837*ae771770SStanislav Sedov 
1838*ae771770SStanislav Sedov   case 27:
1839*ae771770SStanislav Sedov #line 320 "asn1parse.y"
1840*ae771770SStanislav Sedov     {
1841*ae771770SStanislav Sedov 		    Symbol *s = addsym ((yyvsp[(1) - (3)].name));
1842*ae771770SStanislav Sedov 		    s->stype = Stype;
1843*ae771770SStanislav Sedov 		    s->type = (yyvsp[(3) - (3)].type);
1844*ae771770SStanislav Sedov 		    fix_labels(s);
1845*ae771770SStanislav Sedov 		    generate_type (s);
1846*ae771770SStanislav Sedov 		}
1847*ae771770SStanislav Sedov     break;
1848*ae771770SStanislav Sedov 
1849*ae771770SStanislav Sedov   case 45:
1850*ae771770SStanislav Sedov #line 351 "asn1parse.y"
1851*ae771770SStanislav Sedov     {
1852*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Boolean,
1853*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TBoolean));
1854*ae771770SStanislav Sedov 		}
1855*ae771770SStanislav Sedov     break;
1856*ae771770SStanislav Sedov 
1857*ae771770SStanislav Sedov   case 46:
1858*ae771770SStanislav Sedov #line 358 "asn1parse.y"
1859*ae771770SStanislav Sedov     {
1860*ae771770SStanislav Sedov 		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1861*ae771770SStanislav Sedov 			lex_error_message("Non-integer used in first part of range");
1862*ae771770SStanislav Sedov 		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1863*ae771770SStanislav Sedov 			lex_error_message("Non-integer in second part of range");
1864*ae771770SStanislav Sedov 		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1865*ae771770SStanislav Sedov 		    (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue;
1866*ae771770SStanislav Sedov 		    (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue;
1867*ae771770SStanislav Sedov 		}
1868*ae771770SStanislav Sedov     break;
1869*ae771770SStanislav Sedov 
1870*ae771770SStanislav Sedov   case 47:
1871*ae771770SStanislav Sedov #line 368 "asn1parse.y"
1872*ae771770SStanislav Sedov     {
1873*ae771770SStanislav Sedov 		    if((yyvsp[(2) - (5)].value)->type != integervalue)
1874*ae771770SStanislav Sedov 			lex_error_message("Non-integer in first part of range");
1875*ae771770SStanislav Sedov 		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1876*ae771770SStanislav Sedov 		    (yyval.range)->min = (yyvsp[(2) - (5)].value)->u.integervalue;
1877*ae771770SStanislav Sedov 		    (yyval.range)->max = (yyvsp[(2) - (5)].value)->u.integervalue - 1;
1878*ae771770SStanislav Sedov 		}
1879*ae771770SStanislav Sedov     break;
1880*ae771770SStanislav Sedov 
1881*ae771770SStanislav Sedov   case 48:
1882*ae771770SStanislav Sedov #line 376 "asn1parse.y"
1883*ae771770SStanislav Sedov     {
1884*ae771770SStanislav Sedov 		    if((yyvsp[(4) - (5)].value)->type != integervalue)
1885*ae771770SStanislav Sedov 			lex_error_message("Non-integer in second part of range");
1886*ae771770SStanislav Sedov 		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1887*ae771770SStanislav Sedov 		    (yyval.range)->min = (yyvsp[(4) - (5)].value)->u.integervalue + 2;
1888*ae771770SStanislav Sedov 		    (yyval.range)->max = (yyvsp[(4) - (5)].value)->u.integervalue;
1889*ae771770SStanislav Sedov 		}
1890*ae771770SStanislav Sedov     break;
1891*ae771770SStanislav Sedov 
1892*ae771770SStanislav Sedov   case 49:
1893*ae771770SStanislav Sedov #line 384 "asn1parse.y"
1894*ae771770SStanislav Sedov     {
1895*ae771770SStanislav Sedov 		    if((yyvsp[(2) - (3)].value)->type != integervalue)
1896*ae771770SStanislav Sedov 			lex_error_message("Non-integer used in limit");
1897*ae771770SStanislav Sedov 		    (yyval.range) = ecalloc(1, sizeof(*(yyval.range)));
1898*ae771770SStanislav Sedov 		    (yyval.range)->min = (yyvsp[(2) - (3)].value)->u.integervalue;
1899*ae771770SStanislav Sedov 		    (yyval.range)->max = (yyvsp[(2) - (3)].value)->u.integervalue;
1900*ae771770SStanislav Sedov 		}
1901*ae771770SStanislav Sedov     break;
1902*ae771770SStanislav Sedov 
1903*ae771770SStanislav Sedov   case 50:
1904*ae771770SStanislav Sedov #line 395 "asn1parse.y"
1905*ae771770SStanislav Sedov     {
1906*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer,
1907*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TInteger));
1908*ae771770SStanislav Sedov 		}
1909*ae771770SStanislav Sedov     break;
1910*ae771770SStanislav Sedov 
1911*ae771770SStanislav Sedov   case 51:
1912*ae771770SStanislav Sedov #line 400 "asn1parse.y"
1913*ae771770SStanislav Sedov     {
1914*ae771770SStanislav Sedov 			(yyval.type) = new_type(TInteger);
1915*ae771770SStanislav Sedov 			(yyval.type)->range = (yyvsp[(2) - (2)].range);
1916*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type));
1917*ae771770SStanislav Sedov 		}
1918*ae771770SStanislav Sedov     break;
1919*ae771770SStanislav Sedov 
1920*ae771770SStanislav Sedov   case 52:
1921*ae771770SStanislav Sedov #line 406 "asn1parse.y"
1922*ae771770SStanislav Sedov     {
1923*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TInteger);
1924*ae771770SStanislav Sedov 		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
1925*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Integer, TE_EXPLICIT, (yyval.type));
1926*ae771770SStanislav Sedov 		}
1927*ae771770SStanislav Sedov     break;
1928*ae771770SStanislav Sedov 
1929*ae771770SStanislav Sedov   case 53:
1930*ae771770SStanislav Sedov #line 414 "asn1parse.y"
1931*ae771770SStanislav Sedov     {
1932*ae771770SStanislav Sedov 			(yyval.members) = emalloc(sizeof(*(yyval.members)));
1933*ae771770SStanislav Sedov 			ASN1_TAILQ_INIT((yyval.members));
1934*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
1935*ae771770SStanislav Sedov 		}
1936*ae771770SStanislav Sedov     break;
1937*ae771770SStanislav Sedov 
1938*ae771770SStanislav Sedov   case 54:
1939*ae771770SStanislav Sedov #line 420 "asn1parse.y"
1940*ae771770SStanislav Sedov     {
1941*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
1942*ae771770SStanislav Sedov 			(yyval.members) = (yyvsp[(1) - (3)].members);
1943*ae771770SStanislav Sedov 		}
1944*ae771770SStanislav Sedov     break;
1945*ae771770SStanislav Sedov 
1946*ae771770SStanislav Sedov   case 55:
1947*ae771770SStanislav Sedov #line 425 "asn1parse.y"
1948*ae771770SStanislav Sedov     { (yyval.members) = (yyvsp[(1) - (3)].members); }
1949*ae771770SStanislav Sedov     break;
1950*ae771770SStanislav Sedov 
1951*ae771770SStanislav Sedov   case 56:
1952*ae771770SStanislav Sedov #line 429 "asn1parse.y"
1953*ae771770SStanislav Sedov     {
1954*ae771770SStanislav Sedov 			(yyval.member) = emalloc(sizeof(*(yyval.member)));
1955*ae771770SStanislav Sedov 			(yyval.member)->name = (yyvsp[(1) - (4)].name);
1956*ae771770SStanislav Sedov 			(yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name));
1957*ae771770SStanislav Sedov 			output_name ((yyval.member)->gen_name);
1958*ae771770SStanislav Sedov 			(yyval.member)->val = (yyvsp[(3) - (4)].constant);
1959*ae771770SStanislav Sedov 			(yyval.member)->optional = 0;
1960*ae771770SStanislav Sedov 			(yyval.member)->ellipsis = 0;
1961*ae771770SStanislav Sedov 			(yyval.member)->type = NULL;
1962*ae771770SStanislav Sedov 		}
1963*ae771770SStanislav Sedov     break;
1964*ae771770SStanislav Sedov 
1965*ae771770SStanislav Sedov   case 57:
1966*ae771770SStanislav Sedov #line 442 "asn1parse.y"
1967*ae771770SStanislav Sedov     {
1968*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TInteger);
1969*ae771770SStanislav Sedov 		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
1970*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Enumerated, TE_EXPLICIT, (yyval.type));
1971*ae771770SStanislav Sedov 		}
1972*ae771770SStanislav Sedov     break;
1973*ae771770SStanislav Sedov 
1974*ae771770SStanislav Sedov   case 59:
1975*ae771770SStanislav Sedov #line 453 "asn1parse.y"
1976*ae771770SStanislav Sedov     {
1977*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TBitString);
1978*ae771770SStanislav Sedov 		  (yyval.type)->members = emalloc(sizeof(*(yyval.type)->members));
1979*ae771770SStanislav Sedov 		  ASN1_TAILQ_INIT((yyval.type)->members);
1980*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type));
1981*ae771770SStanislav Sedov 		}
1982*ae771770SStanislav Sedov     break;
1983*ae771770SStanislav Sedov 
1984*ae771770SStanislav Sedov   case 60:
1985*ae771770SStanislav Sedov #line 460 "asn1parse.y"
1986*ae771770SStanislav Sedov     {
1987*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TBitString);
1988*ae771770SStanislav Sedov 		  (yyval.type)->members = (yyvsp[(4) - (5)].members);
1989*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_BitString, TE_EXPLICIT, (yyval.type));
1990*ae771770SStanislav Sedov 		}
1991*ae771770SStanislav Sedov     break;
1992*ae771770SStanislav Sedov 
1993*ae771770SStanislav Sedov   case 61:
1994*ae771770SStanislav Sedov #line 468 "asn1parse.y"
1995*ae771770SStanislav Sedov     {
1996*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_OID,
1997*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TOID));
1998*ae771770SStanislav Sedov 		}
1999*ae771770SStanislav Sedov     break;
2000*ae771770SStanislav Sedov 
2001*ae771770SStanislav Sedov   case 62:
2002*ae771770SStanislav Sedov #line 474 "asn1parse.y"
2003*ae771770SStanislav Sedov     {
2004*ae771770SStanislav Sedov 		    Type *t = new_type(TOctetString);
2005*ae771770SStanislav Sedov 		    t->range = (yyvsp[(3) - (3)].range);
2006*ae771770SStanislav Sedov 		    (yyval.type) = new_tag(ASN1_C_UNIV, UT_OctetString,
2007*ae771770SStanislav Sedov 				 TE_EXPLICIT, t);
2008*ae771770SStanislav Sedov 		}
2009*ae771770SStanislav Sedov     break;
2010*ae771770SStanislav Sedov 
2011*ae771770SStanislav Sedov   case 63:
2012*ae771770SStanislav Sedov #line 483 "asn1parse.y"
2013*ae771770SStanislav Sedov     {
2014*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_Null,
2015*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TNull));
2016*ae771770SStanislav Sedov 		}
2017*ae771770SStanislav Sedov     break;
2018*ae771770SStanislav Sedov 
2019*ae771770SStanislav Sedov   case 64:
2020*ae771770SStanislav Sedov #line 490 "asn1parse.y"
2021*ae771770SStanislav Sedov     { (yyval.range) = NULL; }
2022*ae771770SStanislav Sedov     break;
2023*ae771770SStanislav Sedov 
2024*ae771770SStanislav Sedov   case 65:
2025*ae771770SStanislav Sedov #line 492 "asn1parse.y"
2026*ae771770SStanislav Sedov     { (yyval.range) = (yyvsp[(2) - (2)].range); }
2027*ae771770SStanislav Sedov     break;
2028*ae771770SStanislav Sedov 
2029*ae771770SStanislav Sedov   case 66:
2030*ae771770SStanislav Sedov #line 497 "asn1parse.y"
2031*ae771770SStanislav Sedov     {
2032*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TSequence);
2033*ae771770SStanislav Sedov 		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2034*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2035*ae771770SStanislav Sedov 		}
2036*ae771770SStanislav Sedov     break;
2037*ae771770SStanislav Sedov 
2038*ae771770SStanislav Sedov   case 67:
2039*ae771770SStanislav Sedov #line 503 "asn1parse.y"
2040*ae771770SStanislav Sedov     {
2041*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TSequence);
2042*ae771770SStanislav Sedov 		  (yyval.type)->members = NULL;
2043*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2044*ae771770SStanislav Sedov 		}
2045*ae771770SStanislav Sedov     break;
2046*ae771770SStanislav Sedov 
2047*ae771770SStanislav Sedov   case 68:
2048*ae771770SStanislav Sedov #line 511 "asn1parse.y"
2049*ae771770SStanislav Sedov     {
2050*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TSequenceOf);
2051*ae771770SStanislav Sedov 		  (yyval.type)->range = (yyvsp[(2) - (4)].range);
2052*ae771770SStanislav Sedov 		  (yyval.type)->subtype = (yyvsp[(4) - (4)].type);
2053*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Sequence, TE_EXPLICIT, (yyval.type));
2054*ae771770SStanislav Sedov 		}
2055*ae771770SStanislav Sedov     break;
2056*ae771770SStanislav Sedov 
2057*ae771770SStanislav Sedov   case 69:
2058*ae771770SStanislav Sedov #line 520 "asn1parse.y"
2059*ae771770SStanislav Sedov     {
2060*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TSet);
2061*ae771770SStanislav Sedov 		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2062*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2063*ae771770SStanislav Sedov 		}
2064*ae771770SStanislav Sedov     break;
2065*ae771770SStanislav Sedov 
2066*ae771770SStanislav Sedov   case 70:
2067*ae771770SStanislav Sedov #line 526 "asn1parse.y"
2068*ae771770SStanislav Sedov     {
2069*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TSet);
2070*ae771770SStanislav Sedov 		  (yyval.type)->members = NULL;
2071*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2072*ae771770SStanislav Sedov 		}
2073*ae771770SStanislav Sedov     break;
2074*ae771770SStanislav Sedov 
2075*ae771770SStanislav Sedov   case 71:
2076*ae771770SStanislav Sedov #line 534 "asn1parse.y"
2077*ae771770SStanislav Sedov     {
2078*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TSetOf);
2079*ae771770SStanislav Sedov 		  (yyval.type)->subtype = (yyvsp[(3) - (3)].type);
2080*ae771770SStanislav Sedov 		  (yyval.type) = new_tag(ASN1_C_UNIV, UT_Set, TE_EXPLICIT, (yyval.type));
2081*ae771770SStanislav Sedov 		}
2082*ae771770SStanislav Sedov     break;
2083*ae771770SStanislav Sedov 
2084*ae771770SStanislav Sedov   case 72:
2085*ae771770SStanislav Sedov #line 542 "asn1parse.y"
2086*ae771770SStanislav Sedov     {
2087*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TChoice);
2088*ae771770SStanislav Sedov 		  (yyval.type)->members = (yyvsp[(3) - (4)].members);
2089*ae771770SStanislav Sedov 		}
2090*ae771770SStanislav Sedov     break;
2091*ae771770SStanislav Sedov 
2092*ae771770SStanislav Sedov   case 75:
2093*ae771770SStanislav Sedov #line 553 "asn1parse.y"
2094*ae771770SStanislav Sedov     {
2095*ae771770SStanislav Sedov 		  Symbol *s = addsym((yyvsp[(1) - (1)].name));
2096*ae771770SStanislav Sedov 		  (yyval.type) = new_type(TType);
2097*ae771770SStanislav Sedov 		  if(s->stype != Stype && s->stype != SUndefined)
2098*ae771770SStanislav Sedov 		    lex_error_message ("%s is not a type\n", (yyvsp[(1) - (1)].name));
2099*ae771770SStanislav Sedov 		  else
2100*ae771770SStanislav Sedov 		    (yyval.type)->symbol = s;
2101*ae771770SStanislav Sedov 		}
2102*ae771770SStanislav Sedov     break;
2103*ae771770SStanislav Sedov 
2104*ae771770SStanislav Sedov   case 76:
2105*ae771770SStanislav Sedov #line 564 "asn1parse.y"
2106*ae771770SStanislav Sedov     {
2107*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralizedTime,
2108*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TGeneralizedTime));
2109*ae771770SStanislav Sedov 		}
2110*ae771770SStanislav Sedov     break;
2111*ae771770SStanislav Sedov 
2112*ae771770SStanislav Sedov   case 77:
2113*ae771770SStanislav Sedov #line 569 "asn1parse.y"
2114*ae771770SStanislav Sedov     {
2115*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UTCTime,
2116*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TUTCTime));
2117*ae771770SStanislav Sedov 		}
2118*ae771770SStanislav Sedov     break;
2119*ae771770SStanislav Sedov 
2120*ae771770SStanislav Sedov   case 78:
2121*ae771770SStanislav Sedov #line 576 "asn1parse.y"
2122*ae771770SStanislav Sedov     {
2123*ae771770SStanislav Sedov 		    /* if (Constraint.type == contentConstrant) {
2124*ae771770SStanislav Sedov 		       assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too
2125*ae771770SStanislav Sedov 		       if (Constraint.u.constraint.type) {
2126*ae771770SStanislav Sedov 		         assert((Constraint.u.constraint.type.length % 8) == 0);
2127*ae771770SStanislav Sedov 		       }
2128*ae771770SStanislav Sedov 		      }
2129*ae771770SStanislav Sedov 		      if (Constraint.u.constraint.encoding) {
2130*ae771770SStanislav Sedov 		        type == der-oid|ber-oid
2131*ae771770SStanislav Sedov 		      }
2132*ae771770SStanislav Sedov 		    */
2133*ae771770SStanislav Sedov 		}
2134*ae771770SStanislav Sedov     break;
2135*ae771770SStanislav Sedov 
2136*ae771770SStanislav Sedov   case 79:
2137*ae771770SStanislav Sedov #line 592 "asn1parse.y"
2138*ae771770SStanislav Sedov     {
2139*ae771770SStanislav Sedov 		    (yyval.constraint_spec) = (yyvsp[(2) - (3)].constraint_spec);
2140*ae771770SStanislav Sedov 		}
2141*ae771770SStanislav Sedov     break;
2142*ae771770SStanislav Sedov 
2143*ae771770SStanislav Sedov   case 83:
2144*ae771770SStanislav Sedov #line 605 "asn1parse.y"
2145*ae771770SStanislav Sedov     {
2146*ae771770SStanislav Sedov 		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2147*ae771770SStanislav Sedov 		    (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (2)].type);
2148*ae771770SStanislav Sedov 		    (yyval.constraint_spec)->u.content.encoding = NULL;
2149*ae771770SStanislav Sedov 		}
2150*ae771770SStanislav Sedov     break;
2151*ae771770SStanislav Sedov 
2152*ae771770SStanislav Sedov   case 84:
2153*ae771770SStanislav Sedov #line 611 "asn1parse.y"
2154*ae771770SStanislav Sedov     {
2155*ae771770SStanislav Sedov 		    if ((yyvsp[(3) - (3)].value)->type != objectidentifiervalue)
2156*ae771770SStanislav Sedov 			lex_error_message("Non-OID used in ENCODED BY constraint");
2157*ae771770SStanislav Sedov 		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2158*ae771770SStanislav Sedov 		    (yyval.constraint_spec)->u.content.type = NULL;
2159*ae771770SStanislav Sedov 		    (yyval.constraint_spec)->u.content.encoding = (yyvsp[(3) - (3)].value);
2160*ae771770SStanislav Sedov 		}
2161*ae771770SStanislav Sedov     break;
2162*ae771770SStanislav Sedov 
2163*ae771770SStanislav Sedov   case 85:
2164*ae771770SStanislav Sedov #line 619 "asn1parse.y"
2165*ae771770SStanislav Sedov     {
2166*ae771770SStanislav Sedov 		    if ((yyvsp[(5) - (5)].value)->type != objectidentifiervalue)
2167*ae771770SStanislav Sedov 			lex_error_message("Non-OID used in ENCODED BY constraint");
2168*ae771770SStanislav Sedov 		    (yyval.constraint_spec) = new_constraint_spec(CT_CONTENTS);
2169*ae771770SStanislav Sedov 		    (yyval.constraint_spec)->u.content.type = (yyvsp[(2) - (5)].type);
2170*ae771770SStanislav Sedov 		    (yyval.constraint_spec)->u.content.encoding = (yyvsp[(5) - (5)].value);
2171*ae771770SStanislav Sedov 		}
2172*ae771770SStanislav Sedov     break;
2173*ae771770SStanislav Sedov 
2174*ae771770SStanislav Sedov   case 86:
2175*ae771770SStanislav Sedov #line 629 "asn1parse.y"
2176*ae771770SStanislav Sedov     {
2177*ae771770SStanislav Sedov 		    (yyval.constraint_spec) = new_constraint_spec(CT_USER);
2178*ae771770SStanislav Sedov 		}
2179*ae771770SStanislav Sedov     break;
2180*ae771770SStanislav Sedov 
2181*ae771770SStanislav Sedov   case 87:
2182*ae771770SStanislav Sedov #line 635 "asn1parse.y"
2183*ae771770SStanislav Sedov     {
2184*ae771770SStanislav Sedov 			(yyval.type) = new_type(TTag);
2185*ae771770SStanislav Sedov 			(yyval.type)->tag = (yyvsp[(1) - (3)].tag);
2186*ae771770SStanislav Sedov 			(yyval.type)->tag.tagenv = (yyvsp[(2) - (3)].constant);
2187*ae771770SStanislav Sedov 			if((yyvsp[(3) - (3)].type)->type == TTag && (yyvsp[(2) - (3)].constant) == TE_IMPLICIT) {
2188*ae771770SStanislav Sedov 				(yyval.type)->subtype = (yyvsp[(3) - (3)].type)->subtype;
2189*ae771770SStanislav Sedov 				free((yyvsp[(3) - (3)].type));
2190*ae771770SStanislav Sedov 			} else
2191*ae771770SStanislav Sedov 				(yyval.type)->subtype = (yyvsp[(3) - (3)].type);
2192*ae771770SStanislav Sedov 		}
2193*ae771770SStanislav Sedov     break;
2194*ae771770SStanislav Sedov 
2195*ae771770SStanislav Sedov   case 88:
2196*ae771770SStanislav Sedov #line 648 "asn1parse.y"
2197*ae771770SStanislav Sedov     {
2198*ae771770SStanislav Sedov 			(yyval.tag).tagclass = (yyvsp[(2) - (4)].constant);
2199*ae771770SStanislav Sedov 			(yyval.tag).tagvalue = (yyvsp[(3) - (4)].constant);
2200*ae771770SStanislav Sedov 			(yyval.tag).tagenv = TE_EXPLICIT;
2201*ae771770SStanislav Sedov 		}
2202*ae771770SStanislav Sedov     break;
2203*ae771770SStanislav Sedov 
2204*ae771770SStanislav Sedov   case 89:
2205*ae771770SStanislav Sedov #line 656 "asn1parse.y"
2206*ae771770SStanislav Sedov     {
2207*ae771770SStanislav Sedov 			(yyval.constant) = ASN1_C_CONTEXT;
2208*ae771770SStanislav Sedov 		}
2209*ae771770SStanislav Sedov     break;
2210*ae771770SStanislav Sedov 
2211*ae771770SStanislav Sedov   case 90:
2212*ae771770SStanislav Sedov #line 660 "asn1parse.y"
2213*ae771770SStanislav Sedov     {
2214*ae771770SStanislav Sedov 			(yyval.constant) = ASN1_C_UNIV;
2215*ae771770SStanislav Sedov 		}
2216*ae771770SStanislav Sedov     break;
2217*ae771770SStanislav Sedov 
2218*ae771770SStanislav Sedov   case 91:
2219*ae771770SStanislav Sedov #line 664 "asn1parse.y"
2220*ae771770SStanislav Sedov     {
2221*ae771770SStanislav Sedov 			(yyval.constant) = ASN1_C_APPL;
2222*ae771770SStanislav Sedov 		}
2223*ae771770SStanislav Sedov     break;
2224*ae771770SStanislav Sedov 
2225*ae771770SStanislav Sedov   case 92:
2226*ae771770SStanislav Sedov #line 668 "asn1parse.y"
2227*ae771770SStanislav Sedov     {
2228*ae771770SStanislav Sedov 			(yyval.constant) = ASN1_C_PRIVATE;
2229*ae771770SStanislav Sedov 		}
2230*ae771770SStanislav Sedov     break;
2231*ae771770SStanislav Sedov 
2232*ae771770SStanislav Sedov   case 93:
2233*ae771770SStanislav Sedov #line 674 "asn1parse.y"
2234*ae771770SStanislav Sedov     {
2235*ae771770SStanislav Sedov 			(yyval.constant) = TE_EXPLICIT;
2236*ae771770SStanislav Sedov 		}
2237*ae771770SStanislav Sedov     break;
2238*ae771770SStanislav Sedov 
2239*ae771770SStanislav Sedov   case 94:
2240*ae771770SStanislav Sedov #line 678 "asn1parse.y"
2241*ae771770SStanislav Sedov     {
2242*ae771770SStanislav Sedov 			(yyval.constant) = TE_EXPLICIT;
2243*ae771770SStanislav Sedov 		}
2244*ae771770SStanislav Sedov     break;
2245*ae771770SStanislav Sedov 
2246*ae771770SStanislav Sedov   case 95:
2247*ae771770SStanislav Sedov #line 682 "asn1parse.y"
2248*ae771770SStanislav Sedov     {
2249*ae771770SStanislav Sedov 			(yyval.constant) = TE_IMPLICIT;
2250*ae771770SStanislav Sedov 		}
2251*ae771770SStanislav Sedov     break;
2252*ae771770SStanislav Sedov 
2253*ae771770SStanislav Sedov   case 96:
2254*ae771770SStanislav Sedov #line 689 "asn1parse.y"
2255*ae771770SStanislav Sedov     {
2256*ae771770SStanislav Sedov 			Symbol *s;
2257*ae771770SStanislav Sedov 			s = addsym ((yyvsp[(1) - (4)].name));
2258*ae771770SStanislav Sedov 
2259*ae771770SStanislav Sedov 			s->stype = SValue;
2260*ae771770SStanislav Sedov 			s->value = (yyvsp[(4) - (4)].value);
2261*ae771770SStanislav Sedov 			generate_constant (s);
2262*ae771770SStanislav Sedov 		}
2263*ae771770SStanislav Sedov     break;
2264*ae771770SStanislav Sedov 
2265*ae771770SStanislav Sedov   case 98:
2266*ae771770SStanislav Sedov #line 703 "asn1parse.y"
2267*ae771770SStanislav Sedov     {
2268*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_GeneralString,
2269*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TGeneralString));
2270*ae771770SStanislav Sedov 		}
2271*ae771770SStanislav Sedov     break;
2272*ae771770SStanislav Sedov 
2273*ae771770SStanislav Sedov   case 99:
2274*ae771770SStanislav Sedov #line 708 "asn1parse.y"
2275*ae771770SStanislav Sedov     {
2276*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_TeletexString,
2277*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TTeletexString));
2278*ae771770SStanislav Sedov 		}
2279*ae771770SStanislav Sedov     break;
2280*ae771770SStanislav Sedov 
2281*ae771770SStanislav Sedov   case 100:
2282*ae771770SStanislav Sedov #line 713 "asn1parse.y"
2283*ae771770SStanislav Sedov     {
2284*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UTF8String,
2285*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TUTF8String));
2286*ae771770SStanislav Sedov 		}
2287*ae771770SStanislav Sedov     break;
2288*ae771770SStanislav Sedov 
2289*ae771770SStanislav Sedov   case 101:
2290*ae771770SStanislav Sedov #line 718 "asn1parse.y"
2291*ae771770SStanislav Sedov     {
2292*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_PrintableString,
2293*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TPrintableString));
2294*ae771770SStanislav Sedov 		}
2295*ae771770SStanislav Sedov     break;
2296*ae771770SStanislav Sedov 
2297*ae771770SStanislav Sedov   case 102:
2298*ae771770SStanislav Sedov #line 723 "asn1parse.y"
2299*ae771770SStanislav Sedov     {
2300*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_VisibleString,
2301*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TVisibleString));
2302*ae771770SStanislav Sedov 		}
2303*ae771770SStanislav Sedov     break;
2304*ae771770SStanislav Sedov 
2305*ae771770SStanislav Sedov   case 103:
2306*ae771770SStanislav Sedov #line 728 "asn1parse.y"
2307*ae771770SStanislav Sedov     {
2308*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_IA5String,
2309*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TIA5String));
2310*ae771770SStanislav Sedov 		}
2311*ae771770SStanislav Sedov     break;
2312*ae771770SStanislav Sedov 
2313*ae771770SStanislav Sedov   case 104:
2314*ae771770SStanislav Sedov #line 733 "asn1parse.y"
2315*ae771770SStanislav Sedov     {
2316*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_BMPString,
2317*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TBMPString));
2318*ae771770SStanislav Sedov 		}
2319*ae771770SStanislav Sedov     break;
2320*ae771770SStanislav Sedov 
2321*ae771770SStanislav Sedov   case 105:
2322*ae771770SStanislav Sedov #line 738 "asn1parse.y"
2323*ae771770SStanislav Sedov     {
2324*ae771770SStanislav Sedov 			(yyval.type) = new_tag(ASN1_C_UNIV, UT_UniversalString,
2325*ae771770SStanislav Sedov 				     TE_EXPLICIT, new_type(TUniversalString));
2326*ae771770SStanislav Sedov 		}
2327*ae771770SStanislav Sedov     break;
2328*ae771770SStanislav Sedov 
2329*ae771770SStanislav Sedov   case 106:
2330*ae771770SStanislav Sedov #line 746 "asn1parse.y"
2331*ae771770SStanislav Sedov     {
2332*ae771770SStanislav Sedov 			(yyval.members) = emalloc(sizeof(*(yyval.members)));
2333*ae771770SStanislav Sedov 			ASN1_TAILQ_INIT((yyval.members));
2334*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
2335*ae771770SStanislav Sedov 		}
2336*ae771770SStanislav Sedov     break;
2337*ae771770SStanislav Sedov 
2338*ae771770SStanislav Sedov   case 107:
2339*ae771770SStanislav Sedov #line 752 "asn1parse.y"
2340*ae771770SStanislav Sedov     {
2341*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
2342*ae771770SStanislav Sedov 			(yyval.members) = (yyvsp[(1) - (3)].members);
2343*ae771770SStanislav Sedov 		}
2344*ae771770SStanislav Sedov     break;
2345*ae771770SStanislav Sedov 
2346*ae771770SStanislav Sedov   case 108:
2347*ae771770SStanislav Sedov #line 757 "asn1parse.y"
2348*ae771770SStanislav Sedov     {
2349*ae771770SStanislav Sedov 		        struct member *m = ecalloc(1, sizeof(*m));
2350*ae771770SStanislav Sedov 			m->name = estrdup("...");
2351*ae771770SStanislav Sedov 			m->gen_name = estrdup("asn1_ellipsis");
2352*ae771770SStanislav Sedov 			m->ellipsis = 1;
2353*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), m, members);
2354*ae771770SStanislav Sedov 			(yyval.members) = (yyvsp[(1) - (3)].members);
2355*ae771770SStanislav Sedov 		}
2356*ae771770SStanislav Sedov     break;
2357*ae771770SStanislav Sedov 
2358*ae771770SStanislav Sedov   case 109:
2359*ae771770SStanislav Sedov #line 768 "asn1parse.y"
2360*ae771770SStanislav Sedov     {
2361*ae771770SStanislav Sedov 		  (yyval.member) = emalloc(sizeof(*(yyval.member)));
2362*ae771770SStanislav Sedov 		  (yyval.member)->name = (yyvsp[(1) - (2)].name);
2363*ae771770SStanislav Sedov 		  (yyval.member)->gen_name = estrdup((yyvsp[(1) - (2)].name));
2364*ae771770SStanislav Sedov 		  output_name ((yyval.member)->gen_name);
2365*ae771770SStanislav Sedov 		  (yyval.member)->type = (yyvsp[(2) - (2)].type);
2366*ae771770SStanislav Sedov 		  (yyval.member)->ellipsis = 0;
2367*ae771770SStanislav Sedov 		}
2368*ae771770SStanislav Sedov     break;
2369*ae771770SStanislav Sedov 
2370*ae771770SStanislav Sedov   case 110:
2371*ae771770SStanislav Sedov #line 779 "asn1parse.y"
2372*ae771770SStanislav Sedov     {
2373*ae771770SStanislav Sedov 			(yyval.member) = (yyvsp[(1) - (1)].member);
2374*ae771770SStanislav Sedov 			(yyval.member)->optional = 0;
2375*ae771770SStanislav Sedov 			(yyval.member)->defval = NULL;
2376*ae771770SStanislav Sedov 		}
2377*ae771770SStanislav Sedov     break;
2378*ae771770SStanislav Sedov 
2379*ae771770SStanislav Sedov   case 111:
2380*ae771770SStanislav Sedov #line 785 "asn1parse.y"
2381*ae771770SStanislav Sedov     {
2382*ae771770SStanislav Sedov 			(yyval.member) = (yyvsp[(1) - (2)].member);
2383*ae771770SStanislav Sedov 			(yyval.member)->optional = 1;
2384*ae771770SStanislav Sedov 			(yyval.member)->defval = NULL;
2385*ae771770SStanislav Sedov 		}
2386*ae771770SStanislav Sedov     break;
2387*ae771770SStanislav Sedov 
2388*ae771770SStanislav Sedov   case 112:
2389*ae771770SStanislav Sedov #line 791 "asn1parse.y"
2390*ae771770SStanislav Sedov     {
2391*ae771770SStanislav Sedov 			(yyval.member) = (yyvsp[(1) - (3)].member);
2392*ae771770SStanislav Sedov 			(yyval.member)->optional = 0;
2393*ae771770SStanislav Sedov 			(yyval.member)->defval = (yyvsp[(3) - (3)].value);
2394*ae771770SStanislav Sedov 		}
2395*ae771770SStanislav Sedov     break;
2396*ae771770SStanislav Sedov 
2397*ae771770SStanislav Sedov   case 113:
2398*ae771770SStanislav Sedov #line 799 "asn1parse.y"
2399*ae771770SStanislav Sedov     {
2400*ae771770SStanislav Sedov 			(yyval.members) = emalloc(sizeof(*(yyval.members)));
2401*ae771770SStanislav Sedov 			ASN1_TAILQ_INIT((yyval.members));
2402*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_HEAD((yyval.members), (yyvsp[(1) - (1)].member), members);
2403*ae771770SStanislav Sedov 		}
2404*ae771770SStanislav Sedov     break;
2405*ae771770SStanislav Sedov 
2406*ae771770SStanislav Sedov   case 114:
2407*ae771770SStanislav Sedov #line 805 "asn1parse.y"
2408*ae771770SStanislav Sedov     {
2409*ae771770SStanislav Sedov 			ASN1_TAILQ_INSERT_TAIL((yyvsp[(1) - (3)].members), (yyvsp[(3) - (3)].member), members);
2410*ae771770SStanislav Sedov 			(yyval.members) = (yyvsp[(1) - (3)].members);
2411*ae771770SStanislav Sedov 		}
2412*ae771770SStanislav Sedov     break;
2413*ae771770SStanislav Sedov 
2414*ae771770SStanislav Sedov   case 115:
2415*ae771770SStanislav Sedov #line 812 "asn1parse.y"
2416*ae771770SStanislav Sedov     {
2417*ae771770SStanislav Sedov 		  (yyval.member) = emalloc(sizeof(*(yyval.member)));
2418*ae771770SStanislav Sedov 		  (yyval.member)->name = (yyvsp[(1) - (4)].name);
2419*ae771770SStanislav Sedov 		  (yyval.member)->gen_name = estrdup((yyvsp[(1) - (4)].name));
2420*ae771770SStanislav Sedov 		  output_name ((yyval.member)->gen_name);
2421*ae771770SStanislav Sedov 		  (yyval.member)->val = (yyvsp[(3) - (4)].constant);
2422*ae771770SStanislav Sedov 		  (yyval.member)->optional = 0;
2423*ae771770SStanislav Sedov 		  (yyval.member)->ellipsis = 0;
2424*ae771770SStanislav Sedov 		  (yyval.member)->type = NULL;
2425*ae771770SStanislav Sedov 		}
2426*ae771770SStanislav Sedov     break;
2427*ae771770SStanislav Sedov 
2428*ae771770SStanislav Sedov   case 117:
2429*ae771770SStanislav Sedov #line 825 "asn1parse.y"
2430*ae771770SStanislav Sedov     { (yyval.objid) = NULL; }
2431*ae771770SStanislav Sedov     break;
2432*ae771770SStanislav Sedov 
2433*ae771770SStanislav Sedov   case 118:
2434*ae771770SStanislav Sedov #line 829 "asn1parse.y"
2435*ae771770SStanislav Sedov     {
2436*ae771770SStanislav Sedov 			(yyval.objid) = (yyvsp[(2) - (3)].objid);
2437*ae771770SStanislav Sedov 		}
2438*ae771770SStanislav Sedov     break;
2439*ae771770SStanislav Sedov 
2440*ae771770SStanislav Sedov   case 119:
2441*ae771770SStanislav Sedov #line 835 "asn1parse.y"
2442*ae771770SStanislav Sedov     {
2443*ae771770SStanislav Sedov 			(yyval.objid) = NULL;
2444*ae771770SStanislav Sedov 		}
2445*ae771770SStanislav Sedov     break;
2446*ae771770SStanislav Sedov 
2447*ae771770SStanislav Sedov   case 120:
2448*ae771770SStanislav Sedov #line 839 "asn1parse.y"
2449*ae771770SStanislav Sedov     {
2450*ae771770SStanislav Sedov 		        if ((yyvsp[(2) - (2)].objid)) {
2451*ae771770SStanislav Sedov 				(yyval.objid) = (yyvsp[(2) - (2)].objid);
2452*ae771770SStanislav Sedov 				add_oid_to_tail((yyvsp[(2) - (2)].objid), (yyvsp[(1) - (2)].objid));
2453*ae771770SStanislav Sedov 			} else {
2454*ae771770SStanislav Sedov 				(yyval.objid) = (yyvsp[(1) - (2)].objid);
2455*ae771770SStanislav Sedov 			}
2456*ae771770SStanislav Sedov 		}
2457*ae771770SStanislav Sedov     break;
2458*ae771770SStanislav Sedov 
2459*ae771770SStanislav Sedov   case 121:
2460*ae771770SStanislav Sedov #line 850 "asn1parse.y"
2461*ae771770SStanislav Sedov     {
2462*ae771770SStanislav Sedov 			(yyval.objid) = new_objid((yyvsp[(1) - (4)].name), (yyvsp[(3) - (4)].constant));
2463*ae771770SStanislav Sedov 		}
2464*ae771770SStanislav Sedov     break;
2465*ae771770SStanislav Sedov 
2466*ae771770SStanislav Sedov   case 122:
2467*ae771770SStanislav Sedov #line 854 "asn1parse.y"
2468*ae771770SStanislav Sedov     {
2469*ae771770SStanislav Sedov 		    Symbol *s = addsym((yyvsp[(1) - (1)].name));
2470*ae771770SStanislav Sedov 		    if(s->stype != SValue ||
2471*ae771770SStanislav Sedov 		       s->value->type != objectidentifiervalue) {
2472*ae771770SStanislav Sedov 			lex_error_message("%s is not an object identifier\n",
2473*ae771770SStanislav Sedov 				      s->name);
2474*ae771770SStanislav Sedov 			exit(1);
2475*ae771770SStanislav Sedov 		    }
2476*ae771770SStanislav Sedov 		    (yyval.objid) = s->value->u.objectidentifiervalue;
2477*ae771770SStanislav Sedov 		}
2478*ae771770SStanislav Sedov     break;
2479*ae771770SStanislav Sedov 
2480*ae771770SStanislav Sedov   case 123:
2481*ae771770SStanislav Sedov #line 865 "asn1parse.y"
2482*ae771770SStanislav Sedov     {
2483*ae771770SStanislav Sedov 		    (yyval.objid) = new_objid(NULL, (yyvsp[(1) - (1)].constant));
2484*ae771770SStanislav Sedov 		}
2485*ae771770SStanislav Sedov     break;
2486*ae771770SStanislav Sedov 
2487*ae771770SStanislav Sedov   case 133:
2488*ae771770SStanislav Sedov #line 888 "asn1parse.y"
2489*ae771770SStanislav Sedov     {
2490*ae771770SStanislav Sedov 			Symbol *s = addsym((yyvsp[(1) - (1)].name));
2491*ae771770SStanislav Sedov 			if(s->stype != SValue)
2492*ae771770SStanislav Sedov 				lex_error_message ("%s is not a value\n",
2493*ae771770SStanislav Sedov 						s->name);
2494*ae771770SStanislav Sedov 			else
2495*ae771770SStanislav Sedov 				(yyval.value) = s->value;
2496*ae771770SStanislav Sedov 		}
2497*ae771770SStanislav Sedov     break;
2498*ae771770SStanislav Sedov 
2499*ae771770SStanislav Sedov   case 134:
2500*ae771770SStanislav Sedov #line 899 "asn1parse.y"
2501*ae771770SStanislav Sedov     {
2502*ae771770SStanislav Sedov 			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2503*ae771770SStanislav Sedov 			(yyval.value)->type = stringvalue;
2504*ae771770SStanislav Sedov 			(yyval.value)->u.stringvalue = (yyvsp[(1) - (1)].name);
2505*ae771770SStanislav Sedov 		}
2506*ae771770SStanislav Sedov     break;
2507*ae771770SStanislav Sedov 
2508*ae771770SStanislav Sedov   case 135:
2509*ae771770SStanislav Sedov #line 907 "asn1parse.y"
2510*ae771770SStanislav Sedov     {
2511*ae771770SStanislav Sedov 			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2512*ae771770SStanislav Sedov 			(yyval.value)->type = booleanvalue;
2513*ae771770SStanislav Sedov 			(yyval.value)->u.booleanvalue = 0;
2514*ae771770SStanislav Sedov 		}
2515*ae771770SStanislav Sedov     break;
2516*ae771770SStanislav Sedov 
2517*ae771770SStanislav Sedov   case 136:
2518*ae771770SStanislav Sedov #line 913 "asn1parse.y"
2519*ae771770SStanislav Sedov     {
2520*ae771770SStanislav Sedov 			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2521*ae771770SStanislav Sedov 			(yyval.value)->type = booleanvalue;
2522*ae771770SStanislav Sedov 			(yyval.value)->u.booleanvalue = 0;
2523*ae771770SStanislav Sedov 		}
2524*ae771770SStanislav Sedov     break;
2525*ae771770SStanislav Sedov 
2526*ae771770SStanislav Sedov   case 137:
2527*ae771770SStanislav Sedov #line 921 "asn1parse.y"
2528*ae771770SStanislav Sedov     {
2529*ae771770SStanislav Sedov 			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2530*ae771770SStanislav Sedov 			(yyval.value)->type = integervalue;
2531*ae771770SStanislav Sedov 			(yyval.value)->u.integervalue = (yyvsp[(1) - (1)].constant);
2532*ae771770SStanislav Sedov 		}
2533*ae771770SStanislav Sedov     break;
2534*ae771770SStanislav Sedov 
2535*ae771770SStanislav Sedov   case 139:
2536*ae771770SStanislav Sedov #line 932 "asn1parse.y"
2537*ae771770SStanislav Sedov     {
2538*ae771770SStanislav Sedov 		}
2539*ae771770SStanislav Sedov     break;
2540*ae771770SStanislav Sedov 
2541*ae771770SStanislav Sedov   case 140:
2542*ae771770SStanislav Sedov #line 937 "asn1parse.y"
2543*ae771770SStanislav Sedov     {
2544*ae771770SStanislav Sedov 			(yyval.value) = emalloc(sizeof(*(yyval.value)));
2545*ae771770SStanislav Sedov 			(yyval.value)->type = objectidentifiervalue;
2546*ae771770SStanislav Sedov 			(yyval.value)->u.objectidentifiervalue = (yyvsp[(1) - (1)].objid);
2547*ae771770SStanislav Sedov 		}
2548*ae771770SStanislav Sedov     break;
2549*ae771770SStanislav Sedov 
2550*ae771770SStanislav Sedov 
2551*ae771770SStanislav Sedov /* Line 1267 of yacc.c.  */
2552*ae771770SStanislav Sedov #line 2553 "asn1parse.c"
2553*ae771770SStanislav Sedov       default: break;
2554*ae771770SStanislav Sedov     }
2555*ae771770SStanislav Sedov   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2556*ae771770SStanislav Sedov 
2557*ae771770SStanislav Sedov   YYPOPSTACK (yylen);
2558*ae771770SStanislav Sedov   yylen = 0;
2559*ae771770SStanislav Sedov   YY_STACK_PRINT (yyss, yyssp);
2560*ae771770SStanislav Sedov 
2561*ae771770SStanislav Sedov   *++yyvsp = yyval;
2562*ae771770SStanislav Sedov 
2563*ae771770SStanislav Sedov 
2564*ae771770SStanislav Sedov   /* Now `shift' the result of the reduction.  Determine what state
2565*ae771770SStanislav Sedov      that goes to, based on the state we popped back to and the rule
2566*ae771770SStanislav Sedov      number reduced by.  */
2567*ae771770SStanislav Sedov 
2568*ae771770SStanislav Sedov   yyn = yyr1[yyn];
2569*ae771770SStanislav Sedov 
2570*ae771770SStanislav Sedov   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2571*ae771770SStanislav Sedov   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2572*ae771770SStanislav Sedov     yystate = yytable[yystate];
2573*ae771770SStanislav Sedov   else
2574*ae771770SStanislav Sedov     yystate = yydefgoto[yyn - YYNTOKENS];
2575*ae771770SStanislav Sedov 
2576*ae771770SStanislav Sedov   goto yynewstate;
2577*ae771770SStanislav Sedov 
2578*ae771770SStanislav Sedov 
2579*ae771770SStanislav Sedov /*------------------------------------.
2580*ae771770SStanislav Sedov | yyerrlab -- here on detecting error |
2581*ae771770SStanislav Sedov `------------------------------------*/
2582*ae771770SStanislav Sedov yyerrlab:
2583*ae771770SStanislav Sedov   /* If not already recovering from an error, report this error.  */
2584*ae771770SStanislav Sedov   if (!yyerrstatus)
2585*ae771770SStanislav Sedov     {
2586*ae771770SStanislav Sedov       ++yynerrs;
2587*ae771770SStanislav Sedov #if ! YYERROR_VERBOSE
2588*ae771770SStanislav Sedov       yyerror (YY_("syntax error"));
2589*ae771770SStanislav Sedov #else
2590*ae771770SStanislav Sedov       {
2591*ae771770SStanislav Sedov 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2592*ae771770SStanislav Sedov 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2593*ae771770SStanislav Sedov 	  {
2594*ae771770SStanislav Sedov 	    YYSIZE_T yyalloc = 2 * yysize;
2595*ae771770SStanislav Sedov 	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2596*ae771770SStanislav Sedov 	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
2597*ae771770SStanislav Sedov 	    if (yymsg != yymsgbuf)
2598*ae771770SStanislav Sedov 	      YYSTACK_FREE (yymsg);
2599*ae771770SStanislav Sedov 	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2600*ae771770SStanislav Sedov 	    if (yymsg)
2601*ae771770SStanislav Sedov 	      yymsg_alloc = yyalloc;
2602*ae771770SStanislav Sedov 	    else
2603*ae771770SStanislav Sedov 	      {
2604*ae771770SStanislav Sedov 		yymsg = yymsgbuf;
2605*ae771770SStanislav Sedov 		yymsg_alloc = sizeof yymsgbuf;
2606*ae771770SStanislav Sedov 	      }
2607*ae771770SStanislav Sedov 	  }
2608*ae771770SStanislav Sedov 
2609*ae771770SStanislav Sedov 	if (0 < yysize && yysize <= yymsg_alloc)
2610*ae771770SStanislav Sedov 	  {
2611*ae771770SStanislav Sedov 	    (void) yysyntax_error (yymsg, yystate, yychar);
2612*ae771770SStanislav Sedov 	    yyerror (yymsg);
2613*ae771770SStanislav Sedov 	  }
2614*ae771770SStanislav Sedov 	else
2615*ae771770SStanislav Sedov 	  {
2616*ae771770SStanislav Sedov 	    yyerror (YY_("syntax error"));
2617*ae771770SStanislav Sedov 	    if (yysize != 0)
2618*ae771770SStanislav Sedov 	      goto yyexhaustedlab;
2619*ae771770SStanislav Sedov 	  }
2620*ae771770SStanislav Sedov       }
2621*ae771770SStanislav Sedov #endif
2622*ae771770SStanislav Sedov     }
2623*ae771770SStanislav Sedov 
2624*ae771770SStanislav Sedov 
2625*ae771770SStanislav Sedov 
2626*ae771770SStanislav Sedov   if (yyerrstatus == 3)
2627*ae771770SStanislav Sedov     {
2628*ae771770SStanislav Sedov       /* If just tried and failed to reuse look-ahead token after an
2629*ae771770SStanislav Sedov 	 error, discard it.  */
2630*ae771770SStanislav Sedov 
2631*ae771770SStanislav Sedov       if (yychar <= YYEOF)
2632*ae771770SStanislav Sedov 	{
2633*ae771770SStanislav Sedov 	  /* Return failure if at end of input.  */
2634*ae771770SStanislav Sedov 	  if (yychar == YYEOF)
2635*ae771770SStanislav Sedov 	    YYABORT;
2636*ae771770SStanislav Sedov 	}
2637*ae771770SStanislav Sedov       else
2638*ae771770SStanislav Sedov 	{
2639*ae771770SStanislav Sedov 	  yydestruct ("Error: discarding",
2640*ae771770SStanislav Sedov 		      yytoken, &yylval);
2641*ae771770SStanislav Sedov 	  yychar = YYEMPTY;
2642*ae771770SStanislav Sedov 	}
2643*ae771770SStanislav Sedov     }
2644*ae771770SStanislav Sedov 
2645*ae771770SStanislav Sedov   /* Else will try to reuse look-ahead token after shifting the error
2646*ae771770SStanislav Sedov      token.  */
2647*ae771770SStanislav Sedov   goto yyerrlab1;
2648*ae771770SStanislav Sedov 
2649*ae771770SStanislav Sedov 
2650*ae771770SStanislav Sedov /*---------------------------------------------------.
2651*ae771770SStanislav Sedov | yyerrorlab -- error raised explicitly by YYERROR.  |
2652*ae771770SStanislav Sedov `---------------------------------------------------*/
2653*ae771770SStanislav Sedov yyerrorlab:
2654*ae771770SStanislav Sedov 
2655*ae771770SStanislav Sedov   /* Pacify compilers like GCC when the user code never invokes
2656*ae771770SStanislav Sedov      YYERROR and the label yyerrorlab therefore never appears in user
2657*ae771770SStanislav Sedov      code.  */
2658*ae771770SStanislav Sedov   if (/*CONSTCOND*/ 0)
2659*ae771770SStanislav Sedov      goto yyerrorlab;
2660*ae771770SStanislav Sedov 
2661*ae771770SStanislav Sedov   /* Do not reclaim the symbols of the rule which action triggered
2662*ae771770SStanislav Sedov      this YYERROR.  */
2663*ae771770SStanislav Sedov   YYPOPSTACK (yylen);
2664*ae771770SStanislav Sedov   yylen = 0;
2665*ae771770SStanislav Sedov   YY_STACK_PRINT (yyss, yyssp);
2666*ae771770SStanislav Sedov   yystate = *yyssp;
2667*ae771770SStanislav Sedov   goto yyerrlab1;
2668*ae771770SStanislav Sedov 
2669*ae771770SStanislav Sedov 
2670*ae771770SStanislav Sedov /*-------------------------------------------------------------.
2671*ae771770SStanislav Sedov | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2672*ae771770SStanislav Sedov `-------------------------------------------------------------*/
2673*ae771770SStanislav Sedov yyerrlab1:
2674*ae771770SStanislav Sedov   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2675*ae771770SStanislav Sedov 
2676*ae771770SStanislav Sedov   for (;;)
2677*ae771770SStanislav Sedov     {
2678*ae771770SStanislav Sedov       yyn = yypact[yystate];
2679*ae771770SStanislav Sedov       if (yyn != YYPACT_NINF)
2680*ae771770SStanislav Sedov 	{
2681*ae771770SStanislav Sedov 	  yyn += YYTERROR;
2682*ae771770SStanislav Sedov 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2683*ae771770SStanislav Sedov 	    {
2684*ae771770SStanislav Sedov 	      yyn = yytable[yyn];
2685*ae771770SStanislav Sedov 	      if (0 < yyn)
2686*ae771770SStanislav Sedov 		break;
2687*ae771770SStanislav Sedov 	    }
2688*ae771770SStanislav Sedov 	}
2689*ae771770SStanislav Sedov 
2690*ae771770SStanislav Sedov       /* Pop the current state because it cannot handle the error token.  */
2691*ae771770SStanislav Sedov       if (yyssp == yyss)
2692*ae771770SStanislav Sedov 	YYABORT;
2693*ae771770SStanislav Sedov 
2694*ae771770SStanislav Sedov 
2695*ae771770SStanislav Sedov       yydestruct ("Error: popping",
2696*ae771770SStanislav Sedov 		  yystos[yystate], yyvsp);
2697*ae771770SStanislav Sedov       YYPOPSTACK (1);
2698*ae771770SStanislav Sedov       yystate = *yyssp;
2699*ae771770SStanislav Sedov       YY_STACK_PRINT (yyss, yyssp);
2700*ae771770SStanislav Sedov     }
2701*ae771770SStanislav Sedov 
2702*ae771770SStanislav Sedov   if (yyn == YYFINAL)
2703*ae771770SStanislav Sedov     YYACCEPT;
2704*ae771770SStanislav Sedov 
2705*ae771770SStanislav Sedov   *++yyvsp = yylval;
2706*ae771770SStanislav Sedov 
2707*ae771770SStanislav Sedov 
2708*ae771770SStanislav Sedov   /* Shift the error token.  */
2709*ae771770SStanislav Sedov   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2710*ae771770SStanislav Sedov 
2711*ae771770SStanislav Sedov   yystate = yyn;
2712*ae771770SStanislav Sedov   goto yynewstate;
2713*ae771770SStanislav Sedov 
2714*ae771770SStanislav Sedov 
2715*ae771770SStanislav Sedov /*-------------------------------------.
2716*ae771770SStanislav Sedov | yyacceptlab -- YYACCEPT comes here.  |
2717*ae771770SStanislav Sedov `-------------------------------------*/
2718*ae771770SStanislav Sedov yyacceptlab:
2719*ae771770SStanislav Sedov   yyresult = 0;
2720*ae771770SStanislav Sedov   goto yyreturn;
2721*ae771770SStanislav Sedov 
2722*ae771770SStanislav Sedov /*-----------------------------------.
2723*ae771770SStanislav Sedov | yyabortlab -- YYABORT comes here.  |
2724*ae771770SStanislav Sedov `-----------------------------------*/
2725*ae771770SStanislav Sedov yyabortlab:
2726*ae771770SStanislav Sedov   yyresult = 1;
2727*ae771770SStanislav Sedov   goto yyreturn;
2728*ae771770SStanislav Sedov 
2729*ae771770SStanislav Sedov #ifndef yyoverflow
2730*ae771770SStanislav Sedov /*-------------------------------------------------.
2731*ae771770SStanislav Sedov | yyexhaustedlab -- memory exhaustion comes here.  |
2732*ae771770SStanislav Sedov `-------------------------------------------------*/
2733*ae771770SStanislav Sedov yyexhaustedlab:
2734*ae771770SStanislav Sedov   yyerror (YY_("memory exhausted"));
2735*ae771770SStanislav Sedov   yyresult = 2;
2736*ae771770SStanislav Sedov   /* Fall through.  */
2737*ae771770SStanislav Sedov #endif
2738*ae771770SStanislav Sedov 
2739*ae771770SStanislav Sedov yyreturn:
2740*ae771770SStanislav Sedov   if (yychar != YYEOF && yychar != YYEMPTY)
2741*ae771770SStanislav Sedov      yydestruct ("Cleanup: discarding lookahead",
2742*ae771770SStanislav Sedov 		 yytoken, &yylval);
2743*ae771770SStanislav Sedov   /* Do not reclaim the symbols of the rule which action triggered
2744*ae771770SStanislav Sedov      this YYABORT or YYACCEPT.  */
2745*ae771770SStanislav Sedov   YYPOPSTACK (yylen);
2746*ae771770SStanislav Sedov   YY_STACK_PRINT (yyss, yyssp);
2747*ae771770SStanislav Sedov   while (yyssp != yyss)
2748*ae771770SStanislav Sedov     {
2749*ae771770SStanislav Sedov       yydestruct ("Cleanup: popping",
2750*ae771770SStanislav Sedov 		  yystos[*yyssp], yyvsp);
2751*ae771770SStanislav Sedov       YYPOPSTACK (1);
2752*ae771770SStanislav Sedov     }
2753*ae771770SStanislav Sedov #ifndef yyoverflow
2754*ae771770SStanislav Sedov   if (yyss != yyssa)
2755*ae771770SStanislav Sedov     YYSTACK_FREE (yyss);
2756*ae771770SStanislav Sedov #endif
2757*ae771770SStanislav Sedov #if YYERROR_VERBOSE
2758*ae771770SStanislav Sedov   if (yymsg != yymsgbuf)
2759*ae771770SStanislav Sedov     YYSTACK_FREE (yymsg);
2760*ae771770SStanislav Sedov #endif
2761*ae771770SStanislav Sedov   /* Make sure YYID is used.  */
2762*ae771770SStanislav Sedov   return YYID (yyresult);
2763*ae771770SStanislav Sedov }
2764*ae771770SStanislav Sedov 
2765*ae771770SStanislav Sedov 
2766*ae771770SStanislav Sedov #line 944 "asn1parse.y"
2767*ae771770SStanislav Sedov 
2768*ae771770SStanislav Sedov 
2769*ae771770SStanislav Sedov void
2770*ae771770SStanislav Sedov yyerror (const char *s)
2771*ae771770SStanislav Sedov {
2772*ae771770SStanislav Sedov      lex_error_message ("%s\n", s);
2773*ae771770SStanislav Sedov }
2774*ae771770SStanislav Sedov 
2775*ae771770SStanislav Sedov static Type *
2776*ae771770SStanislav Sedov new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype)
2777*ae771770SStanislav Sedov {
2778*ae771770SStanislav Sedov     Type *t;
2779*ae771770SStanislav Sedov     if(oldtype->type == TTag && oldtype->tag.tagenv == TE_IMPLICIT) {
2780*ae771770SStanislav Sedov 	t = oldtype;
2781*ae771770SStanislav Sedov 	oldtype = oldtype->subtype; /* XXX */
2782*ae771770SStanislav Sedov     } else
2783*ae771770SStanislav Sedov 	t = new_type (TTag);
2784*ae771770SStanislav Sedov 
2785*ae771770SStanislav Sedov     t->tag.tagclass = tagclass;
2786*ae771770SStanislav Sedov     t->tag.tagvalue = tagvalue;
2787*ae771770SStanislav Sedov     t->tag.tagenv = tagenv;
2788*ae771770SStanislav Sedov     t->subtype = oldtype;
2789*ae771770SStanislav Sedov     return t;
2790*ae771770SStanislav Sedov }
2791*ae771770SStanislav Sedov 
2792*ae771770SStanislav Sedov static struct objid *
2793*ae771770SStanislav Sedov new_objid(const char *label, int value)
2794*ae771770SStanislav Sedov {
2795*ae771770SStanislav Sedov     struct objid *s;
2796*ae771770SStanislav Sedov     s = emalloc(sizeof(*s));
2797*ae771770SStanislav Sedov     s->label = label;
2798*ae771770SStanislav Sedov     s->value = value;
2799*ae771770SStanislav Sedov     s->next = NULL;
2800*ae771770SStanislav Sedov     return s;
2801*ae771770SStanislav Sedov }
2802*ae771770SStanislav Sedov 
2803*ae771770SStanislav Sedov static void
2804*ae771770SStanislav Sedov add_oid_to_tail(struct objid *head, struct objid *tail)
2805*ae771770SStanislav Sedov {
2806*ae771770SStanislav Sedov     struct objid *o;
2807*ae771770SStanislav Sedov     o = head;
2808*ae771770SStanislav Sedov     while (o->next)
2809*ae771770SStanislav Sedov 	o = o->next;
2810*ae771770SStanislav Sedov     o->next = tail;
2811*ae771770SStanislav Sedov }
2812*ae771770SStanislav Sedov 
2813*ae771770SStanislav Sedov static Type *
2814*ae771770SStanislav Sedov new_type (Typetype tt)
2815*ae771770SStanislav Sedov {
2816*ae771770SStanislav Sedov     Type *t = ecalloc(1, sizeof(*t));
2817*ae771770SStanislav Sedov     t->type = tt;
2818*ae771770SStanislav Sedov     return t;
2819*ae771770SStanislav Sedov }
2820*ae771770SStanislav Sedov 
2821*ae771770SStanislav Sedov static struct constraint_spec *
2822*ae771770SStanislav Sedov new_constraint_spec(enum ctype ct)
2823*ae771770SStanislav Sedov {
2824*ae771770SStanislav Sedov     struct constraint_spec *c = ecalloc(1, sizeof(*c));
2825*ae771770SStanislav Sedov     c->ctype = ct;
2826*ae771770SStanislav Sedov     return c;
2827*ae771770SStanislav Sedov }
2828*ae771770SStanislav Sedov 
2829*ae771770SStanislav Sedov static void fix_labels2(Type *t, const char *prefix);
2830*ae771770SStanislav Sedov static void fix_labels1(struct memhead *members, const char *prefix)
2831*ae771770SStanislav Sedov {
2832*ae771770SStanislav Sedov     Member *m;
2833*ae771770SStanislav Sedov 
2834*ae771770SStanislav Sedov     if(members == NULL)
2835*ae771770SStanislav Sedov 	return;
2836*ae771770SStanislav Sedov     ASN1_TAILQ_FOREACH(m, members, members) {
2837*ae771770SStanislav Sedov 	if (asprintf(&m->label, "%s_%s", prefix, m->gen_name) < 0)
2838*ae771770SStanislav Sedov 	    errx(1, "malloc");
2839*ae771770SStanislav Sedov 	if (m->label == NULL)
2840*ae771770SStanislav Sedov 	    errx(1, "malloc");
2841*ae771770SStanislav Sedov 	if(m->type != NULL)
2842*ae771770SStanislav Sedov 	    fix_labels2(m->type, m->label);
2843*ae771770SStanislav Sedov     }
2844*ae771770SStanislav Sedov }
2845*ae771770SStanislav Sedov 
2846*ae771770SStanislav Sedov static void fix_labels2(Type *t, const char *prefix)
2847*ae771770SStanislav Sedov {
2848*ae771770SStanislav Sedov     for(; t; t = t->subtype)
2849*ae771770SStanislav Sedov 	fix_labels1(t->members, prefix);
2850*ae771770SStanislav Sedov }
2851*ae771770SStanislav Sedov 
2852*ae771770SStanislav Sedov static void
2853*ae771770SStanislav Sedov fix_labels(Symbol *s)
2854*ae771770SStanislav Sedov {
2855*ae771770SStanislav Sedov     char *p = NULL;
2856*ae771770SStanislav Sedov     if (asprintf(&p, "choice_%s", s->gen_name) < 0 || p == NULL)
2857*ae771770SStanislav Sedov 	errx(1, "malloc");
2858*ae771770SStanislav Sedov     fix_labels2(s->type, p);
2859*ae771770SStanislav Sedov     free(p);
2860*ae771770SStanislav Sedov }
2861*ae771770SStanislav Sedov 
2862