Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[pandora-kernel.git] / scripts / kconfig / zconf.tab.c_shipped
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 <zippel@linux-m68k.org>
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 \f
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 \f
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