1 /* A Bison parser, made by GNU Bison 2.3. */
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6 Free Software Foundation, Inc.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. */
23 /* As a special exception, you may create a larger work that contains
24 part or all of the Bison parser skeleton and distribute that work
25 under terms of your choice, so long as that work isn't itself a
26 parser generator using the skeleton or a modified version thereof
27 as a parser skeleton. Alternatively, if you modify or redistribute
28 the parser skeleton itself, you may (at your option) remove this
29 special exception, which will cause the skeleton and the resulting
30 Bison output files to be licensed under the GNU General Public
31 License without this special exception.
33 This special exception was added by the Free Software Foundation in
34 version 2.2 of Bison. */
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37 simplifying the original so-called "semantic" parser. */
39 /* All symbols defined below should begin with yy or YY, to avoid
40 infringing on user name space. This should be done even for local
41 variables, as they might otherwise be expanded by user macros.
42 There are some unavoidable exceptions within include files to
43 define necessary library symbols; they are noted "INFRINGES ON
44 USER NAME SPACE" below. */
46 /* Identify Bison output. */
50 #define YYBISON_VERSION "2.3"
53 #define YYSKELETON_NAME "yacc.c"
58 /* Using locations. */
59 #define YYLSP_NEEDED 0
61 /* Substitute the variable and function names. */
62 #define yyparse zconfparse
63 #define yylex zconflex
64 #define yyerror zconferror
65 #define yylval zconflval
66 #define yychar zconfchar
67 #define yydebug zconfdebug
68 #define yynerrs zconfnerrs
74 /* Put the tokens into the symbol table, so that GDB and other debuggers
112 #define T_MAINMENU 258
114 #define T_ENDMENU 260
117 #define T_ENDCHOICE 263
118 #define T_COMMENT 264
120 #define T_MENUCONFIG 266
122 #define T_HELPTEXT 268
125 #define T_DEPENDS 271
126 #define T_OPTIONAL 272
129 #define T_DEFAULT 275
135 #define T_WORD_QUOTE 281
136 #define T_UNEQUAL 282
137 #define T_CLOSE_PAREN 283
138 #define T_OPEN_PAREN 284
148 /* Copy the first part of user declarations. */
152 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
153 * Released under the terms of the GNU GPL v2.0.
163 #define LKC_DIRECT_LINK
166 #include "zconf.hash.c"
168 #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
170 #define PRINTD 0x0001
171 #define DEBUG_PARSE 0x0002
175 extern int zconflex(void);
176 static void zconfprint(const char *err, ...);
177 static void zconf_error(const char *err, ...);
178 static void zconferror(const char *err);
179 static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
181 struct symbol *symbol_hash[257];
183 static struct menu *current_menu, *current_entry;
187 #define YYERROR_VERBOSE
191 /* Enabling traces. */
196 /* Enabling verbose error messages. */
197 #ifdef YYERROR_VERBOSE
198 # undef YYERROR_VERBOSE
199 # define YYERROR_VERBOSE 1
201 # define YYERROR_VERBOSE 0
204 /* Enabling the token table. */
205 #ifndef YYTOKEN_TABLE
206 # define YYTOKEN_TABLE 0
209 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
210 typedef union YYSTYPE
215 struct symbol *symbol;
220 /* Line 187 of yacc.c. */
223 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
224 # define YYSTYPE_IS_DECLARED 1
225 # define YYSTYPE_IS_TRIVIAL 1
230 /* Copy the second part of user declarations. */
233 /* Line 216 of yacc.c. */
241 typedef YYTYPE_UINT8 yytype_uint8;
243 typedef unsigned char yytype_uint8;
247 typedef YYTYPE_INT8 yytype_int8;
248 #elif (defined __STDC__ || defined __C99__FUNC__ \
249 || defined __cplusplus || defined _MSC_VER)
250 typedef signed char yytype_int8;
252 typedef short int yytype_int8;
256 typedef YYTYPE_UINT16 yytype_uint16;
258 typedef unsigned short int yytype_uint16;
262 typedef YYTYPE_INT16 yytype_int16;
264 typedef short int yytype_int16;
268 # ifdef __SIZE_TYPE__
269 # define YYSIZE_T __SIZE_TYPE__
270 # elif defined size_t
271 # define YYSIZE_T size_t
272 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
273 || defined __cplusplus || defined _MSC_VER)
274 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
275 # define YYSIZE_T size_t
277 # define YYSIZE_T unsigned int
281 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
286 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
287 # define YY_(msgid) dgettext ("bison-runtime", msgid)
291 # define YY_(msgid) msgid
295 /* Suppress unused-variable warnings by "using" E. */
296 #if ! defined lint || defined __GNUC__
297 # define YYUSE(e) ((void) (e))
299 # define YYUSE(e) /* empty */
302 /* Identity function, used to suppress warnings about constant conditions. */
306 #if (defined __STDC__ || defined __C99__FUNC__ \
307 || defined __cplusplus || defined _MSC_VER)
320 #if ! defined yyoverflow || YYERROR_VERBOSE
322 /* The parser invokes alloca or malloc; define the necessary symbols. */
324 # ifdef YYSTACK_USE_ALLOCA
325 # if YYSTACK_USE_ALLOCA
327 # define YYSTACK_ALLOC __builtin_alloca
328 # elif defined __BUILTIN_VA_ARG_INCR
329 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
331 # define YYSTACK_ALLOC __alloca
332 # elif defined _MSC_VER
333 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
334 # define alloca _alloca
336 # define YYSTACK_ALLOC alloca
337 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
338 || defined __cplusplus || defined _MSC_VER)
339 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
348 # ifdef YYSTACK_ALLOC
349 /* Pacify GCC's `empty if-body' warning. */
350 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
351 # ifndef YYSTACK_ALLOC_MAXIMUM
352 /* The OS might guarantee only one guard page at the bottom of the stack,
353 and a page size can be as small as 4096 bytes. So we cannot safely
354 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
355 to allow for a few compiler-allocated temporary stack slots. */
356 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
359 # define YYSTACK_ALLOC YYMALLOC
360 # define YYSTACK_FREE YYFREE
361 # ifndef YYSTACK_ALLOC_MAXIMUM
362 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
364 # if (defined __cplusplus && ! defined _STDLIB_H \
365 && ! ((defined YYMALLOC || defined malloc) \
366 && (defined YYFREE || defined free)))
367 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
373 # define YYMALLOC malloc
374 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
375 || defined __cplusplus || defined _MSC_VER)
376 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
381 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
382 || defined __cplusplus || defined _MSC_VER)
383 void free (void *); /* INFRINGES ON USER NAME SPACE */
387 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
390 #if (! defined yyoverflow \
391 && (! defined __cplusplus \
392 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
394 /* A type that is properly aligned for any stack member. */
401 /* The size of the maximum gap between one aligned stack and the next. */
402 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
404 /* The size of an array large to enough to hold all stacks, each with
406 # define YYSTACK_BYTES(N) \
407 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
408 + YYSTACK_GAP_MAXIMUM)
410 /* Copy COUNT objects from FROM to TO. The source and destination do
413 # if defined __GNUC__ && 1 < __GNUC__
414 # define YYCOPY(To, From, Count) \
415 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
417 # define YYCOPY(To, From, Count) \
421 for (yyi = 0; yyi < (Count); yyi++) \
422 (To)[yyi] = (From)[yyi]; \
428 /* Relocate STACK from its old location to the new one. The
429 local variables YYSIZE and YYSTACKSIZE give the old and new number of
430 elements in the stack, and YYPTR gives the new location of the
431 stack. Advance YYPTR to a properly aligned location for the next
433 # define YYSTACK_RELOCATE(Stack) \
436 YYSIZE_T yynewbytes; \
437 YYCOPY (&yyptr->Stack, Stack, yysize); \
438 Stack = &yyptr->Stack; \
439 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
440 yyptr += yynewbytes / sizeof (*yyptr); \
446 /* YYFINAL -- State number of the termination state. */
448 /* YYLAST -- Last index in YYTABLE. */
451 /* YYNTOKENS -- Number of terminals. */
453 /* YYNNTS -- Number of nonterminals. */
455 /* YYNRULES -- Number of rules. */
457 /* YYNRULES -- Number of states. */
458 #define YYNSTATES 180
460 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
462 #define YYMAXUTOK 289
464 #define YYTRANSLATE(YYX) \
465 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
467 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
468 static const yytype_uint8 yytranslate[] =
470 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
472 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
473 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
479 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
480 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
481 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
482 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
483 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
484 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
485 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
486 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
487 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
488 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
489 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
490 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
491 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
492 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
493 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
494 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
495 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
496 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
497 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
498 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
502 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
504 static const yytype_uint16 yyprhs[] =
506 0, 0, 3, 5, 6, 9, 12, 15, 20, 23,
507 28, 33, 37, 39, 41, 43, 45, 47, 49, 51,
508 53, 55, 57, 59, 61, 63, 67, 70, 74, 77,
509 81, 84, 85, 88, 91, 94, 97, 100, 103, 107,
510 112, 117, 122, 128, 132, 133, 137, 138, 141, 145,
511 148, 150, 154, 155, 158, 161, 164, 167, 170, 175,
512 179, 182, 187, 188, 191, 195, 197, 201, 202, 205,
513 208, 211, 215, 218, 220, 224, 225, 228, 231, 234,
514 238, 242, 245, 248, 251, 252, 255, 258, 261, 266,
515 267, 270, 272, 274, 277, 280, 283, 285, 288, 289,
516 292, 294, 298, 302, 306, 309, 313, 317, 319, 321,
520 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
521 static const yytype_int8 yyrhs[] =
523 36, 0, -1, 37, -1, -1, 37, 39, -1, 37,
524 53, -1, 37, 64, -1, 37, 3, 74, 76, -1,
525 37, 75, -1, 37, 25, 1, 30, -1, 37, 38,
526 1, 30, -1, 37, 1, 30, -1, 16, -1, 18,
527 -1, 19, -1, 21, -1, 17, -1, 22, -1, 20,
528 -1, 30, -1, 59, -1, 68, -1, 42, -1, 44,
529 -1, 66, -1, 25, 1, 30, -1, 1, 30, -1,
530 10, 25, 30, -1, 41, 45, -1, 11, 25, 30,
531 -1, 43, 45, -1, -1, 45, 46, -1, 45, 47,
532 -1, 45, 72, -1, 45, 70, -1, 45, 40, -1,
533 45, 30, -1, 19, 73, 30, -1, 18, 74, 77,
534 30, -1, 20, 78, 77, 30, -1, 21, 25, 77,
535 30, -1, 22, 79, 79, 77, 30, -1, 23, 48,
536 30, -1, -1, 48, 25, 49, -1, -1, 33, 74,
537 -1, 7, 80, 30, -1, 50, 54, -1, 75, -1,
538 51, 56, 52, -1, -1, 54, 55, -1, 54, 72,
539 -1, 54, 70, -1, 54, 30, -1, 54, 40, -1,
540 18, 74, 77, 30, -1, 19, 73, 30, -1, 17,
541 30, -1, 20, 25, 77, 30, -1, -1, 56, 39,
542 -1, 14, 78, 76, -1, 75, -1, 57, 60, 58,
543 -1, -1, 60, 39, -1, 60, 64, -1, 60, 53,
544 -1, 4, 74, 30, -1, 61, 71, -1, 75, -1,
545 62, 65, 63, -1, -1, 65, 39, -1, 65, 64,
546 -1, 65, 53, -1, 6, 74, 30, -1, 9, 74,
547 30, -1, 67, 71, -1, 12, 30, -1, 69, 13,
548 -1, -1, 71, 72, -1, 71, 30, -1, 71, 40,
549 -1, 16, 24, 78, 30, -1, -1, 74, 77, -1,
550 25, -1, 26, -1, 5, 30, -1, 8, 30, -1,
551 15, 30, -1, 30, -1, 76, 30, -1, -1, 14,
552 78, -1, 79, -1, 79, 33, 79, -1, 79, 27,
553 79, -1, 29, 78, 28, -1, 34, 78, -1, 78,
554 31, 78, -1, 78, 32, 78, -1, 25, -1, 26,
558 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
559 static const yytype_uint16 yyrline[] =
561 0, 104, 104, 106, 108, 109, 110, 111, 112, 113,
562 114, 118, 122, 122, 122, 122, 122, 122, 122, 126,
563 127, 128, 129, 130, 131, 135, 136, 142, 150, 156,
564 164, 174, 176, 177, 178, 179, 180, 181, 184, 192,
565 198, 208, 214, 220, 223, 225, 236, 237, 242, 251,
566 256, 264, 267, 269, 270, 271, 272, 273, 276, 282,
567 293, 299, 309, 311, 316, 324, 332, 335, 337, 338,
568 339, 344, 351, 356, 364, 367, 369, 370, 371, 374,
569 382, 389, 396, 402, 409, 411, 412, 413, 416, 424,
570 426, 431, 432, 435, 436, 437, 441, 442, 445, 446,
571 449, 450, 451, 452, 453, 454, 455, 458, 459, 462,
576 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
577 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
578 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
579 static const char *const yytname[] =
581 "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
582 "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
583 "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
584 "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
585 "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
586 "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
587 "T_NOT", "$accept", "input", "stmt_list", "option_name", "common_stmt",
588 "option_error", "config_entry_start", "config_stmt",
589 "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
590 "config_option", "symbol_option", "symbol_option_list",
591 "symbol_option_arg", "choice", "choice_entry", "choice_end",
592 "choice_stmt", "choice_option_list", "choice_option", "choice_block",
593 "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry",
594 "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment",
595 "comment_stmt", "help_start", "help", "depends_list", "depends",
596 "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol",
602 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
604 static const yytype_uint16 yytoknum[] =
606 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
607 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
608 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
609 285, 286, 287, 288, 289
613 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
614 static const yytype_uint8 yyr1[] =
616 0, 35, 36, 37, 37, 37, 37, 37, 37, 37,
617 37, 37, 38, 38, 38, 38, 38, 38, 38, 39,
618 39, 39, 39, 39, 39, 40, 40, 41, 42, 43,
619 44, 45, 45, 45, 45, 45, 45, 45, 46, 46,
620 46, 46, 46, 47, 48, 48, 49, 49, 50, 51,
621 52, 53, 54, 54, 54, 54, 54, 54, 55, 55,
622 55, 55, 56, 56, 57, 58, 59, 60, 60, 60,
623 60, 61, 62, 63, 64, 65, 65, 65, 65, 66,
624 67, 68, 69, 70, 71, 71, 71, 71, 72, 73,
625 73, 74, 74, 75, 75, 75, 76, 76, 77, 77,
626 78, 78, 78, 78, 78, 78, 78, 79, 79, 80,
630 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
631 static const yytype_uint8 yyr2[] =
633 0, 2, 1, 0, 2, 2, 2, 4, 2, 4,
634 4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
635 1, 1, 1, 1, 1, 3, 2, 3, 2, 3,
636 2, 0, 2, 2, 2, 2, 2, 2, 3, 4,
637 4, 4, 5, 3, 0, 3, 0, 2, 3, 2,
638 1, 3, 0, 2, 2, 2, 2, 2, 4, 3,
639 2, 4, 0, 2, 3, 1, 3, 0, 2, 2,
640 2, 3, 2, 1, 3, 0, 2, 2, 2, 3,
641 3, 2, 2, 2, 0, 2, 2, 2, 4, 0,
642 2, 1, 1, 2, 2, 2, 1, 2, 0, 2,
643 1, 3, 3, 3, 2, 3, 3, 1, 1, 0,
647 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
648 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
649 means the default is an error. */
650 static const yytype_uint8 yydefact[] =
652 3, 0, 0, 1, 0, 0, 0, 0, 0, 109,
653 0, 0, 0, 0, 0, 0, 12, 16, 13, 14,
654 18, 15, 17, 0, 19, 0, 4, 31, 22, 31,
655 23, 52, 62, 5, 67, 20, 84, 75, 6, 24,
656 84, 21, 8, 11, 91, 92, 0, 0, 93, 0,
657 110, 0, 94, 0, 0, 0, 107, 108, 0, 0,
658 0, 100, 95, 0, 0, 0, 0, 0, 0, 0,
659 0, 0, 0, 96, 7, 71, 79, 48, 80, 27,
660 29, 0, 104, 0, 0, 64, 0, 0, 9, 10,
661 0, 0, 0, 0, 89, 0, 0, 0, 44, 0,
662 37, 36, 32, 33, 0, 35, 34, 0, 0, 89,
663 0, 56, 57, 53, 55, 54, 63, 51, 50, 68,
664 70, 66, 69, 65, 86, 87, 85, 76, 78, 74,
665 77, 73, 97, 103, 105, 106, 102, 101, 26, 82,
666 0, 98, 0, 98, 98, 98, 0, 0, 0, 83,
667 60, 98, 0, 98, 0, 0, 0, 38, 90, 0,
668 0, 98, 46, 43, 25, 0, 59, 0, 88, 99,
669 39, 40, 41, 0, 0, 45, 58, 61, 42, 47
672 /* YYDEFGOTO[NTERM-NUM]. */
673 static const yytype_int16 yydefgoto[] =
675 -1, 1, 2, 25, 26, 101, 27, 28, 29, 30,
676 65, 102, 103, 147, 175, 31, 32, 117, 33, 67,
677 113, 68, 34, 121, 35, 69, 36, 37, 129, 38,
678 71, 39, 40, 41, 104, 105, 70, 106, 142, 143,
679 42, 74, 156, 60, 61, 51
682 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
684 #define YYPACT_NINF -80
685 static const yytype_int16 yypact[] =
687 -80, 2, 132, -80, -13, -1, -1, -2, -1, 9,
688 33, -1, 27, 40, -3, 38, -80, -80, -80, -80,
689 -80, -80, -80, 71, -80, 77, -80, -80, -80, -80,
690 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
691 -80, -80, -80, -80, -80, -80, 57, 61, -80, 63,
692 -80, 76, -80, 87, 101, 133, -80, -80, -3, -3,
693 195, -6, -80, 136, 149, 39, 104, 65, 150, 5,
694 194, 5, 167, -80, 176, -80, -80, -80, -80, -80,
695 -80, 68, -80, -3, -3, 176, 72, 72, -80, -80,
696 177, 187, 78, -1, -1, -3, 196, 72, -80, 222,
697 -80, -80, -80, -80, 221, -80, -80, 205, -1, -1,
698 211, -80, -80, -80, -80, -80, -80, -80, -80, -80,
699 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
700 -80, -80, -80, -80, 206, -80, -80, -80, -80, -80,
701 -3, 223, 209, 223, 197, 223, 72, 7, 210, -80,
702 -80, 223, 212, 223, 201, -3, 213, -80, -80, 214,
703 215, 223, 208, -80, -80, 216, -80, 217, -80, 113,
704 -80, -80, -80, 218, -1, -80, -80, -80, -80, -80
707 /* YYPGOTO[NTERM-NUM]. */
708 static const yytype_int16 yypgoto[] =
710 -80, -80, -80, -80, 122, -34, -80, -80, -80, -80,
711 220, -80, -80, -80, -80, -80, -80, -80, 59, -80,
712 -80, -80, -80, -80, -80, -80, -80, -80, -80, 125,
713 -80, -80, -80, -80, -80, 183, 219, 22, 142, -5,
714 147, 192, 69, -54, -79, -80
717 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
718 positive, shift that token. If negative, reduce the rule which
719 number is the opposite. If zero, do what YYDEFACT says.
720 If YYTABLE_NINF, syntax error. */
721 #define YYTABLE_NINF -82
722 static const yytype_int16 yytable[] =
724 46, 47, 3, 49, 81, 82, 53, 136, 137, 6,
725 7, 8, 9, 10, 11, 12, 13, 43, 146, 14,
726 15, 86, 56, 57, 44, 45, 58, 87, 48, 134,
727 135, 59, 162, 112, 50, 24, 125, 163, 125, -28,
728 90, 144, -28, -28, -28, -28, -28, -28, -28, -28,
729 -28, 91, 54, -28, -28, 92, -28, 93, 94, 95,
730 96, 97, 98, 52, 99, 55, 90, 161, 62, 100,
731 -49, -49, 63, -49, -49, -49, -49, 91, 64, -49,
732 -49, 92, 107, 108, 109, 110, 154, 73, 141, 115,
733 99, 75, 126, 76, 126, 111, 133, 56, 57, 83,
734 84, 169, 140, 151, -30, 90, 77, -30, -30, -30,
735 -30, -30, -30, -30, -30, -30, 91, 78, -30, -30,
736 92, -30, 93, 94, 95, 96, 97, 98, 120, 99,
737 128, 79, -2, 4, 100, 5, 6, 7, 8, 9,
738 10, 11, 12, 13, 83, 84, 14, 15, 16, 17,
739 18, 19, 20, 21, 22, 7, 8, 23, 10, 11,
740 12, 13, 24, 80, 14, 15, 88, -81, 90, 179,
741 -81, -81, -81, -81, -81, -81, -81, -81, -81, 89,
742 24, -81, -81, 92, -81, -81, -81, -81, -81, -81,
743 116, 119, 99, 127, 122, 90, 130, 124, -72, -72,
744 -72, -72, -72, -72, -72, -72, 132, 138, -72, -72,
745 92, 155, 158, 159, 160, 118, 123, 139, 131, 99,
746 165, 145, 167, 148, 124, 73, 83, 84, 83, 84,
747 173, 168, 83, 84, 149, 150, 153, 155, 84, 157,
748 164, 174, 166, 170, 171, 172, 176, 177, 178, 66,
749 114, 152, 85, 0, 0, 0, 0, 0, 0, 72
752 static const yytype_int16 yycheck[] =
754 5, 6, 0, 8, 58, 59, 11, 86, 87, 4,
755 5, 6, 7, 8, 9, 10, 11, 30, 97, 14,
756 15, 27, 25, 26, 25, 26, 29, 33, 30, 83,
757 84, 34, 25, 67, 25, 30, 70, 30, 72, 0,
758 1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
759 11, 12, 25, 14, 15, 16, 17, 18, 19, 20,
760 21, 22, 23, 30, 25, 25, 1, 146, 30, 30,
761 5, 6, 1, 8, 9, 10, 11, 12, 1, 14,
762 15, 16, 17, 18, 19, 20, 140, 30, 93, 67,
763 25, 30, 70, 30, 72, 30, 28, 25, 26, 31,
764 32, 155, 24, 108, 0, 1, 30, 3, 4, 5,
765 6, 7, 8, 9, 10, 11, 12, 30, 14, 15,
766 16, 17, 18, 19, 20, 21, 22, 23, 69, 25,
767 71, 30, 0, 1, 30, 3, 4, 5, 6, 7,
768 8, 9, 10, 11, 31, 32, 14, 15, 16, 17,
769 18, 19, 20, 21, 22, 5, 6, 25, 8, 9,
770 10, 11, 30, 30, 14, 15, 30, 0, 1, 174,
771 3, 4, 5, 6, 7, 8, 9, 10, 11, 30,
772 30, 14, 15, 16, 17, 18, 19, 20, 21, 22,
773 68, 69, 25, 71, 69, 1, 71, 30, 4, 5,
774 6, 7, 8, 9, 10, 11, 30, 30, 14, 15,
775 16, 14, 143, 144, 145, 68, 69, 30, 71, 25,
776 151, 25, 153, 1, 30, 30, 31, 32, 31, 32,
777 161, 30, 31, 32, 13, 30, 25, 14, 32, 30,
778 30, 33, 30, 30, 30, 30, 30, 30, 30, 29,
779 67, 109, 60, -1, -1, -1, -1, -1, -1, 40
782 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
783 symbol of state STATE-NUM. */
784 static const yytype_uint8 yystos[] =
786 0, 36, 37, 0, 1, 3, 4, 5, 6, 7,
787 8, 9, 10, 11, 14, 15, 16, 17, 18, 19,
788 20, 21, 22, 25, 30, 38, 39, 41, 42, 43,
789 44, 50, 51, 53, 57, 59, 61, 62, 64, 66,
790 67, 68, 75, 30, 25, 26, 74, 74, 30, 74,
791 25, 80, 30, 74, 25, 25, 25, 26, 29, 34,
792 78, 79, 30, 1, 1, 45, 45, 54, 56, 60,
793 71, 65, 71, 30, 76, 30, 30, 30, 30, 30,
794 30, 78, 78, 31, 32, 76, 27, 33, 30, 30,
795 1, 12, 16, 18, 19, 20, 21, 22, 23, 25,
796 30, 40, 46, 47, 69, 70, 72, 17, 18, 19,
797 20, 30, 40, 55, 70, 72, 39, 52, 75, 39,
798 53, 58, 64, 75, 30, 40, 72, 39, 53, 63,
799 64, 75, 30, 28, 78, 78, 79, 79, 30, 30,
800 24, 74, 73, 74, 78, 25, 79, 48, 1, 13,
801 30, 74, 73, 25, 78, 14, 77, 30, 77, 77,
802 77, 79, 25, 30, 30, 77, 30, 77, 30, 78,
803 30, 30, 30, 77, 33, 49, 30, 30, 30, 74
806 #define yyerrok (yyerrstatus = 0)
807 #define yyclearin (yychar = YYEMPTY)
811 #define YYACCEPT goto yyacceptlab
812 #define YYABORT goto yyabortlab
813 #define YYERROR goto yyerrorlab
816 /* Like YYERROR except do call yyerror. This remains here temporarily
817 to ease the transition to the new meaning of YYERROR, for GCC.
818 Once GCC version 2 has supplanted version 1, this can go. */
820 #define YYFAIL goto yyerrlab
822 #define YYRECOVERING() (!!yyerrstatus)
824 #define YYBACKUP(Token, Value) \
826 if (yychar == YYEMPTY && yylen == 1) \
830 yytoken = YYTRANSLATE (yychar); \
836 yyerror (YY_("syntax error: cannot back up")); \
843 #define YYERRCODE 256
846 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
847 If N is 0, then set CURRENT to the empty location which ends
848 the previous symbol: RHS[0] (always defined). */
850 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
851 #ifndef YYLLOC_DEFAULT
852 # define YYLLOC_DEFAULT(Current, Rhs, N) \
856 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
857 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
858 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
859 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
863 (Current).first_line = (Current).last_line = \
864 YYRHSLOC (Rhs, 0).last_line; \
865 (Current).first_column = (Current).last_column = \
866 YYRHSLOC (Rhs, 0).last_column; \
872 /* YY_LOCATION_PRINT -- Print the location on the stream.
873 This macro was not mandated originally: define only if we know
874 we won't break user code: when these are the locations we know. */
876 #ifndef YY_LOCATION_PRINT
877 # if YYLTYPE_IS_TRIVIAL
878 # define YY_LOCATION_PRINT(File, Loc) \
879 fprintf (File, "%d.%d-%d.%d", \
880 (Loc).first_line, (Loc).first_column, \
881 (Loc).last_line, (Loc).last_column)
883 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
888 /* YYLEX -- calling `yylex' with the right arguments. */
891 # define YYLEX yylex (YYLEX_PARAM)
893 # define YYLEX yylex ()
896 /* Enable debugging if requested. */
900 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
901 # define YYFPRINTF fprintf
904 # define YYDPRINTF(Args) \
910 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
914 YYFPRINTF (stderr, "%s ", Title); \
915 yy_symbol_print (stderr, \
917 YYFPRINTF (stderr, "\n"); \
922 /*--------------------------------.
923 | Print this symbol on YYOUTPUT. |
924 `--------------------------------*/
927 #if (defined __STDC__ || defined __C99__FUNC__ \
928 || defined __cplusplus || defined _MSC_VER)
930 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
933 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
936 YYSTYPE const * const yyvaluep;
942 if (yytype < YYNTOKENS)
943 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
955 /*--------------------------------.
956 | Print this symbol on YYOUTPUT. |
957 `--------------------------------*/
959 #if (defined __STDC__ || defined __C99__FUNC__ \
960 || defined __cplusplus || defined _MSC_VER)
962 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
965 yy_symbol_print (yyoutput, yytype, yyvaluep)
968 YYSTYPE const * const yyvaluep;
971 if (yytype < YYNTOKENS)
972 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
974 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
976 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
977 YYFPRINTF (yyoutput, ")");
980 /*------------------------------------------------------------------.
981 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
983 `------------------------------------------------------------------*/
985 #if (defined __STDC__ || defined __C99__FUNC__ \
986 || defined __cplusplus || defined _MSC_VER)
988 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
991 yy_stack_print (bottom, top)
992 yytype_int16 *bottom;
996 YYFPRINTF (stderr, "Stack now");
997 for (; bottom <= top; ++bottom)
998 YYFPRINTF (stderr, " %d", *bottom);
999 YYFPRINTF (stderr, "\n");
1002 # define YY_STACK_PRINT(Bottom, Top) \
1005 yy_stack_print ((Bottom), (Top)); \
1009 /*------------------------------------------------.
1010 | Report that the YYRULE is going to be reduced. |
1011 `------------------------------------------------*/
1013 #if (defined __STDC__ || defined __C99__FUNC__ \
1014 || defined __cplusplus || defined _MSC_VER)
1016 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1019 yy_reduce_print (yyvsp, yyrule)
1024 int yynrhs = yyr2[yyrule];
1026 unsigned long int yylno = yyrline[yyrule];
1027 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1029 /* The symbols being reduced. */
1030 for (yyi = 0; yyi < yynrhs; yyi++)
1032 fprintf (stderr, " $%d = ", yyi + 1);
1033 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1034 &(yyvsp[(yyi + 1) - (yynrhs)])
1036 fprintf (stderr, "\n");
1040 # define YY_REDUCE_PRINT(Rule) \
1043 yy_reduce_print (yyvsp, Rule); \
1046 /* Nonzero means print parse trace. It is left uninitialized so that
1047 multiple parsers can coexist. */
1049 #else /* !YYDEBUG */
1050 # define YYDPRINTF(Args)
1051 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1052 # define YY_STACK_PRINT(Bottom, Top)
1053 # define YY_REDUCE_PRINT(Rule)
1054 #endif /* !YYDEBUG */
1057 /* YYINITDEPTH -- initial size of the parser's stacks. */
1059 # define YYINITDEPTH 200
1062 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1063 if the built-in stack extension method is used).
1065 Do not make this value too large; the results are undefined if
1066 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1067 evaluated with infinite-precision integer arithmetic. */
1070 # define YYMAXDEPTH 10000
1078 # if defined __GLIBC__ && defined _STRING_H
1079 # define yystrlen strlen
1081 /* Return the length of YYSTR. */
1082 #if (defined __STDC__ || defined __C99__FUNC__ \
1083 || defined __cplusplus || defined _MSC_VER)
1085 yystrlen (const char *yystr)
1093 for (yylen = 0; yystr[yylen]; yylen++)
1101 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1102 # define yystpcpy stpcpy
1104 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1106 #if (defined __STDC__ || defined __C99__FUNC__ \
1107 || defined __cplusplus || defined _MSC_VER)
1109 yystpcpy (char *yydest, const char *yysrc)
1112 yystpcpy (yydest, yysrc)
1118 const char *yys = yysrc;
1120 while ((*yyd++ = *yys++) != '\0')
1129 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1130 quotes and backslashes, so that it's suitable for yyerror. The
1131 heuristic is that double-quoting is unnecessary unless the string
1132 contains an apostrophe, a comma, or backslash (other than
1133 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1134 null, do not copy; instead, return the length of what the result
1137 yytnamerr (char *yyres, const char *yystr)
1142 char const *yyp = yystr;
1149 goto do_not_strip_quotes;
1153 goto do_not_strip_quotes;
1166 do_not_strip_quotes: ;
1170 return yystrlen (yystr);
1172 return yystpcpy (yyres, yystr) - yyres;
1176 /* Copy into YYRESULT an error message about the unexpected token
1177 YYCHAR while in state YYSTATE. Return the number of bytes copied,
1178 including the terminating null byte. If YYRESULT is null, do not
1179 copy anything; just return the number of bytes that would be
1180 copied. As a special case, return 0 if an ordinary "syntax error"
1181 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1182 size calculation. */
1184 yysyntax_error (char *yyresult, int yystate, int yychar)
1186 int yyn = yypact[yystate];
1188 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1192 int yytype = YYTRANSLATE (yychar);
1193 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1194 YYSIZE_T yysize = yysize0;
1196 int yysize_overflow = 0;
1197 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1198 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1202 /* This is so xgettext sees the translatable formats that are
1203 constructed on the fly. */
1204 YY_("syntax error, unexpected %s");
1205 YY_("syntax error, unexpected %s, expecting %s");
1206 YY_("syntax error, unexpected %s, expecting %s or %s");
1207 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1208 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1212 static char const yyunexpected[] = "syntax error, unexpected %s";
1213 static char const yyexpecting[] = ", expecting %s";
1214 static char const yyor[] = " or %s";
1215 char yyformat[sizeof yyunexpected
1216 + sizeof yyexpecting - 1
1217 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1218 * (sizeof yyor - 1))];
1219 char const *yyprefix = yyexpecting;
1221 /* Start YYX at -YYN if negative to avoid negative indexes in
1223 int yyxbegin = yyn < 0 ? -yyn : 0;
1225 /* Stay within bounds of both yycheck and yytname. */
1226 int yychecklim = YYLAST - yyn + 1;
1227 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1230 yyarg[0] = yytname[yytype];
1231 yyfmt = yystpcpy (yyformat, yyunexpected);
1233 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1234 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1236 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1240 yyformat[sizeof yyunexpected - 1] = '\0';
1243 yyarg[yycount++] = yytname[yyx];
1244 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1245 yysize_overflow |= (yysize1 < yysize);
1247 yyfmt = yystpcpy (yyfmt, yyprefix);
1251 yyf = YY_(yyformat);
1252 yysize1 = yysize + yystrlen (yyf);
1253 yysize_overflow |= (yysize1 < yysize);
1256 if (yysize_overflow)
1257 return YYSIZE_MAXIMUM;
1261 /* Avoid sprintf, as that infringes on the user's name space.
1262 Don't have undefined behavior even if the translation
1263 produced a string with the wrong number of "%s"s. */
1264 char *yyp = yyresult;
1266 while ((*yyp = *yyf) != '\0')
1268 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1270 yyp += yytnamerr (yyp, yyarg[yyi++]);
1283 #endif /* YYERROR_VERBOSE */
1286 /*-----------------------------------------------.
1287 | Release the memory associated to this symbol. |
1288 `-----------------------------------------------*/
1291 #if (defined __STDC__ || defined __C99__FUNC__ \
1292 || defined __cplusplus || defined _MSC_VER)
1294 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1297 yydestruct (yymsg, yytype, yyvaluep)
1307 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1311 case 51: /* "choice_entry" */
1314 fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1315 (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1316 if (current_menu == (yyvaluep->menu))
1321 case 57: /* "if_entry" */
1324 fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1325 (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1326 if (current_menu == (yyvaluep->menu))
1331 case 62: /* "menu_entry" */
1334 fprintf(stderr, "%s:%d: missing end statement for this entry\n",
1335 (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
1336 if (current_menu == (yyvaluep->menu))
1348 /* Prevent warnings from -Wmissing-prototypes. */
1350 #ifdef YYPARSE_PARAM
1351 #if defined __STDC__ || defined __cplusplus
1352 int yyparse (void *YYPARSE_PARAM);
1356 #else /* ! YYPARSE_PARAM */
1357 #if defined __STDC__ || defined __cplusplus
1362 #endif /* ! YYPARSE_PARAM */
1366 /* The look-ahead symbol. */
1369 /* The semantic value of the look-ahead symbol. */
1372 /* Number of syntax errors so far. */
1381 #ifdef YYPARSE_PARAM
1382 #if (defined __STDC__ || defined __C99__FUNC__ \
1383 || defined __cplusplus || defined _MSC_VER)
1385 yyparse (void *YYPARSE_PARAM)
1388 yyparse (YYPARSE_PARAM)
1389 void *YYPARSE_PARAM;
1391 #else /* ! YYPARSE_PARAM */
1392 #if (defined __STDC__ || defined __C99__FUNC__ \
1393 || defined __cplusplus || defined _MSC_VER)
1407 /* Number of tokens to shift before error messages enabled. */
1409 /* Look-ahead token as an internal (translated) token number. */
1412 /* Buffer for error messages, and its allocated size. */
1414 char *yymsg = yymsgbuf;
1415 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1418 /* Three stacks and their tools:
1419 `yyss': related to states,
1420 `yyvs': related to semantic values,
1421 `yyls': related to locations.
1423 Refer to the stacks thru separate pointers, to allow yyoverflow
1424 to reallocate them elsewhere. */
1426 /* The state stack. */
1427 yytype_int16 yyssa[YYINITDEPTH];
1428 yytype_int16 *yyss = yyssa;
1429 yytype_int16 *yyssp;
1431 /* The semantic value stack. */
1432 YYSTYPE yyvsa[YYINITDEPTH];
1433 YYSTYPE *yyvs = yyvsa;
1438 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1440 YYSIZE_T yystacksize = YYINITDEPTH;
1442 /* The variables used to return semantic value and location from the
1447 /* The number of symbols on the RHS of the reduced rule.
1448 Keep to zero when no symbol should be popped. */
1451 YYDPRINTF ((stderr, "Starting parse\n"));
1456 yychar = YYEMPTY; /* Cause a token to be read. */
1458 /* Initialize stack pointers.
1459 Waste one element of value and location stack
1460 so that they stay on the same level as the state stack.
1461 The wasted elements are never initialized. */
1468 /*------------------------------------------------------------.
1469 | yynewstate -- Push a new state, which is found in yystate. |
1470 `------------------------------------------------------------*/
1472 /* In all cases, when you get here, the value and location stacks
1473 have just been pushed. So pushing a state here evens the stacks. */
1479 if (yyss + yystacksize - 1 <= yyssp)
1481 /* Get the current used size of the three stacks, in elements. */
1482 YYSIZE_T yysize = yyssp - yyss + 1;
1486 /* Give user a chance to reallocate the stack. Use copies of
1487 these so that the &'s don't force the real ones into
1489 YYSTYPE *yyvs1 = yyvs;
1490 yytype_int16 *yyss1 = yyss;
1493 /* Each stack pointer address is followed by the size of the
1494 data in use in that stack, in bytes. This used to be a
1495 conditional around just the two extra args, but that might
1496 be undefined if yyoverflow is a macro. */
1497 yyoverflow (YY_("memory exhausted"),
1498 &yyss1, yysize * sizeof (*yyssp),
1499 &yyvs1, yysize * sizeof (*yyvsp),
1506 #else /* no yyoverflow */
1507 # ifndef YYSTACK_RELOCATE
1508 goto yyexhaustedlab;
1510 /* Extend the stack our own way. */
1511 if (YYMAXDEPTH <= yystacksize)
1512 goto yyexhaustedlab;
1514 if (YYMAXDEPTH < yystacksize)
1515 yystacksize = YYMAXDEPTH;
1518 yytype_int16 *yyss1 = yyss;
1519 union yyalloc *yyptr =
1520 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1522 goto yyexhaustedlab;
1523 YYSTACK_RELOCATE (yyss);
1524 YYSTACK_RELOCATE (yyvs);
1526 # undef YYSTACK_RELOCATE
1528 YYSTACK_FREE (yyss1);
1531 #endif /* no yyoverflow */
1533 yyssp = yyss + yysize - 1;
1534 yyvsp = yyvs + yysize - 1;
1537 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1538 (unsigned long int) yystacksize));
1540 if (yyss + yystacksize - 1 <= yyssp)
1544 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1553 /* Do appropriate processing given the current state. Read a
1554 look-ahead token if we need one and don't already have one. */
1556 /* First try to decide what to do without reference to look-ahead token. */
1557 yyn = yypact[yystate];
1558 if (yyn == YYPACT_NINF)
1561 /* Not known => get a look-ahead token if don't already have one. */
1563 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1564 if (yychar == YYEMPTY)
1566 YYDPRINTF ((stderr, "Reading a token: "));
1570 if (yychar <= YYEOF)
1572 yychar = yytoken = YYEOF;
1573 YYDPRINTF ((stderr, "Now at end of input.\n"));
1577 yytoken = YYTRANSLATE (yychar);
1578 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1581 /* If the proper action on seeing token YYTOKEN is to reduce or to
1582 detect an error, take that action. */
1584 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1589 if (yyn == 0 || yyn == YYTABLE_NINF)
1598 /* Count tokens shifted since error; after three, turn off error
1603 /* Shift the look-ahead token. */
1604 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1606 /* Discard the shifted token unless it is eof. */
1607 if (yychar != YYEOF)
1616 /*-----------------------------------------------------------.
1617 | yydefault -- do the default action for the current state. |
1618 `-----------------------------------------------------------*/
1620 yyn = yydefact[yystate];
1626 /*-----------------------------.
1627 | yyreduce -- Do a reduction. |
1628 `-----------------------------*/
1630 /* yyn is the number of a rule to reduce with. */
1633 /* If YYLEN is nonzero, implement the default value of the action:
1636 Otherwise, the following line sets YYVAL to garbage.
1637 This behavior is undocumented and Bison
1638 users should not rely upon it. Assigning to YYVAL
1639 unconditionally makes the parser a bit smaller, and it avoids a
1640 GCC warning that YYVAL may be used uninitialized. */
1641 yyval = yyvsp[1-yylen];
1644 YY_REDUCE_PRINT (yyn);
1649 { zconf_error("unexpected end statement"); ;}
1654 { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); ;}
1660 zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
1666 { zconf_error("invalid statement"); ;}
1671 { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;}
1676 { zconf_error("invalid option"); ;}
1682 struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
1683 sym->flags |= SYMBOL_OPTIONAL;
1684 menu_add_entry(sym);
1685 printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1693 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1700 struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
1701 sym->flags |= SYMBOL_OPTIONAL;
1702 menu_add_entry(sym);
1703 printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1710 if (current_entry->prompt)
1711 current_entry->prompt->type = P_MENU;
1713 zconfprint("warning: menuconfig statement without prompt");
1715 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1722 menu_set_type((yyvsp[(1) - (3)].id)->stype);
1723 printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1724 zconf_curname(), zconf_lineno(),
1725 (yyvsp[(1) - (3)].id)->stype);
1732 menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
1733 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1740 menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
1741 if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN)
1742 menu_set_type((yyvsp[(1) - (4)].id)->stype);
1743 printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
1744 zconf_curname(), zconf_lineno(),
1745 (yyvsp[(1) - (4)].id)->stype);
1752 menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
1753 printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
1760 menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
1761 printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
1768 struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
1769 if (id && id->flags & TF_OPTION)
1770 menu_add_option(id->token, (yyvsp[(3) - (3)].string));
1772 zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string));
1773 free((yyvsp[(2) - (3)].string));
1779 { (yyval.string) = NULL; ;}
1784 { (yyval.string) = (yyvsp[(2) - (2)].string); ;}
1790 struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
1791 sym->flags |= SYMBOL_AUTO;
1792 menu_add_entry(sym);
1793 menu_add_expr(P_CHOICE, NULL, NULL);
1794 printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
1801 (yyval.menu) = menu_add_menu();
1808 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
1810 printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
1818 menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
1819 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1826 if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
1827 menu_set_type((yyvsp[(1) - (3)].id)->stype);
1828 printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
1829 zconf_curname(), zconf_lineno(),
1830 (yyvsp[(1) - (3)].id)->stype);
1839 current_entry->sym->flags |= SYMBOL_OPTIONAL;
1840 printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
1847 if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
1848 menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
1849 printd(DEBUG_PARSE, "%s:%d:default\n",
1850 zconf_curname(), zconf_lineno());
1859 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
1860 menu_add_entry(NULL);
1861 menu_add_dep((yyvsp[(2) - (3)].expr));
1862 (yyval.menu) = menu_add_menu();
1869 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
1871 printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
1879 menu_add_entry(NULL);
1880 menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
1881 printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
1888 (yyval.menu) = menu_add_menu();
1895 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
1897 printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
1905 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
1906 zconf_nextfile((yyvsp[(2) - (3)].string));
1913 menu_add_entry(NULL);
1914 menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL);
1915 printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
1929 printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
1937 current_entry->help = (yyvsp[(2) - (2)].string);
1944 menu_add_dep((yyvsp[(3) - (4)].expr));
1945 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
1952 menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
1958 { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
1963 { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
1968 { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
1973 { (yyval.expr) = NULL; ;}
1978 { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
1983 { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;}
1988 { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
1993 { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
1998 { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
2003 { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;}
2008 { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
2013 { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
2018 { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;}
2023 { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
2028 { (yyval.string) = NULL; ;}
2032 /* Line 1267 of yacc.c. */
2036 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2040 YY_STACK_PRINT (yyss, yyssp);
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. */
2051 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2052 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2053 yystate = yytable[yystate];
2055 yystate = yydefgoto[yyn - YYNTOKENS];
2060 /*------------------------------------.
2061 | yyerrlab -- here on detecting error |
2062 `------------------------------------*/
2064 /* If not already recovering from an error, report this error. */
2068 #if ! YYERROR_VERBOSE
2069 yyerror (YY_("syntax error"));
2072 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2073 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
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);
2082 yymsg_alloc = yyalloc;
2086 yymsg_alloc = sizeof yymsgbuf;
2090 if (0 < yysize && yysize <= yymsg_alloc)
2092 (void) yysyntax_error (yymsg, yystate, yychar);
2097 yyerror (YY_("syntax error"));
2099 goto yyexhaustedlab;
2107 if (yyerrstatus == 3)
2109 /* If just tried and failed to reuse look-ahead token after an
2110 error, discard it. */
2112 if (yychar <= YYEOF)
2114 /* Return failure if at end of input. */
2115 if (yychar == YYEOF)
2120 yydestruct ("Error: discarding",
2126 /* Else will try to reuse look-ahead token after shifting the error
2131 /*---------------------------------------------------.
2132 | yyerrorlab -- error raised explicitly by YYERROR. |
2133 `---------------------------------------------------*/
2136 /* Pacify compilers like GCC when the user code never invokes
2137 YYERROR and the label yyerrorlab therefore never appears in user
2139 if (/*CONSTCOND*/ 0)
2142 /* Do not reclaim the symbols of the rule which action triggered
2146 YY_STACK_PRINT (yyss, yyssp);
2151 /*-------------------------------------------------------------.
2152 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2153 `-------------------------------------------------------------*/
2155 yyerrstatus = 3; /* Each real token shifted decrements this. */
2159 yyn = yypact[yystate];
2160 if (yyn != YYPACT_NINF)
2163 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2171 /* Pop the current state because it cannot handle the error token. */
2176 yydestruct ("Error: popping",
2177 yystos[yystate], yyvsp);
2180 YY_STACK_PRINT (yyss, yyssp);
2189 /* Shift the error token. */
2190 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2196 /*-------------------------------------.
2197 | yyacceptlab -- YYACCEPT comes here. |
2198 `-------------------------------------*/
2203 /*-----------------------------------.
2204 | yyabortlab -- YYABORT comes here. |
2205 `-----------------------------------*/
2211 /*-------------------------------------------------.
2212 | yyexhaustedlab -- memory exhaustion comes here. |
2213 `-------------------------------------------------*/
2215 yyerror (YY_("memory exhausted"));
2221 if (yychar != YYEOF && yychar != YYEMPTY)
2222 yydestruct ("Cleanup: discarding lookahead",
2224 /* Do not reclaim the symbols of the rule which action triggered
2225 this YYABORT or YYACCEPT. */
2227 YY_STACK_PRINT (yyss, yyssp);
2228 while (yyssp != yyss)
2230 yydestruct ("Cleanup: popping",
2231 yystos[*yyssp], yyvsp);
2236 YYSTACK_FREE (yyss);
2239 if (yymsg != yymsgbuf)
2240 YYSTACK_FREE (yymsg);
2242 /* Make sure YYID is used. */
2243 return YYID (yyresult);
2250 void conf_parse(const char *name)
2255 zconf_initscan(name);
2259 modules_sym = sym_lookup(NULL, 0);
2260 modules_sym->type = S_BOOLEAN;
2261 modules_sym->flags |= SYMBOL_AUTO;
2262 rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
2265 if (getenv("ZCONF_DEBUG"))
2271 if (!modules_sym->prop) {
2272 struct property *prop;
2274 prop = prop_alloc(P_DEFAULT, modules_sym);
2275 prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
2277 menu_finalize(&rootmenu);
2278 for_all_symbols(i, sym) {
2279 if (sym_check_deps(sym))
2284 sym_set_change_count(1);
2287 const char *zconf_tokenname(int token)
2290 case T_MENU: return "menu";
2291 case T_ENDMENU: return "endmenu";
2292 case T_CHOICE: return "choice";
2293 case T_ENDCHOICE: return "endchoice";
2294 case T_IF: return "if";
2295 case T_ENDIF: return "endif";
2296 case T_DEPENDS: return "depends";
2301 static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
2303 if (id->token != endtoken) {
2304 zconf_error("unexpected '%s' within %s block",
2305 kconf_id_strings + id->name, zconf_tokenname(starttoken));
2309 if (current_menu->file != current_file) {
2310 zconf_error("'%s' in different file than '%s'",
2311 kconf_id_strings + id->name, zconf_tokenname(starttoken));
2312 fprintf(stderr, "%s:%d: location of the '%s'\n",
2313 current_menu->file->name, current_menu->lineno,
2314 zconf_tokenname(starttoken));
2321 static void zconfprint(const char *err, ...)
2325 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2327 vfprintf(stderr, err, ap);
2329 fprintf(stderr, "\n");
2332 static void zconf_error(const char *err, ...)
2337 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
2339 vfprintf(stderr, err, ap);
2341 fprintf(stderr, "\n");
2344 static void zconferror(const char *err)
2347 fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
2351 void print_quoted_string(FILE *out, const char *str)
2357 while ((p = strchr(str, '"'))) {
2360 fprintf(out, "%.*s", len, str);
2368 void print_symbol(FILE *out, struct menu *menu)
2370 struct symbol *sym = menu->sym;
2371 struct property *prop;
2373 if (sym_is_choice(sym))
2374 fprintf(out, "choice\n");
2376 fprintf(out, "config %s\n", sym->name);
2377 switch (sym->type) {
2379 fputs(" boolean\n", out);
2382 fputs(" tristate\n", out);
2385 fputs(" string\n", out);
2388 fputs(" integer\n", out);
2391 fputs(" hex\n", out);
2394 fputs(" ???\n", out);
2397 for (prop = sym->prop; prop; prop = prop->next) {
2398 if (prop->menu != menu)
2400 switch (prop->type) {
2402 fputs(" prompt ", out);
2403 print_quoted_string(out, prop->text);
2404 if (!expr_is_yes(prop->visible.expr)) {
2406 expr_fprint(prop->visible.expr, out);
2411 fputs( " default ", out);
2412 expr_fprint(prop->expr, out);
2413 if (!expr_is_yes(prop->visible.expr)) {
2415 expr_fprint(prop->visible.expr, out);
2420 fputs(" #choice value\n", out);
2423 fprintf(out, " unknown prop %d!\n", prop->type);
2428 int len = strlen(menu->help);
2429 while (menu->help[--len] == '\n')
2430 menu->help[len] = 0;
2431 fprintf(out, " help\n%s\n", menu->help);
2436 void zconfdump(FILE *out)
2438 struct property *prop;
2442 menu = rootmenu.list;
2444 if ((sym = menu->sym))
2445 print_symbol(out, menu);
2446 else if ((prop = menu->prompt)) {
2447 switch (prop->type) {
2449 fputs("\ncomment ", out);
2450 print_quoted_string(out, prop->text);
2454 fputs("\nmenu ", out);
2455 print_quoted_string(out, prop->text);
2461 if (!expr_is_yes(prop->visible.expr)) {
2462 fputs(" depends ", out);
2463 expr_fprint(prop->visible.expr, out);
2471 else if (menu->next)
2473 else while ((menu = menu->parent)) {
2474 if (menu->prompt && menu->prompt->type == P_MENU)
2475 fputs("\nendmenu\n", out);
2484 #include "lex.zconf.c"
2486 #include "confdata.c"