xref: /aosp_15_r20/external/toybox/kconfig/zconf.tab.c_shipped (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker/* A Bison parser, made by GNU Bison 2.1.  */
2*cf5a6c84SAndroid Build Coastguard Worker
3*cf5a6c84SAndroid Build Coastguard Worker/* Skeleton parser for Yacc-like parsing with Bison,
4*cf5a6c84SAndroid Build Coastguard Worker   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5*cf5a6c84SAndroid Build Coastguard Worker
6*cf5a6c84SAndroid Build Coastguard Worker   This program is free software; you can redistribute it and/or modify
7*cf5a6c84SAndroid Build Coastguard Worker   it under the terms of the GNU General Public License as published by
8*cf5a6c84SAndroid Build Coastguard Worker   the Free Software Foundation; either version 2, or (at your option)
9*cf5a6c84SAndroid Build Coastguard Worker   any later version.
10*cf5a6c84SAndroid Build Coastguard Worker
11*cf5a6c84SAndroid Build Coastguard Worker   This program is distributed in the hope that it will be useful,
12*cf5a6c84SAndroid Build Coastguard Worker   but WITHOUT ANY WARRANTY; without even the implied warranty of
13*cf5a6c84SAndroid Build Coastguard Worker   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*cf5a6c84SAndroid Build Coastguard Worker   GNU General Public License for more details.
15*cf5a6c84SAndroid Build Coastguard Worker
16*cf5a6c84SAndroid Build Coastguard Worker   You should have received a copy of the GNU General Public License
17*cf5a6c84SAndroid Build Coastguard Worker   along with this program; if not, write to the Free Software
18*cf5a6c84SAndroid Build Coastguard Worker   Foundation, Inc., 51 Franklin Street, Fifth Floor,
19*cf5a6c84SAndroid Build Coastguard Worker   Boston, MA 02110-1301, USA.  */
20*cf5a6c84SAndroid Build Coastguard Worker
21*cf5a6c84SAndroid Build Coastguard Worker/* As a special exception, when this file is copied by Bison into a
22*cf5a6c84SAndroid Build Coastguard Worker   Bison output file, you may use that output file without restriction.
23*cf5a6c84SAndroid Build Coastguard Worker   This special exception was added by the Free Software Foundation
24*cf5a6c84SAndroid Build Coastguard Worker   in version 1.24 of Bison.  */
25*cf5a6c84SAndroid Build Coastguard Worker
26*cf5a6c84SAndroid Build Coastguard Worker/* Written by Richard Stallman by simplifying the original so called
27*cf5a6c84SAndroid Build Coastguard Worker   ``semantic'' parser.  */
28*cf5a6c84SAndroid Build Coastguard Worker
29*cf5a6c84SAndroid Build Coastguard Worker/* All symbols defined below should begin with yy or YY, to avoid
30*cf5a6c84SAndroid Build Coastguard Worker   infringing on user name space.  This should be done even for local
31*cf5a6c84SAndroid Build Coastguard Worker   variables, as they might otherwise be expanded by user macros.
32*cf5a6c84SAndroid Build Coastguard Worker   There are some unavoidable exceptions within include files to
33*cf5a6c84SAndroid Build Coastguard Worker   define necessary library symbols; they are noted "INFRINGES ON
34*cf5a6c84SAndroid Build Coastguard Worker   USER NAME SPACE" below.  */
35*cf5a6c84SAndroid Build Coastguard Worker
36*cf5a6c84SAndroid Build Coastguard Worker/* Identify Bison output.  */
37*cf5a6c84SAndroid Build Coastguard Worker#define YYBISON 1
38*cf5a6c84SAndroid Build Coastguard Worker
39*cf5a6c84SAndroid Build Coastguard Worker/* Bison version.  */
40*cf5a6c84SAndroid Build Coastguard Worker#define YYBISON_VERSION "2.1"
41*cf5a6c84SAndroid Build Coastguard Worker
42*cf5a6c84SAndroid Build Coastguard Worker/* Skeleton name.  */
43*cf5a6c84SAndroid Build Coastguard Worker#define YYSKELETON_NAME "yacc.c"
44*cf5a6c84SAndroid Build Coastguard Worker
45*cf5a6c84SAndroid Build Coastguard Worker/* Pure parsers.  */
46*cf5a6c84SAndroid Build Coastguard Worker#define YYPURE 0
47*cf5a6c84SAndroid Build Coastguard Worker
48*cf5a6c84SAndroid Build Coastguard Worker/* Using locations.  */
49*cf5a6c84SAndroid Build Coastguard Worker#define YYLSP_NEEDED 0
50*cf5a6c84SAndroid Build Coastguard Worker
51*cf5a6c84SAndroid Build Coastguard Worker/* Substitute the variable and function names.  */
52*cf5a6c84SAndroid Build Coastguard Worker#define yyparse zconfparse
53*cf5a6c84SAndroid Build Coastguard Worker#define yylex   zconflex
54*cf5a6c84SAndroid Build Coastguard Worker#define yyerror zconferror
55*cf5a6c84SAndroid Build Coastguard Worker#define yylval  zconflval
56*cf5a6c84SAndroid Build Coastguard Worker#define yychar  zconfchar
57*cf5a6c84SAndroid Build Coastguard Worker#define yydebug zconfdebug
58*cf5a6c84SAndroid Build Coastguard Worker#define yynerrs zconfnerrs
59*cf5a6c84SAndroid Build Coastguard Worker
60*cf5a6c84SAndroid Build Coastguard Worker
61*cf5a6c84SAndroid Build Coastguard Worker/* Tokens.  */
62*cf5a6c84SAndroid Build Coastguard Worker#ifndef YYTOKENTYPE
63*cf5a6c84SAndroid Build Coastguard Worker# define YYTOKENTYPE
64*cf5a6c84SAndroid Build Coastguard Worker   /* Put the tokens into the symbol table, so that GDB and other debuggers
65*cf5a6c84SAndroid Build Coastguard Worker      know about them.  */
66*cf5a6c84SAndroid Build Coastguard Worker   enum yytokentype {
67*cf5a6c84SAndroid Build Coastguard Worker     T_MAINMENU = 258,
68*cf5a6c84SAndroid Build Coastguard Worker     T_MENU = 259,
69*cf5a6c84SAndroid Build Coastguard Worker     T_ENDMENU = 260,
70*cf5a6c84SAndroid Build Coastguard Worker     T_SOURCE = 261,
71*cf5a6c84SAndroid Build Coastguard Worker     T_CHOICE = 262,
72*cf5a6c84SAndroid Build Coastguard Worker     T_ENDCHOICE = 263,
73*cf5a6c84SAndroid Build Coastguard Worker     T_COMMENT = 264,
74*cf5a6c84SAndroid Build Coastguard Worker     T_CONFIG = 265,
75*cf5a6c84SAndroid Build Coastguard Worker     T_MENUCONFIG = 266,
76*cf5a6c84SAndroid Build Coastguard Worker     T_HELP = 267,
77*cf5a6c84SAndroid Build Coastguard Worker     T_HELPTEXT = 268,
78*cf5a6c84SAndroid Build Coastguard Worker     T_IF = 269,
79*cf5a6c84SAndroid Build Coastguard Worker     T_ENDIF = 270,
80*cf5a6c84SAndroid Build Coastguard Worker     T_DEPENDS = 271,
81*cf5a6c84SAndroid Build Coastguard Worker     T_REQUIRES = 272,
82*cf5a6c84SAndroid Build Coastguard Worker     T_OPTIONAL = 273,
83*cf5a6c84SAndroid Build Coastguard Worker     T_PROMPT = 274,
84*cf5a6c84SAndroid Build Coastguard Worker     T_TYPE = 275,
85*cf5a6c84SAndroid Build Coastguard Worker     T_DEFAULT = 276,
86*cf5a6c84SAndroid Build Coastguard Worker     T_SELECT = 277,
87*cf5a6c84SAndroid Build Coastguard Worker     T_RANGE = 278,
88*cf5a6c84SAndroid Build Coastguard Worker     T_OPTION = 279,
89*cf5a6c84SAndroid Build Coastguard Worker     T_ON = 280,
90*cf5a6c84SAndroid Build Coastguard Worker     T_WORD = 281,
91*cf5a6c84SAndroid Build Coastguard Worker     T_WORD_QUOTE = 282,
92*cf5a6c84SAndroid Build Coastguard Worker     T_UNEQUAL = 283,
93*cf5a6c84SAndroid Build Coastguard Worker     T_CLOSE_PAREN = 284,
94*cf5a6c84SAndroid Build Coastguard Worker     T_OPEN_PAREN = 285,
95*cf5a6c84SAndroid Build Coastguard Worker     T_EOL = 286,
96*cf5a6c84SAndroid Build Coastguard Worker     T_OR = 287,
97*cf5a6c84SAndroid Build Coastguard Worker     T_AND = 288,
98*cf5a6c84SAndroid Build Coastguard Worker     T_EQUAL = 289,
99*cf5a6c84SAndroid Build Coastguard Worker     T_NOT = 290
100*cf5a6c84SAndroid Build Coastguard Worker   };
101*cf5a6c84SAndroid Build Coastguard Worker#endif
102*cf5a6c84SAndroid Build Coastguard Worker/* Tokens.  */
103*cf5a6c84SAndroid Build Coastguard Worker#define T_MAINMENU 258
104*cf5a6c84SAndroid Build Coastguard Worker#define T_MENU 259
105*cf5a6c84SAndroid Build Coastguard Worker#define T_ENDMENU 260
106*cf5a6c84SAndroid Build Coastguard Worker#define T_SOURCE 261
107*cf5a6c84SAndroid Build Coastguard Worker#define T_CHOICE 262
108*cf5a6c84SAndroid Build Coastguard Worker#define T_ENDCHOICE 263
109*cf5a6c84SAndroid Build Coastguard Worker#define T_COMMENT 264
110*cf5a6c84SAndroid Build Coastguard Worker#define T_CONFIG 265
111*cf5a6c84SAndroid Build Coastguard Worker#define T_MENUCONFIG 266
112*cf5a6c84SAndroid Build Coastguard Worker#define T_HELP 267
113*cf5a6c84SAndroid Build Coastguard Worker#define T_HELPTEXT 268
114*cf5a6c84SAndroid Build Coastguard Worker#define T_IF 269
115*cf5a6c84SAndroid Build Coastguard Worker#define T_ENDIF 270
116*cf5a6c84SAndroid Build Coastguard Worker#define T_DEPENDS 271
117*cf5a6c84SAndroid Build Coastguard Worker#define T_REQUIRES 272
118*cf5a6c84SAndroid Build Coastguard Worker#define T_OPTIONAL 273
119*cf5a6c84SAndroid Build Coastguard Worker#define T_PROMPT 274
120*cf5a6c84SAndroid Build Coastguard Worker#define T_TYPE 275
121*cf5a6c84SAndroid Build Coastguard Worker#define T_DEFAULT 276
122*cf5a6c84SAndroid Build Coastguard Worker#define T_SELECT 277
123*cf5a6c84SAndroid Build Coastguard Worker#define T_RANGE 278
124*cf5a6c84SAndroid Build Coastguard Worker#define T_OPTION 279
125*cf5a6c84SAndroid Build Coastguard Worker#define T_ON 280
126*cf5a6c84SAndroid Build Coastguard Worker#define T_WORD 281
127*cf5a6c84SAndroid Build Coastguard Worker#define T_WORD_QUOTE 282
128*cf5a6c84SAndroid Build Coastguard Worker#define T_UNEQUAL 283
129*cf5a6c84SAndroid Build Coastguard Worker#define T_CLOSE_PAREN 284
130*cf5a6c84SAndroid Build Coastguard Worker#define T_OPEN_PAREN 285
131*cf5a6c84SAndroid Build Coastguard Worker#define T_EOL 286
132*cf5a6c84SAndroid Build Coastguard Worker#define T_OR 287
133*cf5a6c84SAndroid Build Coastguard Worker#define T_AND 288
134*cf5a6c84SAndroid Build Coastguard Worker#define T_EQUAL 289
135*cf5a6c84SAndroid Build Coastguard Worker#define T_NOT 290
136*cf5a6c84SAndroid Build Coastguard Worker
137*cf5a6c84SAndroid Build Coastguard Worker
138*cf5a6c84SAndroid Build Coastguard Worker
139*cf5a6c84SAndroid Build Coastguard Worker
140*cf5a6c84SAndroid Build Coastguard Worker/* Copy the first part of user declarations.  */
141*cf5a6c84SAndroid Build Coastguard Worker
142*cf5a6c84SAndroid Build Coastguard Worker
143*cf5a6c84SAndroid Build Coastguard Worker/*
144*cf5a6c84SAndroid Build Coastguard Worker * Copyright (C) 2002 Roman Zippel <[email protected]>
145*cf5a6c84SAndroid Build Coastguard Worker * Released under the terms of the GNU GPL v2.0.
146*cf5a6c84SAndroid Build Coastguard Worker */
147*cf5a6c84SAndroid Build Coastguard Worker
148*cf5a6c84SAndroid Build Coastguard Worker#include <ctype.h>
149*cf5a6c84SAndroid Build Coastguard Worker#include <stdarg.h>
150*cf5a6c84SAndroid Build Coastguard Worker#include <stdio.h>
151*cf5a6c84SAndroid Build Coastguard Worker#include <stdlib.h>
152*cf5a6c84SAndroid Build Coastguard Worker#include <string.h>
153*cf5a6c84SAndroid Build Coastguard Worker#include <stdbool.h>
154*cf5a6c84SAndroid Build Coastguard Worker
155*cf5a6c84SAndroid Build Coastguard Worker#define LKC_DIRECT_LINK
156*cf5a6c84SAndroid Build Coastguard Worker#include "lkc.h"
157*cf5a6c84SAndroid Build Coastguard Worker
158*cf5a6c84SAndroid Build Coastguard Worker#include "zconf.hash.c"
159*cf5a6c84SAndroid Build Coastguard Worker
160*cf5a6c84SAndroid Build Coastguard Worker#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
161*cf5a6c84SAndroid Build Coastguard Worker
162*cf5a6c84SAndroid Build Coastguard Worker#define PRINTD		0x0001
163*cf5a6c84SAndroid Build Coastguard Worker#define DEBUG_PARSE	0x0002
164*cf5a6c84SAndroid Build Coastguard Worker
165*cf5a6c84SAndroid Build Coastguard Workerint cdebug = PRINTD;
166*cf5a6c84SAndroid Build Coastguard Worker
167*cf5a6c84SAndroid Build Coastguard Workerextern int zconflex(void);
168*cf5a6c84SAndroid Build Coastguard Workerstatic void zconfprint(const char *err, ...);
169*cf5a6c84SAndroid Build Coastguard Workerstatic void zconf_error(const char *err, ...);
170*cf5a6c84SAndroid Build Coastguard Workerstatic void zconferror(const char *err);
171*cf5a6c84SAndroid Build Coastguard Workerstatic bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
172*cf5a6c84SAndroid Build Coastguard Worker
173*cf5a6c84SAndroid Build Coastguard Workerstruct symbol *symbol_hash[257];
174*cf5a6c84SAndroid Build Coastguard Worker
175*cf5a6c84SAndroid Build Coastguard Workerstatic struct menu *current_menu, *current_entry;
176*cf5a6c84SAndroid Build Coastguard Worker
177*cf5a6c84SAndroid Build Coastguard Worker#define YYDEBUG 0
178*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG
179*cf5a6c84SAndroid Build Coastguard Worker#define YYERROR_VERBOSE
180*cf5a6c84SAndroid Build Coastguard Worker#endif
181*cf5a6c84SAndroid Build Coastguard Worker
182*cf5a6c84SAndroid Build Coastguard Worker
183*cf5a6c84SAndroid Build Coastguard Worker/* Enabling traces.  */
184*cf5a6c84SAndroid Build Coastguard Worker#ifndef YYDEBUG
185*cf5a6c84SAndroid Build Coastguard Worker# define YYDEBUG 0
186*cf5a6c84SAndroid Build Coastguard Worker#endif
187*cf5a6c84SAndroid Build Coastguard Worker
188*cf5a6c84SAndroid Build Coastguard Worker/* Enabling verbose error messages.  */
189*cf5a6c84SAndroid Build Coastguard Worker#ifdef YYERROR_VERBOSE
190*cf5a6c84SAndroid Build Coastguard Worker# undef YYERROR_VERBOSE
191*cf5a6c84SAndroid Build Coastguard Worker# define YYERROR_VERBOSE 1
192*cf5a6c84SAndroid Build Coastguard Worker#else
193*cf5a6c84SAndroid Build Coastguard Worker# define YYERROR_VERBOSE 0
194*cf5a6c84SAndroid Build Coastguard Worker#endif
195*cf5a6c84SAndroid Build Coastguard Worker
196*cf5a6c84SAndroid Build Coastguard Worker/* Enabling the token table.  */
197*cf5a6c84SAndroid Build Coastguard Worker#ifndef YYTOKEN_TABLE
198*cf5a6c84SAndroid Build Coastguard Worker# define YYTOKEN_TABLE 0
199*cf5a6c84SAndroid Build Coastguard Worker#endif
200*cf5a6c84SAndroid Build Coastguard Worker
201*cf5a6c84SAndroid Build Coastguard Worker#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
202*cf5a6c84SAndroid Build Coastguard Worker
203*cf5a6c84SAndroid Build Coastguard Workertypedef union YYSTYPE {
204*cf5a6c84SAndroid Build Coastguard Worker	char *string;
205*cf5a6c84SAndroid Build Coastguard Worker	struct file *file;
206*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *symbol;
207*cf5a6c84SAndroid Build Coastguard Worker	struct expr *expr;
208*cf5a6c84SAndroid Build Coastguard Worker	struct menu *menu;
209*cf5a6c84SAndroid Build Coastguard Worker	struct kconf_id *id;
210*cf5a6c84SAndroid Build Coastguard Worker} YYSTYPE;
211*cf5a6c84SAndroid Build Coastguard Worker/* Line 196 of yacc.c.  */
212*cf5a6c84SAndroid Build Coastguard Worker
213*cf5a6c84SAndroid Build Coastguard Worker# define yystype YYSTYPE /* obsolescent; will be withdrawn */
214*cf5a6c84SAndroid Build Coastguard Worker# define YYSTYPE_IS_DECLARED 1
215*cf5a6c84SAndroid Build Coastguard Worker# define YYSTYPE_IS_TRIVIAL 1
216*cf5a6c84SAndroid Build Coastguard Worker#endif
217*cf5a6c84SAndroid Build Coastguard Worker
218*cf5a6c84SAndroid Build Coastguard Worker
219*cf5a6c84SAndroid Build Coastguard Worker
220*cf5a6c84SAndroid Build Coastguard Worker/* Copy the second part of user declarations.  */
221*cf5a6c84SAndroid Build Coastguard Worker
222*cf5a6c84SAndroid Build Coastguard Worker
223*cf5a6c84SAndroid Build Coastguard Worker/* Line 219 of yacc.c.  */
224*cf5a6c84SAndroid Build Coastguard Worker
225*cf5a6c84SAndroid Build Coastguard Worker
226*cf5a6c84SAndroid Build Coastguard Worker#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
227*cf5a6c84SAndroid Build Coastguard Worker# define YYSIZE_T __SIZE_TYPE__
228*cf5a6c84SAndroid Build Coastguard Worker#endif
229*cf5a6c84SAndroid Build Coastguard Worker#if ! defined (YYSIZE_T) && defined (size_t)
230*cf5a6c84SAndroid Build Coastguard Worker# define YYSIZE_T size_t
231*cf5a6c84SAndroid Build Coastguard Worker#endif
232*cf5a6c84SAndroid Build Coastguard Worker#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
233*cf5a6c84SAndroid Build Coastguard Worker# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
234*cf5a6c84SAndroid Build Coastguard Worker# define YYSIZE_T size_t
235*cf5a6c84SAndroid Build Coastguard Worker#endif
236*cf5a6c84SAndroid Build Coastguard Worker#if ! defined (YYSIZE_T)
237*cf5a6c84SAndroid Build Coastguard Worker# define YYSIZE_T unsigned int
238*cf5a6c84SAndroid Build Coastguard Worker#endif
239*cf5a6c84SAndroid Build Coastguard Worker
240*cf5a6c84SAndroid Build Coastguard Worker#ifndef YY_
241*cf5a6c84SAndroid Build Coastguard Worker# if YYENABLE_NLS
242*cf5a6c84SAndroid Build Coastguard Worker#  if ENABLE_NLS
243*cf5a6c84SAndroid Build Coastguard Worker#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
244*cf5a6c84SAndroid Build Coastguard Worker#   define YY_(msgid) dgettext ("bison-runtime", msgid)
245*cf5a6c84SAndroid Build Coastguard Worker#  endif
246*cf5a6c84SAndroid Build Coastguard Worker# endif
247*cf5a6c84SAndroid Build Coastguard Worker# ifndef YY_
248*cf5a6c84SAndroid Build Coastguard Worker#  define YY_(msgid) msgid
249*cf5a6c84SAndroid Build Coastguard Worker# endif
250*cf5a6c84SAndroid Build Coastguard Worker#endif
251*cf5a6c84SAndroid Build Coastguard Worker
252*cf5a6c84SAndroid Build Coastguard Worker#if ! defined (yyoverflow) || YYERROR_VERBOSE
253*cf5a6c84SAndroid Build Coastguard Worker
254*cf5a6c84SAndroid Build Coastguard Worker/* The parser invokes alloca or malloc; define the necessary symbols.  */
255*cf5a6c84SAndroid Build Coastguard Worker
256*cf5a6c84SAndroid Build Coastguard Worker# ifdef YYSTACK_USE_ALLOCA
257*cf5a6c84SAndroid Build Coastguard Worker#  if YYSTACK_USE_ALLOCA
258*cf5a6c84SAndroid Build Coastguard Worker#   ifdef __GNUC__
259*cf5a6c84SAndroid Build Coastguard Worker#    define YYSTACK_ALLOC __builtin_alloca
260*cf5a6c84SAndroid Build Coastguard Worker#   else
261*cf5a6c84SAndroid Build Coastguard Worker#    define YYSTACK_ALLOC alloca
262*cf5a6c84SAndroid Build Coastguard Worker#    if defined (__STDC__) || defined (__cplusplus)
263*cf5a6c84SAndroid Build Coastguard Worker#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
264*cf5a6c84SAndroid Build Coastguard Worker#     define YYINCLUDED_STDLIB_H
265*cf5a6c84SAndroid Build Coastguard Worker#    endif
266*cf5a6c84SAndroid Build Coastguard Worker#   endif
267*cf5a6c84SAndroid Build Coastguard Worker#  endif
268*cf5a6c84SAndroid Build Coastguard Worker# endif
269*cf5a6c84SAndroid Build Coastguard Worker
270*cf5a6c84SAndroid Build Coastguard Worker# ifdef YYSTACK_ALLOC
271*cf5a6c84SAndroid Build Coastguard Worker   /* Pacify GCC's `empty if-body' warning. */
272*cf5a6c84SAndroid Build Coastguard Worker#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
273*cf5a6c84SAndroid Build Coastguard Worker#  ifndef YYSTACK_ALLOC_MAXIMUM
274*cf5a6c84SAndroid Build Coastguard Worker    /* The OS might guarantee only one guard page at the bottom of the stack,
275*cf5a6c84SAndroid Build Coastguard Worker       and a page size can be as small as 4096 bytes.  So we cannot safely
276*cf5a6c84SAndroid Build Coastguard Worker       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
277*cf5a6c84SAndroid Build Coastguard Worker       to allow for a few compiler-allocated temporary stack slots.  */
278*cf5a6c84SAndroid Build Coastguard Worker#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
279*cf5a6c84SAndroid Build Coastguard Worker#  endif
280*cf5a6c84SAndroid Build Coastguard Worker# else
281*cf5a6c84SAndroid Build Coastguard Worker#  define YYSTACK_ALLOC YYMALLOC
282*cf5a6c84SAndroid Build Coastguard Worker#  define YYSTACK_FREE YYFREE
283*cf5a6c84SAndroid Build Coastguard Worker#  ifndef YYSTACK_ALLOC_MAXIMUM
284*cf5a6c84SAndroid Build Coastguard Worker#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
285*cf5a6c84SAndroid Build Coastguard Worker#  endif
286*cf5a6c84SAndroid Build Coastguard Worker#  ifdef __cplusplus
287*cf5a6c84SAndroid Build Coastguard Workerextern "C" {
288*cf5a6c84SAndroid Build Coastguard Worker#  endif
289*cf5a6c84SAndroid Build Coastguard Worker#  ifndef YYMALLOC
290*cf5a6c84SAndroid Build Coastguard Worker#   define YYMALLOC malloc
291*cf5a6c84SAndroid Build Coastguard Worker#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
292*cf5a6c84SAndroid Build Coastguard Worker	&& (defined (__STDC__) || defined (__cplusplus)))
293*cf5a6c84SAndroid Build Coastguard Workervoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
294*cf5a6c84SAndroid Build Coastguard Worker#   endif
295*cf5a6c84SAndroid Build Coastguard Worker#  endif
296*cf5a6c84SAndroid Build Coastguard Worker#  ifndef YYFREE
297*cf5a6c84SAndroid Build Coastguard Worker#   define YYFREE free
298*cf5a6c84SAndroid Build Coastguard Worker#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
299*cf5a6c84SAndroid Build Coastguard Worker	&& (defined (__STDC__) || defined (__cplusplus)))
300*cf5a6c84SAndroid Build Coastguard Workervoid free (void *); /* INFRINGES ON USER NAME SPACE */
301*cf5a6c84SAndroid Build Coastguard Worker#   endif
302*cf5a6c84SAndroid Build Coastguard Worker#  endif
303*cf5a6c84SAndroid Build Coastguard Worker#  ifdef __cplusplus
304*cf5a6c84SAndroid Build Coastguard Worker}
305*cf5a6c84SAndroid Build Coastguard Worker#  endif
306*cf5a6c84SAndroid Build Coastguard Worker# endif
307*cf5a6c84SAndroid Build Coastguard Worker#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
308*cf5a6c84SAndroid Build Coastguard Worker
309*cf5a6c84SAndroid Build Coastguard Worker
310*cf5a6c84SAndroid Build Coastguard Worker#if (! defined (yyoverflow) \
311*cf5a6c84SAndroid Build Coastguard Worker     && (! defined (__cplusplus) \
312*cf5a6c84SAndroid Build Coastguard Worker	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
313*cf5a6c84SAndroid Build Coastguard Worker
314*cf5a6c84SAndroid Build Coastguard Worker/* A type that is properly aligned for any stack member.  */
315*cf5a6c84SAndroid Build Coastguard Workerunion yyalloc
316*cf5a6c84SAndroid Build Coastguard Worker{
317*cf5a6c84SAndroid Build Coastguard Worker  short int yyss;
318*cf5a6c84SAndroid Build Coastguard Worker  YYSTYPE yyvs;
319*cf5a6c84SAndroid Build Coastguard Worker  };
320*cf5a6c84SAndroid Build Coastguard Worker
321*cf5a6c84SAndroid Build Coastguard Worker/* The size of the maximum gap between one aligned stack and the next.  */
322*cf5a6c84SAndroid Build Coastguard Worker# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
323*cf5a6c84SAndroid Build Coastguard Worker
324*cf5a6c84SAndroid Build Coastguard Worker/* The size of an array large to enough to hold all stacks, each with
325*cf5a6c84SAndroid Build Coastguard Worker   N elements.  */
326*cf5a6c84SAndroid Build Coastguard Worker# define YYSTACK_BYTES(N) \
327*cf5a6c84SAndroid Build Coastguard Worker     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
328*cf5a6c84SAndroid Build Coastguard Worker      + YYSTACK_GAP_MAXIMUM)
329*cf5a6c84SAndroid Build Coastguard Worker
330*cf5a6c84SAndroid Build Coastguard Worker/* Copy COUNT objects from FROM to TO.  The source and destination do
331*cf5a6c84SAndroid Build Coastguard Worker   not overlap.  */
332*cf5a6c84SAndroid Build Coastguard Worker# ifndef YYCOPY
333*cf5a6c84SAndroid Build Coastguard Worker#  if defined (__GNUC__) && 1 < __GNUC__
334*cf5a6c84SAndroid Build Coastguard Worker#   define YYCOPY(To, From, Count) \
335*cf5a6c84SAndroid Build Coastguard Worker      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
336*cf5a6c84SAndroid Build Coastguard Worker#  else
337*cf5a6c84SAndroid Build Coastguard Worker#   define YYCOPY(To, From, Count)		\
338*cf5a6c84SAndroid Build Coastguard Worker      do					\
339*cf5a6c84SAndroid Build Coastguard Worker	{					\
340*cf5a6c84SAndroid Build Coastguard Worker	  YYSIZE_T yyi;				\
341*cf5a6c84SAndroid Build Coastguard Worker	  for (yyi = 0; yyi < (Count); yyi++)	\
342*cf5a6c84SAndroid Build Coastguard Worker	    (To)[yyi] = (From)[yyi];		\
343*cf5a6c84SAndroid Build Coastguard Worker	}					\
344*cf5a6c84SAndroid Build Coastguard Worker      while (0)
345*cf5a6c84SAndroid Build Coastguard Worker#  endif
346*cf5a6c84SAndroid Build Coastguard Worker# endif
347*cf5a6c84SAndroid Build Coastguard Worker
348*cf5a6c84SAndroid Build Coastguard Worker/* Relocate STACK from its old location to the new one.  The
349*cf5a6c84SAndroid Build Coastguard Worker   local variables YYSIZE and YYSTACKSIZE give the old and new number of
350*cf5a6c84SAndroid Build Coastguard Worker   elements in the stack, and YYPTR gives the new location of the
351*cf5a6c84SAndroid Build Coastguard Worker   stack.  Advance YYPTR to a properly aligned location for the next
352*cf5a6c84SAndroid Build Coastguard Worker   stack.  */
353*cf5a6c84SAndroid Build Coastguard Worker# define YYSTACK_RELOCATE(Stack)					\
354*cf5a6c84SAndroid Build Coastguard Worker    do									\
355*cf5a6c84SAndroid Build Coastguard Worker      {									\
356*cf5a6c84SAndroid Build Coastguard Worker	YYSIZE_T yynewbytes;						\
357*cf5a6c84SAndroid Build Coastguard Worker	YYCOPY (&yyptr->Stack, Stack, yysize);				\
358*cf5a6c84SAndroid Build Coastguard Worker	Stack = &yyptr->Stack;						\
359*cf5a6c84SAndroid Build Coastguard Worker	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
360*cf5a6c84SAndroid Build Coastguard Worker	yyptr += yynewbytes / sizeof (*yyptr);				\
361*cf5a6c84SAndroid Build Coastguard Worker      }									\
362*cf5a6c84SAndroid Build Coastguard Worker    while (0)
363*cf5a6c84SAndroid Build Coastguard Worker
364*cf5a6c84SAndroid Build Coastguard Worker#endif
365*cf5a6c84SAndroid Build Coastguard Worker
366*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
367*cf5a6c84SAndroid Build Coastguard Worker   typedef signed char yysigned_char;
368*cf5a6c84SAndroid Build Coastguard Worker#else
369*cf5a6c84SAndroid Build Coastguard Worker   typedef short int yysigned_char;
370*cf5a6c84SAndroid Build Coastguard Worker#endif
371*cf5a6c84SAndroid Build Coastguard Worker
372*cf5a6c84SAndroid Build Coastguard Worker/* YYFINAL -- State number of the termination state. */
373*cf5a6c84SAndroid Build Coastguard Worker#define YYFINAL  3
374*cf5a6c84SAndroid Build Coastguard Worker/* YYLAST -- Last index in YYTABLE.  */
375*cf5a6c84SAndroid Build Coastguard Worker#define YYLAST   275
376*cf5a6c84SAndroid Build Coastguard Worker
377*cf5a6c84SAndroid Build Coastguard Worker/* YYNTOKENS -- Number of terminals. */
378*cf5a6c84SAndroid Build Coastguard Worker#define YYNTOKENS  36
379*cf5a6c84SAndroid Build Coastguard Worker/* YYNNTS -- Number of nonterminals. */
380*cf5a6c84SAndroid Build Coastguard Worker#define YYNNTS  45
381*cf5a6c84SAndroid Build Coastguard Worker/* YYNRULES -- Number of rules. */
382*cf5a6c84SAndroid Build Coastguard Worker#define YYNRULES  110
383*cf5a6c84SAndroid Build Coastguard Worker/* YYNRULES -- Number of states. */
384*cf5a6c84SAndroid Build Coastguard Worker#define YYNSTATES  183
385*cf5a6c84SAndroid Build Coastguard Worker
386*cf5a6c84SAndroid Build Coastguard Worker/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
387*cf5a6c84SAndroid Build Coastguard Worker#define YYUNDEFTOK  2
388*cf5a6c84SAndroid Build Coastguard Worker#define YYMAXUTOK   290
389*cf5a6c84SAndroid Build Coastguard Worker
390*cf5a6c84SAndroid Build Coastguard Worker#define YYTRANSLATE(YYX)						\
391*cf5a6c84SAndroid Build Coastguard Worker  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
392*cf5a6c84SAndroid Build Coastguard Worker
393*cf5a6c84SAndroid Build Coastguard Worker/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
394*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned char yytranslate[] =
395*cf5a6c84SAndroid Build Coastguard Worker{
396*cf5a6c84SAndroid Build Coastguard Worker       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
397*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
398*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
399*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
400*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
401*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
402*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
403*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
404*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
405*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
406*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
407*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
408*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
409*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
410*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
411*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
412*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
413*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
414*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
415*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
416*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
417*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
418*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
419*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
420*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
421*cf5a6c84SAndroid Build Coastguard Worker       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
422*cf5a6c84SAndroid Build Coastguard Worker       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
423*cf5a6c84SAndroid Build Coastguard Worker      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
424*cf5a6c84SAndroid Build Coastguard Worker      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
425*cf5a6c84SAndroid Build Coastguard Worker      35
426*cf5a6c84SAndroid Build Coastguard Worker};
427*cf5a6c84SAndroid Build Coastguard Worker
428*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG
429*cf5a6c84SAndroid Build Coastguard Worker/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
430*cf5a6c84SAndroid Build Coastguard Worker   YYRHS.  */
431*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned short int yyprhs[] =
432*cf5a6c84SAndroid Build Coastguard Worker{
433*cf5a6c84SAndroid Build Coastguard Worker       0,     0,     3,     5,     6,     9,    12,    15,    20,    23,
434*cf5a6c84SAndroid Build Coastguard Worker      28,    33,    37,    39,    41,    43,    45,    47,    49,    51,
435*cf5a6c84SAndroid Build Coastguard Worker      53,    55,    57,    59,    61,    63,    67,    70,    74,    77,
436*cf5a6c84SAndroid Build Coastguard Worker      81,    84,    85,    88,    91,    94,    97,   100,   103,   107,
437*cf5a6c84SAndroid Build Coastguard Worker     112,   117,   122,   128,   132,   133,   137,   138,   141,   144,
438*cf5a6c84SAndroid Build Coastguard Worker     147,   149,   153,   154,   157,   160,   163,   166,   169,   174,
439*cf5a6c84SAndroid Build Coastguard Worker     178,   181,   186,   187,   190,   194,   196,   200,   201,   204,
440*cf5a6c84SAndroid Build Coastguard Worker     207,   210,   214,   217,   219,   223,   224,   227,   230,   233,
441*cf5a6c84SAndroid Build Coastguard Worker     237,   241,   244,   247,   250,   251,   254,   257,   260,   265,
442*cf5a6c84SAndroid Build Coastguard Worker     269,   273,   274,   277,   279,   281,   284,   287,   290,   292,
443*cf5a6c84SAndroid Build Coastguard Worker     295,   296,   299,   301,   305,   309,   313,   316,   320,   324,
444*cf5a6c84SAndroid Build Coastguard Worker     326
445*cf5a6c84SAndroid Build Coastguard Worker};
446*cf5a6c84SAndroid Build Coastguard Worker
447*cf5a6c84SAndroid Build Coastguard Worker/* YYRHS -- A `-1'-separated list of the rules' RHS. */
448*cf5a6c84SAndroid Build Coastguard Workerstatic const yysigned_char yyrhs[] =
449*cf5a6c84SAndroid Build Coastguard Worker{
450*cf5a6c84SAndroid Build Coastguard Worker      37,     0,    -1,    38,    -1,    -1,    38,    40,    -1,    38,
451*cf5a6c84SAndroid Build Coastguard Worker      54,    -1,    38,    65,    -1,    38,     3,    75,    77,    -1,
452*cf5a6c84SAndroid Build Coastguard Worker      38,    76,    -1,    38,    26,     1,    31,    -1,    38,    39,
453*cf5a6c84SAndroid Build Coastguard Worker       1,    31,    -1,    38,     1,    31,    -1,    16,    -1,    19,
454*cf5a6c84SAndroid Build Coastguard Worker      -1,    20,    -1,    22,    -1,    18,    -1,    23,    -1,    21,
455*cf5a6c84SAndroid Build Coastguard Worker      -1,    31,    -1,    60,    -1,    69,    -1,    43,    -1,    45,
456*cf5a6c84SAndroid Build Coastguard Worker      -1,    67,    -1,    26,     1,    31,    -1,     1,    31,    -1,
457*cf5a6c84SAndroid Build Coastguard Worker      10,    26,    31,    -1,    42,    46,    -1,    11,    26,    31,
458*cf5a6c84SAndroid Build Coastguard Worker      -1,    44,    46,    -1,    -1,    46,    47,    -1,    46,    48,
459*cf5a6c84SAndroid Build Coastguard Worker      -1,    46,    73,    -1,    46,    71,    -1,    46,    41,    -1,
460*cf5a6c84SAndroid Build Coastguard Worker      46,    31,    -1,    20,    74,    31,    -1,    19,    75,    78,
461*cf5a6c84SAndroid Build Coastguard Worker      31,    -1,    21,    79,    78,    31,    -1,    22,    26,    78,
462*cf5a6c84SAndroid Build Coastguard Worker      31,    -1,    23,    80,    80,    78,    31,    -1,    24,    49,
463*cf5a6c84SAndroid Build Coastguard Worker      31,    -1,    -1,    49,    26,    50,    -1,    -1,    34,    75,
464*cf5a6c84SAndroid Build Coastguard Worker      -1,     7,    31,    -1,    51,    55,    -1,    76,    -1,    52,
465*cf5a6c84SAndroid Build Coastguard Worker      57,    53,    -1,    -1,    55,    56,    -1,    55,    73,    -1,
466*cf5a6c84SAndroid Build Coastguard Worker      55,    71,    -1,    55,    31,    -1,    55,    41,    -1,    19,
467*cf5a6c84SAndroid Build Coastguard Worker      75,    78,    31,    -1,    20,    74,    31,    -1,    18,    31,
468*cf5a6c84SAndroid Build Coastguard Worker      -1,    21,    26,    78,    31,    -1,    -1,    57,    40,    -1,
469*cf5a6c84SAndroid Build Coastguard Worker      14,    79,    77,    -1,    76,    -1,    58,    61,    59,    -1,
470*cf5a6c84SAndroid Build Coastguard Worker      -1,    61,    40,    -1,    61,    65,    -1,    61,    54,    -1,
471*cf5a6c84SAndroid Build Coastguard Worker       4,    75,    31,    -1,    62,    72,    -1,    76,    -1,    63,
472*cf5a6c84SAndroid Build Coastguard Worker      66,    64,    -1,    -1,    66,    40,    -1,    66,    65,    -1,
473*cf5a6c84SAndroid Build Coastguard Worker      66,    54,    -1,     6,    75,    31,    -1,     9,    75,    31,
474*cf5a6c84SAndroid Build Coastguard Worker      -1,    68,    72,    -1,    12,    31,    -1,    70,    13,    -1,
475*cf5a6c84SAndroid Build Coastguard Worker      -1,    72,    73,    -1,    72,    31,    -1,    72,    41,    -1,
476*cf5a6c84SAndroid Build Coastguard Worker      16,    25,    79,    31,    -1,    16,    79,    31,    -1,    17,
477*cf5a6c84SAndroid Build Coastguard Worker      79,    31,    -1,    -1,    75,    78,    -1,    26,    -1,    27,
478*cf5a6c84SAndroid Build Coastguard Worker      -1,     5,    31,    -1,     8,    31,    -1,    15,    31,    -1,
479*cf5a6c84SAndroid Build Coastguard Worker      31,    -1,    77,    31,    -1,    -1,    14,    79,    -1,    80,
480*cf5a6c84SAndroid Build Coastguard Worker      -1,    80,    34,    80,    -1,    80,    28,    80,    -1,    30,
481*cf5a6c84SAndroid Build Coastguard Worker      79,    29,    -1,    35,    79,    -1,    79,    32,    79,    -1,
482*cf5a6c84SAndroid Build Coastguard Worker      79,    33,    79,    -1,    26,    -1,    27,    -1
483*cf5a6c84SAndroid Build Coastguard Worker};
484*cf5a6c84SAndroid Build Coastguard Worker
485*cf5a6c84SAndroid Build Coastguard Worker/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
486*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned short int yyrline[] =
487*cf5a6c84SAndroid Build Coastguard Worker{
488*cf5a6c84SAndroid Build Coastguard Worker       0,   105,   105,   107,   109,   110,   111,   112,   113,   114,
489*cf5a6c84SAndroid Build Coastguard Worker     115,   119,   123,   123,   123,   123,   123,   123,   123,   127,
490*cf5a6c84SAndroid Build Coastguard Worker     128,   129,   130,   131,   132,   136,   137,   143,   151,   157,
491*cf5a6c84SAndroid Build Coastguard Worker     165,   175,   177,   178,   179,   180,   181,   182,   185,   193,
492*cf5a6c84SAndroid Build Coastguard Worker     199,   209,   215,   221,   224,   226,   237,   238,   243,   252,
493*cf5a6c84SAndroid Build Coastguard Worker     257,   265,   268,   270,   271,   272,   273,   274,   277,   283,
494*cf5a6c84SAndroid Build Coastguard Worker     294,   300,   310,   312,   317,   325,   333,   336,   338,   339,
495*cf5a6c84SAndroid Build Coastguard Worker     340,   345,   352,   357,   365,   368,   370,   371,   372,   375,
496*cf5a6c84SAndroid Build Coastguard Worker     383,   390,   397,   403,   410,   412,   413,   414,   417,   422,
497*cf5a6c84SAndroid Build Coastguard Worker     427,   435,   437,   442,   443,   446,   447,   448,   452,   453,
498*cf5a6c84SAndroid Build Coastguard Worker     456,   457,   460,   461,   462,   463,   464,   465,   466,   469,
499*cf5a6c84SAndroid Build Coastguard Worker     470
500*cf5a6c84SAndroid Build Coastguard Worker};
501*cf5a6c84SAndroid Build Coastguard Worker#endif
502*cf5a6c84SAndroid Build Coastguard Worker
503*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
504*cf5a6c84SAndroid Build Coastguard Worker/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
505*cf5a6c84SAndroid Build Coastguard Worker   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
506*cf5a6c84SAndroid Build Coastguard Workerstatic const char *const yytname[] =
507*cf5a6c84SAndroid Build Coastguard Worker{
508*cf5a6c84SAndroid Build Coastguard Worker  "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
509*cf5a6c84SAndroid Build Coastguard Worker  "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
510*cf5a6c84SAndroid Build Coastguard Worker  "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
511*cf5a6c84SAndroid Build Coastguard Worker  "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT",
512*cf5a6c84SAndroid Build Coastguard Worker  "T_SELECT", "T_RANGE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE",
513*cf5a6c84SAndroid Build Coastguard Worker  "T_UNEQUAL", "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND",
514*cf5a6c84SAndroid Build Coastguard Worker  "T_EQUAL", "T_NOT", "$accept", "input", "stmt_list", "option_name",
515*cf5a6c84SAndroid Build Coastguard Worker  "common_stmt", "option_error", "config_entry_start", "config_stmt",
516*cf5a6c84SAndroid Build Coastguard Worker  "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
517*cf5a6c84SAndroid Build Coastguard Worker  "config_option", "symbol_option", "symbol_option_list",
518*cf5a6c84SAndroid Build Coastguard Worker  "symbol_option_arg", "choice", "choice_entry", "choice_end",
519*cf5a6c84SAndroid Build Coastguard Worker  "choice_stmt", "choice_option_list", "choice_option", "choice_block",
520*cf5a6c84SAndroid Build Coastguard Worker  "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry",
521*cf5a6c84SAndroid Build Coastguard Worker  "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment",
522*cf5a6c84SAndroid Build Coastguard Worker  "comment_stmt", "help_start", "help", "depends_list", "depends",
523*cf5a6c84SAndroid Build Coastguard Worker  "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol", 0
524*cf5a6c84SAndroid Build Coastguard Worker};
525*cf5a6c84SAndroid Build Coastguard Worker#endif
526*cf5a6c84SAndroid Build Coastguard Worker
527*cf5a6c84SAndroid Build Coastguard Worker# ifdef YYPRINT
528*cf5a6c84SAndroid Build Coastguard Worker/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
529*cf5a6c84SAndroid Build Coastguard Worker   token YYLEX-NUM.  */
530*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned short int yytoknum[] =
531*cf5a6c84SAndroid Build Coastguard Worker{
532*cf5a6c84SAndroid Build Coastguard Worker       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
533*cf5a6c84SAndroid Build Coastguard Worker     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
534*cf5a6c84SAndroid Build Coastguard Worker     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
535*cf5a6c84SAndroid Build Coastguard Worker     285,   286,   287,   288,   289,   290
536*cf5a6c84SAndroid Build Coastguard Worker};
537*cf5a6c84SAndroid Build Coastguard Worker# endif
538*cf5a6c84SAndroid Build Coastguard Worker
539*cf5a6c84SAndroid Build Coastguard Worker/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
540*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned char yyr1[] =
541*cf5a6c84SAndroid Build Coastguard Worker{
542*cf5a6c84SAndroid Build Coastguard Worker       0,    36,    37,    38,    38,    38,    38,    38,    38,    38,
543*cf5a6c84SAndroid Build Coastguard Worker      38,    38,    39,    39,    39,    39,    39,    39,    39,    40,
544*cf5a6c84SAndroid Build Coastguard Worker      40,    40,    40,    40,    40,    41,    41,    42,    43,    44,
545*cf5a6c84SAndroid Build Coastguard Worker      45,    46,    46,    46,    46,    46,    46,    46,    47,    47,
546*cf5a6c84SAndroid Build Coastguard Worker      47,    47,    47,    48,    49,    49,    50,    50,    51,    52,
547*cf5a6c84SAndroid Build Coastguard Worker      53,    54,    55,    55,    55,    55,    55,    55,    56,    56,
548*cf5a6c84SAndroid Build Coastguard Worker      56,    56,    57,    57,    58,    59,    60,    61,    61,    61,
549*cf5a6c84SAndroid Build Coastguard Worker      61,    62,    63,    64,    65,    66,    66,    66,    66,    67,
550*cf5a6c84SAndroid Build Coastguard Worker      68,    69,    70,    71,    72,    72,    72,    72,    73,    73,
551*cf5a6c84SAndroid Build Coastguard Worker      73,    74,    74,    75,    75,    76,    76,    76,    77,    77,
552*cf5a6c84SAndroid Build Coastguard Worker      78,    78,    79,    79,    79,    79,    79,    79,    79,    80,
553*cf5a6c84SAndroid Build Coastguard Worker      80
554*cf5a6c84SAndroid Build Coastguard Worker};
555*cf5a6c84SAndroid Build Coastguard Worker
556*cf5a6c84SAndroid Build Coastguard Worker/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
557*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned char yyr2[] =
558*cf5a6c84SAndroid Build Coastguard Worker{
559*cf5a6c84SAndroid Build Coastguard Worker       0,     2,     1,     0,     2,     2,     2,     4,     2,     4,
560*cf5a6c84SAndroid Build Coastguard Worker       4,     3,     1,     1,     1,     1,     1,     1,     1,     1,
561*cf5a6c84SAndroid Build Coastguard Worker       1,     1,     1,     1,     1,     3,     2,     3,     2,     3,
562*cf5a6c84SAndroid Build Coastguard Worker       2,     0,     2,     2,     2,     2,     2,     2,     3,     4,
563*cf5a6c84SAndroid Build Coastguard Worker       4,     4,     5,     3,     0,     3,     0,     2,     2,     2,
564*cf5a6c84SAndroid Build Coastguard Worker       1,     3,     0,     2,     2,     2,     2,     2,     4,     3,
565*cf5a6c84SAndroid Build Coastguard Worker       2,     4,     0,     2,     3,     1,     3,     0,     2,     2,
566*cf5a6c84SAndroid Build Coastguard Worker       2,     3,     2,     1,     3,     0,     2,     2,     2,     3,
567*cf5a6c84SAndroid Build Coastguard Worker       3,     2,     2,     2,     0,     2,     2,     2,     4,     3,
568*cf5a6c84SAndroid Build Coastguard Worker       3,     0,     2,     1,     1,     2,     2,     2,     1,     2,
569*cf5a6c84SAndroid Build Coastguard Worker       0,     2,     1,     3,     3,     3,     2,     3,     3,     1,
570*cf5a6c84SAndroid Build Coastguard Worker       1
571*cf5a6c84SAndroid Build Coastguard Worker};
572*cf5a6c84SAndroid Build Coastguard Worker
573*cf5a6c84SAndroid Build Coastguard Worker/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
574*cf5a6c84SAndroid Build Coastguard Worker   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
575*cf5a6c84SAndroid Build Coastguard Worker   means the default is an error.  */
576*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned char yydefact[] =
577*cf5a6c84SAndroid Build Coastguard Worker{
578*cf5a6c84SAndroid Build Coastguard Worker       3,     0,     0,     1,     0,     0,     0,     0,     0,     0,
579*cf5a6c84SAndroid Build Coastguard Worker       0,     0,     0,     0,     0,     0,    12,    16,    13,    14,
580*cf5a6c84SAndroid Build Coastguard Worker      18,    15,    17,     0,    19,     0,     4,    31,    22,    31,
581*cf5a6c84SAndroid Build Coastguard Worker      23,    52,    62,     5,    67,    20,    84,    75,     6,    24,
582*cf5a6c84SAndroid Build Coastguard Worker      84,    21,     8,    11,    93,    94,     0,     0,    95,     0,
583*cf5a6c84SAndroid Build Coastguard Worker      48,    96,     0,     0,     0,   109,   110,     0,     0,     0,
584*cf5a6c84SAndroid Build Coastguard Worker     102,    97,     0,     0,     0,     0,     0,     0,     0,     0,
585*cf5a6c84SAndroid Build Coastguard Worker       0,     0,    98,     7,    71,    79,    80,    27,    29,     0,
586*cf5a6c84SAndroid Build Coastguard Worker     106,     0,     0,    64,     0,     0,     9,    10,     0,     0,
587*cf5a6c84SAndroid Build Coastguard Worker       0,     0,     0,    91,     0,     0,     0,    44,     0,    37,
588*cf5a6c84SAndroid Build Coastguard Worker      36,    32,    33,     0,    35,    34,     0,     0,    91,     0,
589*cf5a6c84SAndroid Build Coastguard Worker      56,    57,    53,    55,    54,    63,    51,    50,    68,    70,
590*cf5a6c84SAndroid Build Coastguard Worker      66,    69,    65,    86,    87,    85,    76,    78,    74,    77,
591*cf5a6c84SAndroid Build Coastguard Worker      73,    99,   105,   107,   108,   104,   103,    26,    82,     0,
592*cf5a6c84SAndroid Build Coastguard Worker       0,     0,   100,     0,   100,   100,   100,     0,     0,     0,
593*cf5a6c84SAndroid Build Coastguard Worker      83,    60,   100,     0,   100,     0,    89,    90,     0,     0,
594*cf5a6c84SAndroid Build Coastguard Worker      38,    92,     0,     0,   100,    46,    43,    25,     0,    59,
595*cf5a6c84SAndroid Build Coastguard Worker       0,    88,   101,    39,    40,    41,     0,     0,    45,    58,
596*cf5a6c84SAndroid Build Coastguard Worker      61,    42,    47
597*cf5a6c84SAndroid Build Coastguard Worker};
598*cf5a6c84SAndroid Build Coastguard Worker
599*cf5a6c84SAndroid Build Coastguard Worker/* YYDEFGOTO[NTERM-NUM]. */
600*cf5a6c84SAndroid Build Coastguard Workerstatic const short int yydefgoto[] =
601*cf5a6c84SAndroid Build Coastguard Worker{
602*cf5a6c84SAndroid Build Coastguard Worker      -1,     1,     2,    25,    26,   100,    27,    28,    29,    30,
603*cf5a6c84SAndroid Build Coastguard Worker      64,   101,   102,   148,   178,    31,    32,   116,    33,    66,
604*cf5a6c84SAndroid Build Coastguard Worker     112,    67,    34,   120,    35,    68,    36,    37,   128,    38,
605*cf5a6c84SAndroid Build Coastguard Worker      70,    39,    40,    41,   103,   104,    69,   105,   143,   144,
606*cf5a6c84SAndroid Build Coastguard Worker      42,    73,   159,    59,    60
607*cf5a6c84SAndroid Build Coastguard Worker};
608*cf5a6c84SAndroid Build Coastguard Worker
609*cf5a6c84SAndroid Build Coastguard Worker/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
610*cf5a6c84SAndroid Build Coastguard Worker   STATE-NUM.  */
611*cf5a6c84SAndroid Build Coastguard Worker#define YYPACT_NINF -135
612*cf5a6c84SAndroid Build Coastguard Workerstatic const short int yypact[] =
613*cf5a6c84SAndroid Build Coastguard Worker{
614*cf5a6c84SAndroid Build Coastguard Worker    -135,     2,   170,  -135,   -14,    56,    56,    -8,    56,    24,
615*cf5a6c84SAndroid Build Coastguard Worker      67,    56,     7,    14,    62,    97,  -135,  -135,  -135,  -135,
616*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,   156,  -135,   166,  -135,  -135,  -135,  -135,
617*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,
618*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,  -135,  -135,   138,   151,  -135,   152,
619*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,   163,   167,   176,  -135,  -135,    62,    62,   185,
620*cf5a6c84SAndroid Build Coastguard Worker     -19,  -135,   188,   190,    42,   103,   194,    85,    70,   222,
621*cf5a6c84SAndroid Build Coastguard Worker      70,   132,  -135,   191,  -135,  -135,  -135,  -135,  -135,   127,
622*cf5a6c84SAndroid Build Coastguard Worker    -135,    62,    62,   191,   104,   104,  -135,  -135,   193,   203,
623*cf5a6c84SAndroid Build Coastguard Worker       9,    62,    56,    56,    62,   161,   104,  -135,   196,  -135,
624*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,   233,  -135,  -135,   204,    56,    56,   221,
625*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,
626*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,
627*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,   219,  -135,  -135,  -135,  -135,  -135,    62,
628*cf5a6c84SAndroid Build Coastguard Worker     209,   212,   240,   224,   240,    -1,   240,   104,    41,   225,
629*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,   240,   226,   240,   218,  -135,  -135,    62,   227,
630*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,   228,   229,   240,   230,  -135,  -135,   231,  -135,
631*cf5a6c84SAndroid Build Coastguard Worker     232,  -135,   112,  -135,  -135,  -135,   234,    56,  -135,  -135,
632*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135
633*cf5a6c84SAndroid Build Coastguard Worker};
634*cf5a6c84SAndroid Build Coastguard Worker
635*cf5a6c84SAndroid Build Coastguard Worker/* YYPGOTO[NTERM-NUM].  */
636*cf5a6c84SAndroid Build Coastguard Workerstatic const short int yypgoto[] =
637*cf5a6c84SAndroid Build Coastguard Worker{
638*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,    94,   -45,  -135,  -135,  -135,  -135,
639*cf5a6c84SAndroid Build Coastguard Worker     237,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   -54,  -135,
640*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,     1,
641*cf5a6c84SAndroid Build Coastguard Worker    -135,  -135,  -135,  -135,  -135,   195,   235,   -44,   159,    -5,
642*cf5a6c84SAndroid Build Coastguard Worker      98,   210,  -134,   -53,   -77
643*cf5a6c84SAndroid Build Coastguard Worker};
644*cf5a6c84SAndroid Build Coastguard Worker
645*cf5a6c84SAndroid Build Coastguard Worker/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
646*cf5a6c84SAndroid Build Coastguard Worker   positive, shift that token.  If negative, reduce the rule which
647*cf5a6c84SAndroid Build Coastguard Worker   number is the opposite.  If zero, do what YYDEFACT says.
648*cf5a6c84SAndroid Build Coastguard Worker   If YYTABLE_NINF, syntax error.  */
649*cf5a6c84SAndroid Build Coastguard Worker#define YYTABLE_NINF -82
650*cf5a6c84SAndroid Build Coastguard Workerstatic const short int yytable[] =
651*cf5a6c84SAndroid Build Coastguard Worker{
652*cf5a6c84SAndroid Build Coastguard Worker      46,    47,     3,    49,    79,    80,    52,   135,   136,    84,
653*cf5a6c84SAndroid Build Coastguard Worker     161,   162,   163,   158,   119,    85,   127,    43,   168,   147,
654*cf5a6c84SAndroid Build Coastguard Worker     170,   111,   114,    48,   124,   125,   124,   125,   133,   134,
655*cf5a6c84SAndroid Build Coastguard Worker     176,    81,    82,    53,   139,    55,    56,   140,   141,    57,
656*cf5a6c84SAndroid Build Coastguard Worker      54,   145,   -28,    88,    58,   -28,   -28,   -28,   -28,   -28,
657*cf5a6c84SAndroid Build Coastguard Worker     -28,   -28,   -28,   -28,    89,    50,   -28,   -28,    90,    91,
658*cf5a6c84SAndroid Build Coastguard Worker     -28,    92,    93,    94,    95,    96,    97,   165,    98,   121,
659*cf5a6c84SAndroid Build Coastguard Worker     164,   129,   166,    99,     6,     7,     8,     9,    10,    11,
660*cf5a6c84SAndroid Build Coastguard Worker      12,    13,    44,    45,    14,    15,   155,   142,    55,    56,
661*cf5a6c84SAndroid Build Coastguard Worker       7,     8,    57,    10,    11,    12,    13,    58,    51,    14,
662*cf5a6c84SAndroid Build Coastguard Worker      15,    24,   152,   -30,    88,   172,   -30,   -30,   -30,   -30,
663*cf5a6c84SAndroid Build Coastguard Worker     -30,   -30,   -30,   -30,   -30,    89,    24,   -30,   -30,    90,
664*cf5a6c84SAndroid Build Coastguard Worker      91,   -30,    92,    93,    94,    95,    96,    97,    61,    98,
665*cf5a6c84SAndroid Build Coastguard Worker      55,    56,   -81,    88,    99,   -81,   -81,   -81,   -81,   -81,
666*cf5a6c84SAndroid Build Coastguard Worker     -81,   -81,   -81,   -81,    81,    82,   -81,   -81,    90,    91,
667*cf5a6c84SAndroid Build Coastguard Worker     -81,   -81,   -81,   -81,   -81,   -81,   132,    62,    98,    81,
668*cf5a6c84SAndroid Build Coastguard Worker      82,   115,   118,   123,   126,   117,   122,    63,   130,    72,
669*cf5a6c84SAndroid Build Coastguard Worker      -2,     4,   182,     5,     6,     7,     8,     9,    10,    11,
670*cf5a6c84SAndroid Build Coastguard Worker      12,    13,    74,    75,    14,    15,    16,   146,    17,    18,
671*cf5a6c84SAndroid Build Coastguard Worker      19,    20,    21,    22,    76,    88,    23,   149,    77,   -49,
672*cf5a6c84SAndroid Build Coastguard Worker     -49,    24,   -49,   -49,   -49,   -49,    89,    78,   -49,   -49,
673*cf5a6c84SAndroid Build Coastguard Worker      90,    91,   106,   107,   108,   109,    72,    81,    82,    86,
674*cf5a6c84SAndroid Build Coastguard Worker      98,    87,   131,    88,   137,   110,   -72,   -72,   -72,   -72,
675*cf5a6c84SAndroid Build Coastguard Worker     -72,   -72,   -72,   -72,   138,   151,   -72,   -72,    90,    91,
676*cf5a6c84SAndroid Build Coastguard Worker     156,    81,    82,   157,    81,    82,   150,   154,    98,   171,
677*cf5a6c84SAndroid Build Coastguard Worker      81,    82,    82,   123,   158,   160,   167,   169,   173,   174,
678*cf5a6c84SAndroid Build Coastguard Worker     175,   113,   179,   180,   177,   181,    65,   153,     0,    83,
679*cf5a6c84SAndroid Build Coastguard Worker       0,     0,     0,     0,     0,    71
680*cf5a6c84SAndroid Build Coastguard Worker};
681*cf5a6c84SAndroid Build Coastguard Worker
682*cf5a6c84SAndroid Build Coastguard Workerstatic const short int yycheck[] =
683*cf5a6c84SAndroid Build Coastguard Worker{
684*cf5a6c84SAndroid Build Coastguard Worker       5,     6,     0,     8,    57,    58,    11,    84,    85,    28,
685*cf5a6c84SAndroid Build Coastguard Worker     144,   145,   146,    14,    68,    34,    70,    31,   152,    96,
686*cf5a6c84SAndroid Build Coastguard Worker     154,    66,    66,    31,    69,    69,    71,    71,    81,    82,
687*cf5a6c84SAndroid Build Coastguard Worker     164,    32,    33,    26,    25,    26,    27,    90,    91,    30,
688*cf5a6c84SAndroid Build Coastguard Worker      26,    94,     0,     1,    35,     3,     4,     5,     6,     7,
689*cf5a6c84SAndroid Build Coastguard Worker       8,     9,    10,    11,    12,    31,    14,    15,    16,    17,
690*cf5a6c84SAndroid Build Coastguard Worker      18,    19,    20,    21,    22,    23,    24,    26,    26,    68,
691*cf5a6c84SAndroid Build Coastguard Worker     147,    70,    31,    31,     4,     5,     6,     7,     8,     9,
692*cf5a6c84SAndroid Build Coastguard Worker      10,    11,    26,    27,    14,    15,   139,    92,    26,    27,
693*cf5a6c84SAndroid Build Coastguard Worker       5,     6,    30,     8,     9,    10,    11,    35,    31,    14,
694*cf5a6c84SAndroid Build Coastguard Worker      15,    31,   107,     0,     1,   158,     3,     4,     5,     6,
695*cf5a6c84SAndroid Build Coastguard Worker       7,     8,     9,    10,    11,    12,    31,    14,    15,    16,
696*cf5a6c84SAndroid Build Coastguard Worker      17,    18,    19,    20,    21,    22,    23,    24,    31,    26,
697*cf5a6c84SAndroid Build Coastguard Worker      26,    27,     0,     1,    31,     3,     4,     5,     6,     7,
698*cf5a6c84SAndroid Build Coastguard Worker       8,     9,    10,    11,    32,    33,    14,    15,    16,    17,
699*cf5a6c84SAndroid Build Coastguard Worker      18,    19,    20,    21,    22,    23,    29,     1,    26,    32,
700*cf5a6c84SAndroid Build Coastguard Worker      33,    67,    68,    31,    70,    67,    68,     1,    70,    31,
701*cf5a6c84SAndroid Build Coastguard Worker       0,     1,   177,     3,     4,     5,     6,     7,     8,     9,
702*cf5a6c84SAndroid Build Coastguard Worker      10,    11,    31,    31,    14,    15,    16,    26,    18,    19,
703*cf5a6c84SAndroid Build Coastguard Worker      20,    21,    22,    23,    31,     1,    26,     1,    31,     5,
704*cf5a6c84SAndroid Build Coastguard Worker       6,    31,     8,     9,    10,    11,    12,    31,    14,    15,
705*cf5a6c84SAndroid Build Coastguard Worker      16,    17,    18,    19,    20,    21,    31,    32,    33,    31,
706*cf5a6c84SAndroid Build Coastguard Worker      26,    31,    31,     1,    31,    31,     4,     5,     6,     7,
707*cf5a6c84SAndroid Build Coastguard Worker       8,     9,    10,    11,    31,    31,    14,    15,    16,    17,
708*cf5a6c84SAndroid Build Coastguard Worker      31,    32,    33,    31,    32,    33,    13,    26,    26,    31,
709*cf5a6c84SAndroid Build Coastguard Worker      32,    33,    33,    31,    14,    31,    31,    31,    31,    31,
710*cf5a6c84SAndroid Build Coastguard Worker      31,    66,    31,    31,    34,    31,    29,   108,    -1,    59,
711*cf5a6c84SAndroid Build Coastguard Worker      -1,    -1,    -1,    -1,    -1,    40
712*cf5a6c84SAndroid Build Coastguard Worker};
713*cf5a6c84SAndroid Build Coastguard Worker
714*cf5a6c84SAndroid Build Coastguard Worker/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
715*cf5a6c84SAndroid Build Coastguard Worker   symbol of state STATE-NUM.  */
716*cf5a6c84SAndroid Build Coastguard Workerstatic const unsigned char yystos[] =
717*cf5a6c84SAndroid Build Coastguard Worker{
718*cf5a6c84SAndroid Build Coastguard Worker       0,    37,    38,     0,     1,     3,     4,     5,     6,     7,
719*cf5a6c84SAndroid Build Coastguard Worker       8,     9,    10,    11,    14,    15,    16,    18,    19,    20,
720*cf5a6c84SAndroid Build Coastguard Worker      21,    22,    23,    26,    31,    39,    40,    42,    43,    44,
721*cf5a6c84SAndroid Build Coastguard Worker      45,    51,    52,    54,    58,    60,    62,    63,    65,    67,
722*cf5a6c84SAndroid Build Coastguard Worker      68,    69,    76,    31,    26,    27,    75,    75,    31,    75,
723*cf5a6c84SAndroid Build Coastguard Worker      31,    31,    75,    26,    26,    26,    27,    30,    35,    79,
724*cf5a6c84SAndroid Build Coastguard Worker      80,    31,     1,     1,    46,    46,    55,    57,    61,    72,
725*cf5a6c84SAndroid Build Coastguard Worker      66,    72,    31,    77,    31,    31,    31,    31,    31,    79,
726*cf5a6c84SAndroid Build Coastguard Worker      79,    32,    33,    77,    28,    34,    31,    31,     1,    12,
727*cf5a6c84SAndroid Build Coastguard Worker      16,    17,    19,    20,    21,    22,    23,    24,    26,    31,
728*cf5a6c84SAndroid Build Coastguard Worker      41,    47,    48,    70,    71,    73,    18,    19,    20,    21,
729*cf5a6c84SAndroid Build Coastguard Worker      31,    41,    56,    71,    73,    40,    53,    76,    40,    54,
730*cf5a6c84SAndroid Build Coastguard Worker      59,    65,    76,    31,    41,    73,    40,    54,    64,    65,
731*cf5a6c84SAndroid Build Coastguard Worker      76,    31,    29,    79,    79,    80,    80,    31,    31,    25,
732*cf5a6c84SAndroid Build Coastguard Worker      79,    79,    75,    74,    75,    79,    26,    80,    49,     1,
733*cf5a6c84SAndroid Build Coastguard Worker      13,    31,    75,    74,    26,    79,    31,    31,    14,    78,
734*cf5a6c84SAndroid Build Coastguard Worker      31,    78,    78,    78,    80,    26,    31,    31,    78,    31,
735*cf5a6c84SAndroid Build Coastguard Worker      78,    31,    79,    31,    31,    31,    78,    34,    50,    31,
736*cf5a6c84SAndroid Build Coastguard Worker      31,    31,    75
737*cf5a6c84SAndroid Build Coastguard Worker};
738*cf5a6c84SAndroid Build Coastguard Worker
739*cf5a6c84SAndroid Build Coastguard Worker#define yyerrok		(yyerrstatus = 0)
740*cf5a6c84SAndroid Build Coastguard Worker#define yyclearin	(yychar = YYEMPTY)
741*cf5a6c84SAndroid Build Coastguard Worker#define YYEMPTY		(-2)
742*cf5a6c84SAndroid Build Coastguard Worker#define YYEOF		0
743*cf5a6c84SAndroid Build Coastguard Worker
744*cf5a6c84SAndroid Build Coastguard Worker#define YYACCEPT	goto yyacceptlab
745*cf5a6c84SAndroid Build Coastguard Worker#define YYABORT		goto yyabortlab
746*cf5a6c84SAndroid Build Coastguard Worker#define YYERROR		goto yyerrorlab
747*cf5a6c84SAndroid Build Coastguard Worker
748*cf5a6c84SAndroid Build Coastguard Worker
749*cf5a6c84SAndroid Build Coastguard Worker/* Like YYERROR except do call yyerror.  This remains here temporarily
750*cf5a6c84SAndroid Build Coastguard Worker   to ease the transition to the new meaning of YYERROR, for GCC.
751*cf5a6c84SAndroid Build Coastguard Worker   Once GCC version 2 has supplanted version 1, this can go.  */
752*cf5a6c84SAndroid Build Coastguard Worker
753*cf5a6c84SAndroid Build Coastguard Worker#define YYFAIL		goto yyerrlab
754*cf5a6c84SAndroid Build Coastguard Worker
755*cf5a6c84SAndroid Build Coastguard Worker#define YYRECOVERING()  (!!yyerrstatus)
756*cf5a6c84SAndroid Build Coastguard Worker
757*cf5a6c84SAndroid Build Coastguard Worker#define YYBACKUP(Token, Value)					\
758*cf5a6c84SAndroid Build Coastguard Workerdo								\
759*cf5a6c84SAndroid Build Coastguard Worker  if (yychar == YYEMPTY && yylen == 1)				\
760*cf5a6c84SAndroid Build Coastguard Worker    {								\
761*cf5a6c84SAndroid Build Coastguard Worker      yychar = (Token);						\
762*cf5a6c84SAndroid Build Coastguard Worker      yylval = (Value);						\
763*cf5a6c84SAndroid Build Coastguard Worker      yytoken = YYTRANSLATE (yychar);				\
764*cf5a6c84SAndroid Build Coastguard Worker      YYPOPSTACK;						\
765*cf5a6c84SAndroid Build Coastguard Worker      goto yybackup;						\
766*cf5a6c84SAndroid Build Coastguard Worker    }								\
767*cf5a6c84SAndroid Build Coastguard Worker  else								\
768*cf5a6c84SAndroid Build Coastguard Worker    {								\
769*cf5a6c84SAndroid Build Coastguard Worker      yyerror (YY_("syntax error: cannot back up")); \
770*cf5a6c84SAndroid Build Coastguard Worker      YYERROR;							\
771*cf5a6c84SAndroid Build Coastguard Worker    }								\
772*cf5a6c84SAndroid Build Coastguard Workerwhile (0)
773*cf5a6c84SAndroid Build Coastguard Worker
774*cf5a6c84SAndroid Build Coastguard Worker
775*cf5a6c84SAndroid Build Coastguard Worker#define YYTERROR	1
776*cf5a6c84SAndroid Build Coastguard Worker#define YYERRCODE	256
777*cf5a6c84SAndroid Build Coastguard Worker
778*cf5a6c84SAndroid Build Coastguard Worker
779*cf5a6c84SAndroid Build Coastguard Worker/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
780*cf5a6c84SAndroid Build Coastguard Worker   If N is 0, then set CURRENT to the empty location which ends
781*cf5a6c84SAndroid Build Coastguard Worker   the previous symbol: RHS[0] (always defined).  */
782*cf5a6c84SAndroid Build Coastguard Worker
783*cf5a6c84SAndroid Build Coastguard Worker#define YYRHSLOC(Rhs, K) ((Rhs)[K])
784*cf5a6c84SAndroid Build Coastguard Worker#ifndef YYLLOC_DEFAULT
785*cf5a6c84SAndroid Build Coastguard Worker# define YYLLOC_DEFAULT(Current, Rhs, N)				\
786*cf5a6c84SAndroid Build Coastguard Worker    do									\
787*cf5a6c84SAndroid Build Coastguard Worker      if (N)								\
788*cf5a6c84SAndroid Build Coastguard Worker	{								\
789*cf5a6c84SAndroid Build Coastguard Worker	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
790*cf5a6c84SAndroid Build Coastguard Worker	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
791*cf5a6c84SAndroid Build Coastguard Worker	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
792*cf5a6c84SAndroid Build Coastguard Worker	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
793*cf5a6c84SAndroid Build Coastguard Worker	}								\
794*cf5a6c84SAndroid Build Coastguard Worker      else								\
795*cf5a6c84SAndroid Build Coastguard Worker	{								\
796*cf5a6c84SAndroid Build Coastguard Worker	  (Current).first_line   = (Current).last_line   =		\
797*cf5a6c84SAndroid Build Coastguard Worker	    YYRHSLOC (Rhs, 0).last_line;				\
798*cf5a6c84SAndroid Build Coastguard Worker	  (Current).first_column = (Current).last_column =		\
799*cf5a6c84SAndroid Build Coastguard Worker	    YYRHSLOC (Rhs, 0).last_column;				\
800*cf5a6c84SAndroid Build Coastguard Worker	}								\
801*cf5a6c84SAndroid Build Coastguard Worker    while (0)
802*cf5a6c84SAndroid Build Coastguard Worker#endif
803*cf5a6c84SAndroid Build Coastguard Worker
804*cf5a6c84SAndroid Build Coastguard Worker
805*cf5a6c84SAndroid Build Coastguard Worker/* YY_LOCATION_PRINT -- Print the location on the stream.
806*cf5a6c84SAndroid Build Coastguard Worker   This macro was not mandated originally: define only if we know
807*cf5a6c84SAndroid Build Coastguard Worker   we won't break user code: when these are the locations we know.  */
808*cf5a6c84SAndroid Build Coastguard Worker
809*cf5a6c84SAndroid Build Coastguard Worker#ifndef YY_LOCATION_PRINT
810*cf5a6c84SAndroid Build Coastguard Worker# if YYLTYPE_IS_TRIVIAL
811*cf5a6c84SAndroid Build Coastguard Worker#  define YY_LOCATION_PRINT(File, Loc)			\
812*cf5a6c84SAndroid Build Coastguard Worker     fprintf (File, "%d.%d-%d.%d",			\
813*cf5a6c84SAndroid Build Coastguard Worker              (Loc).first_line, (Loc).first_column,	\
814*cf5a6c84SAndroid Build Coastguard Worker              (Loc).last_line,  (Loc).last_column)
815*cf5a6c84SAndroid Build Coastguard Worker# else
816*cf5a6c84SAndroid Build Coastguard Worker#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
817*cf5a6c84SAndroid Build Coastguard Worker# endif
818*cf5a6c84SAndroid Build Coastguard Worker#endif
819*cf5a6c84SAndroid Build Coastguard Worker
820*cf5a6c84SAndroid Build Coastguard Worker
821*cf5a6c84SAndroid Build Coastguard Worker/* YYLEX -- calling `yylex' with the right arguments.  */
822*cf5a6c84SAndroid Build Coastguard Worker
823*cf5a6c84SAndroid Build Coastguard Worker#ifdef YYLEX_PARAM
824*cf5a6c84SAndroid Build Coastguard Worker# define YYLEX yylex (YYLEX_PARAM)
825*cf5a6c84SAndroid Build Coastguard Worker#else
826*cf5a6c84SAndroid Build Coastguard Worker# define YYLEX yylex ()
827*cf5a6c84SAndroid Build Coastguard Worker#endif
828*cf5a6c84SAndroid Build Coastguard Worker
829*cf5a6c84SAndroid Build Coastguard Worker/* Enable debugging if requested.  */
830*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG
831*cf5a6c84SAndroid Build Coastguard Worker
832*cf5a6c84SAndroid Build Coastguard Worker# ifndef YYFPRINTF
833*cf5a6c84SAndroid Build Coastguard Worker#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
834*cf5a6c84SAndroid Build Coastguard Worker#  define YYFPRINTF fprintf
835*cf5a6c84SAndroid Build Coastguard Worker# endif
836*cf5a6c84SAndroid Build Coastguard Worker
837*cf5a6c84SAndroid Build Coastguard Worker# define YYDPRINTF(Args)			\
838*cf5a6c84SAndroid Build Coastguard Workerdo {						\
839*cf5a6c84SAndroid Build Coastguard Worker  if (yydebug)					\
840*cf5a6c84SAndroid Build Coastguard Worker    YYFPRINTF Args;				\
841*cf5a6c84SAndroid Build Coastguard Worker} while (0)
842*cf5a6c84SAndroid Build Coastguard Worker
843*cf5a6c84SAndroid Build Coastguard Worker# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
844*cf5a6c84SAndroid Build Coastguard Workerdo {								\
845*cf5a6c84SAndroid Build Coastguard Worker  if (yydebug)							\
846*cf5a6c84SAndroid Build Coastguard Worker    {								\
847*cf5a6c84SAndroid Build Coastguard Worker      YYFPRINTF (stderr, "%s ", Title);				\
848*cf5a6c84SAndroid Build Coastguard Worker      yysymprint (stderr,					\
849*cf5a6c84SAndroid Build Coastguard Worker                  Type, Value);	\
850*cf5a6c84SAndroid Build Coastguard Worker      YYFPRINTF (stderr, "\n");					\
851*cf5a6c84SAndroid Build Coastguard Worker    }								\
852*cf5a6c84SAndroid Build Coastguard Worker} while (0)
853*cf5a6c84SAndroid Build Coastguard Worker
854*cf5a6c84SAndroid Build Coastguard Worker/*------------------------------------------------------------------.
855*cf5a6c84SAndroid Build Coastguard Worker| yy_stack_print -- Print the state stack from its BOTTOM up to its |
856*cf5a6c84SAndroid Build Coastguard Worker| TOP (included).                                                   |
857*cf5a6c84SAndroid Build Coastguard Worker`------------------------------------------------------------------*/
858*cf5a6c84SAndroid Build Coastguard Worker
859*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
860*cf5a6c84SAndroid Build Coastguard Workerstatic void
861*cf5a6c84SAndroid Build Coastguard Workeryy_stack_print (short int *bottom, short int *top)
862*cf5a6c84SAndroid Build Coastguard Worker#else
863*cf5a6c84SAndroid Build Coastguard Workerstatic void
864*cf5a6c84SAndroid Build Coastguard Workeryy_stack_print (bottom, top)
865*cf5a6c84SAndroid Build Coastguard Worker    short int *bottom;
866*cf5a6c84SAndroid Build Coastguard Worker    short int *top;
867*cf5a6c84SAndroid Build Coastguard Worker#endif
868*cf5a6c84SAndroid Build Coastguard Worker{
869*cf5a6c84SAndroid Build Coastguard Worker  YYFPRINTF (stderr, "Stack now");
870*cf5a6c84SAndroid Build Coastguard Worker  for (/* Nothing. */; bottom <= top; ++bottom)
871*cf5a6c84SAndroid Build Coastguard Worker    YYFPRINTF (stderr, " %d", *bottom);
872*cf5a6c84SAndroid Build Coastguard Worker  YYFPRINTF (stderr, "\n");
873*cf5a6c84SAndroid Build Coastguard Worker}
874*cf5a6c84SAndroid Build Coastguard Worker
875*cf5a6c84SAndroid Build Coastguard Worker# define YY_STACK_PRINT(Bottom, Top)				\
876*cf5a6c84SAndroid Build Coastguard Workerdo {								\
877*cf5a6c84SAndroid Build Coastguard Worker  if (yydebug)							\
878*cf5a6c84SAndroid Build Coastguard Worker    yy_stack_print ((Bottom), (Top));				\
879*cf5a6c84SAndroid Build Coastguard Worker} while (0)
880*cf5a6c84SAndroid Build Coastguard Worker
881*cf5a6c84SAndroid Build Coastguard Worker
882*cf5a6c84SAndroid Build Coastguard Worker/*------------------------------------------------.
883*cf5a6c84SAndroid Build Coastguard Worker| Report that the YYRULE is going to be reduced.  |
884*cf5a6c84SAndroid Build Coastguard Worker`------------------------------------------------*/
885*cf5a6c84SAndroid Build Coastguard Worker
886*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
887*cf5a6c84SAndroid Build Coastguard Workerstatic void
888*cf5a6c84SAndroid Build Coastguard Workeryy_reduce_print (int yyrule)
889*cf5a6c84SAndroid Build Coastguard Worker#else
890*cf5a6c84SAndroid Build Coastguard Workerstatic void
891*cf5a6c84SAndroid Build Coastguard Workeryy_reduce_print (yyrule)
892*cf5a6c84SAndroid Build Coastguard Worker    int yyrule;
893*cf5a6c84SAndroid Build Coastguard Worker#endif
894*cf5a6c84SAndroid Build Coastguard Worker{
895*cf5a6c84SAndroid Build Coastguard Worker  int yyi;
896*cf5a6c84SAndroid Build Coastguard Worker  unsigned long int yylno = yyrline[yyrule];
897*cf5a6c84SAndroid Build Coastguard Worker  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
898*cf5a6c84SAndroid Build Coastguard Worker             yyrule - 1, yylno);
899*cf5a6c84SAndroid Build Coastguard Worker  /* Print the symbols being reduced, and their result.  */
900*cf5a6c84SAndroid Build Coastguard Worker  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
901*cf5a6c84SAndroid Build Coastguard Worker    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
902*cf5a6c84SAndroid Build Coastguard Worker  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
903*cf5a6c84SAndroid Build Coastguard Worker}
904*cf5a6c84SAndroid Build Coastguard Worker
905*cf5a6c84SAndroid Build Coastguard Worker# define YY_REDUCE_PRINT(Rule)		\
906*cf5a6c84SAndroid Build Coastguard Workerdo {					\
907*cf5a6c84SAndroid Build Coastguard Worker  if (yydebug)				\
908*cf5a6c84SAndroid Build Coastguard Worker    yy_reduce_print (Rule);		\
909*cf5a6c84SAndroid Build Coastguard Worker} while (0)
910*cf5a6c84SAndroid Build Coastguard Worker
911*cf5a6c84SAndroid Build Coastguard Worker/* Nonzero means print parse trace.  It is left uninitialized so that
912*cf5a6c84SAndroid Build Coastguard Worker   multiple parsers can coexist.  */
913*cf5a6c84SAndroid Build Coastguard Workerint yydebug;
914*cf5a6c84SAndroid Build Coastguard Worker#else /* !YYDEBUG */
915*cf5a6c84SAndroid Build Coastguard Worker# define YYDPRINTF(Args)
916*cf5a6c84SAndroid Build Coastguard Worker# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
917*cf5a6c84SAndroid Build Coastguard Worker# define YY_STACK_PRINT(Bottom, Top)
918*cf5a6c84SAndroid Build Coastguard Worker# define YY_REDUCE_PRINT(Rule)
919*cf5a6c84SAndroid Build Coastguard Worker#endif /* !YYDEBUG */
920*cf5a6c84SAndroid Build Coastguard Worker
921*cf5a6c84SAndroid Build Coastguard Worker
922*cf5a6c84SAndroid Build Coastguard Worker/* YYINITDEPTH -- initial size of the parser's stacks.  */
923*cf5a6c84SAndroid Build Coastguard Worker#ifndef	YYINITDEPTH
924*cf5a6c84SAndroid Build Coastguard Worker# define YYINITDEPTH 200
925*cf5a6c84SAndroid Build Coastguard Worker#endif
926*cf5a6c84SAndroid Build Coastguard Worker
927*cf5a6c84SAndroid Build Coastguard Worker/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
928*cf5a6c84SAndroid Build Coastguard Worker   if the built-in stack extension method is used).
929*cf5a6c84SAndroid Build Coastguard Worker
930*cf5a6c84SAndroid Build Coastguard Worker   Do not make this value too large; the results are undefined if
931*cf5a6c84SAndroid Build Coastguard Worker   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
932*cf5a6c84SAndroid Build Coastguard Worker   evaluated with infinite-precision integer arithmetic.  */
933*cf5a6c84SAndroid Build Coastguard Worker
934*cf5a6c84SAndroid Build Coastguard Worker#ifndef YYMAXDEPTH
935*cf5a6c84SAndroid Build Coastguard Worker# define YYMAXDEPTH 10000
936*cf5a6c84SAndroid Build Coastguard Worker#endif
937*cf5a6c84SAndroid Build Coastguard Worker
938*cf5a6c84SAndroid Build Coastguard Worker
939*cf5a6c84SAndroid Build Coastguard Worker
940*cf5a6c84SAndroid Build Coastguard Worker#if YYERROR_VERBOSE
941*cf5a6c84SAndroid Build Coastguard Worker
942*cf5a6c84SAndroid Build Coastguard Worker# ifndef yystrlen
943*cf5a6c84SAndroid Build Coastguard Worker#  if defined (__GLIBC__) && defined (_STRING_H)
944*cf5a6c84SAndroid Build Coastguard Worker#   define yystrlen strlen
945*cf5a6c84SAndroid Build Coastguard Worker#  else
946*cf5a6c84SAndroid Build Coastguard Worker/* Return the length of YYSTR.  */
947*cf5a6c84SAndroid Build Coastguard Workerstatic YYSIZE_T
948*cf5a6c84SAndroid Build Coastguard Worker#   if defined (__STDC__) || defined (__cplusplus)
949*cf5a6c84SAndroid Build Coastguard Workeryystrlen (const char *yystr)
950*cf5a6c84SAndroid Build Coastguard Worker#   else
951*cf5a6c84SAndroid Build Coastguard Workeryystrlen (yystr)
952*cf5a6c84SAndroid Build Coastguard Worker     const char *yystr;
953*cf5a6c84SAndroid Build Coastguard Worker#   endif
954*cf5a6c84SAndroid Build Coastguard Worker{
955*cf5a6c84SAndroid Build Coastguard Worker  const char *yys = yystr;
956*cf5a6c84SAndroid Build Coastguard Worker
957*cf5a6c84SAndroid Build Coastguard Worker  while (*yys++ != '\0')
958*cf5a6c84SAndroid Build Coastguard Worker    continue;
959*cf5a6c84SAndroid Build Coastguard Worker
960*cf5a6c84SAndroid Build Coastguard Worker  return yys - yystr - 1;
961*cf5a6c84SAndroid Build Coastguard Worker}
962*cf5a6c84SAndroid Build Coastguard Worker#  endif
963*cf5a6c84SAndroid Build Coastguard Worker# endif
964*cf5a6c84SAndroid Build Coastguard Worker
965*cf5a6c84SAndroid Build Coastguard Worker# ifndef yystpcpy
966*cf5a6c84SAndroid Build Coastguard Worker#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
967*cf5a6c84SAndroid Build Coastguard Worker#   define yystpcpy stpcpy
968*cf5a6c84SAndroid Build Coastguard Worker#  else
969*cf5a6c84SAndroid Build Coastguard Worker/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
970*cf5a6c84SAndroid Build Coastguard Worker   YYDEST.  */
971*cf5a6c84SAndroid Build Coastguard Workerstatic char *
972*cf5a6c84SAndroid Build Coastguard Worker#   if defined (__STDC__) || defined (__cplusplus)
973*cf5a6c84SAndroid Build Coastguard Workeryystpcpy (char *yydest, const char *yysrc)
974*cf5a6c84SAndroid Build Coastguard Worker#   else
975*cf5a6c84SAndroid Build Coastguard Workeryystpcpy (yydest, yysrc)
976*cf5a6c84SAndroid Build Coastguard Worker     char *yydest;
977*cf5a6c84SAndroid Build Coastguard Worker     const char *yysrc;
978*cf5a6c84SAndroid Build Coastguard Worker#   endif
979*cf5a6c84SAndroid Build Coastguard Worker{
980*cf5a6c84SAndroid Build Coastguard Worker  char *yyd = yydest;
981*cf5a6c84SAndroid Build Coastguard Worker  const char *yys = yysrc;
982*cf5a6c84SAndroid Build Coastguard Worker
983*cf5a6c84SAndroid Build Coastguard Worker  while ((*yyd++ = *yys++) != '\0')
984*cf5a6c84SAndroid Build Coastguard Worker    continue;
985*cf5a6c84SAndroid Build Coastguard Worker
986*cf5a6c84SAndroid Build Coastguard Worker  return yyd - 1;
987*cf5a6c84SAndroid Build Coastguard Worker}
988*cf5a6c84SAndroid Build Coastguard Worker#  endif
989*cf5a6c84SAndroid Build Coastguard Worker# endif
990*cf5a6c84SAndroid Build Coastguard Worker
991*cf5a6c84SAndroid Build Coastguard Worker# ifndef yytnamerr
992*cf5a6c84SAndroid Build Coastguard Worker/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
993*cf5a6c84SAndroid Build Coastguard Worker   quotes and backslashes, so that it's suitable for yyerror.  The
994*cf5a6c84SAndroid Build Coastguard Worker   heuristic is that double-quoting is unnecessary unless the string
995*cf5a6c84SAndroid Build Coastguard Worker   contains an apostrophe, a comma, or backslash (other than
996*cf5a6c84SAndroid Build Coastguard Worker   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
997*cf5a6c84SAndroid Build Coastguard Worker   null, do not copy; instead, return the length of what the result
998*cf5a6c84SAndroid Build Coastguard Worker   would have been.  */
999*cf5a6c84SAndroid Build Coastguard Workerstatic YYSIZE_T
1000*cf5a6c84SAndroid Build Coastguard Workeryytnamerr (char *yyres, const char *yystr)
1001*cf5a6c84SAndroid Build Coastguard Worker{
1002*cf5a6c84SAndroid Build Coastguard Worker  if (*yystr == '"')
1003*cf5a6c84SAndroid Build Coastguard Worker    {
1004*cf5a6c84SAndroid Build Coastguard Worker      size_t yyn = 0;
1005*cf5a6c84SAndroid Build Coastguard Worker      char const *yyp = yystr;
1006*cf5a6c84SAndroid Build Coastguard Worker
1007*cf5a6c84SAndroid Build Coastguard Worker      for (;;)
1008*cf5a6c84SAndroid Build Coastguard Worker	switch (*++yyp)
1009*cf5a6c84SAndroid Build Coastguard Worker	  {
1010*cf5a6c84SAndroid Build Coastguard Worker	  case '\'':
1011*cf5a6c84SAndroid Build Coastguard Worker	  case ',':
1012*cf5a6c84SAndroid Build Coastguard Worker	    goto do_not_strip_quotes;
1013*cf5a6c84SAndroid Build Coastguard Worker
1014*cf5a6c84SAndroid Build Coastguard Worker	  case '\\':
1015*cf5a6c84SAndroid Build Coastguard Worker	    if (*++yyp != '\\')
1016*cf5a6c84SAndroid Build Coastguard Worker	      goto do_not_strip_quotes;
1017*cf5a6c84SAndroid Build Coastguard Worker	    /* Fall through.  */
1018*cf5a6c84SAndroid Build Coastguard Worker	  default:
1019*cf5a6c84SAndroid Build Coastguard Worker	    if (yyres)
1020*cf5a6c84SAndroid Build Coastguard Worker	      yyres[yyn] = *yyp;
1021*cf5a6c84SAndroid Build Coastguard Worker	    yyn++;
1022*cf5a6c84SAndroid Build Coastguard Worker	    break;
1023*cf5a6c84SAndroid Build Coastguard Worker
1024*cf5a6c84SAndroid Build Coastguard Worker	  case '"':
1025*cf5a6c84SAndroid Build Coastguard Worker	    if (yyres)
1026*cf5a6c84SAndroid Build Coastguard Worker	      yyres[yyn] = '\0';
1027*cf5a6c84SAndroid Build Coastguard Worker	    return yyn;
1028*cf5a6c84SAndroid Build Coastguard Worker	  }
1029*cf5a6c84SAndroid Build Coastguard Worker    do_not_strip_quotes: ;
1030*cf5a6c84SAndroid Build Coastguard Worker    }
1031*cf5a6c84SAndroid Build Coastguard Worker
1032*cf5a6c84SAndroid Build Coastguard Worker  if (! yyres)
1033*cf5a6c84SAndroid Build Coastguard Worker    return yystrlen (yystr);
1034*cf5a6c84SAndroid Build Coastguard Worker
1035*cf5a6c84SAndroid Build Coastguard Worker  return yystpcpy (yyres, yystr) - yyres;
1036*cf5a6c84SAndroid Build Coastguard Worker}
1037*cf5a6c84SAndroid Build Coastguard Worker# endif
1038*cf5a6c84SAndroid Build Coastguard Worker
1039*cf5a6c84SAndroid Build Coastguard Worker#endif /* YYERROR_VERBOSE */
1040*cf5a6c84SAndroid Build Coastguard Worker
1041*cf5a6c84SAndroid Build Coastguard Worker
1042*cf5a6c84SAndroid Build Coastguard Worker
1043*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG
1044*cf5a6c84SAndroid Build Coastguard Worker/*--------------------------------.
1045*cf5a6c84SAndroid Build Coastguard Worker| Print this symbol on YYOUTPUT.  |
1046*cf5a6c84SAndroid Build Coastguard Worker`--------------------------------*/
1047*cf5a6c84SAndroid Build Coastguard Worker
1048*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
1049*cf5a6c84SAndroid Build Coastguard Workerstatic void
1050*cf5a6c84SAndroid Build Coastguard Workeryysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1051*cf5a6c84SAndroid Build Coastguard Worker#else
1052*cf5a6c84SAndroid Build Coastguard Workerstatic void
1053*cf5a6c84SAndroid Build Coastguard Workeryysymprint (yyoutput, yytype, yyvaluep)
1054*cf5a6c84SAndroid Build Coastguard Worker    FILE *yyoutput;
1055*cf5a6c84SAndroid Build Coastguard Worker    int yytype;
1056*cf5a6c84SAndroid Build Coastguard Worker    YYSTYPE *yyvaluep;
1057*cf5a6c84SAndroid Build Coastguard Worker#endif
1058*cf5a6c84SAndroid Build Coastguard Worker{
1059*cf5a6c84SAndroid Build Coastguard Worker  /* Pacify ``unused variable'' warnings.  */
1060*cf5a6c84SAndroid Build Coastguard Worker  (void) yyvaluep;
1061*cf5a6c84SAndroid Build Coastguard Worker
1062*cf5a6c84SAndroid Build Coastguard Worker  if (yytype < YYNTOKENS)
1063*cf5a6c84SAndroid Build Coastguard Worker    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1064*cf5a6c84SAndroid Build Coastguard Worker  else
1065*cf5a6c84SAndroid Build Coastguard Worker    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1066*cf5a6c84SAndroid Build Coastguard Worker
1067*cf5a6c84SAndroid Build Coastguard Worker
1068*cf5a6c84SAndroid Build Coastguard Worker# ifdef YYPRINT
1069*cf5a6c84SAndroid Build Coastguard Worker  if (yytype < YYNTOKENS)
1070*cf5a6c84SAndroid Build Coastguard Worker    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1071*cf5a6c84SAndroid Build Coastguard Worker# endif
1072*cf5a6c84SAndroid Build Coastguard Worker  switch (yytype)
1073*cf5a6c84SAndroid Build Coastguard Worker    {
1074*cf5a6c84SAndroid Build Coastguard Worker      default:
1075*cf5a6c84SAndroid Build Coastguard Worker        break;
1076*cf5a6c84SAndroid Build Coastguard Worker    }
1077*cf5a6c84SAndroid Build Coastguard Worker  YYFPRINTF (yyoutput, ")");
1078*cf5a6c84SAndroid Build Coastguard Worker}
1079*cf5a6c84SAndroid Build Coastguard Worker
1080*cf5a6c84SAndroid Build Coastguard Worker#endif /* ! YYDEBUG */
1081*cf5a6c84SAndroid Build Coastguard Worker/*-----------------------------------------------.
1082*cf5a6c84SAndroid Build Coastguard Worker| Release the memory associated to this symbol.  |
1083*cf5a6c84SAndroid Build Coastguard Worker`-----------------------------------------------*/
1084*cf5a6c84SAndroid Build Coastguard Worker
1085*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
1086*cf5a6c84SAndroid Build Coastguard Workerstatic void
1087*cf5a6c84SAndroid Build Coastguard Workeryydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1088*cf5a6c84SAndroid Build Coastguard Worker#else
1089*cf5a6c84SAndroid Build Coastguard Workerstatic void
1090*cf5a6c84SAndroid Build Coastguard Workeryydestruct (yymsg, yytype, yyvaluep)
1091*cf5a6c84SAndroid Build Coastguard Worker    const char *yymsg;
1092*cf5a6c84SAndroid Build Coastguard Worker    int yytype;
1093*cf5a6c84SAndroid Build Coastguard Worker    YYSTYPE *yyvaluep;
1094*cf5a6c84SAndroid Build Coastguard Worker#endif
1095*cf5a6c84SAndroid Build Coastguard Worker{
1096*cf5a6c84SAndroid Build Coastguard Worker  /* Pacify ``unused variable'' warnings.  */
1097*cf5a6c84SAndroid Build Coastguard Worker  (void) yyvaluep;
1098*cf5a6c84SAndroid Build Coastguard Worker
1099*cf5a6c84SAndroid Build Coastguard Worker  if (!yymsg)
1100*cf5a6c84SAndroid Build Coastguard Worker    yymsg = "Deleting";
1101*cf5a6c84SAndroid Build Coastguard Worker  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1102*cf5a6c84SAndroid Build Coastguard Worker
1103*cf5a6c84SAndroid Build Coastguard Worker  switch (yytype)
1104*cf5a6c84SAndroid Build Coastguard Worker    {
1105*cf5a6c84SAndroid Build Coastguard Worker      case 52: /* "choice_entry" */
1106*cf5a6c84SAndroid Build Coastguard Worker
1107*cf5a6c84SAndroid Build Coastguard Worker        {
1108*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1109*cf5a6c84SAndroid Build Coastguard Worker		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1110*cf5a6c84SAndroid Build Coastguard Worker	if (current_menu == (yyvaluep->menu))
1111*cf5a6c84SAndroid Build Coastguard Worker		menu_end_menu();
1112*cf5a6c84SAndroid Build Coastguard Worker};
1113*cf5a6c84SAndroid Build Coastguard Worker
1114*cf5a6c84SAndroid Build Coastguard Worker        break;
1115*cf5a6c84SAndroid Build Coastguard Worker      case 58: /* "if_entry" */
1116*cf5a6c84SAndroid Build Coastguard Worker
1117*cf5a6c84SAndroid Build Coastguard Worker        {
1118*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1119*cf5a6c84SAndroid Build Coastguard Worker		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1120*cf5a6c84SAndroid Build Coastguard Worker	if (current_menu == (yyvaluep->menu))
1121*cf5a6c84SAndroid Build Coastguard Worker		menu_end_menu();
1122*cf5a6c84SAndroid Build Coastguard Worker};
1123*cf5a6c84SAndroid Build Coastguard Worker
1124*cf5a6c84SAndroid Build Coastguard Worker        break;
1125*cf5a6c84SAndroid Build Coastguard Worker      case 63: /* "menu_entry" */
1126*cf5a6c84SAndroid Build Coastguard Worker
1127*cf5a6c84SAndroid Build Coastguard Worker        {
1128*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1129*cf5a6c84SAndroid Build Coastguard Worker		(yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1130*cf5a6c84SAndroid Build Coastguard Worker	if (current_menu == (yyvaluep->menu))
1131*cf5a6c84SAndroid Build Coastguard Worker		menu_end_menu();
1132*cf5a6c84SAndroid Build Coastguard Worker};
1133*cf5a6c84SAndroid Build Coastguard Worker
1134*cf5a6c84SAndroid Build Coastguard Worker        break;
1135*cf5a6c84SAndroid Build Coastguard Worker
1136*cf5a6c84SAndroid Build Coastguard Worker      default:
1137*cf5a6c84SAndroid Build Coastguard Worker        break;
1138*cf5a6c84SAndroid Build Coastguard Worker    }
1139*cf5a6c84SAndroid Build Coastguard Worker}
1140*cf5a6c84SAndroid Build Coastguard Worker
1141*cf5a6c84SAndroid Build Coastguard Worker
1142*cf5a6c84SAndroid Build Coastguard Worker/* Prevent warnings from -Wmissing-prototypes.  */
1143*cf5a6c84SAndroid Build Coastguard Worker
1144*cf5a6c84SAndroid Build Coastguard Worker#ifdef YYPARSE_PARAM
1145*cf5a6c84SAndroid Build Coastguard Worker# if defined (__STDC__) || defined (__cplusplus)
1146*cf5a6c84SAndroid Build Coastguard Workerint yyparse (void *YYPARSE_PARAM);
1147*cf5a6c84SAndroid Build Coastguard Worker# else
1148*cf5a6c84SAndroid Build Coastguard Workerint yyparse ();
1149*cf5a6c84SAndroid Build Coastguard Worker# endif
1150*cf5a6c84SAndroid Build Coastguard Worker#else /* ! YYPARSE_PARAM */
1151*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
1152*cf5a6c84SAndroid Build Coastguard Workerint yyparse (void);
1153*cf5a6c84SAndroid Build Coastguard Worker#else
1154*cf5a6c84SAndroid Build Coastguard Workerint yyparse ();
1155*cf5a6c84SAndroid Build Coastguard Worker#endif
1156*cf5a6c84SAndroid Build Coastguard Worker#endif /* ! YYPARSE_PARAM */
1157*cf5a6c84SAndroid Build Coastguard Worker
1158*cf5a6c84SAndroid Build Coastguard Worker
1159*cf5a6c84SAndroid Build Coastguard Worker
1160*cf5a6c84SAndroid Build Coastguard Worker/* The look-ahead symbol.  */
1161*cf5a6c84SAndroid Build Coastguard Workerint yychar;
1162*cf5a6c84SAndroid Build Coastguard Worker
1163*cf5a6c84SAndroid Build Coastguard Worker/* The semantic value of the look-ahead symbol.  */
1164*cf5a6c84SAndroid Build Coastguard WorkerYYSTYPE yylval;
1165*cf5a6c84SAndroid Build Coastguard Worker
1166*cf5a6c84SAndroid Build Coastguard Worker/* Number of syntax errors so far.  */
1167*cf5a6c84SAndroid Build Coastguard Workerint yynerrs;
1168*cf5a6c84SAndroid Build Coastguard Worker
1169*cf5a6c84SAndroid Build Coastguard Worker
1170*cf5a6c84SAndroid Build Coastguard Worker
1171*cf5a6c84SAndroid Build Coastguard Worker/*----------.
1172*cf5a6c84SAndroid Build Coastguard Worker| yyparse.  |
1173*cf5a6c84SAndroid Build Coastguard Worker`----------*/
1174*cf5a6c84SAndroid Build Coastguard Worker
1175*cf5a6c84SAndroid Build Coastguard Worker#ifdef YYPARSE_PARAM
1176*cf5a6c84SAndroid Build Coastguard Worker# if defined (__STDC__) || defined (__cplusplus)
1177*cf5a6c84SAndroid Build Coastguard Workerint yyparse (void *YYPARSE_PARAM)
1178*cf5a6c84SAndroid Build Coastguard Worker# else
1179*cf5a6c84SAndroid Build Coastguard Workerint yyparse (YYPARSE_PARAM)
1180*cf5a6c84SAndroid Build Coastguard Worker  void *YYPARSE_PARAM;
1181*cf5a6c84SAndroid Build Coastguard Worker# endif
1182*cf5a6c84SAndroid Build Coastguard Worker#else /* ! YYPARSE_PARAM */
1183*cf5a6c84SAndroid Build Coastguard Worker#if defined (__STDC__) || defined (__cplusplus)
1184*cf5a6c84SAndroid Build Coastguard Workerint
1185*cf5a6c84SAndroid Build Coastguard Workeryyparse (void)
1186*cf5a6c84SAndroid Build Coastguard Worker#else
1187*cf5a6c84SAndroid Build Coastguard Workerint
1188*cf5a6c84SAndroid Build Coastguard Workeryyparse ()
1189*cf5a6c84SAndroid Build Coastguard Worker    ;
1190*cf5a6c84SAndroid Build Coastguard Worker#endif
1191*cf5a6c84SAndroid Build Coastguard Worker#endif
1192*cf5a6c84SAndroid Build Coastguard Worker{
1193*cf5a6c84SAndroid Build Coastguard Worker
1194*cf5a6c84SAndroid Build Coastguard Worker  int yystate;
1195*cf5a6c84SAndroid Build Coastguard Worker  int yyn;
1196*cf5a6c84SAndroid Build Coastguard Worker  int yyresult;
1197*cf5a6c84SAndroid Build Coastguard Worker  /* Number of tokens to shift before error messages enabled.  */
1198*cf5a6c84SAndroid Build Coastguard Worker  int yyerrstatus;
1199*cf5a6c84SAndroid Build Coastguard Worker  /* Look-ahead token as an internal (translated) token number.  */
1200*cf5a6c84SAndroid Build Coastguard Worker  int yytoken = 0;
1201*cf5a6c84SAndroid Build Coastguard Worker
1202*cf5a6c84SAndroid Build Coastguard Worker  /* Three stacks and their tools:
1203*cf5a6c84SAndroid Build Coastguard Worker     `yyss': related to states,
1204*cf5a6c84SAndroid Build Coastguard Worker     `yyvs': related to semantic values,
1205*cf5a6c84SAndroid Build Coastguard Worker     `yyls': related to locations.
1206*cf5a6c84SAndroid Build Coastguard Worker
1207*cf5a6c84SAndroid Build Coastguard Worker     Refer to the stacks thru separate pointers, to allow yyoverflow
1208*cf5a6c84SAndroid Build Coastguard Worker     to reallocate them elsewhere.  */
1209*cf5a6c84SAndroid Build Coastguard Worker
1210*cf5a6c84SAndroid Build Coastguard Worker  /* The state stack.  */
1211*cf5a6c84SAndroid Build Coastguard Worker  short int yyssa[YYINITDEPTH];
1212*cf5a6c84SAndroid Build Coastguard Worker  short int *yyss = yyssa;
1213*cf5a6c84SAndroid Build Coastguard Worker  short int *yyssp;
1214*cf5a6c84SAndroid Build Coastguard Worker
1215*cf5a6c84SAndroid Build Coastguard Worker  /* The semantic value stack.  */
1216*cf5a6c84SAndroid Build Coastguard Worker  YYSTYPE yyvsa[YYINITDEPTH];
1217*cf5a6c84SAndroid Build Coastguard Worker  YYSTYPE *yyvs = yyvsa;
1218*cf5a6c84SAndroid Build Coastguard Worker  YYSTYPE *yyvsp;
1219*cf5a6c84SAndroid Build Coastguard Worker
1220*cf5a6c84SAndroid Build Coastguard Worker
1221*cf5a6c84SAndroid Build Coastguard Worker
1222*cf5a6c84SAndroid Build Coastguard Worker#define YYPOPSTACK   (yyvsp--, yyssp--)
1223*cf5a6c84SAndroid Build Coastguard Worker
1224*cf5a6c84SAndroid Build Coastguard Worker  YYSIZE_T yystacksize = YYINITDEPTH;
1225*cf5a6c84SAndroid Build Coastguard Worker
1226*cf5a6c84SAndroid Build Coastguard Worker  /* The variables used to return semantic value and location from the
1227*cf5a6c84SAndroid Build Coastguard Worker     action routines.  */
1228*cf5a6c84SAndroid Build Coastguard Worker  YYSTYPE yyval;
1229*cf5a6c84SAndroid Build Coastguard Worker
1230*cf5a6c84SAndroid Build Coastguard Worker
1231*cf5a6c84SAndroid Build Coastguard Worker  /* When reducing, the number of symbols on the RHS of the reduced
1232*cf5a6c84SAndroid Build Coastguard Worker     rule.  */
1233*cf5a6c84SAndroid Build Coastguard Worker  int yylen;
1234*cf5a6c84SAndroid Build Coastguard Worker
1235*cf5a6c84SAndroid Build Coastguard Worker  YYDPRINTF ((stderr, "Starting parse\n"));
1236*cf5a6c84SAndroid Build Coastguard Worker
1237*cf5a6c84SAndroid Build Coastguard Worker  yystate = 0;
1238*cf5a6c84SAndroid Build Coastguard Worker  yyerrstatus = 0;
1239*cf5a6c84SAndroid Build Coastguard Worker  yynerrs = 0;
1240*cf5a6c84SAndroid Build Coastguard Worker  yychar = YYEMPTY;		/* Cause a token to be read.  */
1241*cf5a6c84SAndroid Build Coastguard Worker
1242*cf5a6c84SAndroid Build Coastguard Worker  /* Initialize stack pointers.
1243*cf5a6c84SAndroid Build Coastguard Worker     Waste one element of value and location stack
1244*cf5a6c84SAndroid Build Coastguard Worker     so that they stay on the same level as the state stack.
1245*cf5a6c84SAndroid Build Coastguard Worker     The wasted elements are never initialized.  */
1246*cf5a6c84SAndroid Build Coastguard Worker
1247*cf5a6c84SAndroid Build Coastguard Worker  yyssp = yyss;
1248*cf5a6c84SAndroid Build Coastguard Worker  yyvsp = yyvs;
1249*cf5a6c84SAndroid Build Coastguard Worker
1250*cf5a6c84SAndroid Build Coastguard Worker  goto yysetstate;
1251*cf5a6c84SAndroid Build Coastguard Worker
1252*cf5a6c84SAndroid Build Coastguard Worker/*------------------------------------------------------------.
1253*cf5a6c84SAndroid Build Coastguard Worker| yynewstate -- Push a new state, which is found in yystate.  |
1254*cf5a6c84SAndroid Build Coastguard Worker`------------------------------------------------------------*/
1255*cf5a6c84SAndroid Build Coastguard Worker yynewstate:
1256*cf5a6c84SAndroid Build Coastguard Worker  /* In all cases, when you get here, the value and location stacks
1257*cf5a6c84SAndroid Build Coastguard Worker     have just been pushed. so pushing a state here evens the stacks.
1258*cf5a6c84SAndroid Build Coastguard Worker     */
1259*cf5a6c84SAndroid Build Coastguard Worker  yyssp++;
1260*cf5a6c84SAndroid Build Coastguard Worker
1261*cf5a6c84SAndroid Build Coastguard Worker yysetstate:
1262*cf5a6c84SAndroid Build Coastguard Worker  *yyssp = yystate;
1263*cf5a6c84SAndroid Build Coastguard Worker
1264*cf5a6c84SAndroid Build Coastguard Worker  if (yyss + yystacksize - 1 <= yyssp)
1265*cf5a6c84SAndroid Build Coastguard Worker    {
1266*cf5a6c84SAndroid Build Coastguard Worker      /* Get the current used size of the three stacks, in elements.  */
1267*cf5a6c84SAndroid Build Coastguard Worker      YYSIZE_T yysize = yyssp - yyss + 1;
1268*cf5a6c84SAndroid Build Coastguard Worker
1269*cf5a6c84SAndroid Build Coastguard Worker#ifdef yyoverflow
1270*cf5a6c84SAndroid Build Coastguard Worker      {
1271*cf5a6c84SAndroid Build Coastguard Worker	/* Give user a chance to reallocate the stack. Use copies of
1272*cf5a6c84SAndroid Build Coastguard Worker	   these so that the &'s don't force the real ones into
1273*cf5a6c84SAndroid Build Coastguard Worker	   memory.  */
1274*cf5a6c84SAndroid Build Coastguard Worker	YYSTYPE *yyvs1 = yyvs;
1275*cf5a6c84SAndroid Build Coastguard Worker	short int *yyss1 = yyss;
1276*cf5a6c84SAndroid Build Coastguard Worker
1277*cf5a6c84SAndroid Build Coastguard Worker
1278*cf5a6c84SAndroid Build Coastguard Worker	/* Each stack pointer address is followed by the size of the
1279*cf5a6c84SAndroid Build Coastguard Worker	   data in use in that stack, in bytes.  This used to be a
1280*cf5a6c84SAndroid Build Coastguard Worker	   conditional around just the two extra args, but that might
1281*cf5a6c84SAndroid Build Coastguard Worker	   be undefined if yyoverflow is a macro.  */
1282*cf5a6c84SAndroid Build Coastguard Worker	yyoverflow (YY_("memory exhausted"),
1283*cf5a6c84SAndroid Build Coastguard Worker		    &yyss1, yysize * sizeof (*yyssp),
1284*cf5a6c84SAndroid Build Coastguard Worker		    &yyvs1, yysize * sizeof (*yyvsp),
1285*cf5a6c84SAndroid Build Coastguard Worker
1286*cf5a6c84SAndroid Build Coastguard Worker		    &yystacksize);
1287*cf5a6c84SAndroid Build Coastguard Worker
1288*cf5a6c84SAndroid Build Coastguard Worker	yyss = yyss1;
1289*cf5a6c84SAndroid Build Coastguard Worker	yyvs = yyvs1;
1290*cf5a6c84SAndroid Build Coastguard Worker      }
1291*cf5a6c84SAndroid Build Coastguard Worker#else /* no yyoverflow */
1292*cf5a6c84SAndroid Build Coastguard Worker# ifndef YYSTACK_RELOCATE
1293*cf5a6c84SAndroid Build Coastguard Worker      goto yyexhaustedlab;
1294*cf5a6c84SAndroid Build Coastguard Worker# else
1295*cf5a6c84SAndroid Build Coastguard Worker      /* Extend the stack our own way.  */
1296*cf5a6c84SAndroid Build Coastguard Worker      if (YYMAXDEPTH <= yystacksize)
1297*cf5a6c84SAndroid Build Coastguard Worker	goto yyexhaustedlab;
1298*cf5a6c84SAndroid Build Coastguard Worker      yystacksize *= 2;
1299*cf5a6c84SAndroid Build Coastguard Worker      if (YYMAXDEPTH < yystacksize)
1300*cf5a6c84SAndroid Build Coastguard Worker	yystacksize = YYMAXDEPTH;
1301*cf5a6c84SAndroid Build Coastguard Worker
1302*cf5a6c84SAndroid Build Coastguard Worker      {
1303*cf5a6c84SAndroid Build Coastguard Worker	short int *yyss1 = yyss;
1304*cf5a6c84SAndroid Build Coastguard Worker	union yyalloc *yyptr =
1305*cf5a6c84SAndroid Build Coastguard Worker	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1306*cf5a6c84SAndroid Build Coastguard Worker	if (! yyptr)
1307*cf5a6c84SAndroid Build Coastguard Worker	  goto yyexhaustedlab;
1308*cf5a6c84SAndroid Build Coastguard Worker	YYSTACK_RELOCATE (yyss);
1309*cf5a6c84SAndroid Build Coastguard Worker	YYSTACK_RELOCATE (yyvs);
1310*cf5a6c84SAndroid Build Coastguard Worker
1311*cf5a6c84SAndroid Build Coastguard Worker#  undef YYSTACK_RELOCATE
1312*cf5a6c84SAndroid Build Coastguard Worker	if (yyss1 != yyssa)
1313*cf5a6c84SAndroid Build Coastguard Worker	  YYSTACK_FREE (yyss1);
1314*cf5a6c84SAndroid Build Coastguard Worker      }
1315*cf5a6c84SAndroid Build Coastguard Worker# endif
1316*cf5a6c84SAndroid Build Coastguard Worker#endif /* no yyoverflow */
1317*cf5a6c84SAndroid Build Coastguard Worker
1318*cf5a6c84SAndroid Build Coastguard Worker      yyssp = yyss + yysize - 1;
1319*cf5a6c84SAndroid Build Coastguard Worker      yyvsp = yyvs + yysize - 1;
1320*cf5a6c84SAndroid Build Coastguard Worker
1321*cf5a6c84SAndroid Build Coastguard Worker
1322*cf5a6c84SAndroid Build Coastguard Worker      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1323*cf5a6c84SAndroid Build Coastguard Worker		  (unsigned long int) yystacksize));
1324*cf5a6c84SAndroid Build Coastguard Worker
1325*cf5a6c84SAndroid Build Coastguard Worker      if (yyss + yystacksize - 1 <= yyssp)
1326*cf5a6c84SAndroid Build Coastguard Worker	YYABORT;
1327*cf5a6c84SAndroid Build Coastguard Worker    }
1328*cf5a6c84SAndroid Build Coastguard Worker
1329*cf5a6c84SAndroid Build Coastguard Worker  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1330*cf5a6c84SAndroid Build Coastguard Worker
1331*cf5a6c84SAndroid Build Coastguard Worker  goto yybackup;
1332*cf5a6c84SAndroid Build Coastguard Worker
1333*cf5a6c84SAndroid Build Coastguard Worker/*-----------.
1334*cf5a6c84SAndroid Build Coastguard Worker| yybackup.  |
1335*cf5a6c84SAndroid Build Coastguard Worker`-----------*/
1336*cf5a6c84SAndroid Build Coastguard Workeryybackup:
1337*cf5a6c84SAndroid Build Coastguard Worker
1338*cf5a6c84SAndroid Build Coastguard Worker/* Do appropriate processing given the current state.  */
1339*cf5a6c84SAndroid Build Coastguard Worker/* Read a look-ahead token if we need one and don't already have one.  */
1340*cf5a6c84SAndroid Build Coastguard Worker/* yyresume: */
1341*cf5a6c84SAndroid Build Coastguard Worker
1342*cf5a6c84SAndroid Build Coastguard Worker  /* First try to decide what to do without reference to look-ahead token.  */
1343*cf5a6c84SAndroid Build Coastguard Worker
1344*cf5a6c84SAndroid Build Coastguard Worker  yyn = yypact[yystate];
1345*cf5a6c84SAndroid Build Coastguard Worker  if (yyn == YYPACT_NINF)
1346*cf5a6c84SAndroid Build Coastguard Worker    goto yydefault;
1347*cf5a6c84SAndroid Build Coastguard Worker
1348*cf5a6c84SAndroid Build Coastguard Worker  /* Not known => get a look-ahead token if don't already have one.  */
1349*cf5a6c84SAndroid Build Coastguard Worker
1350*cf5a6c84SAndroid Build Coastguard Worker  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1351*cf5a6c84SAndroid Build Coastguard Worker  if (yychar == YYEMPTY)
1352*cf5a6c84SAndroid Build Coastguard Worker    {
1353*cf5a6c84SAndroid Build Coastguard Worker      YYDPRINTF ((stderr, "Reading a token: "));
1354*cf5a6c84SAndroid Build Coastguard Worker      yychar = YYLEX;
1355*cf5a6c84SAndroid Build Coastguard Worker    }
1356*cf5a6c84SAndroid Build Coastguard Worker
1357*cf5a6c84SAndroid Build Coastguard Worker  if (yychar <= YYEOF)
1358*cf5a6c84SAndroid Build Coastguard Worker    {
1359*cf5a6c84SAndroid Build Coastguard Worker      yychar = yytoken = YYEOF;
1360*cf5a6c84SAndroid Build Coastguard Worker      YYDPRINTF ((stderr, "Now at end of input.\n"));
1361*cf5a6c84SAndroid Build Coastguard Worker    }
1362*cf5a6c84SAndroid Build Coastguard Worker  else
1363*cf5a6c84SAndroid Build Coastguard Worker    {
1364*cf5a6c84SAndroid Build Coastguard Worker      yytoken = YYTRANSLATE (yychar);
1365*cf5a6c84SAndroid Build Coastguard Worker      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1366*cf5a6c84SAndroid Build Coastguard Worker    }
1367*cf5a6c84SAndroid Build Coastguard Worker
1368*cf5a6c84SAndroid Build Coastguard Worker  /* If the proper action on seeing token YYTOKEN is to reduce or to
1369*cf5a6c84SAndroid Build Coastguard Worker     detect an error, take that action.  */
1370*cf5a6c84SAndroid Build Coastguard Worker  yyn += yytoken;
1371*cf5a6c84SAndroid Build Coastguard Worker  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1372*cf5a6c84SAndroid Build Coastguard Worker    goto yydefault;
1373*cf5a6c84SAndroid Build Coastguard Worker  yyn = yytable[yyn];
1374*cf5a6c84SAndroid Build Coastguard Worker  if (yyn <= 0)
1375*cf5a6c84SAndroid Build Coastguard Worker    {
1376*cf5a6c84SAndroid Build Coastguard Worker      if (yyn == 0 || yyn == YYTABLE_NINF)
1377*cf5a6c84SAndroid Build Coastguard Worker	goto yyerrlab;
1378*cf5a6c84SAndroid Build Coastguard Worker      yyn = -yyn;
1379*cf5a6c84SAndroid Build Coastguard Worker      goto yyreduce;
1380*cf5a6c84SAndroid Build Coastguard Worker    }
1381*cf5a6c84SAndroid Build Coastguard Worker
1382*cf5a6c84SAndroid Build Coastguard Worker  if (yyn == YYFINAL)
1383*cf5a6c84SAndroid Build Coastguard Worker    YYACCEPT;
1384*cf5a6c84SAndroid Build Coastguard Worker
1385*cf5a6c84SAndroid Build Coastguard Worker  /* Shift the look-ahead token.  */
1386*cf5a6c84SAndroid Build Coastguard Worker  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1387*cf5a6c84SAndroid Build Coastguard Worker
1388*cf5a6c84SAndroid Build Coastguard Worker  /* Discard the token being shifted unless it is eof.  */
1389*cf5a6c84SAndroid Build Coastguard Worker  if (yychar != YYEOF)
1390*cf5a6c84SAndroid Build Coastguard Worker    yychar = YYEMPTY;
1391*cf5a6c84SAndroid Build Coastguard Worker
1392*cf5a6c84SAndroid Build Coastguard Worker  *++yyvsp = yylval;
1393*cf5a6c84SAndroid Build Coastguard Worker
1394*cf5a6c84SAndroid Build Coastguard Worker
1395*cf5a6c84SAndroid Build Coastguard Worker  /* Count tokens shifted since error; after three, turn off error
1396*cf5a6c84SAndroid Build Coastguard Worker     status.  */
1397*cf5a6c84SAndroid Build Coastguard Worker  if (yyerrstatus)
1398*cf5a6c84SAndroid Build Coastguard Worker    yyerrstatus--;
1399*cf5a6c84SAndroid Build Coastguard Worker
1400*cf5a6c84SAndroid Build Coastguard Worker  yystate = yyn;
1401*cf5a6c84SAndroid Build Coastguard Worker  goto yynewstate;
1402*cf5a6c84SAndroid Build Coastguard Worker
1403*cf5a6c84SAndroid Build Coastguard Worker
1404*cf5a6c84SAndroid Build Coastguard Worker/*-----------------------------------------------------------.
1405*cf5a6c84SAndroid Build Coastguard Worker| yydefault -- do the default action for the current state.  |
1406*cf5a6c84SAndroid Build Coastguard Worker`-----------------------------------------------------------*/
1407*cf5a6c84SAndroid Build Coastguard Workeryydefault:
1408*cf5a6c84SAndroid Build Coastguard Worker  yyn = yydefact[yystate];
1409*cf5a6c84SAndroid Build Coastguard Worker  if (yyn == 0)
1410*cf5a6c84SAndroid Build Coastguard Worker    goto yyerrlab;
1411*cf5a6c84SAndroid Build Coastguard Worker  goto yyreduce;
1412*cf5a6c84SAndroid Build Coastguard Worker
1413*cf5a6c84SAndroid Build Coastguard Worker
1414*cf5a6c84SAndroid Build Coastguard Worker/*-----------------------------.
1415*cf5a6c84SAndroid Build Coastguard Worker| yyreduce -- Do a reduction.  |
1416*cf5a6c84SAndroid Build Coastguard Worker`-----------------------------*/
1417*cf5a6c84SAndroid Build Coastguard Workeryyreduce:
1418*cf5a6c84SAndroid Build Coastguard Worker  /* yyn is the number of a rule to reduce with.  */
1419*cf5a6c84SAndroid Build Coastguard Worker  yylen = yyr2[yyn];
1420*cf5a6c84SAndroid Build Coastguard Worker
1421*cf5a6c84SAndroid Build Coastguard Worker  /* If YYLEN is nonzero, implement the default value of the action:
1422*cf5a6c84SAndroid Build Coastguard Worker     `$$ = $1'.
1423*cf5a6c84SAndroid Build Coastguard Worker
1424*cf5a6c84SAndroid Build Coastguard Worker     Otherwise, the following line sets YYVAL to garbage.
1425*cf5a6c84SAndroid Build Coastguard Worker     This behavior is undocumented and Bison
1426*cf5a6c84SAndroid Build Coastguard Worker     users should not rely upon it.  Assigning to YYVAL
1427*cf5a6c84SAndroid Build Coastguard Worker     unconditionally makes the parser a bit smaller, and it avoids a
1428*cf5a6c84SAndroid Build Coastguard Worker     GCC warning that YYVAL may be used uninitialized.  */
1429*cf5a6c84SAndroid Build Coastguard Worker  yyval = yyvsp[1-yylen];
1430*cf5a6c84SAndroid Build Coastguard Worker
1431*cf5a6c84SAndroid Build Coastguard Worker
1432*cf5a6c84SAndroid Build Coastguard Worker  YY_REDUCE_PRINT (yyn);
1433*cf5a6c84SAndroid Build Coastguard Worker  switch (yyn)
1434*cf5a6c84SAndroid Build Coastguard Worker    {
1435*cf5a6c84SAndroid Build Coastguard Worker        case 8:
1436*cf5a6c84SAndroid Build Coastguard Worker
1437*cf5a6c84SAndroid Build Coastguard Worker    { zconf_error("unexpected end statement"); ;}
1438*cf5a6c84SAndroid Build Coastguard Worker    break;
1439*cf5a6c84SAndroid Build Coastguard Worker
1440*cf5a6c84SAndroid Build Coastguard Worker  case 9:
1441*cf5a6c84SAndroid Build Coastguard Worker
1442*cf5a6c84SAndroid Build Coastguard Worker    { zconf_error("unknown statement \"%s\"", (yyvsp[-2].string)); ;}
1443*cf5a6c84SAndroid Build Coastguard Worker    break;
1444*cf5a6c84SAndroid Build Coastguard Worker
1445*cf5a6c84SAndroid Build Coastguard Worker  case 10:
1446*cf5a6c84SAndroid Build Coastguard Worker
1447*cf5a6c84SAndroid Build Coastguard Worker    {
1448*cf5a6c84SAndroid Build Coastguard Worker	zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[-2].id)->name);
1449*cf5a6c84SAndroid Build Coastguard Worker;}
1450*cf5a6c84SAndroid Build Coastguard Worker    break;
1451*cf5a6c84SAndroid Build Coastguard Worker
1452*cf5a6c84SAndroid Build Coastguard Worker  case 11:
1453*cf5a6c84SAndroid Build Coastguard Worker
1454*cf5a6c84SAndroid Build Coastguard Worker    { zconf_error("invalid statement"); ;}
1455*cf5a6c84SAndroid Build Coastguard Worker    break;
1456*cf5a6c84SAndroid Build Coastguard Worker
1457*cf5a6c84SAndroid Build Coastguard Worker  case 25:
1458*cf5a6c84SAndroid Build Coastguard Worker
1459*cf5a6c84SAndroid Build Coastguard Worker    { zconf_error("unknown option \"%s\"", (yyvsp[-2].string)); ;}
1460*cf5a6c84SAndroid Build Coastguard Worker    break;
1461*cf5a6c84SAndroid Build Coastguard Worker
1462*cf5a6c84SAndroid Build Coastguard Worker  case 26:
1463*cf5a6c84SAndroid Build Coastguard Worker
1464*cf5a6c84SAndroid Build Coastguard Worker    { zconf_error("invalid option"); ;}
1465*cf5a6c84SAndroid Build Coastguard Worker    break;
1466*cf5a6c84SAndroid Build Coastguard Worker
1467*cf5a6c84SAndroid Build Coastguard Worker  case 27:
1468*cf5a6c84SAndroid Build Coastguard Worker
1469*cf5a6c84SAndroid Build Coastguard Worker    {
1470*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *sym = sym_lookup((yyvsp[-1].string), 0);
1471*cf5a6c84SAndroid Build Coastguard Worker	sym->flags |= SYMBOL_OPTIONAL;
1472*cf5a6c84SAndroid Build Coastguard Worker	menu_add_entry(sym);
1473*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
1474*cf5a6c84SAndroid Build Coastguard Worker;}
1475*cf5a6c84SAndroid Build Coastguard Worker    break;
1476*cf5a6c84SAndroid Build Coastguard Worker
1477*cf5a6c84SAndroid Build Coastguard Worker  case 28:
1478*cf5a6c84SAndroid Build Coastguard Worker
1479*cf5a6c84SAndroid Build Coastguard Worker    {
1480*cf5a6c84SAndroid Build Coastguard Worker	menu_end_entry();
1481*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1482*cf5a6c84SAndroid Build Coastguard Worker;}
1483*cf5a6c84SAndroid Build Coastguard Worker    break;
1484*cf5a6c84SAndroid Build Coastguard Worker
1485*cf5a6c84SAndroid Build Coastguard Worker  case 29:
1486*cf5a6c84SAndroid Build Coastguard Worker
1487*cf5a6c84SAndroid Build Coastguard Worker    {
1488*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *sym = sym_lookup((yyvsp[-1].string), 0);
1489*cf5a6c84SAndroid Build Coastguard Worker	sym->flags |= SYMBOL_OPTIONAL;
1490*cf5a6c84SAndroid Build Coastguard Worker	menu_add_entry(sym);
1491*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
1492*cf5a6c84SAndroid Build Coastguard Worker;}
1493*cf5a6c84SAndroid Build Coastguard Worker    break;
1494*cf5a6c84SAndroid Build Coastguard Worker
1495*cf5a6c84SAndroid Build Coastguard Worker  case 30:
1496*cf5a6c84SAndroid Build Coastguard Worker
1497*cf5a6c84SAndroid Build Coastguard Worker    {
1498*cf5a6c84SAndroid Build Coastguard Worker	if (current_entry->prompt)
1499*cf5a6c84SAndroid Build Coastguard Worker		current_entry->prompt->type = P_MENU;
1500*cf5a6c84SAndroid Build Coastguard Worker	else
1501*cf5a6c84SAndroid Build Coastguard Worker		zconfprint("warning: menuconfig statement without prompt");
1502*cf5a6c84SAndroid Build Coastguard Worker	menu_end_entry();
1503*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1504*cf5a6c84SAndroid Build Coastguard Worker;}
1505*cf5a6c84SAndroid Build Coastguard Worker    break;
1506*cf5a6c84SAndroid Build Coastguard Worker
1507*cf5a6c84SAndroid Build Coastguard Worker  case 38:
1508*cf5a6c84SAndroid Build Coastguard Worker
1509*cf5a6c84SAndroid Build Coastguard Worker    {
1510*cf5a6c84SAndroid Build Coastguard Worker	menu_set_type((yyvsp[-2].id)->stype);
1511*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1512*cf5a6c84SAndroid Build Coastguard Worker		zconf_curname(), zconf_lineno(),
1513*cf5a6c84SAndroid Build Coastguard Worker		(yyvsp[-2].id)->stype);
1514*cf5a6c84SAndroid Build Coastguard Worker;}
1515*cf5a6c84SAndroid Build Coastguard Worker    break;
1516*cf5a6c84SAndroid Build Coastguard Worker
1517*cf5a6c84SAndroid Build Coastguard Worker  case 39:
1518*cf5a6c84SAndroid Build Coastguard Worker
1519*cf5a6c84SAndroid Build Coastguard Worker    {
1520*cf5a6c84SAndroid Build Coastguard Worker	menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));
1521*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1522*cf5a6c84SAndroid Build Coastguard Worker;}
1523*cf5a6c84SAndroid Build Coastguard Worker    break;
1524*cf5a6c84SAndroid Build Coastguard Worker
1525*cf5a6c84SAndroid Build Coastguard Worker  case 40:
1526*cf5a6c84SAndroid Build Coastguard Worker
1527*cf5a6c84SAndroid Build Coastguard Worker    {
1528*cf5a6c84SAndroid Build Coastguard Worker	menu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr));
1529*cf5a6c84SAndroid Build Coastguard Worker	if ((yyvsp[-3].id)->stype != S_UNKNOWN)
1530*cf5a6c84SAndroid Build Coastguard Worker		menu_set_type((yyvsp[-3].id)->stype);
1531*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
1532*cf5a6c84SAndroid Build Coastguard Worker		zconf_curname(), zconf_lineno(),
1533*cf5a6c84SAndroid Build Coastguard Worker		(yyvsp[-3].id)->stype);
1534*cf5a6c84SAndroid Build Coastguard Worker;}
1535*cf5a6c84SAndroid Build Coastguard Worker    break;
1536*cf5a6c84SAndroid Build Coastguard Worker
1537*cf5a6c84SAndroid Build Coastguard Worker  case 41:
1538*cf5a6c84SAndroid Build Coastguard Worker
1539*cf5a6c84SAndroid Build Coastguard Worker    {
1540*cf5a6c84SAndroid Build Coastguard Worker	menu_add_symbol(P_SELECT, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
1541*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
1542*cf5a6c84SAndroid Build Coastguard Worker;}
1543*cf5a6c84SAndroid Build Coastguard Worker    break;
1544*cf5a6c84SAndroid Build Coastguard Worker
1545*cf5a6c84SAndroid Build Coastguard Worker  case 42:
1546*cf5a6c84SAndroid Build Coastguard Worker
1547*cf5a6c84SAndroid Build Coastguard Worker    {
1548*cf5a6c84SAndroid Build Coastguard Worker	menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr));
1549*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
1550*cf5a6c84SAndroid Build Coastguard Worker;}
1551*cf5a6c84SAndroid Build Coastguard Worker    break;
1552*cf5a6c84SAndroid Build Coastguard Worker
1553*cf5a6c84SAndroid Build Coastguard Worker  case 45:
1554*cf5a6c84SAndroid Build Coastguard Worker
1555*cf5a6c84SAndroid Build Coastguard Worker    {
1556*cf5a6c84SAndroid Build Coastguard Worker	struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string)));
1557*cf5a6c84SAndroid Build Coastguard Worker	if (id && id->flags & TF_OPTION)
1558*cf5a6c84SAndroid Build Coastguard Worker		menu_add_option(id->token, (yyvsp[0].string));
1559*cf5a6c84SAndroid Build Coastguard Worker	else
1560*cf5a6c84SAndroid Build Coastguard Worker		zconfprint("warning: ignoring unknown option %s", (yyvsp[-1].string));
1561*cf5a6c84SAndroid Build Coastguard Worker	free((yyvsp[-1].string));
1562*cf5a6c84SAndroid Build Coastguard Worker;}
1563*cf5a6c84SAndroid Build Coastguard Worker    break;
1564*cf5a6c84SAndroid Build Coastguard Worker
1565*cf5a6c84SAndroid Build Coastguard Worker  case 46:
1566*cf5a6c84SAndroid Build Coastguard Worker
1567*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.string) = NULL; ;}
1568*cf5a6c84SAndroid Build Coastguard Worker    break;
1569*cf5a6c84SAndroid Build Coastguard Worker
1570*cf5a6c84SAndroid Build Coastguard Worker  case 47:
1571*cf5a6c84SAndroid Build Coastguard Worker
1572*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.string) = (yyvsp[0].string); ;}
1573*cf5a6c84SAndroid Build Coastguard Worker    break;
1574*cf5a6c84SAndroid Build Coastguard Worker
1575*cf5a6c84SAndroid Build Coastguard Worker  case 48:
1576*cf5a6c84SAndroid Build Coastguard Worker
1577*cf5a6c84SAndroid Build Coastguard Worker    {
1578*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *sym = sym_lookup(NULL, 0);
1579*cf5a6c84SAndroid Build Coastguard Worker	sym->flags |= SYMBOL_CHOICE;
1580*cf5a6c84SAndroid Build Coastguard Worker	menu_add_entry(sym);
1581*cf5a6c84SAndroid Build Coastguard Worker	menu_add_expr(P_CHOICE, NULL, NULL);
1582*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
1583*cf5a6c84SAndroid Build Coastguard Worker;}
1584*cf5a6c84SAndroid Build Coastguard Worker    break;
1585*cf5a6c84SAndroid Build Coastguard Worker
1586*cf5a6c84SAndroid Build Coastguard Worker  case 49:
1587*cf5a6c84SAndroid Build Coastguard Worker
1588*cf5a6c84SAndroid Build Coastguard Worker    {
1589*cf5a6c84SAndroid Build Coastguard Worker	(yyval.menu) = menu_add_menu();
1590*cf5a6c84SAndroid Build Coastguard Worker;}
1591*cf5a6c84SAndroid Build Coastguard Worker    break;
1592*cf5a6c84SAndroid Build Coastguard Worker
1593*cf5a6c84SAndroid Build Coastguard Worker  case 50:
1594*cf5a6c84SAndroid Build Coastguard Worker
1595*cf5a6c84SAndroid Build Coastguard Worker    {
1596*cf5a6c84SAndroid Build Coastguard Worker	if (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) {
1597*cf5a6c84SAndroid Build Coastguard Worker		menu_end_menu();
1598*cf5a6c84SAndroid Build Coastguard Worker		printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
1599*cf5a6c84SAndroid Build Coastguard Worker	}
1600*cf5a6c84SAndroid Build Coastguard Worker;}
1601*cf5a6c84SAndroid Build Coastguard Worker    break;
1602*cf5a6c84SAndroid Build Coastguard Worker
1603*cf5a6c84SAndroid Build Coastguard Worker  case 58:
1604*cf5a6c84SAndroid Build Coastguard Worker
1605*cf5a6c84SAndroid Build Coastguard Worker    {
1606*cf5a6c84SAndroid Build Coastguard Worker	menu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));
1607*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1608*cf5a6c84SAndroid Build Coastguard Worker;}
1609*cf5a6c84SAndroid Build Coastguard Worker    break;
1610*cf5a6c84SAndroid Build Coastguard Worker
1611*cf5a6c84SAndroid Build Coastguard Worker  case 59:
1612*cf5a6c84SAndroid Build Coastguard Worker
1613*cf5a6c84SAndroid Build Coastguard Worker    {
1614*cf5a6c84SAndroid Build Coastguard Worker	if ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) {
1615*cf5a6c84SAndroid Build Coastguard Worker		menu_set_type((yyvsp[-2].id)->stype);
1616*cf5a6c84SAndroid Build Coastguard Worker		printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1617*cf5a6c84SAndroid Build Coastguard Worker			zconf_curname(), zconf_lineno(),
1618*cf5a6c84SAndroid Build Coastguard Worker			(yyvsp[-2].id)->stype);
1619*cf5a6c84SAndroid Build Coastguard Worker	} else
1620*cf5a6c84SAndroid Build Coastguard Worker		YYERROR;
1621*cf5a6c84SAndroid Build Coastguard Worker;}
1622*cf5a6c84SAndroid Build Coastguard Worker    break;
1623*cf5a6c84SAndroid Build Coastguard Worker
1624*cf5a6c84SAndroid Build Coastguard Worker  case 60:
1625*cf5a6c84SAndroid Build Coastguard Worker
1626*cf5a6c84SAndroid Build Coastguard Worker    {
1627*cf5a6c84SAndroid Build Coastguard Worker	current_entry->sym->flags |= SYMBOL_OPTIONAL;
1628*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
1629*cf5a6c84SAndroid Build Coastguard Worker;}
1630*cf5a6c84SAndroid Build Coastguard Worker    break;
1631*cf5a6c84SAndroid Build Coastguard Worker
1632*cf5a6c84SAndroid Build Coastguard Worker  case 61:
1633*cf5a6c84SAndroid Build Coastguard Worker
1634*cf5a6c84SAndroid Build Coastguard Worker    {
1635*cf5a6c84SAndroid Build Coastguard Worker	if ((yyvsp[-3].id)->stype == S_UNKNOWN) {
1636*cf5a6c84SAndroid Build Coastguard Worker		menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[-2].string), 0), (yyvsp[-1].expr));
1637*cf5a6c84SAndroid Build Coastguard Worker		printd(DEBUG_PARSE, "%s:%d:default\n",
1638*cf5a6c84SAndroid Build Coastguard Worker			zconf_curname(), zconf_lineno());
1639*cf5a6c84SAndroid Build Coastguard Worker	} else
1640*cf5a6c84SAndroid Build Coastguard Worker		YYERROR;
1641*cf5a6c84SAndroid Build Coastguard Worker;}
1642*cf5a6c84SAndroid Build Coastguard Worker    break;
1643*cf5a6c84SAndroid Build Coastguard Worker
1644*cf5a6c84SAndroid Build Coastguard Worker  case 64:
1645*cf5a6c84SAndroid Build Coastguard Worker
1646*cf5a6c84SAndroid Build Coastguard Worker    {
1647*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
1648*cf5a6c84SAndroid Build Coastguard Worker	menu_add_entry(NULL);
1649*cf5a6c84SAndroid Build Coastguard Worker	menu_add_dep((yyvsp[-1].expr));
1650*cf5a6c84SAndroid Build Coastguard Worker	(yyval.menu) = menu_add_menu();
1651*cf5a6c84SAndroid Build Coastguard Worker;}
1652*cf5a6c84SAndroid Build Coastguard Worker    break;
1653*cf5a6c84SAndroid Build Coastguard Worker
1654*cf5a6c84SAndroid Build Coastguard Worker  case 65:
1655*cf5a6c84SAndroid Build Coastguard Worker
1656*cf5a6c84SAndroid Build Coastguard Worker    {
1657*cf5a6c84SAndroid Build Coastguard Worker	if (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) {
1658*cf5a6c84SAndroid Build Coastguard Worker		menu_end_menu();
1659*cf5a6c84SAndroid Build Coastguard Worker		printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
1660*cf5a6c84SAndroid Build Coastguard Worker	}
1661*cf5a6c84SAndroid Build Coastguard Worker;}
1662*cf5a6c84SAndroid Build Coastguard Worker    break;
1663*cf5a6c84SAndroid Build Coastguard Worker
1664*cf5a6c84SAndroid Build Coastguard Worker  case 71:
1665*cf5a6c84SAndroid Build Coastguard Worker
1666*cf5a6c84SAndroid Build Coastguard Worker    {
1667*cf5a6c84SAndroid Build Coastguard Worker	menu_add_entry(NULL);
1668*cf5a6c84SAndroid Build Coastguard Worker	menu_add_prompt(P_MENU, (yyvsp[-1].string), NULL);
1669*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
1670*cf5a6c84SAndroid Build Coastguard Worker;}
1671*cf5a6c84SAndroid Build Coastguard Worker    break;
1672*cf5a6c84SAndroid Build Coastguard Worker
1673*cf5a6c84SAndroid Build Coastguard Worker  case 72:
1674*cf5a6c84SAndroid Build Coastguard Worker
1675*cf5a6c84SAndroid Build Coastguard Worker    {
1676*cf5a6c84SAndroid Build Coastguard Worker	(yyval.menu) = menu_add_menu();
1677*cf5a6c84SAndroid Build Coastguard Worker;}
1678*cf5a6c84SAndroid Build Coastguard Worker    break;
1679*cf5a6c84SAndroid Build Coastguard Worker
1680*cf5a6c84SAndroid Build Coastguard Worker  case 73:
1681*cf5a6c84SAndroid Build Coastguard Worker
1682*cf5a6c84SAndroid Build Coastguard Worker    {
1683*cf5a6c84SAndroid Build Coastguard Worker	if (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) {
1684*cf5a6c84SAndroid Build Coastguard Worker		menu_end_menu();
1685*cf5a6c84SAndroid Build Coastguard Worker		printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
1686*cf5a6c84SAndroid Build Coastguard Worker	}
1687*cf5a6c84SAndroid Build Coastguard Worker;}
1688*cf5a6c84SAndroid Build Coastguard Worker    break;
1689*cf5a6c84SAndroid Build Coastguard Worker
1690*cf5a6c84SAndroid Build Coastguard Worker  case 79:
1691*cf5a6c84SAndroid Build Coastguard Worker
1692*cf5a6c84SAndroid Build Coastguard Worker    {
1693*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));
1694*cf5a6c84SAndroid Build Coastguard Worker	zconf_nextfile((yyvsp[-1].string));
1695*cf5a6c84SAndroid Build Coastguard Worker;}
1696*cf5a6c84SAndroid Build Coastguard Worker    break;
1697*cf5a6c84SAndroid Build Coastguard Worker
1698*cf5a6c84SAndroid Build Coastguard Worker  case 80:
1699*cf5a6c84SAndroid Build Coastguard Worker
1700*cf5a6c84SAndroid Build Coastguard Worker    {
1701*cf5a6c84SAndroid Build Coastguard Worker	menu_add_entry(NULL);
1702*cf5a6c84SAndroid Build Coastguard Worker	menu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL);
1703*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
1704*cf5a6c84SAndroid Build Coastguard Worker;}
1705*cf5a6c84SAndroid Build Coastguard Worker    break;
1706*cf5a6c84SAndroid Build Coastguard Worker
1707*cf5a6c84SAndroid Build Coastguard Worker  case 81:
1708*cf5a6c84SAndroid Build Coastguard Worker
1709*cf5a6c84SAndroid Build Coastguard Worker    {
1710*cf5a6c84SAndroid Build Coastguard Worker	menu_end_entry();
1711*cf5a6c84SAndroid Build Coastguard Worker;}
1712*cf5a6c84SAndroid Build Coastguard Worker    break;
1713*cf5a6c84SAndroid Build Coastguard Worker
1714*cf5a6c84SAndroid Build Coastguard Worker  case 82:
1715*cf5a6c84SAndroid Build Coastguard Worker
1716*cf5a6c84SAndroid Build Coastguard Worker    {
1717*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
1718*cf5a6c84SAndroid Build Coastguard Worker	zconf_starthelp();
1719*cf5a6c84SAndroid Build Coastguard Worker;}
1720*cf5a6c84SAndroid Build Coastguard Worker    break;
1721*cf5a6c84SAndroid Build Coastguard Worker
1722*cf5a6c84SAndroid Build Coastguard Worker  case 83:
1723*cf5a6c84SAndroid Build Coastguard Worker
1724*cf5a6c84SAndroid Build Coastguard Worker    {
1725*cf5a6c84SAndroid Build Coastguard Worker	current_entry->sym->help = (yyvsp[0].string);
1726*cf5a6c84SAndroid Build Coastguard Worker;}
1727*cf5a6c84SAndroid Build Coastguard Worker    break;
1728*cf5a6c84SAndroid Build Coastguard Worker
1729*cf5a6c84SAndroid Build Coastguard Worker  case 88:
1730*cf5a6c84SAndroid Build Coastguard Worker
1731*cf5a6c84SAndroid Build Coastguard Worker    {
1732*cf5a6c84SAndroid Build Coastguard Worker	menu_add_dep((yyvsp[-1].expr));
1733*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
1734*cf5a6c84SAndroid Build Coastguard Worker;}
1735*cf5a6c84SAndroid Build Coastguard Worker    break;
1736*cf5a6c84SAndroid Build Coastguard Worker
1737*cf5a6c84SAndroid Build Coastguard Worker  case 89:
1738*cf5a6c84SAndroid Build Coastguard Worker
1739*cf5a6c84SAndroid Build Coastguard Worker    {
1740*cf5a6c84SAndroid Build Coastguard Worker	menu_add_dep((yyvsp[-1].expr));
1741*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
1742*cf5a6c84SAndroid Build Coastguard Worker;}
1743*cf5a6c84SAndroid Build Coastguard Worker    break;
1744*cf5a6c84SAndroid Build Coastguard Worker
1745*cf5a6c84SAndroid Build Coastguard Worker  case 90:
1746*cf5a6c84SAndroid Build Coastguard Worker
1747*cf5a6c84SAndroid Build Coastguard Worker    {
1748*cf5a6c84SAndroid Build Coastguard Worker	menu_add_dep((yyvsp[-1].expr));
1749*cf5a6c84SAndroid Build Coastguard Worker	printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
1750*cf5a6c84SAndroid Build Coastguard Worker;}
1751*cf5a6c84SAndroid Build Coastguard Worker    break;
1752*cf5a6c84SAndroid Build Coastguard Worker
1753*cf5a6c84SAndroid Build Coastguard Worker  case 92:
1754*cf5a6c84SAndroid Build Coastguard Worker
1755*cf5a6c84SAndroid Build Coastguard Worker    {
1756*cf5a6c84SAndroid Build Coastguard Worker	menu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr));
1757*cf5a6c84SAndroid Build Coastguard Worker;}
1758*cf5a6c84SAndroid Build Coastguard Worker    break;
1759*cf5a6c84SAndroid Build Coastguard Worker
1760*cf5a6c84SAndroid Build Coastguard Worker  case 95:
1761*cf5a6c84SAndroid Build Coastguard Worker
1762*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.id) = (yyvsp[-1].id); ;}
1763*cf5a6c84SAndroid Build Coastguard Worker    break;
1764*cf5a6c84SAndroid Build Coastguard Worker
1765*cf5a6c84SAndroid Build Coastguard Worker  case 96:
1766*cf5a6c84SAndroid Build Coastguard Worker
1767*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.id) = (yyvsp[-1].id); ;}
1768*cf5a6c84SAndroid Build Coastguard Worker    break;
1769*cf5a6c84SAndroid Build Coastguard Worker
1770*cf5a6c84SAndroid Build Coastguard Worker  case 97:
1771*cf5a6c84SAndroid Build Coastguard Worker
1772*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.id) = (yyvsp[-1].id); ;}
1773*cf5a6c84SAndroid Build Coastguard Worker    break;
1774*cf5a6c84SAndroid Build Coastguard Worker
1775*cf5a6c84SAndroid Build Coastguard Worker  case 100:
1776*cf5a6c84SAndroid Build Coastguard Worker
1777*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = NULL; ;}
1778*cf5a6c84SAndroid Build Coastguard Worker    break;
1779*cf5a6c84SAndroid Build Coastguard Worker
1780*cf5a6c84SAndroid Build Coastguard Worker  case 101:
1781*cf5a6c84SAndroid Build Coastguard Worker
1782*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = (yyvsp[0].expr); ;}
1783*cf5a6c84SAndroid Build Coastguard Worker    break;
1784*cf5a6c84SAndroid Build Coastguard Worker
1785*cf5a6c84SAndroid Build Coastguard Worker  case 102:
1786*cf5a6c84SAndroid Build Coastguard Worker
1787*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); ;}
1788*cf5a6c84SAndroid Build Coastguard Worker    break;
1789*cf5a6c84SAndroid Build Coastguard Worker
1790*cf5a6c84SAndroid Build Coastguard Worker  case 103:
1791*cf5a6c84SAndroid Build Coastguard Worker
1792*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); ;}
1793*cf5a6c84SAndroid Build Coastguard Worker    break;
1794*cf5a6c84SAndroid Build Coastguard Worker
1795*cf5a6c84SAndroid Build Coastguard Worker  case 104:
1796*cf5a6c84SAndroid Build Coastguard Worker
1797*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); ;}
1798*cf5a6c84SAndroid Build Coastguard Worker    break;
1799*cf5a6c84SAndroid Build Coastguard Worker
1800*cf5a6c84SAndroid Build Coastguard Worker  case 105:
1801*cf5a6c84SAndroid Build Coastguard Worker
1802*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = (yyvsp[-1].expr); ;}
1803*cf5a6c84SAndroid Build Coastguard Worker    break;
1804*cf5a6c84SAndroid Build Coastguard Worker
1805*cf5a6c84SAndroid Build Coastguard Worker  case 106:
1806*cf5a6c84SAndroid Build Coastguard Worker
1807*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); ;}
1808*cf5a6c84SAndroid Build Coastguard Worker    break;
1809*cf5a6c84SAndroid Build Coastguard Worker
1810*cf5a6c84SAndroid Build Coastguard Worker  case 107:
1811*cf5a6c84SAndroid Build Coastguard Worker
1812*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); ;}
1813*cf5a6c84SAndroid Build Coastguard Worker    break;
1814*cf5a6c84SAndroid Build Coastguard Worker
1815*cf5a6c84SAndroid Build Coastguard Worker  case 108:
1816*cf5a6c84SAndroid Build Coastguard Worker
1817*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); ;}
1818*cf5a6c84SAndroid Build Coastguard Worker    break;
1819*cf5a6c84SAndroid Build Coastguard Worker
1820*cf5a6c84SAndroid Build Coastguard Worker  case 109:
1821*cf5a6c84SAndroid Build Coastguard Worker
1822*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); ;}
1823*cf5a6c84SAndroid Build Coastguard Worker    break;
1824*cf5a6c84SAndroid Build Coastguard Worker
1825*cf5a6c84SAndroid Build Coastguard Worker  case 110:
1826*cf5a6c84SAndroid Build Coastguard Worker
1827*cf5a6c84SAndroid Build Coastguard Worker    { (yyval.symbol) = sym_lookup((yyvsp[0].string), 1); free((yyvsp[0].string)); ;}
1828*cf5a6c84SAndroid Build Coastguard Worker    break;
1829*cf5a6c84SAndroid Build Coastguard Worker
1830*cf5a6c84SAndroid Build Coastguard Worker
1831*cf5a6c84SAndroid Build Coastguard Worker      default: break;
1832*cf5a6c84SAndroid Build Coastguard Worker    }
1833*cf5a6c84SAndroid Build Coastguard Worker
1834*cf5a6c84SAndroid Build Coastguard Worker/* Line 1126 of yacc.c.  */
1835*cf5a6c84SAndroid Build Coastguard Worker
1836*cf5a6c84SAndroid Build Coastguard Worker
1837*cf5a6c84SAndroid Build Coastguard Worker  yyvsp -= yylen;
1838*cf5a6c84SAndroid Build Coastguard Worker  yyssp -= yylen;
1839*cf5a6c84SAndroid Build Coastguard Worker
1840*cf5a6c84SAndroid Build Coastguard Worker
1841*cf5a6c84SAndroid Build Coastguard Worker  YY_STACK_PRINT (yyss, yyssp);
1842*cf5a6c84SAndroid Build Coastguard Worker
1843*cf5a6c84SAndroid Build Coastguard Worker  *++yyvsp = yyval;
1844*cf5a6c84SAndroid Build Coastguard Worker
1845*cf5a6c84SAndroid Build Coastguard Worker
1846*cf5a6c84SAndroid Build Coastguard Worker  /* Now `shift' the result of the reduction.  Determine what state
1847*cf5a6c84SAndroid Build Coastguard Worker     that goes to, based on the state we popped back to and the rule
1848*cf5a6c84SAndroid Build Coastguard Worker     number reduced by.  */
1849*cf5a6c84SAndroid Build Coastguard Worker
1850*cf5a6c84SAndroid Build Coastguard Worker  yyn = yyr1[yyn];
1851*cf5a6c84SAndroid Build Coastguard Worker
1852*cf5a6c84SAndroid Build Coastguard Worker  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1853*cf5a6c84SAndroid Build Coastguard Worker  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1854*cf5a6c84SAndroid Build Coastguard Worker    yystate = yytable[yystate];
1855*cf5a6c84SAndroid Build Coastguard Worker  else
1856*cf5a6c84SAndroid Build Coastguard Worker    yystate = yydefgoto[yyn - YYNTOKENS];
1857*cf5a6c84SAndroid Build Coastguard Worker
1858*cf5a6c84SAndroid Build Coastguard Worker  goto yynewstate;
1859*cf5a6c84SAndroid Build Coastguard Worker
1860*cf5a6c84SAndroid Build Coastguard Worker
1861*cf5a6c84SAndroid Build Coastguard Worker/*------------------------------------.
1862*cf5a6c84SAndroid Build Coastguard Worker| yyerrlab -- here on detecting error |
1863*cf5a6c84SAndroid Build Coastguard Worker`------------------------------------*/
1864*cf5a6c84SAndroid Build Coastguard Workeryyerrlab:
1865*cf5a6c84SAndroid Build Coastguard Worker  /* If not already recovering from an error, report this error.  */
1866*cf5a6c84SAndroid Build Coastguard Worker  if (!yyerrstatus)
1867*cf5a6c84SAndroid Build Coastguard Worker    {
1868*cf5a6c84SAndroid Build Coastguard Worker      ++yynerrs;
1869*cf5a6c84SAndroid Build Coastguard Worker#if YYERROR_VERBOSE
1870*cf5a6c84SAndroid Build Coastguard Worker      yyn = yypact[yystate];
1871*cf5a6c84SAndroid Build Coastguard Worker
1872*cf5a6c84SAndroid Build Coastguard Worker      if (YYPACT_NINF < yyn && yyn < YYLAST)
1873*cf5a6c84SAndroid Build Coastguard Worker	{
1874*cf5a6c84SAndroid Build Coastguard Worker	  int yytype = YYTRANSLATE (yychar);
1875*cf5a6c84SAndroid Build Coastguard Worker	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1876*cf5a6c84SAndroid Build Coastguard Worker	  YYSIZE_T yysize = yysize0;
1877*cf5a6c84SAndroid Build Coastguard Worker	  YYSIZE_T yysize1;
1878*cf5a6c84SAndroid Build Coastguard Worker	  int yysize_overflow = 0;
1879*cf5a6c84SAndroid Build Coastguard Worker	  char *yymsg = 0;
1880*cf5a6c84SAndroid Build Coastguard Worker#	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1881*cf5a6c84SAndroid Build Coastguard Worker	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1882*cf5a6c84SAndroid Build Coastguard Worker	  int yyx;
1883*cf5a6c84SAndroid Build Coastguard Worker
1884*cf5a6c84SAndroid Build Coastguard Worker#if 0
1885*cf5a6c84SAndroid Build Coastguard Worker	  /* This is so xgettext sees the translatable formats that are
1886*cf5a6c84SAndroid Build Coastguard Worker	     constructed on the fly.  */
1887*cf5a6c84SAndroid Build Coastguard Worker	  YY_("syntax error, unexpected %s");
1888*cf5a6c84SAndroid Build Coastguard Worker	  YY_("syntax error, unexpected %s, expecting %s");
1889*cf5a6c84SAndroid Build Coastguard Worker	  YY_("syntax error, unexpected %s, expecting %s or %s");
1890*cf5a6c84SAndroid Build Coastguard Worker	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1891*cf5a6c84SAndroid Build Coastguard Worker	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1892*cf5a6c84SAndroid Build Coastguard Worker#endif
1893*cf5a6c84SAndroid Build Coastguard Worker	  char *yyfmt;
1894*cf5a6c84SAndroid Build Coastguard Worker	  char const *yyf;
1895*cf5a6c84SAndroid Build Coastguard Worker	  static char const yyunexpected[] = "syntax error, unexpected %s";
1896*cf5a6c84SAndroid Build Coastguard Worker	  static char const yyexpecting[] = ", expecting %s";
1897*cf5a6c84SAndroid Build Coastguard Worker	  static char const yyor[] = " or %s";
1898*cf5a6c84SAndroid Build Coastguard Worker	  char yyformat[sizeof yyunexpected
1899*cf5a6c84SAndroid Build Coastguard Worker			+ sizeof yyexpecting - 1
1900*cf5a6c84SAndroid Build Coastguard Worker			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1901*cf5a6c84SAndroid Build Coastguard Worker			   * (sizeof yyor - 1))];
1902*cf5a6c84SAndroid Build Coastguard Worker	  char const *yyprefix = yyexpecting;
1903*cf5a6c84SAndroid Build Coastguard Worker
1904*cf5a6c84SAndroid Build Coastguard Worker	  /* Start YYX at -YYN if negative to avoid negative indexes in
1905*cf5a6c84SAndroid Build Coastguard Worker	     YYCHECK.  */
1906*cf5a6c84SAndroid Build Coastguard Worker	  int yyxbegin = yyn < 0 ? -yyn : 0;
1907*cf5a6c84SAndroid Build Coastguard Worker
1908*cf5a6c84SAndroid Build Coastguard Worker	  /* Stay within bounds of both yycheck and yytname.  */
1909*cf5a6c84SAndroid Build Coastguard Worker	  int yychecklim = YYLAST - yyn;
1910*cf5a6c84SAndroid Build Coastguard Worker	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1911*cf5a6c84SAndroid Build Coastguard Worker	  int yycount = 1;
1912*cf5a6c84SAndroid Build Coastguard Worker
1913*cf5a6c84SAndroid Build Coastguard Worker	  yyarg[0] = yytname[yytype];
1914*cf5a6c84SAndroid Build Coastguard Worker	  yyfmt = yystpcpy (yyformat, yyunexpected);
1915*cf5a6c84SAndroid Build Coastguard Worker
1916*cf5a6c84SAndroid Build Coastguard Worker	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1917*cf5a6c84SAndroid Build Coastguard Worker	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1918*cf5a6c84SAndroid Build Coastguard Worker	      {
1919*cf5a6c84SAndroid Build Coastguard Worker		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1920*cf5a6c84SAndroid Build Coastguard Worker		  {
1921*cf5a6c84SAndroid Build Coastguard Worker		    yycount = 1;
1922*cf5a6c84SAndroid Build Coastguard Worker		    yysize = yysize0;
1923*cf5a6c84SAndroid Build Coastguard Worker		    yyformat[sizeof yyunexpected - 1] = '\0';
1924*cf5a6c84SAndroid Build Coastguard Worker		    break;
1925*cf5a6c84SAndroid Build Coastguard Worker		  }
1926*cf5a6c84SAndroid Build Coastguard Worker		yyarg[yycount++] = yytname[yyx];
1927*cf5a6c84SAndroid Build Coastguard Worker		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1928*cf5a6c84SAndroid Build Coastguard Worker		yysize_overflow |= yysize1 < yysize;
1929*cf5a6c84SAndroid Build Coastguard Worker		yysize = yysize1;
1930*cf5a6c84SAndroid Build Coastguard Worker		yyfmt = yystpcpy (yyfmt, yyprefix);
1931*cf5a6c84SAndroid Build Coastguard Worker		yyprefix = yyor;
1932*cf5a6c84SAndroid Build Coastguard Worker	      }
1933*cf5a6c84SAndroid Build Coastguard Worker
1934*cf5a6c84SAndroid Build Coastguard Worker	  yyf = YY_(yyformat);
1935*cf5a6c84SAndroid Build Coastguard Worker	  yysize1 = yysize + yystrlen (yyf);
1936*cf5a6c84SAndroid Build Coastguard Worker	  yysize_overflow |= yysize1 < yysize;
1937*cf5a6c84SAndroid Build Coastguard Worker	  yysize = yysize1;
1938*cf5a6c84SAndroid Build Coastguard Worker
1939*cf5a6c84SAndroid Build Coastguard Worker	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
1940*cf5a6c84SAndroid Build Coastguard Worker	    yymsg = (char *) YYSTACK_ALLOC (yysize);
1941*cf5a6c84SAndroid Build Coastguard Worker	  if (yymsg)
1942*cf5a6c84SAndroid Build Coastguard Worker	    {
1943*cf5a6c84SAndroid Build Coastguard Worker	      /* Avoid sprintf, as that infringes on the user's name space.
1944*cf5a6c84SAndroid Build Coastguard Worker		 Don't have undefined behavior even if the translation
1945*cf5a6c84SAndroid Build Coastguard Worker		 produced a string with the wrong number of "%s"s.  */
1946*cf5a6c84SAndroid Build Coastguard Worker	      char *yyp = yymsg;
1947*cf5a6c84SAndroid Build Coastguard Worker	      int yyi = 0;
1948*cf5a6c84SAndroid Build Coastguard Worker	      while ((*yyp = *yyf))
1949*cf5a6c84SAndroid Build Coastguard Worker		{
1950*cf5a6c84SAndroid Build Coastguard Worker		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1951*cf5a6c84SAndroid Build Coastguard Worker		    {
1952*cf5a6c84SAndroid Build Coastguard Worker		      yyp += yytnamerr (yyp, yyarg[yyi++]);
1953*cf5a6c84SAndroid Build Coastguard Worker		      yyf += 2;
1954*cf5a6c84SAndroid Build Coastguard Worker		    }
1955*cf5a6c84SAndroid Build Coastguard Worker		  else
1956*cf5a6c84SAndroid Build Coastguard Worker		    {
1957*cf5a6c84SAndroid Build Coastguard Worker		      yyp++;
1958*cf5a6c84SAndroid Build Coastguard Worker		      yyf++;
1959*cf5a6c84SAndroid Build Coastguard Worker		    }
1960*cf5a6c84SAndroid Build Coastguard Worker		}
1961*cf5a6c84SAndroid Build Coastguard Worker	      yyerror (yymsg);
1962*cf5a6c84SAndroid Build Coastguard Worker	      YYSTACK_FREE (yymsg);
1963*cf5a6c84SAndroid Build Coastguard Worker	    }
1964*cf5a6c84SAndroid Build Coastguard Worker	  else
1965*cf5a6c84SAndroid Build Coastguard Worker	    {
1966*cf5a6c84SAndroid Build Coastguard Worker	      yyerror (YY_("syntax error"));
1967*cf5a6c84SAndroid Build Coastguard Worker	      goto yyexhaustedlab;
1968*cf5a6c84SAndroid Build Coastguard Worker	    }
1969*cf5a6c84SAndroid Build Coastguard Worker	}
1970*cf5a6c84SAndroid Build Coastguard Worker      else
1971*cf5a6c84SAndroid Build Coastguard Worker#endif /* YYERROR_VERBOSE */
1972*cf5a6c84SAndroid Build Coastguard Worker	yyerror (YY_("syntax error"));
1973*cf5a6c84SAndroid Build Coastguard Worker    }
1974*cf5a6c84SAndroid Build Coastguard Worker
1975*cf5a6c84SAndroid Build Coastguard Worker
1976*cf5a6c84SAndroid Build Coastguard Worker
1977*cf5a6c84SAndroid Build Coastguard Worker  if (yyerrstatus == 3)
1978*cf5a6c84SAndroid Build Coastguard Worker    {
1979*cf5a6c84SAndroid Build Coastguard Worker      /* If just tried and failed to reuse look-ahead token after an
1980*cf5a6c84SAndroid Build Coastguard Worker	 error, discard it.  */
1981*cf5a6c84SAndroid Build Coastguard Worker
1982*cf5a6c84SAndroid Build Coastguard Worker      if (yychar <= YYEOF)
1983*cf5a6c84SAndroid Build Coastguard Worker        {
1984*cf5a6c84SAndroid Build Coastguard Worker	  /* Return failure if at end of input.  */
1985*cf5a6c84SAndroid Build Coastguard Worker	  if (yychar == YYEOF)
1986*cf5a6c84SAndroid Build Coastguard Worker	    YYABORT;
1987*cf5a6c84SAndroid Build Coastguard Worker        }
1988*cf5a6c84SAndroid Build Coastguard Worker      else
1989*cf5a6c84SAndroid Build Coastguard Worker	{
1990*cf5a6c84SAndroid Build Coastguard Worker	  yydestruct ("Error: discarding", yytoken, &yylval);
1991*cf5a6c84SAndroid Build Coastguard Worker	  yychar = YYEMPTY;
1992*cf5a6c84SAndroid Build Coastguard Worker	}
1993*cf5a6c84SAndroid Build Coastguard Worker    }
1994*cf5a6c84SAndroid Build Coastguard Worker
1995*cf5a6c84SAndroid Build Coastguard Worker  /* Else will try to reuse look-ahead token after shifting the error
1996*cf5a6c84SAndroid Build Coastguard Worker     token.  */
1997*cf5a6c84SAndroid Build Coastguard Worker  goto yyerrlab1;
1998*cf5a6c84SAndroid Build Coastguard Worker
1999*cf5a6c84SAndroid Build Coastguard Worker
2000*cf5a6c84SAndroid Build Coastguard Worker/*---------------------------------------------------.
2001*cf5a6c84SAndroid Build Coastguard Worker| yyerrorlab -- error raised explicitly by YYERROR.  |
2002*cf5a6c84SAndroid Build Coastguard Worker`---------------------------------------------------*/
2003*cf5a6c84SAndroid Build Coastguard Workeryyerrorlab:
2004*cf5a6c84SAndroid Build Coastguard Worker
2005*cf5a6c84SAndroid Build Coastguard Worker  /* Pacify compilers like GCC when the user code never invokes
2006*cf5a6c84SAndroid Build Coastguard Worker     YYERROR and the label yyerrorlab therefore never appears in user
2007*cf5a6c84SAndroid Build Coastguard Worker     code.  */
2008*cf5a6c84SAndroid Build Coastguard Worker  if (0)
2009*cf5a6c84SAndroid Build Coastguard Worker     goto yyerrorlab;
2010*cf5a6c84SAndroid Build Coastguard Worker
2011*cf5a6c84SAndroid Build Coastguard Workeryyvsp -= yylen;
2012*cf5a6c84SAndroid Build Coastguard Worker  yyssp -= yylen;
2013*cf5a6c84SAndroid Build Coastguard Worker  yystate = *yyssp;
2014*cf5a6c84SAndroid Build Coastguard Worker  goto yyerrlab1;
2015*cf5a6c84SAndroid Build Coastguard Worker
2016*cf5a6c84SAndroid Build Coastguard Worker
2017*cf5a6c84SAndroid Build Coastguard Worker/*-------------------------------------------------------------.
2018*cf5a6c84SAndroid Build Coastguard Worker| yyerrlab1 -- common code for both syntax error and YYERROR.  |
2019*cf5a6c84SAndroid Build Coastguard Worker`-------------------------------------------------------------*/
2020*cf5a6c84SAndroid Build Coastguard Workeryyerrlab1:
2021*cf5a6c84SAndroid Build Coastguard Worker  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2022*cf5a6c84SAndroid Build Coastguard Worker
2023*cf5a6c84SAndroid Build Coastguard Worker  for (;;)
2024*cf5a6c84SAndroid Build Coastguard Worker    {
2025*cf5a6c84SAndroid Build Coastguard Worker      yyn = yypact[yystate];
2026*cf5a6c84SAndroid Build Coastguard Worker      if (yyn != YYPACT_NINF)
2027*cf5a6c84SAndroid Build Coastguard Worker	{
2028*cf5a6c84SAndroid Build Coastguard Worker	  yyn += YYTERROR;
2029*cf5a6c84SAndroid Build Coastguard Worker	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2030*cf5a6c84SAndroid Build Coastguard Worker	    {
2031*cf5a6c84SAndroid Build Coastguard Worker	      yyn = yytable[yyn];
2032*cf5a6c84SAndroid Build Coastguard Worker	      if (0 < yyn)
2033*cf5a6c84SAndroid Build Coastguard Worker		break;
2034*cf5a6c84SAndroid Build Coastguard Worker	    }
2035*cf5a6c84SAndroid Build Coastguard Worker	}
2036*cf5a6c84SAndroid Build Coastguard Worker
2037*cf5a6c84SAndroid Build Coastguard Worker      /* Pop the current state because it cannot handle the error token.  */
2038*cf5a6c84SAndroid Build Coastguard Worker      if (yyssp == yyss)
2039*cf5a6c84SAndroid Build Coastguard Worker	YYABORT;
2040*cf5a6c84SAndroid Build Coastguard Worker
2041*cf5a6c84SAndroid Build Coastguard Worker
2042*cf5a6c84SAndroid Build Coastguard Worker      yydestruct ("Error: popping", yystos[yystate], yyvsp);
2043*cf5a6c84SAndroid Build Coastguard Worker      YYPOPSTACK;
2044*cf5a6c84SAndroid Build Coastguard Worker      yystate = *yyssp;
2045*cf5a6c84SAndroid Build Coastguard Worker      YY_STACK_PRINT (yyss, yyssp);
2046*cf5a6c84SAndroid Build Coastguard Worker    }
2047*cf5a6c84SAndroid Build Coastguard Worker
2048*cf5a6c84SAndroid Build Coastguard Worker  if (yyn == YYFINAL)
2049*cf5a6c84SAndroid Build Coastguard Worker    YYACCEPT;
2050*cf5a6c84SAndroid Build Coastguard Worker
2051*cf5a6c84SAndroid Build Coastguard Worker  *++yyvsp = yylval;
2052*cf5a6c84SAndroid Build Coastguard Worker
2053*cf5a6c84SAndroid Build Coastguard Worker
2054*cf5a6c84SAndroid Build Coastguard Worker  /* Shift the error token. */
2055*cf5a6c84SAndroid Build Coastguard Worker  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2056*cf5a6c84SAndroid Build Coastguard Worker
2057*cf5a6c84SAndroid Build Coastguard Worker  yystate = yyn;
2058*cf5a6c84SAndroid Build Coastguard Worker  goto yynewstate;
2059*cf5a6c84SAndroid Build Coastguard Worker
2060*cf5a6c84SAndroid Build Coastguard Worker
2061*cf5a6c84SAndroid Build Coastguard Worker/*-------------------------------------.
2062*cf5a6c84SAndroid Build Coastguard Worker| yyacceptlab -- YYACCEPT comes here.  |
2063*cf5a6c84SAndroid Build Coastguard Worker`-------------------------------------*/
2064*cf5a6c84SAndroid Build Coastguard Workeryyacceptlab:
2065*cf5a6c84SAndroid Build Coastguard Worker  yyresult = 0;
2066*cf5a6c84SAndroid Build Coastguard Worker  goto yyreturn;
2067*cf5a6c84SAndroid Build Coastguard Worker
2068*cf5a6c84SAndroid Build Coastguard Worker/*-----------------------------------.
2069*cf5a6c84SAndroid Build Coastguard Worker| yyabortlab -- YYABORT comes here.  |
2070*cf5a6c84SAndroid Build Coastguard Worker`-----------------------------------*/
2071*cf5a6c84SAndroid Build Coastguard Workeryyabortlab:
2072*cf5a6c84SAndroid Build Coastguard Worker  yyresult = 1;
2073*cf5a6c84SAndroid Build Coastguard Worker  goto yyreturn;
2074*cf5a6c84SAndroid Build Coastguard Worker
2075*cf5a6c84SAndroid Build Coastguard Worker#ifndef yyoverflow
2076*cf5a6c84SAndroid Build Coastguard Worker/*-------------------------------------------------.
2077*cf5a6c84SAndroid Build Coastguard Worker| yyexhaustedlab -- memory exhaustion comes here.  |
2078*cf5a6c84SAndroid Build Coastguard Worker`-------------------------------------------------*/
2079*cf5a6c84SAndroid Build Coastguard Workeryyexhaustedlab:
2080*cf5a6c84SAndroid Build Coastguard Worker  yyerror (YY_("memory exhausted"));
2081*cf5a6c84SAndroid Build Coastguard Worker  yyresult = 2;
2082*cf5a6c84SAndroid Build Coastguard Worker  /* Fall through.  */
2083*cf5a6c84SAndroid Build Coastguard Worker#endif
2084*cf5a6c84SAndroid Build Coastguard Worker
2085*cf5a6c84SAndroid Build Coastguard Workeryyreturn:
2086*cf5a6c84SAndroid Build Coastguard Worker  if (yychar != YYEOF && yychar != YYEMPTY)
2087*cf5a6c84SAndroid Build Coastguard Worker     yydestruct ("Cleanup: discarding lookahead",
2088*cf5a6c84SAndroid Build Coastguard Worker		 yytoken, &yylval);
2089*cf5a6c84SAndroid Build Coastguard Worker  while (yyssp != yyss)
2090*cf5a6c84SAndroid Build Coastguard Worker    {
2091*cf5a6c84SAndroid Build Coastguard Worker      yydestruct ("Cleanup: popping",
2092*cf5a6c84SAndroid Build Coastguard Worker		  yystos[*yyssp], yyvsp);
2093*cf5a6c84SAndroid Build Coastguard Worker      YYPOPSTACK;
2094*cf5a6c84SAndroid Build Coastguard Worker    }
2095*cf5a6c84SAndroid Build Coastguard Worker#ifndef yyoverflow
2096*cf5a6c84SAndroid Build Coastguard Worker  if (yyss != yyssa)
2097*cf5a6c84SAndroid Build Coastguard Worker    YYSTACK_FREE (yyss);
2098*cf5a6c84SAndroid Build Coastguard Worker#endif
2099*cf5a6c84SAndroid Build Coastguard Worker  return yyresult;
2100*cf5a6c84SAndroid Build Coastguard Worker}
2101*cf5a6c84SAndroid Build Coastguard Worker
2102*cf5a6c84SAndroid Build Coastguard Worker
2103*cf5a6c84SAndroid Build Coastguard Worker
2104*cf5a6c84SAndroid Build Coastguard Worker
2105*cf5a6c84SAndroid Build Coastguard Worker
2106*cf5a6c84SAndroid Build Coastguard Workervoid conf_parse(const char *name)
2107*cf5a6c84SAndroid Build Coastguard Worker{
2108*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *sym;
2109*cf5a6c84SAndroid Build Coastguard Worker	int i;
2110*cf5a6c84SAndroid Build Coastguard Worker
2111*cf5a6c84SAndroid Build Coastguard Worker	zconf_initscan(name);
2112*cf5a6c84SAndroid Build Coastguard Worker
2113*cf5a6c84SAndroid Build Coastguard Worker	sym_init();
2114*cf5a6c84SAndroid Build Coastguard Worker	menu_init();
2115*cf5a6c84SAndroid Build Coastguard Worker	modules_sym = sym_lookup(NULL, 0);
2116*cf5a6c84SAndroid Build Coastguard Worker	modules_sym->type = S_BOOLEAN;
2117*cf5a6c84SAndroid Build Coastguard Worker	modules_sym->flags |= SYMBOL_AUTO;
2118*cf5a6c84SAndroid Build Coastguard Worker	rootmenu.prompt = menu_add_prompt(P_MENU, PROJECT_NAME" Configuration", NULL);
2119*cf5a6c84SAndroid Build Coastguard Worker
2120*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG
2121*cf5a6c84SAndroid Build Coastguard Worker	if (getenv("ZCONF_DEBUG"))
2122*cf5a6c84SAndroid Build Coastguard Worker		zconfdebug = 1;
2123*cf5a6c84SAndroid Build Coastguard Worker#endif
2124*cf5a6c84SAndroid Build Coastguard Worker	zconfparse();
2125*cf5a6c84SAndroid Build Coastguard Worker	if (zconfnerrs)
2126*cf5a6c84SAndroid Build Coastguard Worker		exit(1);
2127*cf5a6c84SAndroid Build Coastguard Worker	if (!modules_sym->prop) {
2128*cf5a6c84SAndroid Build Coastguard Worker		struct property *prop;
2129*cf5a6c84SAndroid Build Coastguard Worker
2130*cf5a6c84SAndroid Build Coastguard Worker		prop = prop_alloc(P_DEFAULT, modules_sym);
2131*cf5a6c84SAndroid Build Coastguard Worker		prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
2132*cf5a6c84SAndroid Build Coastguard Worker	}
2133*cf5a6c84SAndroid Build Coastguard Worker	menu_finalize(&rootmenu);
2134*cf5a6c84SAndroid Build Coastguard Worker	for_all_symbols(i, sym) {
2135*cf5a6c84SAndroid Build Coastguard Worker		sym_check_deps(sym);
2136*cf5a6c84SAndroid Build Coastguard Worker        }
2137*cf5a6c84SAndroid Build Coastguard Worker
2138*cf5a6c84SAndroid Build Coastguard Worker	sym_change_count = 1;
2139*cf5a6c84SAndroid Build Coastguard Worker}
2140*cf5a6c84SAndroid Build Coastguard Worker
2141*cf5a6c84SAndroid Build Coastguard Workerconst char *zconf_tokenname(int token)
2142*cf5a6c84SAndroid Build Coastguard Worker{
2143*cf5a6c84SAndroid Build Coastguard Worker	switch (token) {
2144*cf5a6c84SAndroid Build Coastguard Worker	case T_MENU:		return "menu";
2145*cf5a6c84SAndroid Build Coastguard Worker	case T_ENDMENU:		return "endmenu";
2146*cf5a6c84SAndroid Build Coastguard Worker	case T_CHOICE:		return "choice";
2147*cf5a6c84SAndroid Build Coastguard Worker	case T_ENDCHOICE:	return "endchoice";
2148*cf5a6c84SAndroid Build Coastguard Worker	case T_IF:		return "if";
2149*cf5a6c84SAndroid Build Coastguard Worker	case T_ENDIF:		return "endif";
2150*cf5a6c84SAndroid Build Coastguard Worker	case T_DEPENDS:		return "depends";
2151*cf5a6c84SAndroid Build Coastguard Worker	}
2152*cf5a6c84SAndroid Build Coastguard Worker	return "<token>";
2153*cf5a6c84SAndroid Build Coastguard Worker}
2154*cf5a6c84SAndroid Build Coastguard Worker
2155*cf5a6c84SAndroid Build Coastguard Workerstatic bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
2156*cf5a6c84SAndroid Build Coastguard Worker{
2157*cf5a6c84SAndroid Build Coastguard Worker	if (id->token != endtoken) {
2158*cf5a6c84SAndroid Build Coastguard Worker		zconf_error("unexpected '%s' within %s block",
2159*cf5a6c84SAndroid Build Coastguard Worker			kconf_id_strings + id->name, zconf_tokenname(starttoken));
2160*cf5a6c84SAndroid Build Coastguard Worker		zconfnerrs++;
2161*cf5a6c84SAndroid Build Coastguard Worker		return false;
2162*cf5a6c84SAndroid Build Coastguard Worker	}
2163*cf5a6c84SAndroid Build Coastguard Worker	if (current_menu->file != current_file) {
2164*cf5a6c84SAndroid Build Coastguard Worker		zconf_error("'%s' in different file than '%s'",
2165*cf5a6c84SAndroid Build Coastguard Worker			kconf_id_strings + id->name, zconf_tokenname(starttoken));
2166*cf5a6c84SAndroid Build Coastguard Worker		fprintf(stderr, "%s:%d: location of the '%s'\n",
2167*cf5a6c84SAndroid Build Coastguard Worker			current_menu->file->name, current_menu->lineno,
2168*cf5a6c84SAndroid Build Coastguard Worker			zconf_tokenname(starttoken));
2169*cf5a6c84SAndroid Build Coastguard Worker		zconfnerrs++;
2170*cf5a6c84SAndroid Build Coastguard Worker		return false;
2171*cf5a6c84SAndroid Build Coastguard Worker	}
2172*cf5a6c84SAndroid Build Coastguard Worker	return true;
2173*cf5a6c84SAndroid Build Coastguard Worker}
2174*cf5a6c84SAndroid Build Coastguard Worker
2175*cf5a6c84SAndroid Build Coastguard Workerstatic void zconfprint(const char *err, ...)
2176*cf5a6c84SAndroid Build Coastguard Worker{
2177*cf5a6c84SAndroid Build Coastguard Worker	va_list ap;
2178*cf5a6c84SAndroid Build Coastguard Worker
2179*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2180*cf5a6c84SAndroid Build Coastguard Worker	va_start(ap, err);
2181*cf5a6c84SAndroid Build Coastguard Worker	vfprintf(stderr, err, ap);
2182*cf5a6c84SAndroid Build Coastguard Worker	va_end(ap);
2183*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "\n");
2184*cf5a6c84SAndroid Build Coastguard Worker}
2185*cf5a6c84SAndroid Build Coastguard Worker
2186*cf5a6c84SAndroid Build Coastguard Workerstatic void zconf_error(const char *err, ...)
2187*cf5a6c84SAndroid Build Coastguard Worker{
2188*cf5a6c84SAndroid Build Coastguard Worker	va_list ap;
2189*cf5a6c84SAndroid Build Coastguard Worker
2190*cf5a6c84SAndroid Build Coastguard Worker	zconfnerrs++;
2191*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2192*cf5a6c84SAndroid Build Coastguard Worker	va_start(ap, err);
2193*cf5a6c84SAndroid Build Coastguard Worker	vfprintf(stderr, err, ap);
2194*cf5a6c84SAndroid Build Coastguard Worker	va_end(ap);
2195*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "\n");
2196*cf5a6c84SAndroid Build Coastguard Worker}
2197*cf5a6c84SAndroid Build Coastguard Worker
2198*cf5a6c84SAndroid Build Coastguard Workerstatic void zconferror(const char *err)
2199*cf5a6c84SAndroid Build Coastguard Worker{
2200*cf5a6c84SAndroid Build Coastguard Worker#if YYDEBUG
2201*cf5a6c84SAndroid Build Coastguard Worker	fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
2202*cf5a6c84SAndroid Build Coastguard Worker#endif
2203*cf5a6c84SAndroid Build Coastguard Worker}
2204*cf5a6c84SAndroid Build Coastguard Worker
2205*cf5a6c84SAndroid Build Coastguard Workervoid print_quoted_string(FILE *out, const char *str)
2206*cf5a6c84SAndroid Build Coastguard Worker{
2207*cf5a6c84SAndroid Build Coastguard Worker	const char *p;
2208*cf5a6c84SAndroid Build Coastguard Worker	int len;
2209*cf5a6c84SAndroid Build Coastguard Worker
2210*cf5a6c84SAndroid Build Coastguard Worker	putc('"', out);
2211*cf5a6c84SAndroid Build Coastguard Worker	while ((p = strchr(str, '"'))) {
2212*cf5a6c84SAndroid Build Coastguard Worker		len = p - str;
2213*cf5a6c84SAndroid Build Coastguard Worker		if (len)
2214*cf5a6c84SAndroid Build Coastguard Worker			fprintf(out, "%.*s", len, str);
2215*cf5a6c84SAndroid Build Coastguard Worker		fputs("\\\"", out);
2216*cf5a6c84SAndroid Build Coastguard Worker		str = p + 1;
2217*cf5a6c84SAndroid Build Coastguard Worker	}
2218*cf5a6c84SAndroid Build Coastguard Worker	fputs(str, out);
2219*cf5a6c84SAndroid Build Coastguard Worker	putc('"', out);
2220*cf5a6c84SAndroid Build Coastguard Worker}
2221*cf5a6c84SAndroid Build Coastguard Worker
2222*cf5a6c84SAndroid Build Coastguard Workervoid print_symbol(FILE *out, struct menu *menu)
2223*cf5a6c84SAndroid Build Coastguard Worker{
2224*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *sym = menu->sym;
2225*cf5a6c84SAndroid Build Coastguard Worker	struct property *prop;
2226*cf5a6c84SAndroid Build Coastguard Worker
2227*cf5a6c84SAndroid Build Coastguard Worker	if (sym_is_choice(sym))
2228*cf5a6c84SAndroid Build Coastguard Worker		fprintf(out, "choice\n");
2229*cf5a6c84SAndroid Build Coastguard Worker	else
2230*cf5a6c84SAndroid Build Coastguard Worker		fprintf(out, "config %s\n", sym->name);
2231*cf5a6c84SAndroid Build Coastguard Worker	switch (sym->type) {
2232*cf5a6c84SAndroid Build Coastguard Worker	case S_BOOLEAN:
2233*cf5a6c84SAndroid Build Coastguard Worker		fputs("  boolean\n", out);
2234*cf5a6c84SAndroid Build Coastguard Worker		break;
2235*cf5a6c84SAndroid Build Coastguard Worker	case S_TRISTATE:
2236*cf5a6c84SAndroid Build Coastguard Worker		fputs("  tristate\n", out);
2237*cf5a6c84SAndroid Build Coastguard Worker		break;
2238*cf5a6c84SAndroid Build Coastguard Worker	case S_STRING:
2239*cf5a6c84SAndroid Build Coastguard Worker		fputs("  string\n", out);
2240*cf5a6c84SAndroid Build Coastguard Worker		break;
2241*cf5a6c84SAndroid Build Coastguard Worker	case S_INT:
2242*cf5a6c84SAndroid Build Coastguard Worker		fputs("  integer\n", out);
2243*cf5a6c84SAndroid Build Coastguard Worker		break;
2244*cf5a6c84SAndroid Build Coastguard Worker	case S_HEX:
2245*cf5a6c84SAndroid Build Coastguard Worker		fputs("  hex\n", out);
2246*cf5a6c84SAndroid Build Coastguard Worker		break;
2247*cf5a6c84SAndroid Build Coastguard Worker	default:
2248*cf5a6c84SAndroid Build Coastguard Worker		fputs("  ???\n", out);
2249*cf5a6c84SAndroid Build Coastguard Worker		break;
2250*cf5a6c84SAndroid Build Coastguard Worker	}
2251*cf5a6c84SAndroid Build Coastguard Worker	for (prop = sym->prop; prop; prop = prop->next) {
2252*cf5a6c84SAndroid Build Coastguard Worker		if (prop->menu != menu)
2253*cf5a6c84SAndroid Build Coastguard Worker			continue;
2254*cf5a6c84SAndroid Build Coastguard Worker		switch (prop->type) {
2255*cf5a6c84SAndroid Build Coastguard Worker		case P_PROMPT:
2256*cf5a6c84SAndroid Build Coastguard Worker			fputs("  prompt ", out);
2257*cf5a6c84SAndroid Build Coastguard Worker			print_quoted_string(out, prop->text);
2258*cf5a6c84SAndroid Build Coastguard Worker			if (!expr_is_yes(prop->visible.expr)) {
2259*cf5a6c84SAndroid Build Coastguard Worker				fputs(" if ", out);
2260*cf5a6c84SAndroid Build Coastguard Worker				expr_fprint(prop->visible.expr, out);
2261*cf5a6c84SAndroid Build Coastguard Worker			}
2262*cf5a6c84SAndroid Build Coastguard Worker			fputc('\n', out);
2263*cf5a6c84SAndroid Build Coastguard Worker			break;
2264*cf5a6c84SAndroid Build Coastguard Worker		case P_DEFAULT:
2265*cf5a6c84SAndroid Build Coastguard Worker			fputs( "  default ", out);
2266*cf5a6c84SAndroid Build Coastguard Worker			expr_fprint(prop->expr, out);
2267*cf5a6c84SAndroid Build Coastguard Worker			if (!expr_is_yes(prop->visible.expr)) {
2268*cf5a6c84SAndroid Build Coastguard Worker				fputs(" if ", out);
2269*cf5a6c84SAndroid Build Coastguard Worker				expr_fprint(prop->visible.expr, out);
2270*cf5a6c84SAndroid Build Coastguard Worker			}
2271*cf5a6c84SAndroid Build Coastguard Worker			fputc('\n', out);
2272*cf5a6c84SAndroid Build Coastguard Worker			break;
2273*cf5a6c84SAndroid Build Coastguard Worker		case P_CHOICE:
2274*cf5a6c84SAndroid Build Coastguard Worker			fputs("  #choice value\n", out);
2275*cf5a6c84SAndroid Build Coastguard Worker			break;
2276*cf5a6c84SAndroid Build Coastguard Worker		default:
2277*cf5a6c84SAndroid Build Coastguard Worker			fprintf(out, "  unknown prop %d!\n", prop->type);
2278*cf5a6c84SAndroid Build Coastguard Worker			break;
2279*cf5a6c84SAndroid Build Coastguard Worker		}
2280*cf5a6c84SAndroid Build Coastguard Worker	}
2281*cf5a6c84SAndroid Build Coastguard Worker	if (sym->help) {
2282*cf5a6c84SAndroid Build Coastguard Worker		int len = strlen(sym->help);
2283*cf5a6c84SAndroid Build Coastguard Worker		while (sym->help[--len] == '\n')
2284*cf5a6c84SAndroid Build Coastguard Worker			sym->help[len] = 0;
2285*cf5a6c84SAndroid Build Coastguard Worker		fprintf(out, "  help\n%s\n", sym->help);
2286*cf5a6c84SAndroid Build Coastguard Worker	}
2287*cf5a6c84SAndroid Build Coastguard Worker	fputc('\n', out);
2288*cf5a6c84SAndroid Build Coastguard Worker}
2289*cf5a6c84SAndroid Build Coastguard Worker
2290*cf5a6c84SAndroid Build Coastguard Workervoid zconfdump(FILE *out)
2291*cf5a6c84SAndroid Build Coastguard Worker{
2292*cf5a6c84SAndroid Build Coastguard Worker	struct property *prop;
2293*cf5a6c84SAndroid Build Coastguard Worker	struct symbol *sym;
2294*cf5a6c84SAndroid Build Coastguard Worker	struct menu *menu;
2295*cf5a6c84SAndroid Build Coastguard Worker
2296*cf5a6c84SAndroid Build Coastguard Worker	menu = rootmenu.list;
2297*cf5a6c84SAndroid Build Coastguard Worker	while (menu) {
2298*cf5a6c84SAndroid Build Coastguard Worker		if ((sym = menu->sym))
2299*cf5a6c84SAndroid Build Coastguard Worker			print_symbol(out, menu);
2300*cf5a6c84SAndroid Build Coastguard Worker		else if ((prop = menu->prompt)) {
2301*cf5a6c84SAndroid Build Coastguard Worker			switch (prop->type) {
2302*cf5a6c84SAndroid Build Coastguard Worker			case P_COMMENT:
2303*cf5a6c84SAndroid Build Coastguard Worker				fputs("\ncomment ", out);
2304*cf5a6c84SAndroid Build Coastguard Worker				print_quoted_string(out, prop->text);
2305*cf5a6c84SAndroid Build Coastguard Worker				fputs("\n", out);
2306*cf5a6c84SAndroid Build Coastguard Worker				break;
2307*cf5a6c84SAndroid Build Coastguard Worker			case P_MENU:
2308*cf5a6c84SAndroid Build Coastguard Worker				fputs("\nmenu ", out);
2309*cf5a6c84SAndroid Build Coastguard Worker				print_quoted_string(out, prop->text);
2310*cf5a6c84SAndroid Build Coastguard Worker				fputs("\n", out);
2311*cf5a6c84SAndroid Build Coastguard Worker				break;
2312*cf5a6c84SAndroid Build Coastguard Worker			default:
2313*cf5a6c84SAndroid Build Coastguard Worker				;
2314*cf5a6c84SAndroid Build Coastguard Worker			}
2315*cf5a6c84SAndroid Build Coastguard Worker			if (!expr_is_yes(prop->visible.expr)) {
2316*cf5a6c84SAndroid Build Coastguard Worker				fputs("  depends ", out);
2317*cf5a6c84SAndroid Build Coastguard Worker				expr_fprint(prop->visible.expr, out);
2318*cf5a6c84SAndroid Build Coastguard Worker				fputc('\n', out);
2319*cf5a6c84SAndroid Build Coastguard Worker			}
2320*cf5a6c84SAndroid Build Coastguard Worker			fputs("\n", out);
2321*cf5a6c84SAndroid Build Coastguard Worker		}
2322*cf5a6c84SAndroid Build Coastguard Worker
2323*cf5a6c84SAndroid Build Coastguard Worker		if (menu->list)
2324*cf5a6c84SAndroid Build Coastguard Worker			menu = menu->list;
2325*cf5a6c84SAndroid Build Coastguard Worker		else if (menu->next)
2326*cf5a6c84SAndroid Build Coastguard Worker			menu = menu->next;
2327*cf5a6c84SAndroid Build Coastguard Worker		else while ((menu = menu->parent)) {
2328*cf5a6c84SAndroid Build Coastguard Worker			if (menu->prompt && menu->prompt->type == P_MENU)
2329*cf5a6c84SAndroid Build Coastguard Worker				fputs("\nendmenu\n", out);
2330*cf5a6c84SAndroid Build Coastguard Worker			if (menu->next) {
2331*cf5a6c84SAndroid Build Coastguard Worker				menu = menu->next;
2332*cf5a6c84SAndroid Build Coastguard Worker				break;
2333*cf5a6c84SAndroid Build Coastguard Worker			}
2334*cf5a6c84SAndroid Build Coastguard Worker		}
2335*cf5a6c84SAndroid Build Coastguard Worker	}
2336*cf5a6c84SAndroid Build Coastguard Worker}
2337*cf5a6c84SAndroid Build Coastguard Worker
2338*cf5a6c84SAndroid Build Coastguard Worker#include "lex.zconf.c"
2339*cf5a6c84SAndroid Build Coastguard Worker#include "util.c"
2340*cf5a6c84SAndroid Build Coastguard Worker#include "confdata.c"
2341*cf5a6c84SAndroid Build Coastguard Worker#include "expr.c"
2342*cf5a6c84SAndroid Build Coastguard Worker#include "symbol.c"
2343*cf5a6c84SAndroid Build Coastguard Worker#include "menu.c"
2344*cf5a6c84SAndroid Build Coastguard Worker
2345*cf5a6c84SAndroid Build Coastguard Worker
2346