Annotation of qemu/roms/seabios/tools/kconfig/zconf.tab.c_shipped, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.