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