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